Execute uma tarefa de preparação com o acompanhamento de experiências

O Vertex AI oferece um serviço de preparação gerido que lhe permite operacionalizar a preparação de modelos em grande escala. Pode ativar o acompanhamento de experiências usando o SDK Vertex AI para Python para capturar parâmetros e métricas de desempenho quando enviar a tarefa de preparação personalizada.

Esta funcionalidade não está disponível quando:

  • enviar uma tarefa de preparação através da Google Cloud consola ou da CLI do Google Cloud,
  • usar a TPU na tarefa de treino,
  • Usar a preparação distribuída na tarefa de preparação.

São suportados contentores de preparação pré-criados e contentores personalizados. Obrigatório: ter instalada uma versão do SDK Vertex AI para Python superior a 1.24.1 para google-cloud-aiplatform. Se estiver a fazer o treino com o TensorFlow, certifique-se de que tem instalada a versão do protobuf inferior a 4.0 para evitar conflitos.

Existem duas opções para registar dados no Vertex AI Experiments: o registo automático e o registo manual.

A registo automático é recomendado se estiver a usar uma destas frameworks suportadas: Fastai, Gluon, Keras, LightGBM, Pytorch Lightning, Scikit-learn, Spark, Statsmodels, XGBoost. Se a sua framework não for suportada ou existirem métricas personalizadas que quer registar na execução da experiência, pode adaptar manualmente o script de preparação para registar parâmetros, métricas e artefactos.

Dados do AutoLog

Para ativar o registo automático, basta definir enable_autolog=True, consulte from_local_script. Tem a opção de criar uma execução de experiência ou não. Se não for especificado um nome para a experiência, é criado um para si.

O SDK Vertex AI para Python processa a criação de recursos ExperimentRun por si.

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: . Pode encontrar estes IDs dos projetos na página de Google Cloud consola de boas-vindas.
  • location: consulte a lista de localizações disponíveis.
  • staging_bucket: o nome que deu ao seu contentor, por exemplo, my_bucket.
  • display_name: o nome definido pelo utilizador do CustomJob.
  • 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 um contentor de preparação pré-criado do Vertex AI ou um contentor personalizado
  • service_account: Consulte o artigo Crie uma conta de serviço com as autorizações necessárias.
  • experiment: indique um nome para a sua experiência. A experiência tem de ter uma instância do TensorBoard. Pode encontrar a sua lista de experiências na Google Cloud consola selecionando Experiências na navegação da secção.
  • experiment_run: (opcional) especifique um nome de execução. Se não for especificado, é criado automaticamente um teste de execução.

Registe dados manualmente

Use a opção de registo manual de dados para incorporar o seu script de treino.

Veja como alterar o script de preparação:

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.joblib'
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)

Tem a opção de criar uma execução de experiência ou não. Se não for especificado um nome para a experiência, é criado um para si.

Para saber mais, consulte o artigo Registe manualmente dados numa execução de experiência.

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: . Pode encontrar estes IDs dos projetos na página de Google Cloud consola de boas-vindas.
  • location: consulte a lista de localizações disponíveis
  • staging_bucket: o nome que deu ao seu contentor, por exemplo, my_bucket.
  • display_name: o nome definido pelo utilizador do CustomJob.
  • 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 um contentor de preparação pré-criado do Vertex AI, ou um contentor personalizado. Se estiver a usar um contentor personalizado, certifique-se de que google-cloud-aiplatform>=1.24.0 está instalado.
  • service_account: Consulte o artigo Crie uma conta de serviço com as autorizações necessárias.
  • experiment: indique um nome para a sua experiência. Pode encontrar a sua lista de experiências na Google Cloud consola selecionando Experiências na navegação da secção.
  • experiment_run: especifique um nome de execução. Se não for especificado, é criado automaticamente um teste.

Veja parâmetros e métricas registados automaticamente

Use o SDK do Vertex AI para Python para comparar execuções e obter dados de execuções. A Google Cloud consola oferece uma forma fácil de comparar estas execuções.

O que se segue?

Exemplo de bloco de notas relevante