MLflow 통합
MLflow 통합 (MLflow Integration)
MLflow는 머신러닝 실무자와 팀이 머신러닝 프로세스의 복잡성을 다루도록 돕는 오픈소스 플랫폼이에요. Generative AI 애플리케이션에서 애플리케이션 서비스 실행에 대한 상세 정보를 캡처해 LLM 옵저버빌리티를 향상시키는 트레이싱 기능을 제공해요.
출처: 문서
본문
MLflow는 머신러닝 실무자와 팀이 머신러닝 프로세스의 복잡성을 다루도록 돕는 오픈소스 플랫폼이에요. 애플리케이션 서비스의 실행에 대한 상세 정보를 캡처해 Generative AI 애플리케이션의 LLM 옵저버빌리티를 향상시키는 트레이싱 기능을 제공해요. 트레이싱은 요청의 각 중간 단계와 연관된 입력, 출력, 메타데이터를 기록할 방법을 제공해서 버그와 예기치 못한 동작의 원인을 쉽게 찾을 수 있게 해 줘요.
Features (기능)
- Tracing Dashboard — 스팬의 입력, 출력, 메타데이터를 포함한 상세 대시보드로 crewAI 에이전트 활동을 모니터링.
- Automated Tracing —
mlflow.crewai.autolog()를 실행해 활성화할 수 있는 crewAI와의 완전 자동 통합. - Manual Trace Instrumentation with minor efforts — 데코레이터, 함수 래퍼, 컨텍스트 매니저 같은 MLflow의 고수준 fluent API로 트레이스 계측을 커스터마이즈.
- OpenTelemetry Compatibility — MLflow Tracing이 트레이스를 OpenTelemetry Collector로 내보내는 것을 지원하며, Jaeger, Zipkin, AWS X-Ray 같은 다양한 백엔드로 내보낼 수 있음.
- Package and Deploy Agents — crewAI 에이전트를 다양한 배포 대상을 가진 추론 서버로 패키징·배포.
- Securely Host LLMs — MFflow gateway를 통해 다양한 프로바이더의 여러 LLM을 하나의 통합 엔드포인트에서 호스팅.
- Evaluation — 편리한 API
mlflow.evaluate()로 다양한 메트릭으로 crewAI 에이전트를 평가.
Setup Instructions (설정 방법)
- MLflow 패키지 설치
# The crewAI integration is available in mlflow>=2.19.0 pip install mlflow - MLflow tracking 서버 시작 (선택 사항이지만, 더 나은 시각화와 광범위한 기능을 위해 tracking server 사용을 권장)
mlflow server - 애플리케이션에서 MLflow 초기화 — 애플리케이션 코드에 다음 두 줄을 추가하세요:
CrewAI 에이전트 추적을 위한 예시 사용:import mlflow mlflow.crewai.autolog() # Optional: Set a tracking URI and an experiment name if you have a tracking server mlflow.set_tracking_uri("http://localhost:5000") mlflow.set_experiment("CrewAI")
더 많은 구성과 사용 사례는 MLflow Tracing Documentation을 참조하세요.from crewai import Agent, Crew, Task from crewai.knowledge.source.string_knowledge_source import StringKnowledgeSource from crewai_tools import SerperDevTool, WebsiteSearchTool from textwrap import dedent content = "Users name is John. He is 30 years old and lives in San Francisco." string_source = StringKnowledgeSource( content=content, metadata={"preference": "personal"} ) search_tool = WebsiteSearchTool() class TripAgents: def city_selection_agent(self): return Agent( role="City Selection Expert", goal="Select the best city based on weather, season, and prices", backstory="An expert in analyzing travel data to pick ideal destinations", tools=[ search_tool, ], verbose=True, ) def local_expert(self): return Agent( role="Local Expert at this city", goal="Provide the BEST insights about the selected city", backstory="""A knowledgeable local guide with extensive information about the city, it's attractions and customs""", tools=[search_tool], verbose=True, ) class TripTasks: def identify_task(self, agent, origin, cities, interests, range): return Task( description=dedent( f""" Analyze and select the best city for the trip based on specific criteria such as weather patterns, seasonal events, and travel costs. This task involves comparing multiple cities, considering factors like current weather conditions, upcoming cultural or seasonal events, and overall travel expenses. Your final answer must be a detailed report on the chosen city, and everything you found out about it, including the actual flight costs, weather forecast and attractions. Traveling from: {origin} City Options: {cities} Trip Date: {range} Traveler Interests: {interests} """ ), agent=agent, expected_output="Detailed report on the chosen city including flight costs, weather forecast, and attractions", ) def gather_task(self, agent, origin, interests, range): return Task( description=dedent( f""" As a local expert on this city you must compile an in-depth guide for someone traveling there and wanting to have THE BEST trip ever! Gather information about key attractions, local customs, special events, and daily activity recommendations. Find the best spots to go to, the kind of place only a local would know. This guide should provide a thorough overview of what the city has to offer, including hidden gems, cultural hotspots, must-visit landmarks, weather forecasts, and high level costs. The final answer must be a comprehensive city guide, rich in cultural insights and practical tips, tailored to enhance the travel experience. Trip Date: {range} Traveling from: {origin} Traveler Interests: {interests} """ ), agent=agent, expected_output="Comprehensive city guide including hidden gems, cultural hotspots, and practical travel tips", ) class TripCrew: def __init__(self, origin, cities, date_range, interests): self.cities = cities self.origin = origin self.interests = interests self.date_range = date_range def run(self): agents = TripAgents() tasks = TripTasks() city_selector_agent = agents.city_selection_agent() local_expert_agent = agents.local_expert() identify_task = tasks.identify_task( city_selector_agent, self.origin, self.cities, self.interests, self.date_range, ) gather_task = tasks.gather_task( local_expert_agent, self.origin, self.interests, self.date_range ) crew = Crew( agents=[city_selector_agent, local_expert_agent], tasks=[identify_task, gather_task], verbose=True, memory=True, knowledge={ "sources": [string_source], "metadata": {"preference": "personal"}, }, ) result = crew.kickoff() return result trip_crew = TripCrew("California", "Tokyo", "Dec 12 - Dec 20", "sports") result = trip_crew.run() print(result) - 에이전트 활동 시각화 — 이제 crewAI 에이전트의 트레이스가 MLflow에 캡처됐어요. 트레이스를 보고 에이전트에 대한 통찰을 얻으려면 MLflow tracking server를 방문하세요. 브라우저에서
127.0.0.1:5000을 열어 MLflow tracking server를 방문하세요.