Skip to main content
이 가이드에서는 W&B를 DSPy와 함께 사용해 언어 모델 프로그램을 추적하고 최적화하는 방법을 설명합니다. 이를 통해 평가 메트릭을 모니터링하고, 최적화 과정에서 프로그램 시그니처가 어떻게 변화하는지 살펴보며, 결과 프로그램을 재현 가능한 아티팩트로 버전 관리할 수 있습니다. 컴파일된 모듈에 대한 실험 추적과 관측성이 필요할 때 활용하세요. W&B는 Weave DSPy 인테그레이션을 보완하며 다음을 제공합니다:
  • 시간에 따른 평가 메트릭 추적
  • 프로그램 시그니처 변화 확인을 위한 W&B Tables
  • MIPROv2와 같은 DSPy 옵티마이저와의 인테그레이션
DSPy 모듈을 최적화할 때 전체 관측성을 확보하려면 W&B와 Weave 모두에서 인테그레이션을 활성화하세요.
참고wandb==0.21.2weave==0.52.5부터는 W&B와 함께 사용할 때 Weave가 자동으로 초기화됩니다:
  • weave를 임포트한 다음 wandb.init()를 호출하는 경우(스크립트 환경)
  • wandb.init()를 호출한 뒤 나중에 weave를 임포트하는 경우(노트북/Jupyter 환경)
명시적으로 weave.init(...)를 호출할 필요는 없습니다.

설치 및 인증

필요한 라이브러리를 설치한 다음 W&B에 인증합니다:
  1. 필요한 라이브러리를 설치합니다:
  2. WANDB_API_KEY 환경 변수를 설정하고 로그인합니다. <your_api_key>를 W&B API 키로 바꾸세요:
W&B가 처음이신가요? 퀵스타트를 참조하세요. 라이브러리를 설치하고 인증을 완료했으면 이제 DSPy 최적화 run을 계측할 준비가 되었습니다.

프로그램 최적화 추적 (실험적)

dspy.Evaluate를 사용하는 DSPy 최적화기(MIPROv2 등)의 경우, WandbDSPyCallback을 사용해 시간 경과에 따른 평가 메트릭을 기록하고 W&B Tables에서 프로그램 시그니처의 변화 과정을 추적하세요. callback을 연결하면 최적화기의 점수가 어떻게 변하는지, 그리고 프로그램의 프롬프트와 시그니처가 반복마다 어떻게 변화하는지 관찰할 수 있습니다.
이 코드를 실행하면 W&B Run URL과 Weave URL이 모두 생성됩니다. W&B는 시간 경과에 따른 평가 메트릭과 함께 프로그램 시그니처의 변화를 보여주는 Tables를 표시합니다. run의 Overview 탭에는 자세히 살펴볼 수 있는 Weave 트레이스 링크가 포함되어 있습니다. run 객체를 WandbDSPyCallback에 전달하지 않으면 callback이 전역 run 객체를 사용합니다.
W&B에서의 DSPy 최적화 run
DSPy에서 Weave 트레이싱, 평가 및 최적화를 사용하는 방법에 대한 자세한 내용은 Weave DSPy 인테그레이션 가이드를 참조하세요.

예측을 W&B Tables에 기록하기

집계 메트릭 외에도 상세한 예측 로깅을 활성화하면 최적화 중에 개별 예시를 살펴볼 수 있습니다. callback은 각 평가 단계마다 W&B Table을 생성하므로, 이를 통해 특정 성공 사례와 실패 사례를 분석할 수 있습니다.

예측 데이터 액세스

최적화 후 W&B에서 예측 데이터를 확인할 수 있습니다.
  1. run의 Overview 페이지로 이동합니다.
  2. predictions_0 또는 predictions_1과 같은 패턴으로 이름이 지정된 Table 패널을 찾습니다.
  3. 실패 사례를 분석하려면 is_correct로 필터링합니다.
  4. 프로젝트 Workspace에서 여러 run의 테이블을 비교합니다.
각 table에는 다음 column이 포함됩니다.
  • example: 입력 데이터
  • prediction: 모델 출력
  • is_correct: 평가 결과
자세한 내용은 W&B Tables 가이드를 참조하세요.

DSPy 프로그램 저장 및 버전 관리

성능이 우수한 최적화 프로그램을 찾았다면, 결과를 재현하고 시간 경과에 따른 버전을 추적할 수 있도록 이를 W&B 아티팩트로 저장하세요. 전체 아키텍처가 필요한지, 아니면 더 가벼운 체크포인트만 있으면 되는지에 따라 전체 프로그램을 저장할지 상태만 저장할지 선택하세요.