작업 영역에서 모델 공유

Important

Databricks는 Unity 카탈로그의 모델을 사용하여 작업 영역 간에 모델을 공유하는 것이 좋습니다. 이 문서의 접근 방식은 더 이상 사용되지 않습니다.

Azure Databricks는 여러 작업 영역에서 모델 공유를 지원합니다. 예를 들어 개발 작업 영역에서 모델을 개발하고 로그한 다음, 별도의 프로덕션 작업 영역에 있는 모델과 액세스하여 모델과 비교할 수 있습니다. 이는 여러 팀이 모델에 대한 액세스를 공유하는 상황이나 조직에 다양한 개발 단계를 처리하기 위한 여러 작업 영역이 있는 경우에 유용합니다. 작업 영역 간 모델 개발 및 배포의 경우 Databricks는 모델 학습 코드가 여러 환경에 배포되는 배포 코드 접근 방식을 권장합니다.

다중 작업 영역 상황에서는 원격 모델 레지스트리를 사용하여 Azure Databricks 작업 영역에서 모델에 액세스할 수 있습니다. 예를 들어 데이터 과학자는 읽기 전용 액세스 권한으로 프로덕션 모델 레지스트리에 액세스하여 개발 중인 모델을 현재 프로덕션 모델과 비교할 수 있습니다. 다중 작업 영역 설정의 예는 다음과 같습니다.

여러 작업 영역

원격 레지스트리에 대한 액세스는 토큰으로 제어됩니다. 액세스가 필요한 각 스크립트 또는 사용자는 원격 레지스트리에서 개인용 액세스 토큰을 생성하고 로컬 작업 영역에서 해당 토큰을 비밀 관리자에 복사합니다. 원격 레지스트리 작업 영역으로 전송된 각 API 요청에는 액세스 토큰이 포함되어야 합니다. MLflow는 모델 레지스트리 작업을 수행할 때 사용할 비밀을 지정하는 간단한 메커니즘을 제공합니다.

참고 항목

보안 모범 사례로, 자동화된 도구, 시스템, 스크립트 및 앱을 사용하여 인증하는 경우 Databricks는 작업 영역 사용자 대신 서비스 주체에 속한 개인용 액세스 토큰을 사용하는 것이 좋습니다. 서비스 주체에 대한 토큰을 만들려면 서비스 주체에 대한 토큰 관리를 참조하세요.

모델 레지스트리에 대한 모든 클라이언트플루언트 API 메서드는 원격 작업 영역에서 지원됩니다.

요구 사항

작업 영역에서 모델 레지스트리를 사용하려면 MLflow Python 클라이언트 릴리스 1.11.0 이상이 필요합니다.

참고 항목

이 워크플로는 MLflow 클라이언트의 논리에서 구현됩니다. 클라이언트를 실행하는 환경에 원격 모델 레지스트리가 포함된 Azure Databricks 작업 영역에 대해 네트워크 요청을 수행할 수 있는 액세스 권한이 있는지 확인합니다. 레지스트리 작업 영역에 적용되는 일반적인 제한 사항은 다른 작업 영역의 클러스터에서 실행 중인 MLflow 클라이언트의 연결을 허용하지 않을 수 있는 IP 허용 목록입니다.

원격 레지스트리용 API 토큰 설정

  1. 모델 레지스트리 작업 영역에서 액세스 토큰을 만듭니다.
  2. 로컬 작업 영역에서 액세스 토큰 및 원격 작업 영역 정보를 저장하는 비밀을 만듭니다.
    1. 비밀 범위를 만듭니다(databricks secrets create-scope <scope>).
    2. 여기에 <prefix>로 표시된 대상 작업 영역의 고유한 이름을 선택합니다. 그런 다음 세 가지 비밀을 만듭니다.
      • databricks secrets put-secret <scope> <prefix>-host : 모델 레지스트리 작업 영역의 호스트 이름을 입력합니다. 예를 들어 https://westus.azuredatabricks.net/ 또는 https://adb-5555555555555555.19.azuredatabricks.net/입니다.
      • databricks secrets put-secret <scope> <prefix>-token : 모델 레지스트리 작업 영역에서 액세스 토큰을 입력합니다.
      • databricks secrets put-secret <scope> <prefix>-workspace-id : 모든 페이지의 URL에서 찾을 수 있는 모델 레지스트리 작업 영역의 작업 영역 ID를 입력합니다.

