다음을 통해 공유


Unity 카탈로그에서 모델 수명 주기 관리

Important

  • 이 문서에서는 모델 관리 및 배포를 위해 Databricks가 권장하는 Unity 카탈로그의 모델을 설명합니다. Unity 카탈로그에 작업 영역을 사용하도록 설정하지 않은 경우 이 페이지의 기능을 사용할 수 없습니다. 대신 작업 영역 모델 레지스트리(레거시)를 사용하여 모델 수명 주기 관리를 참조하세요. 작업 영역 모델 레지스트리에서 Unity 카탈로그로 업그레이드하는 방법에 대한 지침은 워크플로 및 모델을 Unity 카탈로그로 마이그레이션을 참조하세요.
  • Unity 카탈로그의 모델은 Azure Government 지역에서 사용할 수 없습니다.

이 문서에서는 기계 학습 워크플로의 일부로 Unity 카탈로그의 모델을 사용하여 ML 모델의 전체 수명 주기를 관리하는 방법을 설명합니다. Databricks는 Unity 카탈로그에서 호스트된 버전의 MLflow 모델 레지스트리를 제공합니다. Unity 카탈로그의 모델은 작업 영역에서 중앙 집중식 액세스 제어, 감사, 계보 및 모델 검색을 포함하여 Unity 카탈로그의 이점을 ML 모델로 확장합니다. Unity 카탈로그의 모델은 오픈 소스 MLflow Python 클라이언트와 호환됩니다.

Unity 카탈로그의 모델의 주요 기능은 다음과 같습니다.

  • 환경, 프로젝트 또는 팀 수준에서 모델을 그룹화하고 제어할 수 있도록 모델의 이름 간격 및 거버넌스("데이터 과학자에게 프로덕션 모델에 대한 읽기 전용 액세스 권한 부여").
  • 시간순 모델 계보(MLflow 실험 및 실행에서 지정된 시간에 모델을 생성).
  • 모델 서비스.
  • 모델 버전 관리
  • 별칭을 통한 모델 배포 예를 들어 카탈로그 내에서 모델의 "챔피언" 버전을 표시합니다 prod .

작업 영역의 기본 카탈로그가 Unity 카탈로그의 카탈로그로 구성된 경우 MLflow API를 사용하여 등록된 모델(예: mlflow.<model-type>.log_model(..., registered_model_name) mlflow.register_model(model_uri, name) 기본적으로 Unity Catalog)에 등록됩니다.

이 문서에는 Unity 카탈로그 UI 및 API의 모델 모두에 대한 지침이 포함되어 있습니다.

모델 레지스트리 개념에 대한 개요는 MLflow를 사용한 ML 수명 주기 관리를 참조하세요.

요구 사항

  1. 작업 영역에서 Unity 카탈로그를 사용하도록 설정해야 합니다. Unity 카탈로그를 사용하여 Unity 카탈로그 메타스토어를 만들고, 작업 영역에서 사용하도록 설정하고, 카탈로그를 만드는 방법을 참조하세요. Unity 카탈로그를 사용하도록 설정하지 않은 경우에도 클래식 작업 영역 모델 레지스트리를 사용할 수 있습니다.

  2. 작업 영역은 권한 상속을 지원하는 Unity 카탈로그 메타스토어에 연결되어야 합니다. 이는 2022년 8월 25일 이후에 생성된 모든 메타스토어에 해당합니다. 이전 메타스토어 에서 실행되는 경우 문서에 따라 업그레이드합니다 .

  3. Unity 카탈로그에 대한 액세스 권한이 있는 클러스터에서 명령을 실행하려면 액세스할 수 있어야 합니다.

  4. 등록된 새 모델을 만들려면 스키마 및 USE CATALOG 해당 바깥쪽 카탈로그에 대한 권한 외에도 USE SCHEMA 스키마에 대한 권한이 필요합니다CREATE_MODEL. CREATE_MODEL 는 아래와 같이 카탈로그 탐색기 UI 또는 SQL GRANT 명령을 사용하여 부여할 수 있는 새 스키마 수준 권한입니다.

    GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
    

