실험 실행에 모델 로깅

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

사용할 최적의 모델을 선택한 후 Vertex AI 실험에서 Vertex AI Model Registry로 해당 모델을 등록할 수 있습니다.

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

ML 모델 저장 및 로깅

모델 저장

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

Python

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

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

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

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

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

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 모델 레지스트리에 등록할 수 있습니다. 이 API는 모델의 프레임워크 및 버전에 따라 사전 빌드된 예측 컨테이너를 자동으로 선택합니다.

Python

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 콘솔에서 실험 페이지로 이동합니다.
    <a{: class="button button-primary" l10n-attrs-original-order="href,target,class,track-name,track-type" l10n-encrypted-href="V3Ae1hvcBOij4KvUNiRrMltigmNHgUGOXn/QVSGplOhBlpxunv8WHL3F/z3VuS9rwbZOYpOQCXa+v4aZ0dt03w==" target="console" track-name="consoleLink" track-type="tasks" }="">Go to Experiments
    실험 목록이 표시됩니다. </a{:>
  2. 확인할 실험을 선택합니다.
    실행 목록이 나타납니다.

Vertex AI 실험 목록 페이지

다음 단계

관련 노트북 샘플

블로그 게시물