모델 레지스트리

모델 레지스트리는 MLOps 라이프사이클에서 모델 버전을 관리하는 구성 요소입니다. 아티팩트를 추적하는 것 이상으로 각 모델과 관련된 메타데이터를 추적하는 책임이 있습니다. 이 메타데이터에는 다음이 포함됩니다.

  • 성능
  • 매개변수
  • 데이터 출처

데이터 토폴로지

모든 엔터티는 프로젝트에 속하며, 해당 프로젝트에 액세스 권한이 있는 사용자만 이러한 엔터티와 상호 작용할 수 있습니다.

Ml::Model

  • 이름 및 설명과 같은 모델에 대한 일반적인 정보를 보유합니다.
  • 각 모델은 동일한 이름을 가진 기본 Ml::Experiment를 가지며, 여기에 후보가 기록됩니다.
  • 많은 Ml::ModelVersion을 소유합니다.

Ml::ModelVersion

  • 모델의 버전입니다.
  • 동일한 프로젝트, 이름, 버전을 가진 Packages::Package에 연결됩니다.
  • 버전은 의미론적 버전을 사용해야 합니다.

Ml::Experiment

  • 비교 가능한 Ml::Candidates의 모음입니다.

Ml::Candidate

  • 모델 버전에 대한 후보자입니다.
  • 일반적으로 교육 코드에 전달되는 구성 변수인 매개변수(Ml::CandidateParams)를 여러 개 가질 수 있습니다.
  • 여러 사용자 정의 메타데이터(Ml::CandidateMetadata)를 가질 수 있습니다.

MLflow 호환성 레이어

GitLab 모델 레지스트리를 사용하는 데이터 과학자들을 위해, MLflow 클라이언트에 호환성 레이어를 제공했습니다. GitLab에서는 MLflow 인스턴스를 제공하지 않습니다. 대신, GitLab 자체가 MLflow의 인스턴스 역할을 합니다. 이 방법은 데이터를 GitLab 데이터베이스에 저장하여 사용자 신뢰성과 기능성을 향상시킵니다. 호환성 레이어에 대한 사용자 설명서를 참조하세요.

호환성 레이어는 lib/api/ml/mlflow에 MLflow REST API를 복제하여 구현되었습니다.

MLflow의 일부 용어는 GitLab에서 이름이 다르게 지정됩니다.

  • MLflow의 Run은 GitLab의 Candidate입니다.
  • MLflow의 Registered model은 GitLab의 Model입니다.

테스트 설정

MLflow를 사용하여 GitLab을 백엔드로 하는 스크립트를 테스트하려면 다음을 수행하세요.

  1. MLflow 설치:

    mkdir mlflow-compatibility
    cd mlflow-compatibility
    pip install mlflow jupyterlab
    
  2. 디렉토리에서 다음 코드가 포함된 mlflow_test.py라는 Python 파일을 만듭니다.

    import mlflow
    import os
    from mlflow.tracking import MlflowClient
    
    os.environ["MLFLOW_TRACKING_TOKEN"]='<TOKEN>'
    os.environ["MLFLOW_TRACKING_URI"]='<your gitlab endpoint>/api/v4/projects/<your project id>/ml/mlflow'
    
    client = MlflowClient()
    client.create_experiment("My first experiment")
    
  3. 스크립트를 실행합니다.

    python mlflow_test.py
    
  4. 프로젝트 /-/ml/experiments로 이동합니다. 실험이 작성되어 있어야 합니다.

원하는 메서드를 호출하도록 스크립트를 편집할 수 있습니다. 더 완전한 예제는 GitLab 모델 실험 예제를 참조하세요.