교육 워크로드를 Unity 카탈로그로 업그레이드

이 섹션에는 기존 학습 워크로드를 Unity 카탈로그로 업그레이드하는 지침이 포함되어 있습니다.

MLflow Python 클라이언트 설치

아래 코드를 사용하여 Notebook에 최신 버전의 MLflow Python 클라이언트를 설치하여 Databricks Runtime 11.3 LTS 이상의 Unity 카탈로그에서 모델을 사용할 수도 있습니다.

%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()

Unity 카탈로그의 모델에 액세스하도록 MLflow 클라이언트 구성

기본적으로 MLflow Python 클라이언트는 Databricks 작업 영역 모델 레지스트리에 모델을 만듭니다. Unity 카탈로그의 모델로 업그레이드하려면 MLflow 클라이언트를 구성합니다.

import mlflow
mlflow.set_registry_uri("databricks-uc")

참고 항목

작업 영역의 기본 카탈로그 가 Unity 카탈로그(대신 hive_metastore)에 있고 Databricks Runtime 13.3 LTS 이상을 사용하여 클러스터를 실행하는 경우(Azure 중국 지역의 Databricks Runtime 15.0 이상) 모델은 구성 없이 기본 카탈로그에서 자동으로 만들어지고 로드됩니다. 다른 Databricks 런타임 버전에 대한 동작은 변경되지 않습니다. 2024년 1월 이전에 Unity 카탈로그의 카탈로그에 기본 카탈로그를 구성하고 2024년 1월 이전에 작업 영역 모델 레지스트리를 사용한 적은 수의 작업 영역이 이 동작에서 제외됩니다.

Unity 카탈로그 호환 모델 학습 및 등록

필요한 권한: 등록된 새 모델을 만들려면 바깥쪽 스키마에 대한 권한과 USE SCHEMA USE CATALOG 바깥쪽 카탈로그에 대한 권한이 필요합니다CREATE_MODEL. 등록된 모델에서 새 모델 버전을 만들려면 등록된 모델의 소유자여야 하며 모델을 포함하는 스키마 및 카탈로그에 대한 권한과 USE CATALOG 권한이 USE SCHEMA 있어야 합니다.

UC의 ML 모델 버전에는 모델 서명있어야 합니다. 모델 학습 워크로드에서 서명으로 MLflow 모델을 아직 로깅하지 않은 경우 다음 중 하나를 수행할 수 있습니다.

  • 많은 인기 있는 ML 프레임워크에 대한 서명이 있는 모델을 자동으로 기록하는 Databricks 자동 로깅을 사용합니다. MLflow 문서에서 지원되는 프레임워크 를 참조하세요.
  • MLflow 2.5.0 이상을 사용하면 호출에서 mlflow.<flavor>.log_model 입력 예제를 지정할 수 있으며 모델 서명이 자동으로 유추됩니다. 자세한 내용은 MLflow 설명서를 참조 하세요.

그런 다음, 모델의 세 수준 이름을 MLflow API에 양식 <catalog>.<schema>.<model>으로 전달합니다.

이 섹션의 예제에서는 카탈로그 아래의 스키마에서 ml_team 모델을 만들고 액세스합니다 prod .

이 섹션의 모델 학습 예제는 새 모델 버전을 만들고 카탈로그에 prod 등록합니다. 카탈로그를 prod 사용하는 것이 반드시 모델 버전이 프로덕션 트래픽을 제공하는 것은 아닙니다. 모델 버전의 바깥쪽 카탈로그, 스키마 및 등록된 모델은 환경() 및 관련 거버넌스 규칙(prod예: 관리자만 카탈로그에서 prod 삭제할 수 있도록 권한을 설정할 수 있음)을 반영하지만 배포 상태는 반영하지 않습니다. 배포 상태를 관리하려면 모델 별칭을 사용합니다.

자동 로깅을 사용하여 Unity 카탈로그에 모델 등록

from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier

# Train a sklearn model on the iris dataset
X, y = datasets.load_iris(return_X_y=True, as_frame=True)
clf = RandomForestClassifier(max_depth=7)
clf.fit(X, y)

