O seu código de preparação pode ser incluído num componente de preparação personalizado e executado numa tarefa de pipeline. Os registos do TensorBoard são transmitidos automaticamente para a sua experiência do TensorBoard do Vertex AI. Pode usar esta integração para monitorizar a sua preparação quase em tempo real, à medida que o Vertex AI TensorBoard transmite 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 e execute uma pipeline
O exemplo seguinte mostra como criar e executar um pipeline usando o pacote DSL do Kubeflow Pipelines. Para ver mais exemplos e detalhes adicionais, consulte a documentação do Vertex AI Pipelines.
Crie um componente de preparação
Empacote o código de preparação num componente personalizado, certificando-se de que o código está configurado para escrever registos do TensorBoard num contentor do Cloud Storage. Para ver mais exemplos, consulte o artigo Crie os seus próprios componentes de pipeline.
from kfp.v2.dsl import component
@component(
base_image="tensorflow/tensorflow:latest",
packages_to_install=["tensorflow_datasets"],
)
def train_tensorflow_model_with_tensorboard():
import datetime, os
import tensorflow as tf
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
def create_model():
return tf.keras.models.Sequential(
[
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation="relu"),
]
)
model = create_model()
model.compile(
optimizer="adam",
loss="sparse_categorical_crossentropy",
metrics=["accuracy"]
)
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=5,
validation_data=(x_test, y_test),
callbacks=[tensorboard_callback],
)
Crie e compile uma pipeline
Crie uma tarefa de preparação personalizada a partir do componente que criou especificando
a especificação do componente em create_custom_training_job_op_from_component
.
Defina o tensorboard_resource_name
para a sua instância do TensorBoard e o staging_bucket
para a localização onde preparar os artefactos durante as chamadas API (incluindo registos do TensorBoard).
Em seguida, crie um pipeline para incluir esta tarefa e compile o pipeline num ficheiro JSON.
Para ver mais exemplos e informações, consulte os artigos Componentes de tarefas personalizadas e Crie um pipeline.
from kfp.v2 import compiler
from google_cloud_pipeline_components.v1.custom_job.utils import \
create_custom_training_job_op_from_component
from kfp.v2 import dsl
def create_tensorboard_pipeline_sample(
project, location, staging_bucket, display_name, service_account, experiment, tensorboard_resource_name
):
@dsl.pipeline(
pipeline_root=f"{staging_bucket}/pipeline_root",
name=display_name,
)
def pipeline():
custom_job_op = create_custom_training_job_op_from_component(
component_spec=train_tensorflow_model_with_tensorboard,
tensorboard=tensorboard_resource_name,
base_output_directory=staging_bucket,
service_account=service_account,
)
custom_job_op(project=project, location=location)
compiler.Compiler().compile(
pipeline_func=pipeline, package_path=f"{display_name}.json"
)
Envie um pipeline do Vertex AI
Envie o seu pipeline através do SDK Vertex AI para Python. Para mais informações, consulte o artigo Execute um pipeline.
Python
experiment_name
: indique um nome para a sua experiência.pipeline_job_display_name
: o nome a apresentar para a tarefa do pipeline.template_path
: o caminho para o modelo de pipeline compilado.pipeline_root
: especifique um URI do Cloud Storage ao qual a conta de serviço das suas pipelines pode aceder. Os artefactos das execuções do pipeline são armazenados na raiz do pipeline.parameter_values
: os parâmetros do pipeline a transmitir a esta execução. Por exemplo, crie umdict()
com os nomes dos parâmetros como as chaves do dicionário e os valores dos parâmetros como os valores do dicionário.project
: . O projeto do Google Cloud para executar o pipeline. Pode encontrar os seus IDs na página de Google Cloud boas-vindas da consola.
location
: a localização onde executar o pipeline. Esta deve ser a mesma localização que a instância do TensorBoard que está a usar.
O que se segue?
- Veja os resultados: Veja o TensorBoard para o Vertex AI Pipelines.
- Saiba como otimizar o desempenho das tarefas de preparação personalizadas através do Cloud Profiler.