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_count
O 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/customJobs
Corpo 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.