# Note that the UC model name follows the pattern
# <catalog_name>.<schema_name>.<model_name>, corresponding to
# the catalog, schema, and registered model name
# in Unity Catalog under which to create the version
# The registered model will be created if it doesn't already exist
autolog_run = mlflow.last_active_run()
model_uri = "runs:/{}/model".format(autolog_run.info.run_id)
mlflow.register_model(model_uri, "prod.ml_team.iris_model")

자동으로 유추된 서명을 사용하여 Unity 카탈로그에 모델 등록

자동으로 유추된 서명에 대한 지원은 MLflow 버전 2.5.0 이상에서 사용할 수 있으며 Databricks Runtime 11.3 LTS ML 이상에서 지원됩니다. 자동으로 유추된 서명을 사용하려면 다음 코드를 사용하여 Notebook에 최신 MLflow Python 클라이언트를 설치합니다.

%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()

다음 코드는 자동으로 유추된 서명의 예를 보여줍니다.

from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier

with mlflow.start_run():
    # Train a sklearn model on the iris dataset
    X, y = datasets.load_iris(return_X_y=True, as_frame=True)
    clf = RandomForestClassifier(max_depth=7)
    clf.fit(X, y)
    # Take the first row of the training dataset as the model input example.
    input_example = X.iloc[[0]]
    # Log the model and register it as a new version in UC.
    mlflow.sklearn.log_model(
        sk_model=clf,
        artifact_path="model",
        # The signature is automatically inferred from the input example and its predicted output.
        input_example=input_example,
        registered_model_name="prod.ml_team.iris_model",
    )

Unity 카탈로그에서 모델의 데이터 계보 추적

참고 항목

Unity 카탈로그의 모델 계보에 대한 테이블 지원은 MLflow 2.11.0 이상에서 사용할 수 있습니다.

Unity 카탈로그의 테이블에서 모델을 학습할 때 학습 및 평가된 업스트림 데이터 세트에 대한 모델의 계보를 추적할 수 있습니다. 이렇게 하려면 mlflow.log_input을 사용합니다. 이렇게 하면 모델을 생성한 MLflow 실행과 함께 입력 테이블 정보가 저장됩니다. 또한 기능 저장소 API를 사용하여 기록된 모델에 대해 데이터 계보가 자동으로 캡처됩니다. 기능 거버넌스 및 계보를 참조 하세요.

Unity 카탈로그에 모델을 등록하면 계보 정보가 자동으로 저장되고 카탈로그 탐색기에서 모델 버전 UI의 계보 탭에 표시됩니다.

다음은 예를 보여 주는 코드입니다.

import mlflow
import pandas as pd
import pyspark.pandas as ps
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestRegressor

# Write a table to Unity Catalog
iris = load_iris()
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df.rename(
  columns = {
    'sepal length (cm)':'sepal_length',
    'sepal width (cm)':'sepal_width',
    'petal length (cm)':'petal_length',
    'petal width (cm)':'petal_width'},
  inplace = True
)
iris_df['species'] = iris.target
ps.from_pandas(iris_df).to_table("prod.ml_team.iris", mode="overwrite")

# Load a Unity Catalog table, train a model, and log the input table
dataset = mlflow.data.load_delta(table_name="prod.ml_team.iris", version="0")
pd_df = dataset.df.toPandas()
X = pd_df.drop("species", axis=1)
y = pd_df["species"]
with mlflow.start_run():
    clf = RandomForestRegressor(n_estimators=100)
    clf.fit(X, y)
    mlflow.log_input(dataset, "training")

UI에서 모델 보기

필요한 권한: 등록된 모델 및 해당 모델 버전을 UI에서 보려면 등록된 모델에 대한 권한과 모델을 USE SCHEMA 포함하는 스키마 및 USE CATALOG 카탈로그에 대한 권한이 필요합니다EXECUTE.

카탈로그 탐색기를 사용하여 Unity 카탈로그에서 등록된 모델 및 모델 버전을 보고 관리할 수 있습니다.

모델에 대한 액세스 제어

