Parallelization(並列化)
複数のLLM呼出を同時実行し、結果をプログラムで集約する。独立サブタスクの分割実行(Sectioning)と、同一タスクの多重実行による確度向上(Voting)の2変種を持つ。
別名
| 呼称 | 出典 |
|---|---|
| Concurrent Orchestration | Microsoft Azure |
| Fan-out/Fan-in、Scatter-Gather、Map-Reduce | Microsoft Azure |
| Sectioning、Voting | Anthropic「Building Effective Agents」 |
問題
直列処理では、独立した作業まで順番に待つため遅すぎる。複数の観点を1回のLLM呼出に混ぜると、各観点への注意が薄まり品質が落ちる。
また、単一の判断に頼ると、モデルの偶然の誤判定をそのまま採用するリスクが高い。時間を短縮しながら多視点性または判断の確度を得るには、呼出を明示的に並列化し、結果を集約する必要がある。
コンテキスト
適用する:
- サブタスクが独立で並列化可能
- 多視点の独立分析
- 時間予算が厳しい
- 多数決・閾値投票で確度を上げたい(脆弱性レビュー等)
適用しない(不要な)ケース:
- サブタスク間に依存や順序制約がある(→ Prompt Chaining)
- 並列エージェントが共有状態を同時変更する
- 矛盾結果の解決戦略を定義できない
- レート制限で並列が非効率になる
解決
タスクを独立した呼出へ分け、同時に実行する。Sectioning は異なるサブタスクを並列化し、Voting は同一タスクをN回実行する。完了後、決定論的なコードで結果を集約する。
分類は多数決、スコアは重み付き統合、物語的な統合はLLMによる合成とする。1つの呼出が応答を生成し、別の呼出が安全審査を行うガードレール実装も、Sectioning の応用である(Anthropic)。
python
def parallelize(task, mode, count=3):
inputs = split(task) if mode == "sectioning" else [task] * count
results = run_concurrently([llm(item) for item in inputs])
if mode == "voting":
decision = majority_vote(results)
else:
decision = aggregate_by_subtask(results)
if needs_semantic_synthesis(decision):
return llm({"task": task, "candidates": results})
return decision実装の要点:
- 独立性を先に確認する。 先行結果を次の入力が必要とするなら、並列化ではなく直列の Prompt Chaining を選ぶ
- 集約規則を事前に定義する。 分類は多数決、数値は重み付き統合など、結果の型に応じて決定論的な規則を置く
- 並列度と失敗を管理する。 レート制限、タイムアウト、部分的な失敗、矛盾結果を記録し、必要なら閾値未達として扱う
トレードオフ
- ✅ 独立呼出を同時実行することで、全体のレイテンシを短縮できる
- ✅ Voting により単一判断への依存を減らし、確度を向上できる
- ⚠️ 呼出数に比例してコストが増え、レート制限にも到達しやすくなる
- ⚠️ 集約戦略を設計しないと、矛盾した結果を混ぜて品質を低下させる
クラウドパターンとの対応
| クラウドパターン | 本パターンでの再定義 |
|---|---|
| Fan-out/Fan-in | ワーカーが決定論的関数を実行する構造から、非決定論的なLLMを並列実行する構造へ。集約にも意味の合成や多数決が加わった |
| Scatter-Gather(EIP) | メッセージの分散・応答集約を、同一タスクの多重推論と投票に適用したもの。Voting の直系にあたる |
関連パターン
- Orchestrator-Workers — サブタスクが事前定義か動的生成かが異なる。Parallelization は独立性を前提に並列化する
- Prompt Chaining — サブタスク間に依存や順序制約がある場合に選ぶ直列パターン
- Evaluator-Optimizer — Voting が並列評価なのに対し、Evaluator-Optimizer は評価と改善を逐次実行する
- Budget Guard — 並列度と総トークン上限を制御し、コストとレート制限を管理する
出典・参考
- Anthropic — Building Effective Agents(Parallelization ワークフローと Sectioning / Voting の2変種の定義)
- Microsoft — AI Agent Orchestration Patterns(Concurrent orchestration と集約戦略の指針)
- Enterprise Integration Patterns — Scatter-Gather(系譜元のメッセージングパターン)