Ao executar um job de treinamento no AI Platform Training, especifique o número e os tipos de máquinas que serão necessários. Para facilitar o processo, escolha uma opção em um conjunto de especificações de cluster predefinidas chamadas níveis de escalonamento. Como alternativa, é possível escolher um nível personalizado e especificar os tipos de máquina por conta própria.
Como especificar a configuração
A especificação da sua configuração de cluster dependerá de como você planeja executar o job de treinamento:
gcloud
Crie um arquivo de configuração YAML que represente o objeto TrainingInput
e especifique o identificador do nível de escalonamento e os tipos de máquina nesse arquivo. É possível nomear esse arquivo como quiser. Por convenção, o nome é config.yaml
.
O exemplo a seguir mostra o conteúdo do arquivo de configuração, config.yaml
, para um job com um cluster de processamento personalizado.
trainingInput: scaleTier: CUSTOM masterType: n1-highcpu-16 workerType: n1-highcpu-16 parameterServerType: n1-highmem-8 evaluatorType: n1-highcpu-16 workerCount: 9 parameterServerCount: 3 evaluatorCount: 1
Forneça o caminho para o arquivo YAML na sinalização --config
ao executar o comando gcloud ai-platform jobs submit training
:
gcloud ai-platform jobs submit training $JOB_NAME \ --package-path $TRAINER_PACKAGE_PATH \ --module-name $MAIN_TRAINER_MODULE \ --job-dir $JOB_DIR \ --region $REGION \ --config config.yaml \ -- \ --user_first_arg=first_arg_value \ --user_second_arg=second_arg_value
Como alternativa, especifique detalhes de configuração de cluster com sinalizações de linha de comando, em vez de em um arquivo de configuração. Saiba mais sobre como usar essas sinalizações.
No exemplo a seguir, mostramos como enviar um job de treinamento com uma configuração semelhante ao exemplo anterior, mas sem usar um arquivo de configuração:
gcloud ai-platform jobs submit training $JOB_NAME \
--package-path $TRAINER_PACKAGE_PATH \
--module-name $MAIN_TRAINER_MODULE \
--job-dir $JOB_DIR \
--region $REGION \
--scale-tier custom \
--master-machine-type n1-highcpu-16 \
--worker-machine-type n1-highcpu-16 \
--parameter-server-machine-type n1-highmem-8 \
--worker-count 9 \
--parameter-server-count 3 \
-- \
--user_first_arg=first_arg_value \
--user_second_arg=second_arg_value
Saiba mais sobre como executar um job de treinamento.
Python
Especifique o identificador do nível de escalonamento e os tipos de máquina no objeto TrainingInput
na configuração do job.
Veja no exemplo a seguir como criar uma representação "Job" para um job com cluster de processamento personalizado.
training_inputs = {'scaleTier': 'CUSTOM', 'masterType': 'n1-highcpu-16', 'workerType': 'n1-highcpu-16', 'parameterServerType': 'n1-highmem-8', 'evaluatorType': 'n1-highcpu-16', 'workerCount': 9, 'parameterServerCount': 3, 'evaluatorCount': 1, 'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz'], 'pythonModule': 'trainer.task' 'args': ['--arg1', 'value1', '--arg2', 'value2'], 'region': 'us-central1', 'jobDir': 'gs://my/training/job/directory', 'runtimeVersion': '2.11', 'pythonVersion': '3.7'} job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}
Observe que training_inputs
e job_spec
são identificadores arbitrários: nomeie esses dicionários como quiser. No entanto, as chaves do dicionário precisam ser nomeadas exatamente como mostradas, para corresponder aos nomes nos recursos Job
e TrainingInput
.
Níveis de escalonamento
O Google pode otimizar a configuração dos níveis de escalonamento de jobs diferentes ao longo do tempo, de acordo com o feedback dos clientes e a disponibilidade de recursos da nuvem. Cada nível de escalonamento é definido com base na adequação dele a determinados tipos de jobs. Geralmente, quanto mais avançado ele for, mais máquinas serão alocadas para o cluster e mais avançadas serão as especificações de cada máquina virtual. Conforme a complexidade do nível de escalonamento aumenta, o custo por hora dos jobs de treinamento também fica maior. Ele é medido em unidades de treinamento. Consulte a página de preços para calcular o custo do job.
O AI Platform Training não é compatível com treinamento distribuído ou treinamento com aceleradores para código de scikit-learn ou XGBoost. Se o job de treinamento executar código de scikit-learn ou XGBoost, será necessário definir o nível de escalonamento como BASIC
ou CUSTOM
.
Veja a seguir os identificadores de níveis de escalonamento:
Nível de escalonamento do AI Platform Training | |
---|---|
BASIC
|
Uma única instância de worker. Esse nível é adequado para aprender como usar o AI Platform Training e para testar novos modelos usando pequenos conjuntos de dados. Nome da máquina do Compute Engine: n1-standard-4 |
STANDARD_1
|
Uma instância mestre mais quatro workers e três servidores de parâmetros. Use este nível de escalonamento somente se você estiver treinando com o TensorFlow ou usando contêineres personalizados. Nome da máquina do Compute Engine, mestre: n1-highcpu-8, workers: n1-highcpu-8, servidores de parâmetros: n1-standard-4 |
PREMIUM_1
|
Uma instância mestre mais 19 workers e 11 servidores de parâmetros. Use este nível de escalonamento somente se você estiver treinando com o TensorFlow ou usando contêineres personalizados. Nome da máquina do Compute Engine, mestre: n1-highcpu-16, workers: n1-highcpu-16, servidores de parâmetros: n1-highmem-8 |
BASIC_GPU
|
Uma única instância de worker com uma GPU. Para saber mais sobre as unidades de processamento gráfico (GPUs, na sigla em inglês), consulte a seção sobre o treinamento com GPUs. Use este nível de escalonamento somente se você estiver treinando com o TensorFlow ou usando contêineres personalizados. Nome da máquina do Compute Engine: n1-standard-8 com uma GPU |
BASIC_TPU
|
Uma VM mestre e uma Cloud TPU com oito núcleos da TPU v2. Consulte como usar TPUs para o job de treinamento. Use este nível de escalonamento somente se você estiver treinando com o TensorFlow ou usando contêineres personalizados. Nome da máquina do Compute Engine, mestre: n1-standard-4, workers: Cloud TPU (oito núcleos da TPU v2) |
CUSTOM
|
CUSTOM não é um nível definido. Na verdade, ele permite que você use sua própria especificação de cluster. Ao usar esse nível, defina valores para configurar o cluster de processamento de acordo com estas diretrizes:
|
Tipos de máquinas do nível de escala personalizado
Use um nível de escala personalizada para um controle mais preciso sobre o cluster de processamento que você usa para treinar seu modelo. Na configuração do job, especifique a configuração no objeto TrainingInput
. Se você estiver usando o comando gcloud ai-platform jobs submit training
para enviar o job de treinamento, será possível utilizar os mesmos identificadores.
Defina o nível de escalonamento (
scaleTier
) comoCUSTOM
.Defina valores para o número de workers (
workerCount
), servidores de parâmetros (parameterServerCount
) e avaliadores (evaluatorCount
) de que você precisa.O AI Platform Training é compatível com treinamento distribuído somente quando você treina com o TensorFlow ou usa um contêiner personalizado. Se seu job de treinamento executar o código scikit-learn ou XGBoost, não especifique workers, servidores de parâmetros ou avaliadores.
Defina o tipo de máquina para o worker mestre (
masterType
). Se você optou por usar workers, servidores de parâmetros ou avaliadores, defina tipos de máquina para eles nos camposworkerType
,parameterServerType
eevaluatorType
, respectivamente.É possível especificar tipos de máquina diferentes para
masterType
,workerType
,parameterServerType
eevaluatorType
, mas não para instâncias individuais. Por exemplo, é possível usar um tipo de máquinan1-highmem-8
para seus servidores de parâmetros, mas não é possível definir alguns servidores para usarn1-highmem-8
e outros para usarn1-highcpu-16
.Se você precisar de apenas um worker com uma configuração personalizada e não de um cluster completo, especifique um nível de escalonamento personalizado com um tipo de máquina somente para o mestre. Assim, você terá apenas um worker. Este é um exemplo do arquivo
config.yaml
:trainingInput: scaleTier: CUSTOM masterType: n1-highcpu-16
tipos de máquina do Compute Engine
É possível usar os nomes de determinados tipos de máquina predefinidos do Compute Engine para os masterType
, workerType
, parameterServerType
e evaluatorType
do job. Se você estiver treinando com o TensorFlow ou usando contêineres personalizados, poderá usar vários tipos de GPUs com esses tipos de máquina.
A lista a seguir contém os identificadores de tipo de máquina do Compute Engine que são possíveis usar para seu job de treinamento:
e2-standard-4
e2-standard-8
e2-standard-16
e2-standard-32
e2-highmem-2
e2-highmem-4
e2-highmem-8
e2-highmem-16
e2-highcpu-16
e2-highcpu-32
n2-standard-4
n2-standard-8
n2-standard-16
n2-standard-32
n2-standard-48
n2-standard-64
n2-standard-80
n2-highmem-2
n2-highmem-4
n2-highmem-8
n2-highmem-16
n2-highmem-32
n2-highmem-48
n2-highmem-64
n2-highmem-80
n2-highcpu-16
n2-highcpu-32
n2-highcpu-48
n2-highcpu-64
n2-highcpu-80
n1-standard-4
n1-standard-8
n1-standard-16
n1-standard-32
n1-standard-64
n1-standard-96
n1-highmem-2
n1-highmem-4
n1-highmem-8
n1-highmem-16
n1-highmem-32
n1-highmem-64
n1-highmem-96
n1-highcpu-16
n1-highcpu-32
n1-highcpu-64
n1-highcpu-96
c2-standard-4
c2-standard-8
c2-standard-16
c2-standard-30
c2-standard-60
m1-ultramem-40
m1-ultramem-80
m1-ultramem-160
m1-megamem-96
a2-highgpu-1g
* (visualizar)a2-highgpu-2g
* (visualizar)a2-highgpu-4g
* (visualizar)a2-highgpu-8g
* (visualizar)a2-megagpu-16g
* (visualizar)
Para saber mais sobre as especificações técnicas de cada tipo de máquina, leia a documentação do Compute Engine sobre tipos de máquinas.
Tipos de máquina legados
Em vez de usar tipos de máquina do Compute Engine para seu job, especifique nomes de tipo de máquinas legadas. Esses tipos de máquina fornecem os mesmos recursos de memória e vCPU que os tipos de máquina equivalentes do Compute Engine, mas eles têm outras limitações de configuração:
Não é possível personalizar o uso da GPU por meio de um
acceleratorConfig
. No entanto, alguns tipos de máquinas legadas incluem GPUs. Veja a tabela a seguir:Se a configuração do job de treinamento usar várias máquinas, não será possível misturar tipos de máquinas do Compute Engine com máquinas legadas. Todos os workers mestre, workers, servidores de parâmetros e avaliadores precisam usar tipos de máquinas de um grupo ou de outro.
Por exemplo, se você configurar
masterType
para sern1-highcpu-32
(um tipo de máquina do Compute Engine), não será possível definirworkerType
comocomplex_model_m
(um tipo de máquina legado), mas será possível defini-lo comon1-highcpu-16
(outro tipo de máquina do Compute Engine).
Na tabela a seguir, descrevemos os tipos de máquinas legados:
Tipos de máquina legados | |
---|---|
standard
|
Configuração básica de máquina, adequada para treinar modelos simples com conjuntos de dados pequenos a moderados. Nome da máquina do Compute Engine: n1-standard-4 |
large_model
|
Uma máquina com muita memória, adequada especialmente para servidores de parâmetros quando o modelo é grande. Ela tem muitas camadas ocultas ou com muitos nós. Nome da máquina do Compute Engine: n1-highmem-8 |
complex_model_s
|
Uma máquina adequada para a instância mestre e trabalhos do cluster quando o modelo requer mais computação do que a máquina padrão consegue processar satisfatoriamente. Nome da máquina do Compute Engine: n1-highcpu-8 |
complex_model_m
|
Uma máquina com aproximadamente o dobro do número de núcleos e da memória do "complex_model_s". Nome da máquina do Compute Engine: n1-highcpu-16 |
complex_model_l
|
Uma máquina com aproximadamente o dobro do número de núcleos e da memória de "complex_model_m". Nome da máquina do Compute Engine: n1-highcpu-32 |
standard_gpu
|
Uma máquina equivalente a "Standard" que também inclui uma uma única GPU. Use este tipo de máquina somente se for treinamento com o TensorFlow ou usar contêineres personalizados. Nome da máquina do Compute Engine: n1-standard-8 com uma GPU |
complex_model_m_gpu
|
Uma máquina equivalente ao tipo complex_model_m que também inclui quatro GPUs. Use este tipo de máquina somente se você estiver treinando com o TensorFlow ou usando contêineres personalizados. Nome da máquina do Compute Engine: n1-standard-16 com 4 GPUs |
complex_model_l_gpu
|
Uma máquina equivalente ao tipo complex_model_l que também inclui oito GPUs. Use este tipo de máquina somente se você estiver treinando com o TensorFlow ou usando contêineres personalizados. Nome da máquina do Compute Engine: n1-standard-32 com 8 GPUs |
standard_p100
|
Uma máquina equivalente ao tipo padrão que também inclui uma única GPU NVIDIA Tesla P100. Use este tipo de máquina somente se você estiver treinando com o TensorFlow ou usando contêineres personalizados. Nome da máquina do Compute Engine: n1-standard-8-p100x1 |
complex_model_m_p100
|
Uma máquina equivalente ao tipo complex_model_m que também inclui quatro GPUs NVIDIA Tesla P100. Use este tipo de máquina somente se você estiver treinando com o TensorFlow ou usando contêineres personalizados. Nome da máquina do Compute Engine: n1-standard-16-p100x4 |
standard_v100
|
Uma máquina equivalente ao tipo padrão que também inclui uma única GPU NVIDIA Tesla V100. Use este tipo de máquina somente se você estiver treinando com o TensorFlow ou usando contêineres personalizados. Nome da máquina do Compute Engine: n1-standard-8-v100x1 |
large_model_v100
|
Uma máquina equivalente ao tipo large_model que também inclui uma única GPU NVIDIA Tesla V100. Use este tipo de máquina somente se você estiver treinando com o TensorFlow ou usando contêineres personalizados. Nome da máquina do Compute Engine: n1-highmem-8-v100x1 |
complex_model_m_v100
|
Uma máquina equivalente ao tipo complex_model_m que também inclui quatro GPUs NVIDIA Tesla V100. Use este tipo de máquina somente se você estiver treinando com o TensorFlow ou usando contêineres personalizados. Nome da máquina do Compute Engine: n1-standard-16-v100x4 |
complex_model_l_v100
|
Uma máquina equivalente ao tipo complex_model_l que também inclui oito GPUs NVIDIA Tesla V100. Use este tipo de máquina somente se você estiver treinando com o TensorFlow ou usando contêineres personalizados. Nome da máquina do Compute Engine: n1-standard-32-v100x8 |
Como treinar com GPUs e TPUs
Alguns níveis de escalonamento e tipos de máquinas legadas incluem unidades de processamento gráfico (GPUs, na sigla em inglês). Também é possível anexar a opção de várias GPUs se você usa um tipo de máquina do Compute Engine. Para saber mais, leia sobre o treinamento com GPUs.
Para treinar com Unidades de Processamento de Tensor (TPUs, na sigla em inglês), use o nível de escalonamento BASIC_TPU
ou o tipo de máquina cloud_tpu
. O tipo de máquina cloud_tpu
conta com opções especiais de configuração: é possível usá-lo com máquinas do Compute Engine ou legadas, além de poder configurá-las para usar oito núcleos de TPU v2 ou v3. Veja como usar TPUs para o job de treinamento.