Unity 카탈로그에 등록된 모델에 대한 액세스를 제어하는 방법에 대한 자세한 내용은 Unity 카탈로그 권한 및 보안 개체를 참조 하세요. 카탈로그 및 스키마에서 모델을 구성하는 모범 사례는 데이터 구성을 참조하세요.

Grants REST API를 사용하여 프로그래밍 방식으로 모델 권한을 구성할 수 있습니다. 모델 권한을 구성할 때 REST API 요청으로 설정합니다 securable_type "FUNCTION" . 예를 들어 등록된 모델 권한을 업데이트하는 데 사용합니다 PATCH /api/2.1/unity-catalog/permissions/function/{full_name} .

별칭 및 태그를 사용하여 모델 배포 및 구성

모델 별칭 및 태그는 Unity 카탈로그에서 모델을 구성하고 관리하는 데 도움이 됩니다.

모델 별칭을 사용하면 등록된 모델의 특정 버전에 변경 가능한 명명된 참조를 할당할 수 있습니다. 별칭을 사용하여 모델 버전의 배포 상태를 나타낼 수 있습니다. 예를 들어 현재 프로덕션 중인 모델 버전에 "챔피언" 별칭을 할당하고 프로덕션 모델을 사용하는 워크로드에서 이 별칭을 대상으로 지정할 수 있습니다. 그런 다음, "챔피언" 별칭을 다른 모델 버전으로 다시 할당하여 프로덕션 모델을 업데이트할 수 있습니다.

태그는 등록된 모델 및 모델 버전과 연결하는 키-값 쌍으로, 함수 또는 상태에 따라 레이블을 지정하고 분류할 수 있습니다. 예를 들어 질문 답변 작업을 위한 등록된 모델에 키 "task" 와 값 "question-answering" 이 있는 태그(UI에 표시 task:question-answering됨)를 적용할 수 있습니다. 모델 버전 수준에서 배포 전 유효성 검사를 진행 중인 버전과 validation_status:pending 배포에 대해 지워진 버전에 태그를 지정할 수 있습니다 validation_status:approved.

별칭 및 태그를 사용하는 방법은 다음 섹션을 참조하세요.

모델에서 별칭 설정 및 삭제

필요한 권한: 등록된 모델의 소유자와 USE CATALOG 모델을 USE SCHEMA 포함하는 스키마 및 카탈로그에 대한 권한

카탈로그 탐색기를 사용하여 Unity 카탈로그에서 모델의 별칭을 설정, 업데이트 및 제거할 수 있습니다. 모델 세부 정보 페이지의 등록된 모델에서 별칭을 관리하고 모델 버전 세부 정보 페이지에서 특정 모델 버전에 대한 별칭을 구성할 수 있습니다.

MLflow 클라이언트 API를 사용하여 별칭을 설정, 업데이트 및 삭제하려면 아래 예제를 참조하세요.

from mlflow import MlflowClient
client = MlflowClient()

# create "Champion" alias for version 1 of model "prod.ml_team.iris_model"
client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 1)

# reassign the "Champion" alias to version 2
client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 2)

# get a model version by alias
client.get_model_version_by_alias("prod.ml_team.iris_model", "Champion")

# delete the alias
client.delete_registered_model_alias("prod.ml_team.iris_model", "Champion")

모델에서 태그 설정 및 삭제

필요한 권한: 등록된 모델의 소유자 또는 APPLY_TAG 권한 및 USE CATALOG 모델을 USE SCHEMA 포함하는 스키마 및 카탈로그에 대한 권한

UI를 사용하여 태그를 설정하고 삭제하는 방법은 카탈로그 탐색기를 사용하여 태그 추가 및 업데이트를 참조하세요.

MLflow 클라이언트 API를 사용하여 태그를 설정하고 삭제하려면 아래 예제를 참조하세요.

from mlflow import MlflowClient
client = MlflowClient()

# Set registered model tag
client.set_registered_model_tag("prod.ml_team.iris_model", "task", "classification")

# Delete registered model tag
client.delete_registered_model_tag("prod.ml_team.iris_model", "task")

