실험 실행에 모델 로깅

Python용 Vertex AI SDK는 모델을 쉽게 추적, 공유, 분석할 수 있도록 머신러닝 모델을 ExperimentModel 클래스로 직렬화하고 해당 모델을 Vertex AI 실험에 로깅하는 API를 제공합니다.

사용할 가장 적합한 모델을 선택한 후 Vertex AI Experiments에서 Vertex AI 모델 레지스트리로 해당 모델을 등록할 수 있습니다.

지원되는 프레임워크는 scikit-learn, XGBoost, Tensorflow입니다.

ML 모델 저장 및 로깅

모델 저장

Vertex AI SDK는 ML 모델을 직렬화하고, 모델을 Cloud Storage에 업로드하고, 모델을 Vertex ML 메타데이터 아티팩트로 나타내기 위한 save_model 메서드를 제공합니다.

Python

from typing import Optional, Union

from google.cloud import aiplatform


def save_model_sample(
    project: str,
    location: str,
    model: Union[
        "sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"  # noqa: F821
    ],
    artifact_id: Optional[str] = None,
    uri: Optional[str] = None,
    input_example: Optional[
        Union[list, dict, "pd.DataFrame", "np.ndarray"]  # noqa: F821
    ] = None,
    display_name: Optional[str] = None,
) -> None:
    aiplatform.init(project=project, location=location)

    aiplatform.save_model(
        model=model,
        artifact_id=artifact_id,
        uri=uri,
        input_example=input_example,
        display_name=display_name,
    )

  • project: 프로젝트 ID 이러한 ID는 Google Cloud 콘솔 시작 페이지에서 찾을 수 있습니다.
  • location: 사용 가능한 위치 목록을 참조하세요.
  • model: (필수) 머신러닝 모델입니다. (Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"])
  • artifact_id: (선택사항) 아티팩트의 리소스 ID입니다. 이 ID는 metadataStore에서 전역적으로 고유해야 합니다. 최대 길이는 63자(영문 기준)이고 유효한 문자는 [a-z0-9_-]입니다. 첫 번째 문자로 숫자 또는 하이픈을 사용할 수 없습니다.
  • uri: (선택사항) 모델 파일을 저장할 gcs 디렉터리입니다. URI가 제공되지 않으면 gs://default-bucket/timestamp-uuid-frameworkName-model이 사용됩니다. 기본 스테이징 버킷이 설정되지 않은 경우 새 버킷이 생성됩니다.
  • input_example: (선택사항) 각 모델은 입력 데이터를 가져온 후 예측을 생성합니다. 각 모델은 특정 형식의 입력(예: 숫자, 문자열, 2d 배열)을 허용하며 gcs uri에 yaml 파일로 저장됩니다. list, dict, pd.DataFrame, np.ndarray를 허용합니다. 목록 내부의 값은 스칼라 또는 목록이어야 합니다. 사전 내부의 값은 스칼라, 목록 또는 np.ndarray여야 합니다. (Union[list, dict, pd.DataFrame, np.ndarray]).
  • display_name: 아티팩트의 표시 이름입니다.

모델 로깅

Vertex AI SDK는 save_model을 조정하는 log_model 메서드와 Vertex ML 메타데이터 아티팩트를 현재 실험 실행에 로깅하는 추가 단계를 제공합니다. Vertex AI 실험에서 여러 ML 모델을 관리하고 분석하는 log_model 메서드입니다.

Python

from typing import Optional, Union

from google.cloud import aiplatform


def log_model_sample(
    experiment_name: str,
    run_name: str,
    project: str,
    location: str,
    model: Union[
        "sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"  # noqa: F821
    ],
    artifact_id: Optional[str] = None,
    uri: Optional[str] = None,
    input_example: Optional[
        Union[list, dict, "pd.DataFrame", "np.ndarray"]  # noqa: F821
    ] = None,  # noqa: F821
    display_name: Optional[str] = None,
) -> None:
    aiplatform.init(experiment=experiment_name, project=project, location=location)

    aiplatform.start_run(run=run_name, resume=True)

    aiplatform.log_model(
        model=model,
        artifact_id=artifact_id,
        uri=uri,
        input_example=input_example,
        display_name=display_name,
    )

  • experiment_name: 실험 이름을 입력합니다. 섹션 탐색 메뉴에서 '실험'을 선택하면 Google Cloud 콘솔에서 실험 목록을 찾을 수 있습니다.
  • run_name: 실행 이름을 지정합니다.
  • project: 프로젝트 ID입니다. 이러한 ID는 Google Cloud 콘솔 시작 페이지에서 찾을 수 있습니다.
  • location: 사용 가능한 위치 목록을 참조하세요.
  • model: (필수) 머신러닝 모델입니다. (Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"])
  • uri: (선택사항) 모델 파일을 저장할 gcs 디렉터리입니다. URI가 제공되지 않으면 gs://default-bucket/timestamp-uuid-frameworkName-model이 사용됩니다. 기본 스테이징 버킷이 설정되지 않으면 새 버킷이 생성됩니다.
  • input_example: (선택사항) 각 모델은 입력 데이터를 가져온 후 예측을 생성합니다. 각 모델은 특정 형식의 입력(예: 숫자, 문자열, 2d 배열)을 허용하며 gcs uri에 yaml 파일로 저장됩니다. list, dict, pd.DataFrame, np.ndarray를 허용합니다. 목록 내부의 값은 스칼라 또는 목록이어야 합니다. 사전 내부의 값은 스칼라, 목록 또는 np.ndarray여야 합니다. (Union[list, dict, pd.DataFrame, np.ndarray])
  • display_name: (선택사항) 아티팩트의 표시 이름입니다.

ExperimentModel 추적

실험 모델 가져오기

get_experiment_model을 사용하여 저장된 모델을 반환하려면 저장된 모델의 아티팩트 ID를 전달합니다.

Python

from google.cloud import aiplatform


def get_experiment_model_sample(
    project: str,
    location: str,
    artifact_id: str,
) -> "ExperimentModel":  # noqa: F821
    aiplatform.init(project=project, location=location)
    experiment_model = aiplatform.get_experiment_model(artifact_id=artifact_id)

    return experiment_model

실험 모델 가져오기

get_experiment_models 메서드는 특정 실험 실행에 로깅된 모든 ExperimentModel의 목록을 가져옵니다.

Python

from typing import List, Union

from google.cloud import aiplatform


def get_experiment_run_models_sample(
    run_name: str,
    experiment: Union[str, aiplatform.Experiment],
    project: str,
    location: str,
) -> List["ExperimentModel"]:  # noqa: F821
    experiment_run = aiplatform.ExperimentRun(
        run_name=run_name, experiment=experiment, project=project, location=location
    )

    return experiment_run.get_experiment_models()

  • run_name: 실행 이름을 지정합니다.
  • experiment: 실험 이름을 입력합니다. 섹션 탐색 메뉴에서 "실험"을 선택하면 Google Cloud console에서 실험 목록을 찾을 수 있습니다.
  • project: 프로젝트 ID입니다. 이러한 ID는 Google Cloud 콘솔 시작 페이지에서 찾을 수 있습니다.
  • location: 사용 가능한 위치 목록을 참조하세요.

모델 정보 가져오기

get_model_info 메서드는 모델 클래스, 프레임워크 유형 등 제공된 ExperimentModel 인스턴스의 모델 메타데이터를 반환합니다.

Python

from typing import Any, Dict

from google.cloud import aiplatform


def get_model_info_sample(
    artifact_id: str,
    project: str,
    location: str,
) -> Dict[str, Any]:
    experiment_model = aiplatform.get_experiment_model(
        artifact_id=artifact_id, project=project, location=location
    )

    return experiment_model.get_model_info()

ExperimentModel 로드

모델 로드

load_experiment_model 메서드는 ExperimentModel 인스턴스를 원래 ML 모델로 역직렬화하는 데 도움이 됩니다.

Python

from typing import Union

from google.cloud import aiplatform


def load_experiment_model_sample(
    artifact_id: str,
    project: str,
    location: str,
) -> Union["sklearn.base.BaseEstimator", "xgb.Booster", "tf.Module"]:  # noqa: F821:
    experiment_model = aiplatform.get_experiment_model(
        artifact_id=artifact_id, project=project, location=location
    )

    return experiment_model.load_model()

  • artifact_id: (필수) 기존 ExperimentModel의 리소스 ID입니다. 예를 들면 artifact_id="my-sklearn-model"입니다.
  • project: 프로젝트 ID입니다. 이러한 ID는 Google Cloud 콘솔 시작 페이지에서 찾을 수 있습니다.
  • location: 사용 가능한 위치 목록을 참조하세요.

ExperimentModel 등록

저장된 모델 등록

register_experiment_model API를 사용하면 최적이라고 간주된 모델을 최소한의 구성으로 Vertex AI Model Registry에 등록할 수 있습니다. 이 API는 모델의 프레임워크 및 버전에 따라 사전 빌드된 예측 컨테이너를 자동으로 선택합니다.

Python

from google.cloud import aiplatform


def register_experiment_model_sample(
    artifact_id: str,
    project: str,
    location: str,
    display_name: str,
) -> aiplatform.models.Model:
    experiment_model = aiplatform.get_experiment_model(
        artifact_id=artifact_id, project=project, location=location
    )

    return experiment_model.register_model(display_name=display_name)

  • artifact_id: (필수) 기존 ExperimentModel의 리소스 ID입니다.
  • project: 프로젝트 ID입니다. 이러한 ID는 Google Cloud 콘솔 시작 페이지에서 찾을 수 있습니다.
  • location: 사용 가능한 위치 목록을 참조하세요.
  • display_name: (선택사항) 등록된 모델의 사용자 정의 이름입니다.

Google Cloud 콘솔에서 실험 실행 목록 보기

  1. Google Cloud 콘솔에서 실험 페이지로 이동합니다.
    실험으로 이동
    실험 목록이 표시됩니다.
  2. 확인할 실험을 선택합니다.
    실행 목록이 나타납니다.

Vertex AI 실험 목록 페이지

다음 단계

관련 노트북 샘플

블로그 게시물