단일 호스트 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: Google Cloud 프로젝트의 ID입니다.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
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: Google Cloud 프로젝트의 ID입니다.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
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: Google Cloud 프로젝트의 ID입니다.INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.MACHINE_TYPE: TPU VM의 머신 유형 (예:ct6e-standard-8t)RESERVATION_NAME: 사용할 특정 예약의 이름입니다. 모든 용량 모드 예약의 경우 다음과 같이 예약 URL을 지정하여 블록 또는 하위 블록을 타겟팅할 수 있습니다.블록을 지정합니다.
RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME하위 블록을 지정합니다.
RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_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: Google Cloud 프로젝트의 ID입니다.INSTANCE_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: Google Cloud 프로젝트의 ID입니다.MIG_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: Google Cloud 프로젝트의 ID입니다.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
다음 자리표시자를 바꿉니다.
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에서 vLLM으로 Qwen2-72B-Instruct 서빙과 같이 TPU에서 ML 워크로드를 실행하는 방법을 알아봅니다.