단일 호스트 TPU 슬라이스가 있는 MIG 만들기

이 문서에서는 단일 호스트 TPU 슬라이스를 형성하는 관리형 인스턴스 그룹 (MIG)을 만드는 방법을 설명합니다. 단일 호스트 TPU 슬라이스는 하나의 TPU 가상 머신(VM) 인스턴스에 매핑됩니다.

단일 호스트 TPU 슬라이스를 독립형 TPU 인스턴스로 만들 수도 있습니다. 자세한 내용은 TPU VM 인스턴스 만들기를 참고하세요.

시작하기 전에

  • TPU 인스턴스로 MIG를 만드는 데 적용되는 제한사항을 검토합니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인합니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음 옵션 중 하나를 선택하여 Compute Engine에 인증하면 됩니다.
    1. Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.

      gcloud init

      외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

    2. 기본 리전 및 영역을 설정합니다.

기본 요건

단일 호스트 TPU 슬라이스를 만들기 전에 다음을 수행해야 합니다.

  1. TPU 버전 선택: 워크로드에 적합한 TPU 버전을 선택합니다. 워크로드 유형별 TPU 버전 목록은 워크로드 유형별 권장 TPU 버전을 참고하세요.

  2. 선호하는 위치에서 TPU 가용성 확인: TPU는 특정 Google Cloud 리전에서 사용할 수 있습니다. TPU 버전을 사용하려면 원하는 리전에서 해당 버전을 사용할 수 있는지 확인하세요. TPU 위치 목록은 TPU 가용성을 참고하세요.

  3. 프로젝트에 충분한 TPU 할당량이 있는지 확인: 주문형 또는 스팟 VM으로 단일 호스트 TPU 슬라이스를 만드는 경우 사용하려는 리전에서 사용 가능한 TPU 할당량이 충분해야 합니다. TPU 예약을 사용하는 단일 호스트 TPU 슬라이스를 만드는 데는 TPU 할당량이 필요하지 않습니다. 예약이 생성될 때 할당량이 사용되었기 때문입니다. TPU 할당량 이름 목록은 TPU 할당량을 참고하고 할당량을 보는 방법은 할당량 보기 및 관리를 참고하세요.

  4. TPU 소비 옵션 선택: 워크로드, 기간, 비용 요구사항에 가장 적합한 소비 옵션을 선택합니다. TPU 버전별 소비 옵션 가용성 목록은 TPU 소비 옵션을 참고하세요.

  5. 토폴로지 선택: 선택한 TPU 버전에서 지원되는 토폴로지를 선택합니다. 각 TPU 버전에서 사용할 수 있는 토폴로지 목록은 TPU 토폴로지를 참고하세요.

여러 단일 호스트 TPU 슬라이스로 MIG 만들기

MIG에서 독립적인 TPU VM을 여러 개 만들려면 다음 단계를 따르세요.

  1. 인스턴스 템플릿을 만듭니다.
  2. MIG를 만듭니다.

인스턴스 템플릿 만들기

인스턴스 템플릿 구성은 사용 중인 소비 옵션(주문형, 스팟, 예약 또는 유연한 시작)에 따라 다릅니다. 소비 옵션에 대한 자세한 내용은 VM 프로비저닝 모델 정보를 참고하세요.

주문형 TPU VM의 인스턴스 템플릿 만들기

다음 명령어는 온디맨드 소비 옵션을 사용하는 인스턴스 템플릿을 만듭니다.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

다음 자리표시자를 바꿉니다.

  • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.
  • MACHINE_TYPE: TPU VM의 머신 유형입니다 (예: ct6e-standard-8t).
  • IMAGE_FAMILY: TPU VM의 OS 이미지 계열입니다. 특정 OS 버전을 설치하려면 --image 플래그를 사용합니다. OS 이미지에 대한 자세한 내용은 OS 이미지를 참고하세요.
  • IMAGE_PROJECT: OS 이미지가 포함된 프로젝트입니다. TPU 이미지의 경우 ubuntu-os-accelerator-images입니다.

TPU 스팟 VM의 인스턴스 템플릿 만들기

다음 명령어는 스팟 소비 옵션을 사용하는 인스턴스 템플릿을 만듭니다.

 gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --instance-termination-action=STOP \
    --provisioning-model=SPOT \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

다음 자리표시자를 바꿉니다.

  • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.
  • MACHINE_TYPE: TPU VM의 머신 유형입니다 (예: ct6e-standard-8t).
  • IMAGE_FAMILY: TPU VM의 OS 이미지 계열입니다. 특정 OS 버전을 설치하려면 --image 플래그를 사용합니다. OS 이미지에 대한 자세한 내용은 OS 이미지를 참고하세요.
  • IMAGE_PROJECT: OS 이미지가 포함된 프로젝트입니다. TPU 이미지의 경우 ubuntu-os-accelerator-images입니다.

TPU 예약에 따름 VM의 인스턴스 템플릿 만들기

다음 명령어는 예약 바인딩 소비 옵션을 사용하는 인스턴스 템플릿을 만듭니다.

 gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --instance-termination-action=DELETE \
    --reservation-affinity=specific \
    --provisioning-model=reservation-bound \
    --reservation=RESERVATION_NAME \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

