DSPy:記述的言語モデル呼び出しを自己改善型パイプラインにコンパイルする

機械学習(ML)コミュニティでは、言語モデル(LM)に対するプロンプト技術や、複雑なタスクを解決するためのLMをパイプライン化する手法の開発が急速に進んでいます。しかしながら、現在のLMパイプラインは一般的に、試行錯誤によって得られた長大な文字列としてハードコードされた「プロンプトテンプレート」に基づいて実装されており、柔軟性や再利用性に欠けるという課題があります。この問題を解決し、LMパイプラインの開発と最適化をより体系的に行うため、本研究ではDSPyを提案します。DSPyは、LMパイプラインを「テキスト変換グラフ(text transformation graphs)」として抽象化するプログラミングモデルであり、LMの呼び出しを宣言的モジュールを通じて行う命令型計算グラフを特徴とします。DSPyモジュールはパラメータ化されており、プロンプティング、ファインチューニング、オーギュメンテーション、推論技術の組み合わせを、デモの作成と収集を通じて学習可能になります。さらに、任意のDSPyパイプラインを特定の評価指標を最大化するように最適化するコンパイラを設計しました。2つの事例研究を通じて、簡潔なDSPyプログラムが、数学文章問題の推論、マルチホップ検索、複雑な質問への回答、エージェントループの制御といった高度なタスクを実現・最適化できることを示しました。わずか数分のコンパイル時間で、数行のDSPyコードにより、GPT-3.5およびllama2-13b-chatが自己起動型のパイプラインを構築でき、従来のFew-shotプロンプティング(それぞれ平均25%以上、65%以上)および専門家が作成したデモを用いたパイプライン(それぞれ最大5–46%、16–40%の向上)を上回る性能を達成しました。さらに、770MパラメータのT5やllama2-13b-chatといったオープンで比較的小規模なLMにコンパイルされたDSPyプログラムは、専用のGPT-3.5に依存する専門家によるプロンプトチェーンに基づくアプローチと同等の性能を発揮することが確認されました。DSPyは、https://github.com/stanfordnlp/dspy にて公開されています。