# Set model version tag
client.set_model_version_tag("prod.ml_team.iris_model", "1", "validation_status", "approved")

# Delete model version tag
client.delete_model_version_tag("prod.ml_team.iris_model", "1", "validation_status")

등록된 모델 및 모델 버전 태그는 모두 플랫폼 전체 제약 조건을 충족해야 합니다.

별칭 및 태그 클라이언트 API에 대한 자세한 내용은 MLflow API 설명서를 참조 하세요.

유추를 위한 모델 로드

유추 워크로드에서 별칭으로 모델 버전 사용

필요한 권한: EXECUTE 등록된 모델에 대한 권한 및 USE CATALOG 모델을 USE SCHEMA 포함하는 스키마 및 카탈로그에 대한 권한.

별칭으로 모델 버전을 참조하는 일괄 처리 유추 워크로드를 작성할 수 있습니다. 예를 들어 아래 코드 조각은 일괄 처리 유추를 위해 "챔피언" 모델 버전을 로드하고 적용합니다. "챔피언" 버전이 새 모델 버전을 참조하도록 업데이트된 경우 일괄 처리 유추 워크로드는 다음 실행 시 자동으로 이를 선택합니다. 이렇게 하면 일괄 처리 유추 워크로드에서 모델 배포를 분리할 수 있습니다.

import mlflow.pyfunc
model_version_uri = "models:/prod.ml_team.iris_model@Champion"
champion_version = mlflow.pyfunc.load_model(model_version_uri)
champion_version.predict(test_x)

또한 REST API를 제공하는 모델을 사용하여 배포 워크플로를 작성하여 별칭으로 모델 버전을 가져와서 해당 버전을 제공하도록 엔드포인트를 제공하는 모델을 업데이트할 수도 있습니다.

import mlflow
import requests
client = mlflow.tracking.MlflowClient()
champion_version = client.get_model_version_by_alias("prod.ml_team.iris_model", "Champion")
# Invoke the model serving REST API to update endpoint to serve the current "Champion" version
model_name = champion_version.name
model_version = champion_version.version
requests.request(...)

유추 워크로드에서 버전 번호별로 모델 버전 사용

버전 번호별로 모델 버전을 로드할 수도 있습니다.

import mlflow.pyfunc
# Load version 1 of the model "prod.ml_team.iris_model"
model_version_uri = "models:/prod.ml_team.iris_model/1"
first_version = mlflow.pyfunc.load_model(model_version_uri)
first_version.predict(test_x)

작업 영역에서 모델 공유

동일한 지역의 사용자와 모델 공유

적절한 권한이 있는 한 모델을 포함하는 메타스토어에 연결된 모든 작업 영역에서 Unity 카탈로그의 모델에 액세스할 수 있습니다. 예를 들어 개발 작업 영역의 prod 카탈로그에서 모델에 액세스하여 새로 개발된 모델을 프로덕션 기준과 쉽게 비교할 수 있습니다.

만든 등록된 모델에서 다른 사용자(쓰기 권한 공유)와 공동 작업하려면 자신과 공동 작업하려는 사용자가 포함된 그룹에 모델의 소유권을 부여해야 합니다. 또한 협력자는 모델을 포함하는 카탈로그 및 USE SCHEMA 스키마에 대한 권한과 권한이 있어야 합니다USE CATALOG. 자세한 내용은 Unity 카탈로그 권한 및 보안 개체를 참조하세요.

다른 지역 또는 계정의 사용자와 모델 공유

다른 지역 또는 계정의 사용자와 모델을 공유하려면 Delta Sharing Databricks-to-Databricks 공유 흐름을 사용합니다. 공유에 모델 추가(공급자용)를 참조하고 Databricks-to-Databricks 모델(받는 사람의 경우)에서 액세스 권한을 얻습니다. 받는 사람은 공유에서 카탈로그를 만든 후 Unity 카탈로그의 다른 모델과 동일한 방식으로 해당 공유 카탈로그의 모델에 액세스합니다.

환경 전반에서 모델 승격

