MongoDB MLflow와 통합하여 MLflow 추적 및 모델 레지스트리 데이터를 MongoDB 에 저장 수 있습니다. MLflow는 머신 러닝 및 GenAI 애플리케이션의 라이프사이클을 관리하기 위한 오픈 소스 플랫폼입니다. mlflow-mongodb 통합은 MongoDB 8.0 이상을 실행 Atlas, MongoDB Enterprise Advanced 및 MongoDB Community Edition 배포에서 작동합니다. 이 페이지에서는 MongoDB 사용하고, 실행 로그 , 모델을 등록하고, GenAI 애플리케이션 에서 추적을 캡처하도록 MLflow를 구성하는 방법을 보여줍니다.
개요
mlflow-mongodb 패키지 는 MLflow 서버 내부에서 실행되는 MLflow 플러그인입니다. 플러그인은 다음 MLflow 메타데이터 만 MongoDB 에 저장합니다.
추적 데이터: 실험, 실행, 매개변수, 지표, 기록된 모델 및 추적. 실험은 관련 실행을 그룹화합니다. 실행 매개변수 및 지표 포함하여 코드의 한 번의 실행을 기록합니다. 추적은 LLM 호출 및 도구 호출과 같은 GenAI 애플리케이션 의 단계를 기록합니다.
모델 레지스트리 데이터: 등록된 모델, 버전, 별칭,태그 및 프롬프트.
아티팩트는 모델 파일, 이미지, 트레이스 페이로드 등 실행 시 생성되는 파일입니다. MLflow는 MongoDB 가 아닌 별도의 아티팩트 저장 에 아티팩트를 기록합니다. 이 튜토리얼은 MLflow 서버 의 로컬 디스크에 아티팩트를 저장합니다. 프로덕션 배포의 경우 Amazon S3와 같은 아티팩트 저장 구성합니다.
추적 저장 와 모델 레지스트리 저장 독립적으로 구성할 수 있습니다. 예시 를 들어, 한 저장 MongoDB 사용하고 다른 저장소는 다른 MLflow 백엔드 사용할 수 있습니다. 이 튜토리얼에서는 두 스토어 모두에 MongoDB 사용합니다.
전제 조건
시작하기 전에 다음 항목이 준비되어 있는지 확인하세요.
MongoDB 버전 8.0 이상을 실행하는 MongoDB deployment .
MLflow 데이터를 저장하는 데이터베이스 에 대한 읽기 및 쓰기 (write) 액세스 있는 데이터베이스 사용자입니다.
MLflow 서버 에서 배포서버 로의 네트워크 액세스 .
Python 3.11 ~ 3.14.
MLflow 3.5 이상 3.x 출시하다.
참고
설정 단계는 배포서버 유형에 따라 다릅니다.
Atlas:데이터베이스 사용자를 생성합니다. 그런 다음 MLflow 서버 의 IP 주소 프로젝트의 액세스 목록에 추가합니다.
Enterprise Advanced 및 Community Edition: MLflow 데이터를 저장하는 데이터베이스 에서
readWrite역할 가진사용자를 생성합니다. MLflow 서버 가 배포서버 의 호스팅하다 및 포트에 연결할 수 있는지 확인합니다.
설치 및 구성
다음 절차에서는 mlflow-mongodb 패키지 설치하고 MongoDB 에 데이터를 저장하는 MLflow 서버 시작합니다.
연결 문자열 준비합니다.
플러그인에는 연결 문자열 경로에 MLflow 데이터를 저장하는 데이터베이스 의 이름이 필요합니다. 다음 연결 문자열의 자리 표시자를 원하는 값으로 바꿉니다.
mongodb+srv://<db_username>:<db_password>@<cluster-host>/<database>?retryWrites=true&w=majorityAtlas 연결 문자열 찾으려면 클라이언트 라이브러리를 통해 클러스터에 연결하기를 참조하세요.
mongodb://<db_username>:<db_password>@<host>:<port>/<database>?retryWrites=true&w=majority자체 관리형 연결 문자열에 대해 자세히 학습 연결 문자열을 참조하세요.
MLflow 서버 시작합니다.
다음 명령을 실행하여 서버 시작합니다. <connection-string>을 이전 단계의 연결 문자열 로 바꿉니다.
export TRACKING_STORE_URI="<connection-string>"export REGISTRY_STORE_URI="<connection-string>"export MLFLOW_BIND_HOST="127.0.0.1"export MLFLOW_BIND_PORT="5000"
mlflow server \ --backend-store-uri "${TRACKING_STORE_URI}" \ --registry-store-uri "${REGISTRY_STORE_URI}" \ --host "${MLFLOW_BIND_HOST}" \ --port "${MLFLOW_BIND_PORT}"MLflow는 서버 의 mlartifacts 디렉토리 에 아티팩트를 저장합니다. MLflow UI 보려면 브라우저에서 http://127.0.0.1:5000을 엽니다.
실행 기록
다음 절차는 매개변수, 지표 및 아티팩트를 저장하는 실행 기록합니다.
예시 파일 만듭니다.
다음 예시 mongodb-backend-demo이라는 실험을 생성한 다음 mlflow.start_run() 메서드를 호출하여 실행 시작합니다. 이 실행 다음 항목을 기록합니다.
model_typeparameteraccuracy메트릭run-summary.txt인공물
이 튜토리얼의 예시에서는 mlflow.set_tracking_uri() 메서드를 호출하여 서버 에 연결합니다. 클라이언트 코드를 변경하지 않고 MLflow 클라이언트를 연결하려면 MLFLOW_TRACKING_URI 환경 변수를 http://127.0.0.1:5000로 설정하다 .
다음 코드를 log_run.py이라는 파일 에 저장합니다.
import mlflow
mlflow.set_tracking_uri("http://127.0.0.1:5000")mlflow.set_experiment("mongodb-backend-demo")
with mlflow.start_run() as run: mlflow.log_param("model_type", "example") mlflow.log_metric("accuracy", 0.92) mlflow.log_text("Hello from the MongoDB backend", "run-summary.txt") print("run_id:", run.info.run_id)모델 레지스트리
모델을 등록하려면 다음 방법 중 하나를 사용합니다.
mlflow.pyfunc.log_model()와 같은log_model()메서드를 사용하여 모델을 로그 때registered_model_name인수를 전달합니다.mlflow.register_model()메서드를 호출하고 실행 로깅한 모델의 URI(예:runs:/<run-id>/model)를 전달합니다.
기존 이름으로 모델을 등록할 때마다 MLflow는 해당 모델의 새 버전을 생성합니다. 버전을 관리 하려면 set_registered_model_alias() 및 set_model_version_tag()와 같은 MlflowClient 메서드를 사용합니다.
예시 파일 만듭니다.
다음 예시 log_model() 메서드를 호출하고 모델을 mongodb-backend-demo-model로 등록합니다. 그런 다음 이 코드는 별칭과 태그를 지정하다 설정합니다. 파일 register_model.py(으)로 저장합니다.
import mlflowfrom mlflow import MlflowClientfrom mlflow.pyfunc import PythonModel
mlflow.set_tracking_uri("http://127.0.0.1:5000")mlflow.set_experiment("mongodb-backend-demo")
class EchoModel(PythonModel): def predict(self, context, model_input): return model_input
with mlflow.start_run(): mlflow.pyfunc.log_model( name="model", python_model=EchoModel(), registered_model_name="mongodb-backend-demo-model", )
client = MlflowClient()client.set_registered_model_alias("mongodb-backend-demo-model", "mongo-verified", 1)client.set_model_version_tag("mongodb-backend-demo-model", 1, "validated_by", "doc-test")추적 및 GenAI 관찰 가능성
MLflow 추적은 LLM 애플리케이션 또는 에이전트 에서 각 단계의 입력, 출력 및 기간을 기록합니다. 추적 저장 에 MongoDB 사용하는 경우 MLflow는 추적과 해당 스팬을 MongoDB 에 저장합니다.
추적을 활성화합니다.
추적을 활성화 하려면 다음 방법 중 하나를 사용합니다.
OpenAI 또는 LangChain과 같이 지원되는 프레임워크 또는 제공자 에 대한 호출을 추적하려면
mlflow.<flavor>.autolog()메서드를 호출합니다. 자세한 학습 은 MLflow 문서에서 자동 추적을 참조하세요.추적하려는 함수에
@mlflow.trace데코레이터를 추가합니다.
다음 예시 @mlflow.trace 데코레이터를 사용하여 에이전트 를 호출하는 함수를 추적합니다. 파일 trace_agent.py(으)로 저장합니다.
import mlflow
mlflow.set_tracking_uri("http://127.0.0.1:5000")mlflow.set_experiment("agent-traces")
mlflow.tracedef call_agent(prompt: str) -> str: # Replace this line with your actual LLM or agent call return f"Echo: {prompt}"
call_agent("Summarize this document")참고
추적 저장 및 검색은 MLflow 버전에 따라 다릅니다. MLflow 3.5 클라이언트는 전체 트레이스 페이로드를 실험의 아티팩트 저장 에 업로드합니다. MongoDB 스팬을 저장합니다. MLflow 3.6 이상에서 클라이언트는 MongoDB 에서 직접 트레이스를 조회 . 애그리게이션된 추적 지표 MLflow 3.9 이상이 필요합니다.
다음 단계
MLflow 개념 및 기능에 대해 자세히 학습 다음 MLflow 설명서를 참조하세요.
자세히 알아보기
이 튜토리얼의 개념에 대해 자세히 학습 다음 리소스를 참조하세요.


