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 akan otomatis di-streaming ke eksperimen Vertex AI TensorBoard Anda. Anda dapat menggunakan integrasi ini untuk memantau pelatihan nyaris secara real time karena Vertex AI TensorBoard melakukan streaming di log Vertex AI TensorBoard seperti 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 Anda 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.

Membangun dan menjalankan pipeline

Contoh berikut menunjukkan cara membangun dan menjalankan pipeline menggunakan paket Kubeflow Pipelines DSL. Untuk mengetahui contoh lainnya dan detail lainnya, lihat dokumentasi Pipeline Vertex AI.

Membuat komponen pelatihan

Kemas kode pelatihan Anda ke dalam komponen kustom, dan pastikan kode tersebut dikonfigurasi untuk menulis log TensorBoard ke bucket Cloud Storage. Untuk contoh lainnya, lihat Membuat 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],
    )

Membangun dan mengompilasi pipeline

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

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

Untuk mengetahui contoh dan informasi selengkapnya, lihat Komponen tugas kustom dan Membuat 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

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

Python

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 proses 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 akan dijalankan. Anda dapat menemukan ID Anda di halaman welcome Google Cloud Console.
  • location: Region untuk menjalankan pipeline. Region ini harus sama dengan instance TensorBoard yang Anda gunakan.

Langkah selanjutnya