Criar VMs de início flexível de TPU com o Compute Engine
As VMs de início flexível de TPU, com tecnologia do Dynamic Workload Scheduler, oferecem uma maneira flexível e econômica de acessar recursos de TPU para cargas de trabalho de IA por até sete dias sem reservas de longo prazo. Ao solicitar VMs de início flexível de TPU, sua solicitação permanece em uma fila até que a capacidade esteja disponível. Depois de provisionadas, as VMs de TPU são executadas pelo período especificado.
Essas VMs são adequadas para experimentos rápidos, testes em pequena escala, provisionamento dinâmico de TPUs para cargas de trabalho de inferência, ajuste de modelos e execuções de carga de trabalho que levam menos de sete dias. Para mais informações sobre outras opções de consumo de TPU, consulte Opções de consumo do Cloud TPU.
Você pode excluir seus recursos de TPU a qualquer momento para interromper o faturamento. Para mais informações sobre os preços das TPUs, consulte Preços do Cloud TPU.
Limitações
As VMs de início flexível de TPU têm as seguintes limitações:
- É possível solicitar essas VMs por até sete dias.
- É possível solicitar as seguintes versões e zonas do Cloud TPU:
Os MIGs com TPUs têm as seguintes limitações:
Operações de ciclo de vida: não é possível interromper, iniciar, retomar ou suspender instâncias de TPU. Para mudar configurações que exigem uma reinicialização ou para interromper a cobrança, exclua as instâncias.
Distribuição de zona de MIG regional: é necessário definir o formato de distribuição de destino como
ANY_SINGLE_ZONE.Atualizações de configuração em um MIG:
- Não é possível atualizar um MIG que forma uma fração de TPU de vários hosts devido à topologia de acelerador definida.
- É possível atualizar um MIG que forma frações de TPU de host único usando os
métodos automático ou seletivo.
No entanto, as atualizações para frações de TPU de host único não oferecem suporte à ação de reinicialização (
RESTART). Se uma reinicialização for necessária e a ação mais disruptiva permitida for substituir (REPLACE), o Updater vai substituir a instância. Caso contrário, a tentativa de atualização falhará com um erro.
Para um MIG que forma uma fração de TPU de vários hosts, as seguintes limitações também se aplicam:
Política de tamanho do destino: é necessário definir o modo de política de tamanho do destino como
BULK. Depois de definir esse modo, não é possível mudá-lo.Tamanho do destino: no modo em massa, é possível definir o tamanho do destino como
0ou o número de instâncias necessárias para formar a topologia do acelerador.Política de carga de trabalho: é necessário especificar uma política de carga de trabalho em que a topologia do acelerador esteja definida. Depois de definir a política de carga de trabalho, não é possível mudar ou remover a política do MIG.
Recursos não compatíveis: os MIGs com TPUs não oferecem suporte aos seguintes recursos:
- Flexibilidade da instância
- Solicitações de redimensionamento para receber recursos de uma só vez
- Configuração com estado
- Para um MIG que forma uma fração de TPU de vários hosts, o seguinte também está indisponível:
Antes de começar
Antes de solicitar as VMs de início flexível de TPU, faça o seguinte:
- Instale a CLI do Google Cloud.
- Crie um Google Cloud projeto do .
- Ative a API Compute Engine (
compute.googleapis.com). - Verifique se você tem as permissões necessárias:
roles/compute.instanceAdmin.v1roles/iam.serviceAccountUser
Para mais informações, consulte Configurar um Google Cloud projeto para TPUs.
Verifique se você tem cota preemptiva suficiente para usar as VMs de início flexível de TPU. Se a carga de trabalho exigir mais núcleos do que a alocação atual, peça um aumento de cota. Para mais detalhes, consulte Cotas do Cloud TPU.
Criar VMs de início flexível de TPU com MIGs
Para usar VMs de início flexível de TPU, crie um grupo gerenciado de instâncias (MIG) com uma configuração de modelo de instância específica.
Para instruções gerais sobre como criar VMs de início flexível, consulte Criar VMs de início flexível.
Criar VMs de início flexível de TPU com uma fração de vários hosts
Criar um modelo de instância
Crie um modelo de instância especificando o modelo de provisionamento FLEX_START e a duração da execução escolhida.
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"
Substitua os seguintes marcadores de posição:
- PROJECT_ID: o ID do seu Google Cloud projeto.
- INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.
- MACHINE_TYPE: o tipo de máquina
da VM de TPU (por exemplo,
ct6e-standard-8t). - IMAGE_FAMILY: a família de imagens do SO para a VM de TPU (por
exemplo,
ubuntu-accelerator-2204-amd64-with-tpu-v6e). - IMAGE_PROJECT: o projeto de imagem do SO para a VM de TPU
(por exemplo,
ubuntu-os-accelerator-images) - DURATION: a duração máxima da execução.
Para REST, especifique isso como um número de segundos (por exemplo,
3600para 1 hora ou604800para 7 dias). - REGION: a região em que o modelo de instância será criado.
Criar uma política de carga de trabalho
O comando a seguir cria uma política de carga de trabalho. Isso é opcional para frações de host único.
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"
Substitua os seguintes marcadores de posição:
- PROJECT_ID: o ID do seu Google Cloud projeto.
- WORKLOAD_POLICY_NAME: o nome da política de carga de trabalho.
- TOPOLOGY: a topologia das VMs de TPU, por exemplo,
4x4x8. - REGION: a região em que a política de carga de trabalho será criada.
Criar o MIG
Crie o MIG usando o modelo.
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"
Substitua os seguintes marcadores de posição:
- PROJECT_ID: o ID do seu Google Cloud projeto.
- MIG_NAME: o nome do MIG.
- ZONE: a zona do MIG.
INSTANCE_TEMPLATE_URL: o URL do modelo de instância que você quer usar para criar instâncias no MIG. O URL pode conter o ID ou o nome do modelo de instância. Especifique um dos seguintes valores:- Para um modelo de instância regional:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID. - Para um modelo de instância global:
INSTANCE_TEMPLATE_ID
- Para um modelo de instância regional:
- SIZE: o número de instâncias a serem criadas.
- WORKLOAD_POLICY_URL: o URL da política de carga de trabalho que você quer
usar para criar instâncias no MIG. Por exemplo:
projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.
Criar VMs de início flexível de TPU com frações de host único
Criar um modelo de instância
Crie um modelo de instância especificando o modelo de provisionamento FLEX_START e a duração da execução escolhida.
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"
Substitua os seguintes marcadores de posição:
- PROJECT_ID: o ID do seu Google Cloud projeto.
- INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.
- MACHINE_TYPE: o tipo de máquina
da VM de TPU (por exemplo,
ct6e-standard-8t). - IMAGE_FAMILY: a família de imagens do SO para a VM de TPU (por
exemplo,
ubuntu-accelerator-2204-amd64-with-tpu-v6e). - IMAGE_PROJECT: o projeto de imagem do SO para a VM de TPU (por
exemplo,
ubuntu-os-accelerator-images). - DURATION: a duração máxima da execução.
Para REST, especifique isso como um número de segundos (por exemplo,
3600para 1 hora ou604800para 7 dias). - REGION: a região em que o modelo de instância será criado.
Criar uma política de carga de trabalho
O comando a seguir cria uma política de carga de trabalho. Isso é opcional para frações de host único.
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"
Substitua os seguintes marcadores de posição:
- PROJECT_ID: o ID do seu Google Cloud projeto.
- WORKLOAD_POLICY_NAME: um nome para a política de carga de trabalho.
- REGION: a região em que a política de carga de trabalho será criada.
Criar o MIG
Crie o MIG usando o modelo.
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"
Substitua os seguintes marcadores de posição:
- PROJECT_ID: o ID do seu Google Cloud projeto.
- MIG_NAME: o nome do MIG.
- ZONE: a zona do MIG.
INSTANCE_TEMPLATE_URL: o URL do modelo de instância que você quer usar para criar instâncias no MIG. O URL pode conter o ID ou o nome do modelo de instância. Especifique um dos seguintes valores:- Para um modelo de instância regional:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID. - Para um modelo de instância global:
INSTANCE_TEMPLATE_ID
- Para um modelo de instância regional:
- SIZE: o número de instâncias a serem criadas.
- WORKLOAD_POLICY_URL: o URL da política de carga de trabalho que você quer
usar para criar instâncias no MIG. Por exemplo:
projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.