다음을 통해 공유


에이전트에 대한 MLflow 추적

Important

이 기능은 공개 미리 보기 상태입니다.

이 문서에서는 MLflow 추적 및 AI 시스템에서 생성형 AI 애플리케이션을 평가하는 데 도움이 되는 시나리오에 대해 설명합니다.

소프트웨어 개발에서 추적에는 사용자 세션 또는 요청 흐름과 같은 이벤트 시퀀스를 기록하는 작업이 포함됩니다. AI 시스템의 컨텍스트에서 추적은 AI 시스템과의 상호 작용을 참조하는 경우가 많습니다. AI 시스템의 예제 추적은 프롬프트가 있는 사용자 메시지, 벡터 조회 및 생성형 AI 모델을 사용하는 인터페이스를 포함하는 RAG 애플리케이션에 대한 입력 및 매개 변수를 계측하는 것처럼 보일 수 있습니다.

MLflow 추적이란?

MLflow 추적을 사용하여 다양한 버전의 생성형 AI 애플리케이션에서 추적을 기록, 분석 및 비교할 수 있습니다. 이를 통해 생성형 AI Python 코드를 디버그하고 입력 및 응답을 추적할 수 있습니다. 이를 통해 애플리케이션의 성능 저하에 영향을 주는 조건 또는 매개 변수를 검색할 수 있습니다. MLflow 추적은 Databricks 도구 및 인프라와 긴밀하게 통합되어 있으므로 코드를 실행할 때 Databricks Notebook 또는 MLflow 실험 UI에 모든 추적을 저장하고 표시할 수 있습니다.

LangChain, LlamaIndex, OpenAI 또는 사용자 지정 PyFunc와 같은 라이브러리를 사용하여 Databricks에서 AI 시스템을 개발할 때 MLflow 추적을 사용하면 에이전트의 각 단계에서 모든 이벤트 및 중간 출력을 볼 수 있습니다. 프롬프트, 사용된 모델 및 검색기, 응답을 보강하기 위해 검색된 문서, 소요된 시간 및 최종 출력을 쉽게 확인할 수 있습니다. 예를 들어 모델이 거짓 정보를 제공하는 경우 거짓 정보로 이어진 각 단계를 신속하게 검사할 수 있습니다.

MLflow 추적을 사용하는 이유는 무엇인가요?

MLflow 추적은 개발 워크플로를 추적하는 데 도움이 되는 몇 가지 이점을 제공합니다. 이렇게 시작할 수 있는 작업의 예는 다음과 같습니다.

  • 대화형 추적 시각화를 검토하고 조사 도구를 사용하여 개발 문제를 진단합니다.
  • 프롬프트 템플릿과 가드레일이 적절한 결과를 생성하는지 확인합니다.
  • 다양한 프레임워크, 모델, 청크 크기 및 소프트웨어 개발 사례의 대기 시간 영향을 탐색하고 최소화합니다.
  • 다양한 모델의 토큰 사용량을 추적하여 애플리케이션 비용을 측정합니다.
  • 벤치마크("골든") 데이터 세트를 설정하여 다양한 버전의 성능을 평가합니다.
  • 프로덕션 모델 엔드포인트의 추적을 저장하여 문제를 디버그하고 오프라인 검토 및 평가를 수행합니다.

MLflow 추적 설치

MLflow 추적은 MLflow 버전 2.13.0 이상에서 사용할 수 있습니다.

%pip install mlflow>=2.13.0 -qqqU
%restart_python

또는 %pip install databricks-agents를 사용하여 호환되는 MLflow 버전을 포함하는 databricks-agents의 최신 버전을 설치할 수 있습니다.

개발에서 MLflow 추적 사용

MLflow 추적을 사용하면 성능 문제를 분석하고 에이전트 개발 주기를 가속화할 수 있습니다. 다음 섹션에서는 Notebook에서 에이전트 개발 및 MLflow 추적을 수행하고 있다고 가정합니다.

참고 항목

Notebook 환경에서 MLflow 추적은 에이전트 런타임에 최대 몇 초의 오버헤드를 추가할 수 있습니다. 이는 주로 추적을 MLflow 실험으로 로깅하는 대기 시간에서 비롯됩니다. 프로덕션 모델 엔드포인트에서 MLflow 추적은 성능에 훨씬 작은 영향을 미칩니다. 프로덕션에서 MLflow 추적 사용을 참조하세요.

참고 항목

Databricks Runtime 15.4 LTS ML을 기준으로 MLflow 추적은 기본적으로 Notebooks 내에서 사용하도록 설정됩니다. 예를 들어, LangChain에서 추적을 사용하지 않도록 설정하기 위해 Notebook에서 mlflow.langchain.autolog(log_traces=False)를 실행할 수 있습니다.

에이전트에 추적 추가

