DSPy (Declarative Sequencing for Python)
- https://dspy-docs.vercel.app/ (Programming—not prompting—Language Models)
DSPyについて
DSPyは、LMプロンプトとウェイトをアルゴリズム的に最適化するためのフレームワークです、 特にLMがパイプライン内で1回以上使用される場合。 LMを使用して複雑なシステムを構築する なし DSPy、あなたは一般的に次のことを行う必要があります:
(1)問題をステップに分解する、 (2)各ステップが個別にうまく機能するまでLMをうまく促す、 (3)ステップを微調整してうまく連携する、 (4)合成例を生成する各ステップを調整し、 (5)これらの例を使用して、より小さなLMを調整してコストを削減します。
現在、これは困難で厄介です。パイプライン、LM、またはデータを変更するたびに、すべてのプロンプト(または微調整手順)を変更する必要がある場合があります。
これをより体系的ではるかに強力にするために、 DSPy 2つのことを行います。 まず、プログラムの流れを分離します(modules)各ステップのパラメーター(LMプロンプトとウェイト)から。 第二に、 DSPy 新しい optimizers、これは、LMコールのプロンプトやウェイトを調整できるLM駆動アルゴリズムです。metric 最大化したい。
DSPy のような強力なモデルを日常的に教えることができます GPT-3.5 または GPT-4 と地元のモデル T5-base または Llama2-13b タスクではるかに信頼性が高くなること、つまり、より高い品質を持つこと、および/または特定の障害パターンを回避すること。 DSPy オプティマイザーは 同じ プログラム 異なる 各LMの指示、ショットの少ないプロンプト、および/またはウェイトの更新(finetunes)。 これは、LMとそのプロンプトが、データから学習できるより大きなシステムの最適化可能な部分としてバックグラウンドにフェードインする新しいパラダイムです。 tldr; LMでハードタスクを解決するためのプロンプトが少なく、スコアが高く、より体系的なアプローチ。
ニューラルネットワークへのアナロジー
ニューラルネットワークを構築するときは、マニュアルを書きません for-loops 以上のリスト 手調整 フロート。代わりに、次のようなフレームワークを使用できます PyTorch レイヤーを作成する(例: Convolution または Dropout)0次に、オプティマイザー(SGDやAdamなど)を使用して、ネットワークのパラメーターを学習します。
同上!DSPy 適切な汎用モジュールを提供します (例: ChainOfThought、 ReAct等)、文字列ベースのプロンプトトリックを置き換えます。 迅速なハッキングと1回限りの合成データジェネレーターを置き換えるには、 DSPy 一般的なオプティマイザーも提供します(BootstrapFewShotWithRandomSearch または MIPRO)、 これはプログラムのパラメーターを更新するアルゴリズムです。 コード、データ、アサーション、またはメトリックを変更するときはいつでも、 コンパイル あなたのプログラムをもう一度 DSPy 変更に適合する新しい効果的なプロンプトを作成します。