단일 호스트 Cloud TPU 슬라이스로 MIG 만들기
이 문서에서는 여러 개의 독립적인 단일 호스트 TPU 슬라이스로 관리형 인스턴스 그룹 (MIG)을 만드는 방법을 설명합니다.
기본 요건
다음 기본 요건을 완료합니다.
- TPU용 프로젝트 설정에 설명된 대로 TPU용 프로젝트를 만듭니다.
- 리소스 계획에 설명된 대로 TPU 요구사항을 결정합니다.
여러 개의 단일 호스트 TPU 슬라이스로 MIG 만들기
MIG에서 여러 개의 독립적인 TPU VM을 만들려면 다음 단계를 따르세요.
- 인스턴스 템플릿을 만듭니다.
- MIG를 만듭니다.
인스턴스 템플릿 만들기
인스턴스 템플릿 구성은 사용 중인 소비 옵션(온디맨드, 스팟, 예약, Flex-start)에 따라 다릅니다. 소비 옵션에 대한 자세한 내용은 TPU 리소스 계획 을 참조하세요.
온디맨드 TPU VM의 인스턴스 템플릿 만들기
다음 명령어는 온디맨드 소비 옵션을 사용하는 인스턴스 템플릿을 만듭니다.
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE"
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
다음 자리표시자를 바꿉니다.
PROJECT_ID: 프로젝트의 ID입니다. Google CloudINSTANCE_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
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
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "SPOT",
"instanceTerminationAction": "STOP"
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
다음 자리표시자를 바꿉니다.
PROJECT_ID: 프로젝트의 ID입니다. Google CloudINSTANCE_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
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
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "RESERVATION_BOUND",
"instanceTerminationAction": "DELETE"
},
"reservationAffinity": {
"consumeReservationType": "SPECIFIC_RESERVATION",
"key": "compute.googleapis.com/reservation-name",
"values": [
"RESERVATION_NAME"
]
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
다음 자리표시자를 바꿉니다.
PROJECT_ID: 프로젝트의 ID입니다. Google CloudINSTANCE_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
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
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
}
}
],
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "FLEX_START",
"instanceTerminationAction": "DELETE",
"maxRunDuration": {
"seconds": "DURATION"
}
},
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"
다음 자리표시자를 바꿉니다.
PROJECT_ID: 프로젝트의 ID입니다. Google CloudINSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.MACHINE_TYPE: TPU VM의 머신 유형 입니다 (예:ct6e-standard-8t).DURATION: TPU VM의 최대 실행 시간입니다. REST의 경우 초 수 와 "s"가 포함된 문자열로 지정합니다(예: 1시간의 경우3600s, 7일의 경우604800s).IMAGE_FAMILY: TPU VM의 OS 이미지 계열 입니다. 특정 OS 버전을 설치하려면--image플래그를 사용하세요. OS 이미지에 대한 자세한 내용은 OS 이미지를 참조하세요.IMAGE_PROJECT: OS 이미지가 포함된 프로젝트입니다. TPU 이미지의 경우ubuntu-os-accelerator-images입니다.
MIG 만들기
단일 호스트 TPU 슬라이스가 포함된 영역 MIG를 만들려면 다음 명령어를 사용합니다.
gcloud
gcloud compute instance-groups managed create MIG_NAME \
--size=MIG_SIZE \
--template=INSTANCE_TEMPLATE_URL \
--zone=ZONE
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "MIG_NAME",
"targetSize": MIG_SIZE,
"instanceTemplate": "INSTANCE_TEMPLATE_URL"
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"
다음 자리표시자를 바꿉니다.
PROJECT_ID: 프로젝트의 ID입니다. Google CloudMIG_NAME: MIG의 이름입니다.MIG_SIZE: MIG의 크기입니다.INSTANCE_TEMPLATE_URL: MIG에서 인스턴스를 만드는 데 사용할 인스턴스 템플릿의 URL입니다. URL에는 인스턴스 템플릿의 ID 또는 이름이 포함될 수 있습니다. 다음 값 중 하나를 지정합니다.- 리전 인스턴스 템플릿의 경우:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 전역 인스턴스 템플릿의 경우:
INSTANCE_TEMPLATE_ID
- 리전 인스턴스 템플릿의 경우:
ZONE: MIG의 영역입니다.
단일 호스트 TPU 슬라이스가 포함된 리전 MIG를 만들려면 다음 명령어를 사용합니다.
gcloud
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
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "MIG_NAME",
"targetSize": MIG_SIZE,
"instanceTemplate": "INSTANCE_TEMPLATE_URL",
"distributionPolicy": {
"targetShape": "ANY_SINGLE_ZONE"
},
"updatePolicy": {
"instanceRedistributionType": "NONE"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers"
다음 자리표시자를 바꿉니다.
PROJECT_ID: 프로젝트의 ID입니다. Google CloudMIG_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
다음 자리표시자를 바꿉니다.
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" }, ... ] }
다음 자리표시자를 바꿉니다.
다음 단계
- TPU VM 및 MIG에 대해 알아봅니다.
- 멀티 호스트 Cloud TPU 슬라이스로 MIG를 만드는 방법을 알아봅니다.
- TPU VM을 관리하는 방법을 알아봅니다.
- GKE의 TPU에 대해 알아봅니다.
- TPU에서 ML 워크로드를 실행하는 방법(예: TPU에서 vLLM으로 Qwen2-72B-Instruct 서빙)을 알아봅니다.