Documentation Index
Fetch the complete documentation index at: https://wb-21fd5541-john-wbdocs-2044-rename-serverless-products.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
W&B を DSPy と組み合わせることで、言語モデルプログラムをトラッキングして最適化できます。W&B は、Weave DSPy インテグレーション を補完し、次の機能を提供します。
- 評価メトリクスの経時的なトラッキング
- プログラムシグネチャの変化を確認するための W&B Tables
- 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 にログインします。
-
必要なライブラリをインストールします。
pip install wandb weave dspy
-
WANDB_API_KEY 環境変数を設定して、ログインします。
export WANDB_API_KEY=<your_api_key>
wandb login
-
必要なライブラリをインストールします。
pip install wandb weave dspy
-
コード内で W&B にログインします。
import wandb
wandb.login()
必要なライブラリをインストールしてインポートしてから、W&B にログインします。!pip install wandb weave dspy
import wandb
wandb.login()
W&B は初めてですか?クイックスタートガイドをご覧ください。
dspy.Evaluate を使用する DSPy オプティマイザ (MIPROv2 など) では、WandbDSPyCallback を使用して、時間の経過に伴う評価メトリクスをログし、W&B Tables でプログラムシグネチャの変遷をトラッキングします。
import dspy
from dspy.datasets import MATH
import weave
import wandb
from wandb.integration.dspy import WandbDSPyCallback
# W&Bを初期化する(weaveをインポートするだけで十分。weave.initの明示的な呼び出しは不要)
project_name = "dspy-optimization"
with wandb.init(project=project_name) as run:
# DSPyにW&Bコールバックを追加する
dspy.settings.callbacks.append(
WandbDSPyCallback(run=run)
)
# 言語モデルを設定する
teacher_lm = dspy.LM('openai/gpt-4o', max_tokens=2000, cache=True)
student_lm = dspy.LM('openai/gpt-4o-mini', max_tokens=2000)
dspy.configure(lm=student_lm)
# データセットを読み込み、プログラムを定義する
dataset = MATH(subset='algebra')
program = dspy.ChainOfThought("question -> answer")
# オプティマイザーを設定して実行する
optimizer = dspy.MIPROv2(
metric=dataset.metric,
auto="light",
num_threads=24,
teacher_settings=dict(lm=teacher_lm),
prompt_model=student_lm
)
optimized_program = optimizer.compile(
program,
trainset=dataset.train,
max_bootstrapped_demos=2,
max_labeled_demos=2
)
このコードを実行すると、W&B Run URL と Weave URL の両方が取得されます。W&B では、評価メトリクスの推移に加えて、プログラムシグネチャの変化を示す Tables が表示されます。run の Overview タブには、詳しく確認するための Weave トレースへのリンクが含まれます。
run オブジェクトが WandbDSPyCallback に渡されない場合は、グローバルな run オブジェクトが使用されます。
DSPy での Weave トレース、評価、最適化の詳細については、Weave DSPy インテグレーション guide を参照してください.
最適化中に個々の例を確認できるよう、詳細な予測ログを有効にします。このコールバックは各評価 step ごとに W&B Tables を作成するため、個別の成功例や失敗例の分析に役立ちます。
from wandb.integration.dspy import WandbDSPyCallback
# 予測のログを有効化(デフォルトで有効)
callback = WandbDSPyCallback(log_results=True)
dspy.settings.callbacks.append(callback)
# 最適化を実行する
optimized_program = optimizer.compile(program, trainset=train_data)
# 必要に応じて予測のログを無効化する
# callback = WandbDSPyCallback(log_results=False)
最適化後、W&B で予測データを確認できます。
- run の Overview ページにアクセスします。
predictions_0、predictions_1 のような名前の Table パネルを探します。
- 失敗を分析するには、
is_correct でフィルターします。
- プロジェクトのワークスペースで、run 間の表を比較します。
各表には、次の列が含まれます。
example: 入力データ
prediction: モデルの出力
is_correct: 評価結果
詳細は、W&B Tables ガイドを参照してください。
最良の DSPy プログラムを再現し、バージョン管理できるようにするには、W&B Artifacts として保存します。プログラム全体を保存するか、状態のみを保存するかを選択できます。
from wandb.integration.dspy import WandbDSPyCallback
# コールバックインスタンスを作成する
callback = WandbDSPyCallback()
dspy.settings.callbacks.append(callback)
# 最適化を実行する
optimized_program = optimizer.compile(program, trainset=train_data)
# 保存オプション:
# 1. 完全なプログラム(推奨)- アーキテクチャと状態を含む
callback.log_best_model(optimized_program, save_program=True)
# 2. JSONとして状態のみ - 軽量で人間が読みやすい
callback.log_best_model(optimized_program, save_program=False, filetype="json")
# 3. pickleとして状態のみ - Pythonオブジェクトを保持する
callback.log_best_model(optimized_program, save_program=False, filetype="pkl")
# バージョン管理用のカスタムaliasを追加する
callback.log_best_model(
optimized_program,
save_program=True,
aliases=["best", "production", "v2.0"]
)