다음을 통해 공유


Unity 카탈로그에서 대상 모델로 ML 워크플로 업그레이드

이 문서에서는 Unity 카탈로그의 대상 모델로 ML 워크플로를 마이그레이션하고 업그레이드하는 방법을 설명합니다.

요구 사항

시작하기 전에 요구 사항의 요구 사항을 충족해야 합니다. 특히 모델 학습, 배포 및 유추 워크플로를 실행하는 데 사용되는 사용자 또는 보안 주체가 Unity 카탈로그의 등록된 모델에 필요한 권한을 가지고 있는지 확인합니다.

  • 교육: 등록된 모델의 소유권(새 모델 버전을 만드는 데 필요) 및 USE CATALOG 바깥쪽 카탈로그 및 USE SCHEMA 스키마에 대한 권한.
  • 배포: 등록된 모델의 소유권(모델에 별칭을 설정하는 데 필요) 및 USE CATALOG 바깥쪽 카탈로그 및 USE SCHEMA 스키마에 대한 권한.
  • 유추: EXECUTE 등록된 모델에 대한 권한(모델 버전으로 유추를 읽고 수행하는 데 필요) USE CATALOG 및 바깥쪽 카탈로그 및 스키마에 대한 'USE SCHEMA 권한.

병렬 학습, 배포 및 워크플로 만들기

모델 학습 및 유추 워크플로를 Unity 카탈로그로 업그레이드하기 위해 Databricks는 Unity 카탈로그에서 모델을 활용하는 병렬 학습, 배포 및 유추 파이프라인을 만드는 증분 접근 방식을 권장합니다. Unity 카탈로그를 사용하여 결과에 익숙해지면 다운스트림 소비자를 전환하여 일괄 처리 유추 출력을 읽거나 엔드포인트를 제공하는 Unity 카탈로그의 모델로 라우팅되는 트래픽을 늘릴 수 있습니다.

모델 학습 워크플로

모델 학습 워크플로를 복제 합니다. 그런 다음, 다음을 확인합니다.

  1. 워크플로 클러스터는 Unity 카탈로그에 액세스할 수 있으며 요구 사항에 설명된 요구 사항을 충족합니다.
  2. 워크플로를 실행하는 보안 주체에는 Unity 카탈로그의 등록된 모델에 필요한 권한이 있습니다.

다음으로 복제된 워크플로에서 모델 학습 코드를 수정합니다. 워크플로에서 실행하는 Notebook을 복제하거나 복제된 워크플로에서 새 git 분기를 만들고 대상으로 지정해야 할 수 있습니다. 다음 단계에 따라 필요한 버전의 MLflow를 설치하고, 학습 코드에서 Unity 카탈로그를 대상으로 하도록 클라이언트를 구성하고, 모델 학습 코드를 업데이트하여 모델을 Unity 카탈로그에 등록합니다.

모델 배포 워크플로

모델 학습 워크플로와 유사한 단계에 따라 모델 배포 워크플로를 복제하여 Unity 카탈로그에 액세스할 수 있도록 컴퓨팅 구성을 업데이트합니다.

복제된 워크플로 를 소유한 보안 주체에 필요한 권한이 있는지 확인합니다. 배포 워크플로에 모델 유효성 검사 논리가 있는 경우 UC에서 모델 버전을 로드하도록 업데이트합니다. 별칭을 사용하여 프로덕션 모델 롤아웃을 관리합니다.

모델 유추 워크플로

일괄 처리 유추 워크플로

모델 학습 워크플로비슷한 단계를 수행하여 일괄 처리 유추 워크플로를 복제하고 컴퓨팅 구성을 업데이트하여 Unity 카탈로그에 액세스할 수 있도록 합니다. 복제된 일괄 처리 유추 작업을 실행하는 보안 주체에게 유추를 위해 모델을 로드하는 데 필요한 권한이 있는지 확인합니다 .

모델 서비스 워크플로

Databricks 모델 서비스를 사용하는 경우 기존 엔드포인트를 복제할 필요가 없습니다. 대신 트래픽 분할 기능을 활용하여 Unity 카탈로그의 모델에 트래픽의 작은 부분을 라우팅할 수 있습니다.

먼저 엔드포인트를 제공하는 모델을 소유한 보안 주체에게 유추를 위해 모델을 로드하는 데 필요한 권한이 있는지 확인합니다 . 그런 다음 복제된 모델 배포 워크플로를 업데이트하여 Unity 카탈로그의 모델 버전에 약간의 트래픽을 할당합니다.

환경 전반에서 모델 승격

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

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

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

  • USE CATALOG및 카탈로그에 stagingprod
  • USE SCHEMA 및 스키마에 staging.ml_teamprod.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)에서 모델 버전을 승격할 수 있습니다. 액세스 제어는 각 환경에 구성된 대로 적용됩니다.

모델 배포에 대한 수동 승인을 위해 작업 웹후크 사용

Databricks는 모델 배포 프로세스 중에 적절한 검사 및 테스트를 사용하여 가능한 경우 모델 배포를 자동화하는 것이 좋습니다. 그러나 프로덕션 모델을 배포하기 위해 수동 승인을 수행해야 하는 경우 모델 학습 작업이 성공적으로 완료된 후 작업 웹후크를 사용하여 외부 CI/CD 시스템에 호출하여 모델 배포에 대한 수동 승인을 요청할 수 있습니다. 수동 승인이 제공된 후 CI/CD 시스템은 모델 버전을 배포하여 트래픽을 처리할 수 있습니다(예: "챔피언" 별칭 설정).