Compute Engine으로 TPU Flex-start VM 만들기
동적 워크로드 스케줄러를 기반으로 하는 TPU flex-start VM은 장기 예약 없이 최대 7일 동안 AI 워크로드용 TPU 리소스에 유연하고 비용 효율적으로 액세스하는 방법을 제공합니다. TPU flex-start VM을 요청하면 용량이 확보될 때까지 요청이 큐에 유지됩니다. 프로비저닝이 완료되면 TPU VM은 지정된 기간 동안 실행됩니다.
TPU flex-start VM은 빠른 실험, 소규모 테스트, 추론 워크로드를 위한 TPU 동적 프로비저닝, 모델 세부 조정, 7일 미만 실행되는 워크로드 실행에 적합합니다. 다른 TPU 소비 옵션에 대한 자세한 내용은 Cloud TPU 소비 옵션을 참조하세요.
언제든지 TPU 리소스를 삭제하여 비용 청구를 중지할 수 있습니다. TPU 가격 책정에 대한 자세한 내용은 Cloud TPU 가격 책정을 참조하세요.
제한사항
TPU flex-start VM에는 다음과 같은 제한사항이 있습니다.
- 최대 7일 동안 TPU flex-start VM을 요청할 수 있습니다.
- TPU7x, TPU v6e, TPU v5p 머신 유형을 요청할 수 있습니다. 이러한 머신 유형을 사용할 수 있는 리전 및 영역에 대한 자세한 내용은 TPU 리전 및 영역을 참고하세요.
TPU가 있는 MIG에는 다음과 같은 제한사항이 있습니다.
수명 주기 작업: TPU 인스턴스를 중지, 시작, 재개 또는 일시중지할 수 없습니다. 다시 시작해야 하는 구성을 변경하거나 요금이 청구되지 않도록 하려면 인스턴스를 삭제해야 합니다.
리전 MIG 영역 분산: 대상 분산 형태를
ANY_SINGLE_ZONE으로 설정해야 합니다.MIG의 구성 업데이트:
- 정의된 가속기 토폴로지 때문에 멀티 호스트 TPU 슬라이스를 형성하는 MIG는 업데이트할 수 없습니다.
- 자동 또는 선택적 방법을 사용하여 단일 호스트 TPU 슬라이스를 형성하는 MIG를 업데이트할 수 있습니다.
하지만 단일 호스트 TPU 슬라이스의 업데이트는 다시 시작(
RESTART) 작업을 지원하지 않습니다. 다시 시작이 필요하고 허용되는 가장 중단을 많이 유발하는 작업이 바꾸기 (REPLACE)인 경우 업데이터가 인스턴스를 바꿉니다. 그렇지 않으면 업데이트 시도가 오류와 함께 실패합니다.
멀티 호스트 TPU 슬라이스를 형성하는 MIG에는 다음 제한사항도 적용됩니다.
대상 크기 정책: 대상 크기 정책 모드를
BULK로 설정해야 합니다. 이 모드를 설정한 후에는 변경할 수 없습니다.타겟 크기: 일괄 모드에서 타겟 크기를
0또는 가속기 토폴로지를 형성하는 데 필요한 인스턴스 수로 설정할 수 있습니다.워크로드 정책: 가속기 토폴로지가 정의된 워크로드 정책을 지정해야 합니다. 워크로드 정책을 설정한 후에는 MIG에서 정책을 변경하거나 삭제할 수 없습니다.
MIG 시작 복구:
defaultActionOnFailure필드를DO_NOTHING로 설정하여 MIG 시작 복구를 사용 중지해야 합니다. 이 구성에서는 MIG가 실패한 인스턴스에 대해 아무런 조치도 취하지 않습니다. Compute Engine은 정상 용량에서 동일한 슬라이스의 모든 인스턴스를 다시 시작하여 실패한 인스턴스를 자동으로 복구합니다.
지원되지 않는 기능: TPU가 있는 MIG는 다음 기능을 지원하지 않습니다.
시작하기 전에
TPU flex-start VM을 요청하기 전에 다음 작업을 수행해야 합니다.
- Google Cloud CLI 설치
- Google Cloud 프로젝트 만들기
- Compute Engine API (
compute.googleapis.com) 사용 설정 - 필수 권한이 있는지 확인합니다.
roles/compute.instanceAdmin.v1roles/iam.serviceAccountUser
자세한 내용은 TPU용 Google Cloud 프로젝트 설정을 참고하세요.
TPU Flex-start VM을 사용하기에 충분한 선점형 할당량이 있는지 확인합니다. 워크로드에 현재 할당량보다 많은 코어가 필요한 경우 할당량 증가를 요청할 수 있습니다. 자세한 내용은 Cloud TPU 할당량을 참고하세요.
MIG로 TPU Flex-start VM 만들기
TPU Flex-start VM을 사용하려면 특정 인스턴스 템플릿 구성으로 관리형 인스턴스 그룹 (MIG)을 만듭니다.
Flex-start VM 생성에 관한 일반적인 안내는 Flex-start VM 만들기를 참고하세요.
멀티 호스트 슬라이스로 TPU Flex-start VM 만들기
인스턴스 템플릿 만들기
FLEX_START 프로비저닝 모델과 선택한 실행 기간을 지정하는 인스턴스 템플릿을 만듭니다.
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT \
--provisioning-model=FLEX_START \
--instance-termination-action=DELETE \
--max-run-duration=DURATION \
--region=REGION \
--maintenance-policy=TERMINATE
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/regions/REGION/instanceTemplates"
다음 자리표시자를 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
- INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.
- MACHINE_TYPE: TPU VM의 머신 유형 (예:
ct6e-standard-8t) - IMAGE_FAMILY: TPU VM의 OS 이미지 계열 (예:
ubuntu-accelerator-2204-amd64-with-tpu-v6e) - IMAGE_PROJECT: TPU VM의 OS 이미지 프로젝트입니다(예:
ubuntu-os-accelerator-images). - DURATION: 최대 실행 시간입니다.
REST의 경우 이를 초 수로 지정합니다 (예: 1시간의 경우
3600, 7일의 경우604800). - REGION: 인스턴스 템플릿을 만들 리전입니다.
워크로드 정책 만들기
다음 명령어는 워크로드 정책을 만듭니다. 단일 호스트 슬라이스의 경우 선택사항입니다.
gcloud
gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
--type=high-throughput \
--accelerator-topology=TOPOLOGY \
--region=REGION
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "WORKLOAD_POLICY_NAME",
"workloadPolicy": {
"type": "HIGH_THROUGHPUT",
"acceleratorTopology": "TOPOLOGY"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies"
다음 자리표시자를 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
- WORKLOAD_POLICY_NAME: 워크로드 정책의 이름입니다.
- TOPOLOGY: TPU VM의 토폴로지입니다(예:
4x4x8). - REGION: 워크로드 정책을 만들 리전입니다.
MIG 만들기
템플릿을 사용하여 MIG를 만듭니다.
gcloud
gcloud compute instance-groups managed create MIG_NAME \
--zone=ZONE \
--template=INSTANCE_TEMPLATE_URL \
--size=SIZE \
--workload-policy=WORKLOAD_POLICY_URL \
--default-action-on-vm-failure=do-nothing \
--target-size-policy-mode=bulk
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "MIG_NAME",
"targetSize": SIZE,
"targetSizePolicy": {
"mode": "BULK"
},
"instanceTemplate": "INSTANCE_TEMPLATE_URL",
"instanceLifecyclePolicy": {
"defaultActionOnFailure": "DO_NOTHING"
},
"resourcePolicies": {
"workloadPolicy": "WORKLOAD_POLICY_URL"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"
다음 자리표시자를 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
- MIG_NAME: MIG 이름입니다.
- ZONE: MIG의 영역입니다.
INSTANCE_TEMPLATE_URL: MIG에서 인스턴스를 만드는 데 사용할 인스턴스 템플릿의 URL. URL에는 인스턴스 템플릿의 ID 또는 이름이 포함될 수 있습니다. 다음 값 중 하나를 지정합니다.- 리전 인스턴스 템플릿의 경우:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 전역 인스턴스 템플릿의 경우:
INSTANCE_TEMPLATE_ID
- 리전 인스턴스 템플릿의 경우:
- SIZE: 만들 인스턴스 수입니다.
- WORKLOAD_POLICY_URL: MIG에서 인스턴스를 만드는 데 사용할 워크로드 정책의 URL입니다. 예를 들면
projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME입니다.
단일 호스트 슬라이스로 TPU Flex-start VM 만들기
인스턴스 템플릿 만들기
FLEX_START 프로비저닝 모델과 선택한 실행 기간을 지정하는 인스턴스 템플릿을 만듭니다.
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--machine-type=MACHINE_TYPE \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT \
--provisioning-model=FLEX_START \
--instance-termination-action=DELETE \
--max-run-duration=DURATION \
--region=REGION \
--maintenance-policy=TERMINATE
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/regions/REGION/instanceTemplates"
다음 자리표시자를 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
- INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.
- MACHINE_TYPE: TPU VM의 머신 유형 (예:
ct6e-standard-8t) - IMAGE_FAMILY: TPU VM의 OS 이미지 계열 (예:
ubuntu-accelerator-2204-amd64-with-tpu-v6e) - IMAGE_PROJECT: TPU VM의 OS 이미지 프로젝트 (예:
ubuntu-os-accelerator-images) - DURATION: 최대 실행 시간입니다.
REST의 경우 이를 초 수로 지정합니다 (예: 1시간의 경우
3600, 7일의 경우604800). - REGION: 인스턴스 템플릿을 만들 리전입니다.
워크로드 정책 만들기
다음 명령어는 워크로드 정책을 만듭니다. 단일 호스트 슬라이스의 경우 선택사항입니다.
gcloud
gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
--type=high-throughput \
--region=REGION
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "WORKLOAD_POLICY_NAME",
"workloadPolicy": {
"type": "HIGH_THROUGHPUT"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies"
다음 자리표시자를 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
- WORKLOAD_POLICY_NAME: 워크로드 정책의 이름입니다.
- REGION: 워크로드 정책을 만들 리전입니다.
MIG 만들기
템플릿을 사용하여 MIG를 만듭니다.
gcloud
gcloud compute instance-groups managed create MIG_NAME \
--zone=ZONE \
--template=INSTANCE_TEMPLATE_URL \
--size=SIZE \
--workload-policy=WORKLOAD_POLICY_URL
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "MIG_NAME",
"targetSize": SIZE,
"instanceTemplate": "INSTANCE_TEMPLATE_URL",
"resourcePolicies": {
"workloadPolicy": "WORKLOAD_POLICY_URL"
}
}' \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"
다음 자리표시자를 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
- MIG_NAME: MIG 이름입니다.
- ZONE: MIG의 영역입니다.
INSTANCE_TEMPLATE_URL: MIG에서 인스턴스를 만드는 데 사용할 인스턴스 템플릿의 URL. URL에는 인스턴스 템플릿의 ID 또는 이름이 포함될 수 있습니다. 다음 값 중 하나를 지정합니다.- 리전 인스턴스 템플릿의 경우:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 전역 인스턴스 템플릿의 경우:
INSTANCE_TEMPLATE_ID
- 리전 인스턴스 템플릿의 경우:
- SIZE: 만들 인스턴스 수입니다.
- WORKLOAD_POLICY_URL: MIG에서 인스턴스를 만드는 데 사용할 워크로드 정책의 URL입니다. 예를 들면
projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME입니다.