Menggunakan Vertex AI TensorBoard dengan Vertex AI Pipelines

Kode pelatihan Anda dapat dikemas ke dalam komponen pelatihan kustom dan dijalankan dalam tugas pipeline. Log TensorBoard di-streaming secara otomatis ke eksperimen Vertex AI TensorBoard Anda. Anda dapat menggunakan integrasi ini untuk memantau pelatihan secara mendekati real-time saat Vertex AI TensorBoard mengalirkan log Vertex AI TensorBoard yang ditulis ke Cloud Storage.

Untuk penyiapan awal, lihat Menyiapkan Vertex AI TensorBoard.

Perubahan pada skrip pelatihan Anda

Skrip pelatihan Anda harus dikonfigurasi untuk menulis log TensorBoard ke bucket Cloud Storage, tempat Vertex AI Training Service akan otomatis tersedia melalui variabel lingkungan yang telah ditetapkan, yaitu AIP_TENSORBOARD_LOG_DIR.

Hal ini biasanya dapat dilakukan dengan menyediakan os.environ['AIP_TENSORBOARD_LOG_DIR'] sebagai direktori log bagi API penulisan log TensorBoard open source. Lokasi AIP_TENSORBOARD_LOG_DIR biasanya ditetapkan dengan variabel staging_bucket.

Untuk mengonfigurasi skrip pelatihan di TensorFlow 2.x, buat callback TensorBoard dan tetapkan variabel log_dir ke os.environ['AIP_TENSORBOARD_LOG_DIR'] Callback TensorBoard kemudian disertakan dalam daftar callback model.fit TensorFlow.

  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],
  )
  

Pelajari lebih lanjut cara Vertex AI menetapkan variabel lingkungan di lingkungan pelatihan kustom Anda.

Mem-build dan menjalankan pipeline

Contoh berikut menunjukkan cara mem-build dan menjalankan pipeline menggunakan paket Kubeflow Pipelines DSL. Untuk contoh lainnya dan detail tambahan, lihat dokumentasi Vertex AI Pipelines.

Membuat komponen pelatihan

Kemas kode pelatihan Anda ke dalam komponen kustom, pastikan kode tersebut dikonfigurasi untuk menulis log TensorBoard ke bucket Cloud Storage. Untuk contoh lainnya, lihat Mem-build komponen pipeline Anda sendiri.

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],
    )

Membuat dan mengompilasi pipeline

Buat tugas pelatihan kustom dari komponen yang telah Anda buat dengan menentukan spec komponen di create_custom_training_job_op_from_component. Tetapkan tensorboard_resource_name ke instance TensorBoard Anda, dan staging_bucket ke lokasi untuk mem-build artefak selama panggilan API (termasuk log TensorBoard).

Kemudian, build pipeline untuk menyertakan tugas ini dan kompilasi pipeline ke file JSON.

Untuk contoh dan informasi selengkapnya, lihat Komponen tugas kustom dan Mem-build 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"
    )

Mengirimkan pipeline Vertex AI

Kirim pipeline Anda menggunakan Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Menjalankan pipeline.

Python

from typing import Any, Dict, Optional

from google.cloud import aiplatform


def log_pipeline_job_to_experiment_sample(
    experiment_name: str,
    pipeline_job_display_name: str,
    template_path: str,
    pipeline_root: str,
    project: str,
    location: str,
    parameter_values: Optional[Dict[str, Any]] = None,
):
    aiplatform.init(project=project, location=location)

    pipeline_job = aiplatform.PipelineJob(
        display_name=pipeline_job_display_name,
        template_path=template_path,
        pipeline_root=pipeline_root,
        parameter_values=parameter_values,
    )

    pipeline_job.submit(experiment=experiment_name)

  • experiment_name: Berikan nama untuk eksperimen Anda.
  • pipeline_job_display_name: Nama tampilan untuk tugas pipeline.
  • template_path: Jalur ke template pipeline yang dikompilasi.
  • pipeline_root: Tentukan Cloud Storage URI yang dapat diakses oleh akun layanan pipeline Anda. Artefak operasi pipeline Anda disimpan dalam root pipeline.
  • parameter_values: Parameter pipeline yang akan diteruskan ke operasi ini. Misalnya, buat dict() dengan nama parameter sebagai kunci kamus dan nilai parameter sebagai nilai kamus.
  • project: Project ID Anda. Project Google Cloud tempat pipeline dijalankan. Anda dapat menemukan ID di halaman sambutan konsol Google Cloud.
  • location: Lokasi untuk menjalankan pipeline. Lokasi ini harus sama dengan lokasi instance TensorBoard yang Anda gunakan.

Langkah selanjutnya