참고 항목

작업 영역당 보안 비밀 범위 수 제한이 있으므로 다른 사용자와 암호 범위를 공유하는 것이 좋습니다.

원격 레지스트리 지정

원격 레지스트리 작업 영역에 대해 만든 비밀 범위 및 이름 접두사를 기반으로 다음 형식의 레지스트리 URI를 구성할 수 있습니다.

registry_uri = f'databricks://<scope>:<prefix>'

먼저 다음을 호출하여 URI를 사용하여 흐름 API 메서드에 대한 원격 레지스트리를 지정할 수 있습니다.

mlflow.set_registry_uri(registry_uri)

또는 MlflowClient를 인스턴스화할 때 명시적으로 지정할 수 있습니다.

client = MlflowClient(registry_uri=registry_uri)

다음 워크플로는 두 방법의 예를 보여 줍니다.

원격 레지스트리에 모델 등록

모델을 등록하는 한 가지 방법은 mlflow.register_model API를 사용하는 것입니다.

mlflow.set_registry_uri(registry_uri)
mlflow.register_model(model_uri=f'runs:/<run-id>/<artifact-path>', name=model_name)

다른 모델 등록 메서드에 대한 예제는 이 페이지 끝에 있는 Notebook에서 찾을 수 있습니다.

참고 항목

원격 작업 영역에 모델을 등록하면 원격 작업 영역의 DBFS에 모델 아티팩트의 임시 복사본이 만들어집니다. 모델 버전이 READY 상태가 되면 이 사본을 삭제할 수 있습니다. 임시 파일은 /dbfs/databricks/mlflow/tmp-external-source/<run-id> 폴더에서 찾을 수 있습니다.

registry_uri와 유사한 방식으로 다른 작업 영역의 MLflow 추적 서비스를 가리키도록 tracking_uri를 지정할 수도 있습니다. 즉, 원격 작업 영역에서 실행하고 현재 또는 다른 원격 작업 영역에서 해당 모델을 등록할 수 있습니다.

원격 레지스트리의 모델 사용

먼저 레지스트리 URI를 설정하여 mlflow.<flavor>.load_model 메서드를 사용하여 원격 레지스트리에서 모델 버전을 로드하고 사용할 수 있습니다.

mlflow.set_registry_uri(registry_uri)
model = mlflow.pyfunc.load_model(f'models:/<model-name>/Staging')
model.predict(...)

또는 models:/ URI에 원격 레지스트리를 명시적으로 지정할 수 있습니다.

model = mlflow.pyfunc.load_model(f'models://<scope>:<prefix>@databricks/<model-name>/Staging')
model.predict(...)

모델 파일에 액세스하기 위한 다음과 같은 다른 도우미 메서드도 지원됩니다.

client.get_latest_versions(model_name)
client.get_model_version_download_uri(model_name, version)

원격 레지스트리에서 모델 관리

필요한 권한이 있는 한 원격 레지스트리의 모델에 대해 모든 작업을 수행할 수 있습니다. 예를 들어 모델에 대한 CAN MANAGE 권한이 있는 경우 모델 버전 단계를 전환하거나 메서드를 사용하여 MlflowClient 모델을 삭제할 수 있습니다.

client = MlflowClient(tracking_uri=None, registry_uri=registry_uri)
client.transition_model_version_stage(model_name, version, 'Archived')
client.delete_registered_model(model_name)

Notebook 예제: 원격 모델 레지스트리

다음 Notebook은 Unity 카탈로그에 대해 사용하도록 설정되지 않은 작업 영역에 적용할 수 있습니다. 현재 작업 영역에서 MLflow 추적 서버에 모델을 기록하고 다른 작업 영역의 모델 레지스트리에 모델을 등록하는 방법을 보여 줍니다. Databricks는 Unity 카탈로그의 모델을 사용하여 작업 영역 간에 모델을 공유하는 것이 좋습니다.

원격 모델 레지스트리 예제 Notebook

전자 필기장 가져오기