リーン推論:リーン生産方式をAIに適用する
本記事では、リーン生産方式の原則をAI推論に適用し、LLM推論における7つのムダを特定し、ジャストインタイムコンテキスト、標準作業、タクトタイム、プロンプトキャッシングなどの核となる原則を提案する。リポジトリ分析エージェントのケーススタディでは、コストを13倍削減し、レイテンシを3.3倍改善した。
リーン生産方式は1980年代に物理的な生産を根本的に変えました。今、その原則がAI推論に体系的に適用され、「リーン推論」という新しい分野が生まれています。核となる考え方は、工場の現場でムダを排除するように、LLMベースのエージェントアーキテクチャにおける非効率を特定し排除するというものです。
記事はまず、おなじみのシナリオを描きます。単純なルーティング判断——ユーザーのクエリにデータベース参照が必要か、計算機が必要か——という場面で、12,000トークンのコンテキストウィンドウを持つGPT-4o呼び出しが発生し、4秒待ち、不正なJSONが返り、2回リトライし、結局正規表現で処理できた問題に0.40ドルを費やす。これが1日10,000リクエストで発生すれば、「推論の金食い虫」になります。
著者は大野耐一の7つのムダのフレームワークを参考に、LLM推論における7つのムダを特定します:
- 作り過ぎ:必要ないタスクにフロンティアモデルをデフォルトで使う。例えば、サポートチケットのルーティングは8B分類モデルで十分、構造抽出はファインチューニングされた3Bモデルで可能。コスト差は大きく、Claude SonnetはHaikuの3倍、GPT-4oはGPT-4o-miniの10倍。
- 在庫:RAGの肥大化——「念のため」に取得した20個のチャンクをすべてコンテキストウィンドウに詰め込む。これにより入力トークンコストが増加し、検索精度が低下。リランキングとトランケーションで在庫を制御する。
- 待ち:並列実行可能なツール呼び出しが直列で実行される。3つの非同期呼び出しを順次ブロッキングで行うと890msの待ち時間が発生。
- 不良:出力フォーマットの誤りによるリトライループ。構造化出力(OpenAIのresponse_formatなど)で根本的に排除。
- 過剰処理:不要な思考連鎖(CoT)。ルーティング分類器のような非推論タスクではCoTを削除することで出力トークンを40~60%削減でき、品質低下なし。
リーン推論の核となる原則:
- ジャストインタイムコンテキスト:必要な時に必要なだけコンテキストを取得する。実践には、セマンティックキャッシュ、リランキング後の注入、ステップスコープのコンテキストが含まれる。
- 標準作業:状態機械の遷移、ルーティングルールなどはコードで決定論的にエンコードし、モデルに推論させない。LangGraphなどのツールで制御フローを明示的に表現。
- タクトタイム:各ワークフローに明確なレイテンシ予算を設定。エンドツーエンドで2秒のSLA、6ステップなら1ステップあたり約333ms。これがアーキテクチャ上の決定を強制する。
- プロンプトキャッシング(かんばん):システムプロンプトやツール定義など静的なコンテンツをキャッシュ。AnthropicのAPIではキャッシュヒットで入力トークン費用が10%になる。
記事ではリポジトリ分析エージェントのBefore/Afterを示しています:
- Before:単一のReActループ、毎ステップGPT-4o呼び出し、全リポジトリコンテキスト、順次ファイル読み取り、出力検証なし。平均14秒、約85,000トークン、約1.20ドル/回。
- After:小型ルーターモデル(8B、ファインチューニング)がタスクを分類、プロンプトキャッシング、並列ファイル読み取り、構造化出力、厳格なステップ予算。平均4.2秒、約18,000トークン、約0.09ドル/回。コスト13倍削減、レイテンシ3.3倍改善、出力品質は同一。
結論:AIエンジニアリングの次のフロンティアは、より大きなコンテキストウィンドウやより高性能なベースモデルではない。今あるものをムダなく使う規律である。不必要なフロンティアモデル呼び出し、肥大化したRAGコンテキスト、順次ブロッキング操作、出力不良によるリトライループ——これらはすべてエンジニアリングの失敗であり、モデルの失敗ではない。リーン推論は哲学ではなく、今スプリントで実行できる具体的なアーキテクチャ上の決定の集合である。エージェントのステップごとのトークン消費を監査し、順次呼び出しをマッピングし、構造化出力を追加し、モデルを適正化し、静的プロンプトをキャッシュせよ。よりリーンに構築し、より速く実行し、より少なく費やし、より良いエージェントを出荷せよ。