Databricks는 ML 파이프라인을 코드로 배포하는 것이 좋습니다. 이렇게 하면 프로덕션 환경에서 자동화된 학습 워크플로를 통해 모든 프로덕션 모델을 생성할 수 있으므로 환경 전반에서 모델을 승격할 필요가 없습니다.

그러나 경우에 따라 환경 간에 모델을 다시 학습하는 데 비용이 너무 많이 들 수 있습니다. 대신 Unity 카탈로그의 등록된 모델 간에 모델 버전을 복사하여 환경 간에 수준을 올리면 됩니다.

아래 예제 코드를 실행하려면 다음 권한이 필요합니다.

  • USE CATALOG및 카탈로그에 staging prod
  • USE SCHEMA 및 스키마에 staging.ml_team prod.ml_team 대해 설명합니다.
  • EXECUTEstaging.ml_team.fraud_detection.

또한 등록된 모델의 prod.ml_team.fraud_detection소유자여야 합니다.

다음 코드 조각은 MLflow 버전 2.8.0 이상에서 사용할 수 있는 MLflow 클라이언트 API를 사용합니다.copy_model_version

import mlflow
mlflow.set_registry_uri("databricks-uc")

client = mlflow.tracking.MlflowClient()
src_model_name = "staging.ml_team.fraud_detection"
src_model_version = "1"
src_model_uri = f"models:/{src_model_name}/{src_model_version}"
dst_model_name = "prod.ml_team.fraud_detection"
copied_model_version = client.copy_model_version(src_model_uri, dst_model_name)

모델 버전이 프로덕션 환경에 있으면 필요한 배포 전 유효성 검사를 수행할 수 있습니다. 그런 다음 별칭을 사용하여 배포 용 모델 버전을 표시할 수 있습니다.

client = mlflow.tracking.MlflowClient()
client.set_registered_model_alias(name="prod.ml_team.fraud_detection", alias="Champion", version=copied_model_version.version)

위의 예제에서는 등록된 모델에서 staging.ml_team.fraud_detection 읽고 등록된 모델에 쓸 prod.ml_team.fraud_detection 수 있는 사용자만 스테이징 모델을 프로덕션 환경으로 승격할 수 있습니다. 동일한 사용자가 별칭을 사용하여 프로덕션 환경 내에 배포되는 모델 버전을 관리할 수도 있습니다. 모델 승격 및 배포를 제어하기 위해 다른 규칙이나 정책을 구성할 필요가 없습니다.

이 흐름을 사용자 지정하여 설정과 일치하는 여러 환경(예: devqa, 및 prod)에서 모델 버전을 승격할 수 있습니다. 액세스 제어는 각 환경에 구성된 대로 적용됩니다.

모델 또는 모델 버전에 주석 달기

필요한 권한: 등록된 모델의 소유자와 USE CATALOG 모델을 USE SCHEMA 포함하는 스키마 및 카탈로그에 대한 권한

모델 또는 모델 버전에 주석을 추가하여 모델 또는 모델 버전에 대한 정보를 제공할 수 있습니다. 예를 들어, 문제의 개요나 사용된 방법 및 알고리즘에 대한 정보를 포함하는 것이 좋습니다.

UI를 사용하여 모델 또는 모델 버전에 주석 달기

데이터 및 AI 자산에 주석 추가를 참조 하세요.

API를 사용하여 모델 또는 모델 버전에 주석 달기

등록된 모델 설명을 업데이트하려면 MLflow 클라이언트 API update_registered_model() 메서드를 사용합니다.

client = MlflowClient()
client.update_registered_model(
  name="<model-name>",
  description="<description>"
)

모델 버전 설명을 업데이트하려면 MLflow 클라이언트 API update_model_version() 메서드를 사용합니다.

client = MlflowClient()
client.update_model_version(
  name="<model-name>",
  version=<model-version>,
  description="<description>"
)

모델 이름 바꾸기

필요한 권한: 등록된 모델의 소유자, CREATE_MODEL 등록된 모델을 포함하는 스키마에 대한 권한 및 USE SCHEMA USE CATALOG 모델을 포함하는 스키마 및 카탈로그에 대한 권한.