다음 자리표시자를 바꿉니다.

  • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.
  • MACHINE_TYPE: TPU VM의 머신 유형 (예: ct6e-standard-8t)
  • RESERVATION_NAME: 사용할 특정 예약의 이름입니다.
  • IMAGE_FAMILY: TPU VM의 OS 이미지 계열입니다. 특정 OS 버전을 설치하려면 --image 플래그를 사용합니다. OS 이미지에 대한 자세한 내용은 OS 이미지를 참고하세요.
  • IMAGE_PROJECT: OS 이미지가 포함된 프로젝트입니다. TPU 이미지의 경우 ubuntu-os-accelerator-images입니다.

TPU flex-start VM의 인스턴스 템플릿 만들기

다음 명령어는 Flex-start 소비 옵션을 사용하는 인스턴스 템플릿을 만듭니다.

 gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --instance-termination-action=DELETE \
    --provisioning-model=FLEX_START \
    --max-run-duration=DURATION \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

다음 자리표시자를 바꿉니다.

  • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.
  • MACHINE_TYPE: TPU VM의 머신 유형입니다 (예: ct6e-standard-8t).
  • DURATION: TPU VM의 최대 실행 기간입니다(예: 1h).
  • IMAGE_FAMILY: TPU VM의 OS 이미지 계열입니다. 특정 OS 버전을 설치하려면 --image 플래그를 사용합니다. OS 이미지에 대한 자세한 내용은 OS 이미지를 참고하세요.
  • IMAGE_PROJECT: OS 이미지가 포함된 프로젝트입니다. TPU 이미지의 경우 ubuntu-os-accelerator-images입니다.

MIG 만들기

다음과 같이 gcloud compute instance-groups managed create 명령어를 사용하여 영역 또는 리전 MIG를 만듭니다.

  • 단일 호스트 TPU 슬라이스가 포함된 영역 MIG를 만들려면 다음 명령어를 사용합니다.

    gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --template=INSTANCE_TEMPLATE_URL \
        --zone=ZONE
    
  • 단일 호스트 TPU 슬라이스가 포함된 리전 MIG를 만들려면 다음 명령어를 사용합니다.

    gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --template=INSTANCE_TEMPLATE_URL \
        --region=REGION \
        --target-distribution-shape=ANY_SINGLE_ZONE \
        --instance-redistribution-type=none
    

다음 자리표시자를 바꿉니다.

  • MIG_NAME: MIG 이름입니다.
  • MIG_SIZE: MIG의 VM 수입니다.
  • INSTANCE_TEMPLATE_URL: MIG에서 인스턴스를 만드는 데 사용할 인스턴스 템플릿의 URL. URL에는 인스턴스 템플릿의 ID 또는 이름이 포함될 수 있습니다. 다음 값 중 하나를 지정합니다.
    • 리전 인스턴스 템플릿의 경우: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 전역 인스턴스 템플릿의 경우: INSTANCE_TEMPLATE_ID
  • ZONE: MIG를 프로비저닝할 영역입니다.
  • REGION: MIG를 프로비저닝할 리전입니다.

MIG에서 커스텀 이름으로 VM 만들기

각 VM에 맞게 맞춤 이름을 지정하여 MIG에서 VM을 만들 수 있습니다. 이는 디버깅하고 인스턴스가 특정 순서로 생성되도록 하는 데 유용합니다.

gcloud

create-instance 명령어를 사용하여 커스텀 이름으로 VM을 만들고 --instance 플래그를 지정합니다. VM을 여러 개 만들려면 각 VM에 대해 명령어를 반복합니다. 그렇지 않으면 REST API 메서드를 사용하여 단일 요청에서 여러 VM을 지정합니다.

  • 영역 MIG의 경우 다음 명령어를 사용합니다.

    gcloud compute instance-groups managed create-instance MIG_NAME \
        --zone=ZONE \
        --instance=INSTANCE_NAME
    
  • 리전 MIG의 경우 다음 명령어를 사용합니다.

    gcloud compute instance-groups managed create-instance MIG_NAME \
        --region=REGION \
        --instance=INSTANCE_NAME
    

다음 자리표시자를 바꿉니다.

  • MIG_NAME: MIG 이름입니다.
  • ZONE: MIG의 영역입니다.
  • REGION: MIG의 리전입니다.
  • INSTANCE_NAME: 지정된 MIG에 추가할 VM의 이름입니다.

REST

다음 REST API 메서드 중 하나를 사용하여 맞춤 이름으로 VM을 만듭니다.

  • 영역 MIG의 경우 instanceGroupManagers.createInstances를 사용합니다.

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/createInstances
     {
       "instances": [
         {
           "name": "INSTANCE_NAME_1"
         },
         {
           "name": "INSTANCE_NAME_2"
         },
         ...
       ]
     }
     

  • 리전 MIG의 경우 regionInstanceGroupManagers.createInstances를 사용합니다.

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/createInstances
     {
       "instances": [
         {
           "name": "INSTANCE_NAME_1"
         },
         {
           "name": "INSTANCE_NAME_2"
         },
         ...
       ]
     }
     

다음 자리표시자를 바꿉니다.

  • PROJECT_ID: MIG가 있는 프로젝트의 ID입니다.
  • ZONE: MIG의 영역입니다.
  • REGION: MIG의 리전입니다.
  • INSTANCE_NAME_1,2,..: 지정된 MIG에 추가할 VM의 이름입니다.

다음 단계