학습 코드를 커스텀 학습 구성요소로 패키징하고 파이프라인 작업에서 실행할 수 있습니다. 텐서보드 로그는 Vertex AI 텐서보드 실험에 자동으로 스트리밍됩니다. Vertex AI 텐서보드가 Cloud Storage에 작성될 때 Vertex AI 텐서보드가 Vertex AI 텐서보드 로그에 스트리밍되므로 이 통합을 사용하여 거의 실시간으로 학습을 모니터링할 수 있습니다.
초기 설정은 Vertex AI 텐서보드 설정을 참조하세요.
학습 스크립트 변경사항
사전 정의된 환경 변수 AIP_TENSORBOARD_LOG_DIR
을 통해 Vertex AI Training 서비스가 자동으로 제공하는 위치인 Cloud Storage 버킷에 텐서보드 로그를 기록하도록 학습 스크립트를 구성해야 합니다.
일반적으로는 API를 작성하는 오픈소스 텐서보드 로그에 대한 로그 디렉터리로 os.environ['AIP_TENSORBOARD_LOG_DIR']
을 제공하여 이 작업을 수행할 수 있습니다. AIP_TENSORBOARD_LOG_DIR
의 위치는 일반적으로 staging_bucket
변수로 설정됩니다.
TensorFlow 2.x에서 학습 스크립트를 구성하려면 텐서보드 콜백을 만들고 log_dir
변수를 os.environ['AIP_TENSORBOARD_LOG_DIR']
(으)로 설정합니다. 그러면 텐서보드 콜백이 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], )
Vertex AI에서 커스텀 학습 환경의 환경 변수를 설정하는 방법을 자세히 알아보세요.
파이프라인 빌드 및 실행
다음 예시에서는 Kubeflow Pipelines DSL 패키지를 사용하여 파이프라인을 빌드하고 실행하는 방법을 보여줍니다. 더 많은 예시와 추가 세부정보는 Vertex AI Pipelines 문서를 참조하세요.
학습 구성요소 만들기
학습 코드를 커스텀 구성요소로 패키징하고, Cloud Storage 버킷에 텐서보드 로그를 기록하도록 코드가 구성되었는지 확인합니다. 더 많은 예시는 자체 파이프라인 구성요소 빌드를 참조하세요.
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],
)
파이프라인 빌드 및 컴파일
create_custom_training_job_op_from_component
의 구성요소 사양을 지정하여 만든 구성요소에서 커스텀 학습 작업을 만듭니다.
tensorboard_resource_name
을(를) 텐서보드 인스턴스로 설정하고 staging_bucket
을(를) API 호출(텐서보드 로그 포함) 동안 아티팩트를 스테이징할 위치로 설정합니다.
그런 다음 이 작업을 포함하도록 파이프라인을 빌드하고 파이프라인을 JSON 파일로 컴파일합니다.
더 많은 예시와 정보는 커스텀 작업 구성요소 및 파이프라인 빌드를 참조하세요.
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"
)
Vertex AI 파이프라인 제출
Vertex AI SDK for Python을 사용하여 파이프라인을 제출합니다. 자세한 내용은 파이프라인 실행을 참조하세요.
Python
experiment_name
: 실험 이름을 입력합니다.pipeline_job_display_name
: 파이프라인 작업의 표시 이름입니다.template_path
: 컴파일된 파이프라인 템플릿의 경로입니다.pipeline_root
: 파이프라인 서비스 계정이 액세스할 수 있는 Cloud Storage URI를 지정합니다. 파이프라인 실행의 아티팩트는 파이프라인 루트 내에 저장됩니다.parameter_values
: 이 실행에 전달할 파이프라인 매개변수입니다. 예를 들어 매개변수 이름을 사전 키로, 매개변수 값을 사전 값으로 하는dict()
을(를) 만듭니다.project
: 프로젝트 ID 파이프라인을 실행할 Google Cloud 프로젝트입니다. Google Cloud 콘솔 시작 페이지에서 내 프로젝트 ID를 찾을 수 있습니다.
location
: 파이프라인을 실행할 위치입니다. 사용 중인 텐서보드 인스턴스와 동일한 위치에 있어야 합니다.
다음 단계
- 결과 보기: Vertex AI Pipelines용 텐서보드 보기
- Cloud Profiler를 사용하여 커스텀 학습 작업의 성능을 최적화하는 방법 알아보기