등록된 모델의 이름을 바꾸려면 MLflow 클라이언트 API rename_registered_model() 메서드를 사용합니다.

client=MlflowClient()
client.rename_registered_model("<full-model-name>", "<new-model-name>")

모델 또는 모델 버전 삭제

필요한 권한: 등록된 모델의 소유자와 USE CATALOG 모델을 USE SCHEMA 포함하는 스키마 및 카탈로그에 대한 권한

카탈로그 탐색기 UI 또는 API를 사용하여 등록된 모델 내에서 등록된 모델 또는 모델 버전을 삭제할 수 있습니다.

API를 사용하여 모델 버전 또는 모델 삭제

Warning

이 작업은 실행 취소할 수 없습니다. 모델을 삭제하면 Unity 카탈로그에 저장된 모든 모델 아티팩트와 등록된 모델과 연결된 모든 메타데이터가 삭제됩니다.

모델 버전 삭제

모델 버전을 삭제하려면 MLflow 클라이언트 API delete_model_version() 메서드를 사용합니다.

# Delete versions 1,2, and 3 of the model
client = MlflowClient()
versions=[1, 2, 3]
for version in versions:
  client.delete_model_version(name="<model-name>", version=version)

모델 삭제

모델을 삭제하려면 MLflow 클라이언트 API delete_registered_model() 메서드를 사용합니다.

client = MlflowClient()
client.delete_registered_model(name="<model-name>")

모델 나열 및 검색

MLflow의 search_registered_models() Python API를 사용하여 Unity 카탈로그에 등록된 모델을 나열할 수 있습니다.

client=MlflowClient()
client.search_registered_models()

메서드를 사용하여 특정 모델 이름을 검색하고 해당 버전 세부 정보를 나열할 search_model_versions() 수도 있습니다.

from pprint import pprint

client=MlflowClient()
[pprint(mv) for mv in client.search_model_versions("name='<model-name>'")]

참고 항목

Unity 카탈로그의 모델에 대해 모든 검색 API 필드 및 연산자가 지원되는 것은 아닙니다. 자세한 내용은 제한 사항을 참조하세요.

모델 파일 다운로드(고급 사용 사례)

대부분의 경우 모델을 로드하려면 (예mlflow.transformers.load_model: HuggingFace 모델의 경우) 같은 mlflow.pyfunc.load_model mlflow.<flavor>.load_model MLflow API를 사용해야 합니다.

경우에 따라 모델 동작 또는 모델 로드 문제를 디버그하기 위해 모델 파일을 다운로드해야 할 수 있습니다. 다음과 같이 모델 파일을 mlflow.artifacts.download_artifacts다운로드할 수 있습니다.

import mlflow
mlflow.set_registry_uri("databricks-uc")
model_uri = f"models:/{model_name}/{version}" # reference model by version or alias
destination_path = "/local_disk0/model"
mlflow.artifacts.download_artifacts(artifact_uri=model_uri, dst_path=destination_path)

예시

이 예제에서는 Unity 카탈로그의 모델을 사용하여 기계 학습 애플리케이션을 빌드하는 방법을 보여 줍니다.

Unity 카탈로그의 모델 예제

워크플로 및 모델을 Unity 카탈로그로 마이그레이션

Databricks는 향상된 거버넌스, 작업 영역 및 환경 간 간편한 공유, 보다 유연한 MLOps 워크플로를 위해 Unity 카탈로그의 모델을 사용하는 것이 좋습니다. 이 표에서는 작업 영역 모델 레지스트리 및 Unity 카탈로그의 기능을 비교합니다.

