Skip to main content
このガイドでは、W&B を DSPy と組み合わせて言語モデルプログラムをトラッキングして最適化する方法を説明します。これにより、評価メトリクスをモニターし、最適化の過程でプログラムシグネチャがどのように変化するかを確認し、得られたプログラムを再現可能な artifact としてバージョン管理できます。コンパイル済みモジュールの実験管理と可観測性が必要な場合に使用してください。 W&B は、Weave DSPy インテグレーション を補完し、次の機能を提供します。
  • 評価メトリクスの経時的なトラッキング
  • プログラムシグネチャの変化を確認するための W&B 表
  • MIPROv2 などの DSPy オプティマイザとのインテグレーション
DSPy モジュールの最適化時に包括的な可観測性を確保するには、W&B と Weave の両方でインテグレーションを有効にしてください。
wandb==0.21.2 および weave==0.52.5 時点では、W&B と併用すると Weave は自動的に初期化されます。
  • weave を import してから wandb.init() を呼び出した場合 (スクリプトの場合)
  • wandb.init() を呼び出した後で weave を import した場合 (notebook/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 表 でプログラムのシグネチャの変遷をトラッキングします。コールバックをアタッチすると、オプティマイザーのスコアがどのように変化するか、またプログラムのプロンプトやシグネチャが反復を通じてどのように変化していくかを確認できます。
このコードを実行すると、W&B Run URL と Weave URL の両方が取得されます。W&B には、時間の経過に伴う評価メトリクスに加えて、プログラムのシグネチャがどのように変化したかを示す Tables が表示されます。run の Overview タブには、詳細を確認するための Weave トレースへのリンクが含まれています。 run オブジェクトを WandbDSPyCallback に渡さない場合、コールバックはグローバルな run オブジェクトを使用します。
W&B での DSPy 最適化 run
DSPy を使用した Weave トレース、評価、最適化の詳細については、Weave DSPy インテグレーションガイドを参照してください。

予測を W&B 表 にログする

集計メトリクスに加えて、予測の詳細ログを有効にすると、最適化中に個々の例を確認できます。コールバックは評価ステップごとに W&B Table を作成するため、特定の成功例や失敗例を分析するのに役立ちます。

予測データにアクセスする

最適化後、W&B で予測データを確認できます。
  1. run の Overview ページにアクセスします。
  2. predictions_0predictions_1 のような名前の Table パネルを探します。
  3. 失敗を分析するには、is_correct でフィルターします。
  4. プロジェクトのワークスペースで、run 間の表を比較します。
各表には、次の列が含まれます。
  • example: 入力データ
  • prediction: モデルの出力
  • is_correct: 評価結果
詳細は、W&B Tables ガイドを参照してください。

DSPy プログラムを保存してバージョン管理する

高性能な最適化済みプログラムを特定したら、それを W&B Artifact として保存して、結果を再現できるようにし、経時的なバージョンを追跡します。完全なアーキテクチャが必要か、より軽量なチェックポイントで十分かに応じて、プログラム全体を保存するか、状態のみを保存するかを選択してください。