【でぃーえすぱい】

DSPy とは?

最終更新:
💡 LLMの処理をコードで組み、評価しながら調整する

言語モデルを使う処理を、入力・出力の定義とモジュールを組み合わせたPythonプログラムとして構成するフレームワーク。用意した例と評価指標を使い、最適化器で指示やFew-shot例などを調整できる。常に最良の結果になる保証ではなく、データ・評価方法・予算の設計が必要。

📌 このページのポイント
DSPy:プログラムと評価で調整 プログラム 入力・出力の定義 モジュールの組合せ データと評価 例となるデータ よさを測る指標 最適化器で候補を調整・評価 指示・Few-shot例・重みなど 調整したプログラム 別のデータでも評価する 成果はデータ・指標・予算にも依存
入力・出力とモジュールで処理を構成し、データと評価指標を使って最適化する例。矢印は最適化への入力と候補の出力。指示・例・重みのどれを扱うかは最適化器で異なり、最良の結果を保証しない。
ひよこ ひよこ
毎回プロンプトを手で直さなくていい?
ペンギン先生 ペンギン先生
DSPyでは、タスクの入力と出力をSignatureで定義し、モジュールで処理を組めるよ。細かなプロンプトの調整を最適化器に任せられるけれど、目的や処理の構造は自分で設計するんだ。
ひよこ ひよこ
どんな処理を組めるの?
ペンギン先生 ペンギン先生
質問から答えを返す処理や、情報抽出、検索を組み合わせた処理などだよ。直接応答するPredictや、推論の手順を使うChainOfThoughtなどのモジュールがあるんだ。
ひよこ ひよこ
最適化には何が必要?
ペンギン先生 ペンギン先生
動くプログラムと、例となるデータ、よさを測る評価指標を用意するよ。最適化器はその評価に基づいて候補を調整する。何を正解とするかが曖昧だと、目的に合う改善も判断できないんだ。
ひよこ ひよこ
Few-shot例も選んでくれる?
ペンギン先生 ペンギン先生
例を選ぶ最適化器があるよ。指示を調整するものや、指示と例を両方扱うものもある。モデルの重みを調整する方式は、調整可能なモデルが必要で、全ての最適化が重みを変えるわけではないんだ。
ひよこ ひよこ
自動なら常に一番よい結果になる?
ペンギン先生 ペンギン先生
保証はないよ。訓練に使った例に偏る可能性があるので、別のデータでも評価する。モデルの呼び出しや探索にも費用がかかるから、手作業を省けるかだけでなく、品質と予算を確認するんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「DSPy」って出てきたら「LLMの処理をコードで組み、評価に基づいて最適化するフレームワーク」と思えばだいたいOK!
📖 おまけ:英語の意味
「DSPy」 = 言語モデルを使うPythonフレームワークの名称
💬 Khattabらが2023年に発表した論文では、宣言的な言語モデル呼び出しを組み合わせ、評価指標に合わせてパイプラインを最適化する考え方を示しているよ。

参考資料

← 用語集にもどる