기능 작업 영역 모델 레지스트리(레거시) Unity 카탈로그의 모델(권장)
명명된 별칭별 모델 버전 참조 모델 레지스트리 단계: 모델 버전을 4개의 고정 단계 중 하나로 이동하여 해당 스테이지에서 참조합니다. 스테이지의 이름을 바꾸거나 추가할 수 없습니다. 모델 레지스트리 별칭: 등록된 각 모델의 모델 버전에 대해 최대 10개의 사용자 지정 및 재할당 가능한 명명된 참조를 만듭니다.
모델에 대한 액세스 제어 환경 만들기 모델 레지스트리 단계: 등록된 한 모델 내의 단계를 사용하여 4개의 고정 단계 중 두 단계(StagingProduction)에 대한 액세스 제어를 사용하여 해당 모델 버전의 환경을 나타냅니다. 등록된 모델: Unity 카탈로그의 3개 수준 네임스페이스 및 사용 권한을 활용하여 거버넌스를 표현하는 MLOps 워크플로의 각 환경에 대해 등록된 모델을 만듭니다.
환경 전반에서 모델 승격(모델 배포) transition_model_version_stage() MLflow 클라이언트 API를 사용하여 모델 버전을 다른 단계로 이동하면 이전 단계를 참조하는 워크플로가 손상될 수 있습니다. copy_model_version() MLflow 클라이언트 API를 사용하여 등록된 모델에서 다른 모델로 모델 버전을 복사합니다.
작업 영역에서 모델 액세스 및 공유 작업 영역에서 모델을 수동으로 내보내고 가져오거나 개인 액세스 토큰 및 작업 영역 비밀 범위를 사용하여 원격 모델 레지스트리에 대한 연결을 구성합니다. 동일한 계정의 작업 영역에서 모델에 대한 기본 액세스 권한입니다. 구성이 필요 없습니다.
권한 구성 작업 영역 수준에서 사용 권한을 설정합니다. 작업 영역에 일관된 거버넌스를 적용하는 계정 수준에서 사용 권한을 설정합니다.
Databricks markplace에서 모델 액세스 사용할. Databricks 마켓플레이스에서 Unity 카탈로그 메타스토어로 모델을 로드하고 작업 영역에서 액세스합니다.

아래에 연결된 문서에서는 워크플로(모델 학습 및 일괄 처리 유추 작업)와 모델을 작업 영역 모델 레지스트리에서 Unity 카탈로그로 마이그레이션하는 방법을 설명합니다.

제한 사항

  • Unity 카탈로그의 모델에는 단계가 지원되지 않습니다. Databricks는 Unity 카탈로그의 세 수준 네임스페이스를 사용하여 모델이 있는 환경을 표현하고 별칭을 사용하여 배포를 위한 모델을 승격하는 것이 좋습니다. 자세한 내용은 환경 전반에서 모델 승격을 참조 하세요 .
  • Unity 카탈로그의 모델에는 웹후크가 지원되지 않습니다. 업그레이드 가이드에서 제안된 대안을 참조하세요.
  • 일부 검색 API 필드 및 연산자는 Unity 카탈로그의 모델에 대해 지원되지 않습니다. 지원되는 필터를 사용하여 검색 API를 호출하고 결과를 검색하여 완화할 수 있습니다. 다음은 몇 가지 예입니다.
    • order_by 매개 변수는 search_model_versions 또는 search_registered_models 클라이언트 API에서 지원되지 않습니다.
    • 태그 기반 필터(tags.mykey = 'myvalue')는 지원 search_model_versions search_registered_models되거나 지원되지 않습니다.
    • 정확한 같음(예: LIKE, , ILIKE!=)이 아닌 연산자는 지원되거나 지원 search_registered_modelssearch_model_versions 되지 않습니다.
    • 이름으로 등록된 모델 검색(예: MlflowClient().search_registered_models(filter_string="name='main.default.mymodel'") 지원되지 않음). 이름으로 등록된 특정 모델을 가져오려면 get_registered_model 사용합니다.
  • 등록된 모델 및 모델 버전에 대한 이메일 알림 및 주석 토론 스레드는 Unity 카탈로그에서 지원되지 않습니다.
  • Unity 카탈로그의 모델에는 활동 로그가 지원되지 않습니다. 그러나 감사 로그를 사용하여 Unity 카탈로그의 모델에 대한 작업을 추적할 수 있습니다.
  • search_registered_models 는 델타 공유를 통해 공유된 모델의 부실 결과를 반환할 수 있습니다. 최신 결과를 확인하려면 Databricks CLI 또는 SDK 를 사용하여 스키마에 모델을 나열합니다.