MLflow 추적은 추적과 함께 생성형 AI 애플리케이션에서 추적을 사용하는 세 가지 방법을 제공합니다. 이러한 메서드를 사용하는 예제는 에이전트에 추적 추가를 참조하세요. API 참조에 대한 자세한 내용은MLflow 문서를 참조하세요.

API 권장 사용 사례 설명
MLflow 자동 로깅 통합 GenAI 라이브러리 개발 자동 로깅은 LangChain, LlamaIndex 및 OpenAI와 같은 인기 있는 오픈 소스 프레임워크에 대한 추적을 자동으로 계측합니다. Notebook 시작 부분에 mlflow.<library>.autolog()를 추가하면 MLflow는 에이전트 실행의 각 단계에 대한 추적을 자동으로 기록합니다.
흐름 API Pyfunc를 통한 사용자 지정 에이전트 추적의 트리 구조에 대한 걱정 없이 AI 시스템을 계측하기 위한 로우코드 API입니다. MLflow는 Python 스택에 따라 적절한 부모-자식 트리 구조(범위)를 결정합니다.
MLflow 클라이언트 API 다중 스레딩과 같은 고급 사용 사례 MLflowClient는 고급 사용 사례에 대해 보다 세분화된 스레드로부터 안전한 API를 구현합니다. 이러한 API는 범위의 부모-자식 관계를 관리하지 않으므로 원하는 추적 구조를 생성하기 위해 수동으로 지정해야 합니다. 이를 수행하려면 더 많은 코드가 필요하지만 특히 다중 스레드 사용 사례의 경우 추적 수명 주기를 더 잘 제어할 수 있습니다.

다중 스레드 애플리케이션 또는 콜백 기반 계측과 같이 더 많은 제어가 필요한 사용 사례에 권장됩니다.

추적 검토

계측된 에이전트를 실행한 후 생성된 추적을 다양한 방법으로 검토할 수 있습니다.

  • 추적 시각화는 셀 출력에서 인라인으로 렌더링됩니다.
  • 추적은 MLflow 실험에 기록됩니다. 기록 추적의 전체 목록을 검토하고 실험 페이지의 Traces 탭에서 검색할 수 있습니다. 에이전트가 활성 MLflow 실행에서 실행되는 경우 실행 페이지에서 추적을 찾을 수도 있습니다.
  • search_traces() API를 사용하여 프로그래밍 방식으로 추적을 검색합니다.

프로덕션에서 MLflow 추적 사용

MLflow 추적은 Mosaic AI 모델 서비스와 통합되어 문제를 효율적으로 디버그하고, 성능을 모니터링하고, 오프라인 평가를 위한 골든 데이터 세트를 만들 수 있습니다. 서비스 엔드포인트에 대해 MLflow 추적을 사용하도록 설정하면 추적이 response 열 아래의 유추 테이블에 기록됩니다.

서비스 엔드포인트에 대해 MLflow 추적을 사용하도록 설정하려면 엔드포인트 구성의 ENABLE_MLFLOW_TRACING 환경 변수를 True로 설정해야 합니다. 사용자 지정 환경 변수를 사용하여 엔드포인트를 배포하는 방법은 일반 텍스트 환경 변수 추가를 참조하세요. deploy() API를 사용하여 에이전트를 배포한 경우 추적이 유추 테이블에 자동으로 기록됩니다. 생성형 AI 응용 프로그램에 대한 에이전트 배포를 참조하세요.

참고 항목

유추 테이블에 추적을 쓰는 작업은 비동기적으로 수행되므로 개발 중에 Notebook 환경과 동일한 오버헤드를 추가하지 않습니다. 그러나 특히 각 유추 요청의 추적 크기가 큰 경우 엔드포인트의 응답 속도에 약간의 오버헤드가 발생할 수 있습니다. Databricks는 환경 및 모델 구현에 크게 의존하므로 모델 엔드포인트에 대한 실제 대기 시간 영향에 대한 SLA(서비스 수준 계약)를 보장하지 않습니다. Databricks는 프로덕션 애플리케이션에 배포하기 전에 엔드포인트 성능을 테스트하고 추적 오버헤드에 대한 인사이트를 확보하는 것이 좋습니다.

다음 표에서는 다양한 추적 크기에 대한 유추 대기 시간에 미치는 영향에 대한 대략적인 표시를 제공합니다.

요청당 추적 크기 대기 시간에 미치는 영향(ms)
~10KB ~1ms
~1MB 50~100ms
10MB 150ms~

제한 사항

  • MLflow 추적은 Databricks Notebooks, Notebook 작업 및 모델 서비스에서 사용할 수 있습니다.

  • LangChain 자동 로깅은 모든 LangChain 예측 API를 지원하지 않을 수 있습니다. 지원되는 API의 전체 목록은 MLflow 설명서를 참조하세요.