>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Jupyter

GEPAフレームワークの内部:強化学習の代わりにプロンプトを進化させる

システム命令とエージェントのチューンは、通常、終わりなき手作業のテキスト調整に陥ります。ある表現を修正するとロジックは改善されるものの、出力フォーマットが崩れてしまいます。GRPOのような強化学習をこのような調整に使用するのはコストがかかりすぎます:アルゴリズムは数万回の実行を必要とし、フィードバックは単一のスコアに集約されてしまいます。

最近、GEPA(Genetic-Pareto)リポジトリを探索しました。このプロジェクトはBerkeleyとStanfordの研究者たちが開発しており、任意のテキストパラメータを最適化するための根本的に異なるアプローチを提供します。

GEPA Logo

プロジェクトの中核となるアイデア

古典的なオプティマイザはシステムをブラックボックスとして扱います:出力で数値スコアを受け取り、次にどこに移動するかを推測しようとします。GEPAは異なるアプローチを取ります。このフレームワークはニューラルネットワークに実行ログ全体—エラー、プロファイラ出力、スタックトレース、中間推論—を供給します。

モデルはデバッグ中の開発者と同じ方法でこのデータを分析します。特定の失敗原因を確認し、ターゲットを絞った修正を提案します。その後、パレートフロントの考慮事項を備えた遺伝的アルゴリズムが起動します:システムは異なるタスクサブセット全体で最高のパフォーマンスを示したテキストバリアントを保持します。

フレームワークでできること

このアプローチにより、以下の要素の自動チューンが可能になります:

  • DSPyやLangChainの個別のモデルまたはチェーン用のプロンプト
  • エージェントアーキテクチャとそのスキルセット
  • タスク計画ルールと設定ファイル
  • MCPプロトコル用のツール記述

авторたちのテストでは、GPT-4.1 Miniモデルは100回の反復後、AIME数学ベンチマークでの精度を46.6%から56.6%に向上させました。Databricksのエンジニアは、品質を落とさずにエージェント運用コストを90分の1に削減するためにGEPAを使用しました。

最適化プロセスの仕組み

フレームワークは5つの連続したステップのループで動作します:

  1. パレートフロントからの候補選択。システムは特定のテストグループで最大の結果を示したバリアントを選びます。
  2. 小さなデータセットでの実行。この間、すべての実行ログとエラーが収集されます。
  3. リフレクション。リフレクターモデルはテキスト形式のエラーログを読み取り、診断を定式化します。
  4. 突然変異。過去のすべての先祖からのエラーを考慮して、プロンプトまたはコードの新しいバージョンが作成されます。
  5. 意思決定。新しい候補は、実際の改善を示した場合にのみ共有プールに追加されます。

すべての診断は、作者らの用語では「実行可能な副次的情報(Actionable Side Information)」と呼ばれています。テキスト最適化において、これは従来の機械学習における勾配に相当します。

AIME Prompt Example

コードの書き方

ライブラリはPyPIからインストールできます:

pip install gepa

プロジェクトにはシンプルなAPIである optimize_anything があります。これにより、プロンプトだけでなく任意のテキスト成果物をチューンできます:

import gepa.optimize_anything as oa
from gepa.optimize_anything import GEPAConfig, EngineConfig, optimize_anything


def evaluate(candidate: str) -> float:
    result = run_my_system(candidate)
    oa.log(f"Output: {result.output}")
    oa.log(f"Error: {result.error}")
    return result.score


result = optimize_anything(
    seed_candidate="Начальный текст инструкции или кода",
    evaluator=evaluate,
    objective="Уменьшить количество ошибок форматирования вывода",
    config=GEPAConfig(engine=EngineConfig(max_metric_calls=100)),
)

oa.log() を通じて送信されるログは、エラー検出のためにリフレクターモデルに送られる正確なものです。DSPyを既に使用している場合、ツールは dspy.GEPA としてそのまま利用可能です。

GEPA 통한チューンが本当に有効な場合

この方法は以下のシナリオで最高のパフォーマンスを発揮します:

  • 多くの外部ツールを持つエージェントの実行
  • 5〜10個の例しかない小さなトレーニングデータセット
  • API経由でのみアクセス可能な закрытаяモデル
  • コードコンパイルやシミュレーションを含む、高コストまたは低速な呼び出し

強化学習が収束するために5,000〜25,000回の実行を必要とする場所で、このアルゴリズムは通常100〜500回の評価のみを必要とします。

まとめ

このフレームワークは手作業のテキスト命令チューンという痛いテーマに対処します。ツールがすでにMLflow、Pydantic AI、Google ADKに統合されているため、プロジェクトに余分なコードを持ち込む必要はありません。ドキュメントの短いチュートリアルから始めるか、最も問題のあるプロンプトの数に対して optimize_anything を実行してください。

関連プロジェクト