이 문서에서는 Tensor Processing Unit(TPU)이 있는 가상 머신(VM) 인스턴스를 사용하는 일괄 작업을 만들고 실행하는 방법을 설명합니다. TPU는 머신러닝(ML) 및 인공지능(AI) 워크로드를 가속화하도록 설계된 Google의 커스텀 개발 특정 용도 전용 집적 회로(ASIC)입니다. 일괄 작업을 만들 때 선택적으로 TPU 머신 유형을 지정하여 컨테이너화되거나 스크립트 기반 AI 및 ML 추론, 평가, 미세 조정, 학습 워크로드를 가속화할 수 있습니다.
TPU에 대한 자세한 내용은 Compute Engine 문서의 Google Cloud의 TPU 정보 및 TPU 머신 유형을 참조하세요. 또는 GPU를 사용하여 데이터 처리, AI, ML 워크로드를 가속화할 수 있습니다.
시작하기 전에
- Batch를 사용한 적이 없으면 Batch 시작하기를 검토하고 프로젝트 및 사용자 기본 요건을 완료하여 Batch를 사용 설정하세요.
-
작업을 만드는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
- 프로젝트에 대한 일괄 작업 편집자(
roles/batch.jobsEditor) - 기본적으로 기본 Compute Engine 서비스 계정인 작업의 서비스 계정에 대한 서비스 계정 사용자(
roles/iam.serviceAccountUser)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
- 프로젝트에 대한 일괄 작업 편집자(
제한사항
작업에서 TPU를 사용하는 경우 TPU에 대한 Compute Engine 제한사항 외에도 다음 제한사항이 모두 적용됩니다.
단일 호스트 TPU 슬라이스만: Batch는 단일 호스트 TPU 슬라이스라고 하는 독립적인 TPU VM만 지원합니다. 각각 상호 연결된 여러 VM으로 구성된 멀티 호스트 TPU 슬라이스는 지원되지 않습니다.
작업은 하나 이상의 단일 호스트 TPU 슬라이스에서 실행될 수 있습니다. 예를 들어 작업에서
taskCount를4로,taskCountPerNode를1로 설정하면 작업이 실행되는 VM 수는 4개 이하입니다. 멀티 호스트 TPU 슬라이스와 달리 단일 호스트 TPU 슬라이스는 각각 독립적인 VM으로 작동하며 고대역폭, 지연 시간이 짧은 통신을 위한 칩 간 상호 연결(ICI) 네트워킹을 제공하지 않습니다.Compute Engine 문서에서 단일 호스트 및 멀티 호스트 TPU 슬라이스에 대해 자세히 알아보세요.
지원되는 TPU 버전 및 머신 유형: Batch는 다음 TPU 버전 및 머신 유형에 대해 단일 호스트 TPU 슬라이스(독립 TPU VM)만 지원합니다.
- TPU7x (Ironwood):
tpu7x-standard-4t v6e(Trillium):
ct6e-standard-1t,ct6e-standard-4t,ct6e-standard-8tv5p:
ct5p-hightpu-4t지원되는 소비 옵션: Batch는 TPU를 사용하는 작업에 Flex-start VM(
FLEX_START프로비저닝 모델)을 지원하지 않습니다. Flex-start VM을 제외하고 Compute Engine 문서의 TPU 버전별 소비 옵션 가용성에 따라 작업의 TPU 버전에서 지원하는 모든 소비 옵션을 지정할 수 있습니다.단일 영역 위치 필요: TPU를 사용하는 작업을 만들 때는 작업의 허용 위치(
allowedLocations[]필드)를 TPU 버전 또는 해당하는 경우 예약이 포함된 영역으로 설정하여 작업을 특정 영역으로 제한해야 합니다.지원되지 않는 기능: TPU를 사용하는 작업은 다음 기능을 지원하지 않습니다.
지원되는 디스크와 같은 각 TPU 머신 유형에 대한 자세한 내용은 Compute Engine 문서의 TPU 머신 유형을 참조하세요.
TPU를 사용하는 작업 만들기
TPU를 사용하는 작업을 만들려면 다음을 수행합니다.
- TPU를 사용하는 작업의 구성 계획
- 식별한 구성으로 작업을 만듭니다. TPU를 사용하는 작업을 만드는 방법의 예시는 이 문서의 TPU를 사용하는 작업 만들기를 참조하세요.
TPU를 사용하는 작업의 구성 계획
TPU를 사용하는 작업을 만들기 전에 다음을 수행해야 합니다.
TPU 버전 선택: 워크로드에 적합한 TPU 버전을 선택합니다. 워크로드 유형별 TPU 버전 목록은 워크로드 유형별 권장 TPU 버전을 참조하세요.
지원되는 TPU 버전 중 하나를 선택해야 합니다.
TPU 소비 옵션 선택: 워크로드, 기간, 비용 요구사항에 가장 적합한 소비 옵션을 선택합니다. 지원되는 소비 옵션 중 하나를 선택해야 합니다. 각 소비 옵션의 사용 사례와 작업 요구사항은 다음 표에 요약되어 있습니다.
소비 옵션 및 작업 요구사항 예약 바인딩(캘린더 모드의 미래용 예약 또는 용량 블록의 미래용 예약)
사용 사례: 특정 기간 동안 TPU 리소스 가용성을 매우 높은 수준으로 보장해야 하는 작업에는 예약 바인딩 사용 옵션을 사용하는 것이 좋습니다. Compute Engine에서는 이를 캘린더 모드의 미래용 예약(1~90일) 및 용량 블록의 미래용 예약(1년 이상)으로 설명합니다.
세부정보: 작업을 만들기 전에 선택한 TPU 버전과
RESERVATION_BOUND프로비저닝 모델에 대한 예약을 가져오거나 식별해야 합니다. 예약이 생성되면 예약을 삭제할 때까지 VM을 실행하는 것과 동일한 가격으로 지정된 VM의 비용이 발생합니다. 예약을 사용하는 VM에는 별도의 비용이 발생하지 않지만 예약에는 사용량과 관계없이 비용이 발생합니다.자세한 내용은 Compute Engine 문서의 예약 유형 선택을 참조하세요.
Batch는 다음을 모두 수행하는 작업에 대해 예약 바인딩 예약을 사용합니다.
provisioningModel필드를RESERVATION_BOUND로 설정합니다.- 호환되는 예약을 구체적으로 타겟팅합니다.
reservation필드를 닉네임(예약이 동일한 프로젝트 및 영역에 있는 경우) 또는 예약, 예약 블록 또는 예약 하위 블록의 전체 리소스 경로로 설정합니다.
주문형
사용 사례: 주문형은 빠르고 간단하게 사용해 볼 수 있으므로 대부분의 작업에 기본 소비 옵션으로 사용됩니다. 하지만 다른 소비 옵션이 우선순위에 더 적합하거나 리소스 확보 가능성 문제가 반복적으로 발생하는 경우에는 주문형을 사용하지 않는 것이 좋습니다.
세부정보: 주문형은 일반적으로 Compute Engine VM에 액세스하는 기본 방법입니다. 주문형을 사용하면 요청 시 리소스에 액세스할 수 있습니다(사용 가능한 경우). 작업이 완료되거나 실행 시간 제한에 도달할 때까지 리소스가 삭제되지 않습니다.
Batch는 기본적으로 대부분의 작업에 주문형을 사용합니다. 작업에서 주문형을 사용하도록 하려면 다음을 모두 수행합니다.
provisioningModel필드를STANDARD로 설정합니다.- 예약 사용을 방지합니다. 작업이 호환되는 예약을 사용하여 자동으로 사용하지 못하도록 하려면
reservation필드를NO_RESERVATION으로 설정합니다. 자세한 내용은 예약된 VM을 사용할 수 없는 작업 만들기 및 실행을 참조하세요.
스팟 VM
사용 사례: 내결함성 워크로드의 비용을 줄이려면 스팟 VM을 사용하는 것이 좋습니다.
세부정보: 스팟 VM을 사용하는 작업을 만드는 요청이 처리되면 VM은 스팟 VM 가격 책정에 따라 청구됩니다. 이 가격은 자주 변경될 수 있으며 주문형 가격의 최대 91%까지 가장 큰 할인을 제공할 수 있습니다. 하지만 스팟 VM은 항상 사용할 수 있는 것이 아니며 언제든지 선점될 수 있습니다.
스팟 VM 및 스팟 VM을 사용하는 작업에 대한 권장사항에 대해 자세히 알아보세요.
Batch는 다음을 모두 수행하는 작업에 스팟 VM을 사용합니다.
provisioningModel필드를SPOT로 설정합니다.- (선택사항) 예약 사용을 방지합니다. 예약과 함께 스팟 VM을 사용할 수 없습니다. 특히 작업은 선택적으로
reservation필드를NO_RESERVATION로 설정할 수 있습니다. 자세한 내용은 예약된 VM을 사용할 수 없는 작업 만들기 및 실행을 참조하세요.
선택한 TPU를 사용할 수 있는 영역 선택: TPU 버전을 사용하려면 작업의
allowedLocations[]필드를 다음과 같이 선택한 TPU가 포함된 영역으로 설정해야 합니다.- 예약을 사용하는 소비 옵션을 선택한 경우 예약이 있는 영역을 사용해야 합니다.
- 그렇지 않으면 TPU 가용성에 따라 TPU 버전이 포함된 영역을 선택합니다.
두 경우 모두 영역은 Batch에 지원되는 지역 중 하나에 있어야 합니다.
프로젝트에 충분한 TPU 할당량이 있는지 확인: 주문형 또는 스팟 VM으로 TPU를 사용하는 작업을 만드는 경우 사용하려는 리전에 사용 가능한 TPU 할당량이 충분해야 합니다. TPU 예약을 사용하는 TPU를 사용하는 작업을 만들 때는 예약이 생성될 때 할당량이 사용되므로 TPU 할당량이 필요하지 않습니다. TPU 할당량 이름 목록은 TPU 할당량을 참조하고 할당량을 보는 방법은 할당량 보기 및 관리를 참조하세요.
TPU 머신 유형 선택: 선택한 TPU 버전에 맞는 TPU 머신 유형을 선택합니다. 예약을 사용하는 소비 옵션을 선택한 경우 예약의 머신 유형을 사용해야 합니다. 각 TPU 버전에 사용할 수 있는 머신 유형 목록은 TPU 머신 유형을 참조하세요.
TPU를 사용하는 작업 만들기
다음 섹션에서는 각 소비 옵션에 TPU를 사용하는 예시 작업을 만드는 방법을 설명합니다.
| 소비 옵션 | 작업 안내 예시 |
|---|---|
| 예약 바인딩(캘린더 모드의 미래용 예약 또는 용량 블록의 미래용 예약) | |
| 주문형 또는 스팟 VM |
주문형 또는 스팟 VM과 함께 TPU 사용
gcloud CLI 또는 Batch API를 사용하여 주문형 또는 스팟 VM과 함께 TPU를 사용하는 작업을 만들 수 있습니다.
gcloud
지원되는 단일 호스트 TPU 머신 유형을 지정하고, 프로비저닝 모델을
STANDARD또는SPOT로 설정하고, TPU 머신 유형을 제공하는 위치에서 실행되는 JSON 구성 파일을 만듭니다.예를 들어 기본 스크립트 작업을 만들려면 다음 콘텐츠로 JSON 파일을 만듭니다.
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "policy": { "provisioningModel": "PROVISIONING_MODEL", "machineType": "MACHINE_TYPE" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }다음을 바꿉니다.
PROVISIONING_MODEL: 소비 옵션의 프로비저닝 모델입니다. 주문형의 경우STANDARD, 스팟 VM의 경우SPOT입니다.MACHINE_TYPE: 지원되는 단일 호스트 TPU 머신 유형(예:ct5p-hightpu-4t)ALLOWED_LOCATIONS: 작업에 허용되는 위치입니다. TPU를 사용하는 작업의 경우allowedLocations[]필드를 TPU 머신 유형을 제공하는 영역으로 설정해야 합니다. 예를 들어zones/us-central1-a는 TPU 머신 유형ct5p-hightpu-4t를 제공합니다.
작업을 만들고 실행하려면
gcloud batch jobs submit명령어를 사용합니다.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE다음을 바꿉니다.
JOB_NAME: 작업의 이름LOCATION: 작업의 위치JSON_CONFIGURATION_FILE: 작업의 구성 세부정보가 포함된 JSON 파일의 경로
API
지원되는 단일 호스트 TPU 머신 유형을 지정하고, 프로비저닝 모델을 STANDARD 또는 SPOT로 설정하고, TPU 머신 유형을 제공하는 위치에서 실행되는 jobs.create 메서드에 POST 요청을 보냅니다.
예를 들어 기본 스크립트 작업을 만들려면 다음 요청을 수행합니다.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"provisioningModel": "PROVISIONING_MODEL",
"machineType": "MACHINE_TYPE"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
다음을 바꿉니다.
PROJECT_ID: 프로젝트의 프로젝트 IDLOCATION: 작업의 위치JOB_NAME: 작업의 이름입니다.PROVISIONING_MODEL: 소비 옵션의 프로비저닝 모델입니다. 주문형의 경우STANDARD, 스팟 VM의 경우SPOT입니다.MACHINE_TYPE: 지원되는 단일 호스트 TPU 머신 유형(예:ct5p-hightpu-4t)ALLOWED_LOCATIONS: 작업에 허용되는 위치입니다. TPU를 사용하는 작업의 경우allowedLocations[]필드를 TPU 머신 유형을 제공하는 영역으로 설정해야 합니다. 예를 들어zones/us-central1-a는 TPU 머신 유형ct5p-hightpu-4t를 제공합니다.
예약에 따른 소비 옵션으로 TPU 사용
gcloud CLI 또는 Batch API를 사용하여 예약 바인딩(RESERVATION_BOUND) 프로비저닝 모델(용량 블록의 미래용 예약 또는 캘린더 모드의 미래용 예약)에 대한 소비 옵션이 있는 TPU를 사용하는 작업을 만들 수 있습니다.
gcloud
단일 호스트 TPU 머신 유형의 예약을 지정하고 프로비저닝 모델을
RESERVATION_BOUND로 설정하고 예약 영역에서 실행되는 JSON 구성 파일을 만듭니다.예를 들어 기본 스크립트 작업을 만들려면 다음 콘텐츠로 JSON 파일을 만듭니다.
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "policy": { "provisioningModel": "RESERVATION_BOUND", "reservation": "RESERVATION", "machineType": "MACHINE_TYPE" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }다음을 바꿉니다.
RESERVATION: 예약에 대한 다음 경로 중 하나로 바꿉니다.캘린더 모드의 미래용 예약 또는 용량 블록의 미래용 예약에 대한 예약의 일부를 사용하려면 예약을 지정합니다.
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME용량 블록의 미래용 예약에서 특정 블록을 사용하려면 예약 블록을 지정합니다.
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAME용량 블록의 미래용 예약에서 특정 하위 블록을 사용하려면 예약 하위 블록을 지정합니다.
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationSubBlocks/SUB_BLOCK_NAME
MACHINE_TYPE: 예약의 TPU 머신 유형입니다(예:ct5p-hightpu-4t).ALLOWED_LOCATIONS: 작업에 허용되는 위치입니다. 예약된 TPU를 사용하는 작업의 경우allowedLocations[]필드를 예약 영역으로 설정해야 합니다. 예를 들어zones/us-central1-a는 TPU 머신 유형ct5p-hightpu-4t를 제공합니다.
작업을 만들고 실행하려면
gcloud batch jobs submit명령어를 사용합니다.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE다음을 바꿉니다.
JOB_NAME: 작업의 이름LOCATION: 작업의 위치JSON_CONFIGURATION_FILE: 작업의 구성 세부정보가 포함된 JSON 파일의 경로
API
단일 호스트 TPU 머신 유형의 예약을 지정하고, 프로비저닝 모델을 RESERVATION_BOUND로 설정하고, 예약 영역에서 실행되는 jobs.create 메서드에 POST 요청을 실행합니다.
예를 들어 기본 스크립트 작업을 만들려면 다음 요청을 수행합니다.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"provisioningModel": "RESERVATION_BOUND",
"reservation": "RESERVATION",
"machineType": "MACHINE_TYPE"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
다음을 바꿉니다.
PROJECT_ID: 프로젝트의 프로젝트 IDLOCATION: 작업의 위치JOB_NAME: 작업의 이름입니다.RESERVATION: 예약에 대한 다음 경로 중 하나로 바꿉니다.캘린더 모드의 미래용 예약 또는 용량 블록의 미래용 예약에 대한 예약의 일부를 사용하려면 예약을 지정합니다.
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME용량 블록의 미래용 예약에서 특정 블록을 사용하려면 예약 블록을 지정합니다.
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAME용량 블록의 미래용 예약에서 특정 하위 블록을 사용하려면 예약 하위 블록을 지정합니다.
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationSubBlocks/SUB_BLOCK_NAME
MACHINE_TYPE: 예약의 TPU 머신 유형입니다(예:ct5p-hightpu-4t).ALLOWED_LOCATIONS: 작업에 허용되는 위치입니다. 예약된 TPU를 사용하는 작업의 경우allowedLocations[]필드를 예약 영역으로 설정해야 합니다. 예를 들어zones/us-central1-a는 TPU 머신 유형ct5p-hightpu-4t를 제공합니다.
예약을 사용하는 작업을 만드는 방법에 대한 자세한 내용은 VM 예약을 사용하여 리소스 가용성 확보를 참조하세요.
다음 단계
- 작업을 만들거나 실행하는 데 문제가 있는 경우 문제 해결을 참조하세요.
- 작업 및 태스크 보기
- 작업 만들기 옵션 자세히 알아보기