Quando usa a preparação personalizada para preparar modelos, pode configurar a tarefa de preparação para carregar automaticamente os registos do Vertex AI TensorBoard para o Vertex AI TensorBoard.
Pode usar esta integração para monitorizar a sua preparação quase em tempo real à medida que o Vertex AI TensorBoard transmite os registos do Vertex AI TensorBoard à medida que são escritos no Cloud Storage.
Para a configuração inicial, consulte o artigo Configure o Vertex AI TensorBoard.
Alterações ao seu script de preparação
O seu script de preparação tem de ser configurado para escrever registos do TensorBoard no contentor do Cloud Storage, cuja localização o serviço Vertex AI Training disponibiliza automaticamente através de uma variável de ambiente predefinida AIP_TENSORBOARD_LOG_DIR.
Normalmente, pode fazê-lo fornecendo os.environ['AIP_TENSORBOARD_LOG_DIR']
como o diretório de registo às APIs de escrita de registos do TensorBoard de código aberto. Normalmente, a localização do AIP_TENSORBOARD_LOG_DIR é definida com a variável staging_bucket.
Para configurar o seu script de preparação no TensorFlow 2.x, crie um callback do TensorBoard e defina a variável log_dir como os.environ['AIP_TENSORBOARD_LOG_DIR']. O callback do TensorBoard é, em seguida, incluído na lista de callbacks do TensorFlow model.fit.
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 como a Vertex AI define variáveis de ambiente no seu ambiente de preparação personalizado.
Crie uma tarefa de preparação personalizada
O exemplo seguinte mostra como criar a sua própria tarefa de preparação personalizada.
Para ver um exemplo detalhado de como criar uma tarefa de preparação personalizada, consulte o artigo Olá, preparação personalizada. Para ver os passos para criar contentores de preparação personalizados, consulte o artigo Crie uma imagem de contentor personalizada para preparação.
Para criar uma tarefa de preparação personalizada, use o SDK Vertex AI para Python ou REST.
Python
Python
project: . Pode encontrar estes IDs na página de Google Cloud boas-vindas da consola.
location: a localização onde executar o CustomJob. Esta deve ser a mesma localização que a instância do TensorBoard fornecida.staging_bucket: o contentor do Cloud Storage para preparar artefactos durante as chamadas API, incluindo registos do TensorBoard.display_name: nome a apresentar da tarefa de preparação personalizada.script_path: o caminho, relativo ao diretório de trabalho no seu sistema de ficheiros local, para o script que é o ponto de entrada para o seu código de preparação.container_uri: O URI da imagem do contentor de preparação pode ser o Vertex AI. Contentor de preparação pré-criado ou um contentor personalizado.model_serving_container_image_uri: o URI do contentor de publicação do modelo adequado para publicar o modelo produzido pelo script de preparação.dataset_id: o número de ID do conjunto de dados a usar para a preparação.model_display_name: nome a apresentar do modelo preparado.args: argumentos da linha de comandos a transmitir ao script Python.replica_count: o número de réplicas de trabalhadores a usar. Na maioria dos casos, defina este valor como 1 para o seu primeiro conjunto de trabalhadores.machine_type: o tipo de VM a usar. Para ver uma lista das VMs compatíveis, consulte Tipos de máquinasaccelerator_type: O tipo de GPU a associar a cada VM no conjunto de recursos. Para ver uma lista das GPUs suportadas, consulte a secção GPUs.accelerator_countO número de GPUs a associar a cada VM no conjunto de recursos. O valor predefinido é1.training_fraction_split: a fração do conjunto de dados a usar para preparar o modelo.validation_fraction_split: a fração do conjunto de dados a usar para validar o seu modelo.test_fraction_split: a fração do conjunto de dados a usar para avaliar o seu modelo.sync: se este método deve ser executado de forma síncrona.tensorboard_resource_name: O nome do recurso da instância do Vertex TensorBoard para a qual o CustomJob vai carregar os registos do TensorBoard.service_account: obrigatório quando executado com o TensorBoard. Consulte o artigo Crie uma conta de serviço com as autorizações necessárias.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: a localização onde executar o
CustomJob, por exemplo, us-central1. Esta deve ser a mesma localização que a instância do TensorBoard fornecida. - PROJECT_ID: o seu ID do projeto.
- TENSORBOARD_INSTANCE_NAME: (Obrigatório) O nome completo
da instância do Vertex AI TensorBoard existente que armazena os registos do Vertex AI TensorBoard:
projects/PROJECT_ID/locations/LOCATION_ID/tensorboards/TENSORBOARD_INSTANCE_ID
Nota: se a instância do TensorBoard não for uma instância existente, a criação de customJobs gera um erro 404. - GCS_BUCKET_NAME: "${PROJECT_ID}-tensorboard-logs-${LOCATION}"
- USER_SA_EMAIL: (obrigatório) a conta de serviço criada nos passos anteriores ou a 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 Google Cloud caminho onde toda a saída da formação é escrita. "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/customJobsCorpo JSON do pedido:
{
"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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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"
}
O que se segue?
- Consulte o artigo Ver o Vertex AI TensorBoard.
- Saiba como otimizar o desempenho das tarefas de preparação personalizadas através do Cloud Profiler.