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을 요청할 수 있습니다.
- 다음 Cloud TPU 버전과 영역을 요청할 수 있습니다.
TPU가 포함된 MIG에는 다음과 같은 제한사항이 있습니다.
수명 주기 작업: TPU 인스턴스를 중지, 시작, 재개 또는 일시중지할 수 없습니다. 다시 시작해야 하는 구성을 변경하거나 요금 발생을 중지하려면 인스턴스를 삭제해야 합니다.
리전 MIG 영역 배포: 대상 배포 형태를
ANY_SINGLE_ZONE으로 설정해야 합니다.MIG의 구성 업데이트:
- 정의된 가속기 토폴로지 때문에 멀티 호스트 TPU 슬라이스를 형성하는 MIG는 업데이트할 수 없습니다.
- 자동 또는 선택적 방법을 사용하여 단일 호스트 TPU 슬라이스를 형성하는 MIG를 업데이트할 수 있습니다.
하지만 단일 호스트 TPU 슬라이스의 업데이트는 다시 시작(
RESTART) 작업을 지원하지 않습니다. 다시 시작이 필요하고 허용되는 가장 파괴적인 작업이 바꾸기 (REPLACE)인 경우 업데이터가 인스턴스를 바꿉니다. 그렇지 않으면 업데이트 시도가 오류와 함께 실패합니다.
멀티 호스트 TPU 슬라이스를 형성하는 MIG에는 다음과 같은 제한사항도 적용됩니다.
대상 크기 정책: 대상 크기 정책 모드를
BULK로 설정해야 합니다. 이 모드를 설정한 후에는 변경할 수 없습니다.대상 크기: 일괄 모드에서 대상 크기를
0또는 가속기 토폴로지를 형성하는 데 필요한 인스턴스 수로 설정할 수 있습니다.워크로드 정책: 가속기 토폴로지가 정의된 워크로드 정책을 지정해야 합니다. 워크로드 정책을 설정한 후에는 MIG에서 정책을 변경하거나 삭제할 수 없습니다.
지원되지 않는 기능: TPU가 포함된 MIG는 다음 기능을 지원하지 않습니다.
- 인스턴스 유연성
- 한 번에 모든 리소스를 가져오는 크기 조절 요청
- 스테이트풀(Stateful) 구성
- 멀티 호스트 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: 프로젝트의 ID입니다. Google Cloud
- 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의 경우 초 단위로 지정합니다 (예:
3600의 경우 1시간, 또는604800의 경우 7일). - 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: 프로젝트의 ID입니다. Google Cloud
- 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: 프로젝트의 ID입니다. Google Cloud
- 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: 프로젝트의 ID입니다. Google Cloud
- 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의 경우 초 단위로 지정합니다 (예:
3600의 경우 1시간, 또는604800의 경우 7일). - 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: 프로젝트의 ID입니다. Google Cloud
- 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: 프로젝트의 ID입니다. Google Cloud
- 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입니다.