Ao usar o treinamento personalizado para treinar modelos, é possível configurar seu job de treinamento para fazer upload automático dos registros do Vertex AI TensorBoard para a Vertex AI TensorBoard.
Essa integração é necessária para monitorar o treinamento quase em tempo real, já que o TensorBoard da Vertex AI fará streaming nos registros do TensorBoard Vertex AI à medida que eles forem gravados no Cloud Storage.
Para a configuração inicial, consulte Configuração para o TensorBoard da Vertex AI.
Alterações no script de treinamento
Seu script de treinamento precisa ser configurado para gravar registros do TensorBoard no
bucket do Cloud Storage, o local do serviço de treinamento do Vertex AI
que será disponibilizado automaticamente por meio de uma variável de ambiente
predefinida AIP_TENSORBOARD_LOG_DIR
.
Geralmente, isso pode ser feito ao fornecer os.environ['AIP_TENSORBOARD_LOG_DIR']
como o diretório de registros para as APIs de gravação de registros de TensorBoard de código aberto. O local
do AIP_TENSORBOARD_LOG_DIR
é normalmente definido com a variável
staging_bucket
.
Para configurar seu script de treinamento no TensorFlow 2.x, crie um callback do TensorBoard e defina oslog_dir
comoos.environ['AIP_TENSORBOARD_LOG_DIR']
O callback do TensorBoard é incluído nomodel.fit
de callbacks.
tensorboard_callback = tf.keras.callbacks.TensorBoard( log_dir=os.environ['AIP_TENSORBOARD_LOG_DIR'], histogram_freq=1 ) model.fit( x=x_train, y=y_train, epochs=epochs, validation_data=(x_test, y_test), callbacks=[tensorboard_callback], )
Saiba mais sobre como a Vertex AI define variáveis de ambiente no ambiente de treinamento personalizado.
Criar um job de treinamento personalizado
O exemplo a seguir mostra como criar seu próprio job de treinamento personalizado.
Para ver um exemplo detalhado de como criar um job de treinamento personalizado, consulte Treinamento personalizado do Hello. Para ver as etapas de criação de contêineres de treinamento personalizados, consulte Criar uma imagem de contêiner personalizada para treinamento.
Para criar um job de treinamento personalizado, use o SDK da Vertex AI para Python ou REST.
Python
Python
project
: o ID do projeto. Esses IDs estão na página de boas-vindas do console do Google Cloud.
location
: o local para executar o CustomJob. Precisa ser o mesmo local da instância do TensorBoard fornecida.staging_bucket
: o bucket do Cloud Storage para preparar artefatos durante chamadas de API, incluindo registros do TensorBoard.display_name
: nome de exibição do job de treinamento personalizado.script_path
: o caminho, relativo ao diretório em uso no seu sistema de arquivos local, para o script que é o ponto de entrada para seu código de treinamento.container_uri
: o URI da imagem do contêiner de treinamento pode ser um contêiner de treinamento pré-criado da Vertex AI ou um contêiner personalizado.model_serving_container_image_uri
: o URI do contêiner de exibição do modelo adequado para exibir o modelo produzido pelo script de treinamento.dataset_id
: o número do ID do conjunto de dados a ser usado para treinamento.model_display_name
: nome de exibição do modelo treinado.args
: argumentos da linha de comando a serem passados para o módulo Python.replica_count
: o número de réplicas de worker a serem usadas. No geral, defina como 1 para o primeiro pool de workers.machine_type
: o tipo de VM a ser usada. Para uma lista de VMs compatíveis, consulte Tipos de máquina.accelerator_type
: o tipo de GPU a ser anexado a cada VM no pool de recursos. Para uma lista de GPUs compatíveis, consulte GPUs.accelerator_count
: o número de GPUs a serem anexadas a cada VM no pool de recursos. O valor padrão é1
.training_fraction_split
: a fração do conjunto de dados a ser usada para treinar o modelo.validation_fraction_split
: a fração do conjunto de dados a ser usada para validar o modelo.test_fraction_split
: a fração do conjunto de dados a ser usada para avaliar o modelo.sync
: se o método será executado de forma síncrona.tensorboard_resource_name
: o nome do recurso da instância do Vertex TensorBoard em que o CustomJob fará o upload dos registros do TensorBoard.service_account
: obrigatório ao executar com o TensorBoard. Consulte Criar uma conta de serviço com as permissões necessárias.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION_ID: o local em que o
CustomJob
será executado, por exemplo, us-central1. Precisa ser o mesmo local da instância do TensorBoard fornecida. - PROJECT_ID: o ID do projeto.
- TENSORBOARD_INSTANCE_NAME: (obrigatório) o nome completo da instância atual do TensorBoard da Vertex AI que armazena os registros do TensorBoard da Vertex AI:
projects/
PROJECT_ID
/locations/LOCATION_ID
/tensorboards/TENSORBOARD_INSTANCE_ID
Observação: se a instância do tensorboard não é uma instância existente, a criação de jobs personalizados gera um erro 404. - GCS_BUCKET_NAME: "${PROJECT_ID}-tensorboard-logs-${LOCATION}"
- USER_SA_EMAIL: (obrigatório) a conta de serviço criada em etapas anteriores ou sua própria conta de serviço. "USER_SA_NAME@${PROJECT_ID}.iam.gserviceaccount.com"
- TRAINING_CONTAINER: TRAINING_CONTAINER.
- INVOCATION_TIMESTAMP: "$(date +'%Y%m%d-%H%M%S')"
- JOB_NAME: "tensorboard-example-job-${INVOCATION_TIMESTAMP}"
- BASE_OUTPUT_DIR: (obrigatório) o caminho do Google Cloud em que toda a saída do treinamento é gravada. "gs://$GCS_BUCKET_NAME/$JOB_NAME"
Método HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/customJobs
Corpo JSON da solicitação:
{ "displayName": JOB_NAME, "jobSpec":{ "workerPoolSpecs":[ { "replicaCount": "1", "machineSpec": { "machineType": "n1-standard-8", }, "containerSpec": { "imageUri": TRAINING_CONTAINER, } } ], "base_output_directory": { "output_uri_prefix": BASE_OUTPUT_DIR, }, "serviceAccount": USER_SA_EMAIL, "tensorboard": TENSORBOARD_INSTANCE_NAME, } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/customJobs/CUSTOM_JOB_ID", "displayName": "DISPLAY_NAME", "jobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-8" }, "replicaCount": "1", "diskSpec": { "bootDiskType": "pd-ssd", "bootDiskSizeGb": 100 }, "containerSpec": { "imageUri": "IMAGE_URI" } } ], "serviceAccount": "SERVICE_ACCOUNT", "baseOutputDirectory": { "outputUriPrefix": "OUTPUT_URI_PREFIX" }, "tensorboard": "projects//locations/LOCATION_ID/tensorboards/tensorboard-id" }, "state": "JOB_STATE_PENDING", "createTime": "CREATE-TIME", "updateTime": "UPDATE-TIME" }
A seguir
- Confira Conferir o TensorBoard da Vertex AI.
- Saiba como otimizar o desempenho dos jobs de treinamento personalizado usando Cloud Profiler.