Executar o job de treinamento com o acompanhamento de experimentos

A Vertex AI fornece um serviço de treinamento gerenciado que permite operar o treinamento de modelos em grande escala. É possível ativar o rastreamento de experimentos usando o SDK da Vertex AI para Python para capturar parâmetros e métricas de desempenho ao enviar o job de treinamento personalizado.

Esse recurso não está disponível quando você:

  • enviar um job de treinamento pelo Console do Google Cloud ou pela Google Cloud CLI;
  • usar a TPU no job de treinamento;
  • usar treinamento distribuído no job.

Contêineres de treinamento pré-criados e contêineres personalizados são compatíveis. Obrigatório: é instalada uma versão do SDK do Vertex AI para Python maior que 1.24.1 para google-cloud-aiplatform. Se você estiver treinando com o Tensorflow, verifique se a versão protobuf menor que 4.0 está instalada para evitar conflitos.

Há duas opções para registrar dados no Vertex AI Experiments, a geração automática e a geração manual de registros.

O registro automático é recomendado se você estiver usando um destes frameworks compatíveis: Fastai, Gluon, Keras, LightGBM, Pytorch Lightning, Scikit-learn, Spark, Statsmodels, XGBoost. Se o framework não for compatível ou se houver métricas personalizadas que você queira registrar para a execução do experimento, adapte o script de treinamento manualmente para registrar parâmetros, métricas e artefatos.

Dados do AutoLog

Para ativar o registro automático, basta definir enable_autolog=True. Consulte from_local_script. Você tem a opção de criar ou não uma execução de experimento. Se um nome de experimento não for especificado, será criado um para você.

O SDK da Vertex AI para Python lida com a criação de recursos do ExperimentRun para você.

Python

def create_custom_job_with_experiment_autologging_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    script_path: str,
    container_uri: str,
    service_account: str,
    experiment: str,
    experiment_run: Optional[str] = None,
) -> None:
    aiplatform.init(project=project, location=location, staging_bucket=staging_bucket, experiment=experiment)

    job = aiplatform.CustomJob.from_local_script(
        display_name=display_name,
        script_path=script_path,
        container_uri=container_uri,
        enable_autolog=True,
    )

    job.run(
        service_account=service_account,
        experiment=experiment,
        experiment_run=experiment_run,
    )

  • project: o ID do projeto. Esses IDs do projeto estão na página de boas-vindas do console do Google Cloud.
  • location: consulte a Lista de locais disponíveis.
  • staging_bucket: o nome que você deu ao bucket, por exemplo, my_bucket.
  • display_name: o nome do CustomJob definido pelo usuário.
  • 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
  • service_account: consulte Criar uma conta de serviço com as permissões necessárias.
  • experiment: dê um nome para o experimento. O experimento precisa ter uma instância do TensorBoard. Para conferir sua lista de experimentos no Console do Google Cloud, selecione Experimentos no painel de navegação.
  • experiment_run: (opcional) especifique um nome de execução. Se não for especificado, uma execução será criada automaticamente.

Registrar dados manualmente

Use a opção de registro manual de dados para incorporar o script de treinamento.

Veja como alterar o script de treinamento:

import os
import pickle
import pandas as pd
from sklearn.linear_model import LinearRegression
# To use manual logging APIs, import aiplatform
from google.cloud import aiplatform

# Create Dataset
data = {'A': [1.1,2.2,4.1,5.2],
        'B': [200, 212.12, 22, 123],
        'Y': [1,0,1,0]}
df = pd.DataFrame(data)
X = df[['A', 'B']]
Y = df['Y']

# Train model
model = LinearRegression().fit(X, Y)

# Save the model to gcs
model_dir = os.getenv('AIP_MODEL_DIR')
model_gcs = model_dir.replace('gs://', '/gcs/')
model_name = 'model.pkl'
os.mkdir(model_gcs)
f = open(os.path.join(model_gcs, model_name), 'wb')
pickle.dump(model, f)

f = open(os.path.join(model_gcs, model_name), 'wb')
    pickle.dump(model, f)

# Call aiplatform's logging APIs to save data to Vertex AI Experiments.
params = model.get_params()
aiplatform.log_params(params)
metrics = {"training_accuracy": model.score(X,Y)}
aiplatform.log_metrics(metrics)

Você tem a opção de criar uma execução de experimento ou não. Se um nome de experimento não for especificado, será criado um para você.

Saiba mais em Registrar dados manualmente para uma execução de experimento.

Python

def create_custom_job_with_experiment_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    script_path: str,
    container_uri: str,
    service_account: str,
    experiment: str,
    experiment_run: Optional[str] = None,
) -> None:
    aiplatform.init(
        project=project,
        location=location,
        staging_bucket=staging_bucket,
        experiment=experiment
    )

    job = aiplatform.CustomJob.from_local_script(
        display_name=display_name,
        script_path=script_path,
        container_uri=container_uri,
    )

    job.run(
        service_account=service_account,
        experiment=experiment,
        experiment_run=experiment_run,
    )

  • project: o ID do projeto. Esses IDs do projeto estão na página de boas-vindas do console do Google Cloud.
  • location: consulte a Lista de locais disponíveis.
  • staging_bucket: o nome que você deu ao bucket, por exemplo, my_bucket.
  • display_name: o nome do CustomJob definido pelo usuário.
  • 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. Se você estiver usando um contêiner personalizado, verifique se o google-cloud-aiplatform>=1.24.0 está instalado.
  • service_account: consulte Criar uma conta de serviço com as permissões necessárias.
  • experiment: dê um nome para o experimento. Para ver sua lista de experimentos no Console do Google Cloud, selecione Experimentos no painel de navegação.
  • experiment_run: especifica um nome para execução. Se não for especificado, uma execução será criada automaticamente.

Ver métricas e parâmetros registrados automaticamente

Use o SDK da Vertex AI para Python para comparar execuções e receber dados de execuções. O Console do Google Cloud oferece uma maneira fácil de comparar essas execuções.

A seguir

Exemplo de notebook relevante