概要
- Coding agents はコードを書く前に 論文や競合プロジェクトを調査 することで、より優れた最適化案を生み出す
- 自動リサーチループ に文献調査フェーズを追加し、llama.cppに適用して CPU推論速度を大幅向上
- 3時間・4台のVMで 5つの最適化を発見 し、x86で+15%、ARMで+5%の高速化を実現
- 競合プロジェクトの調査 がarxiv検索よりも多くの具体的アイデアを提供
- ベンチマークとテストスイートがあるプロジェクト ならどれでも応用可能
コーディングエージェントの最適化アプローチの進化
- 従来のエージェント はコードのみを分析し、微細な最適化(SIMD化やループアンローリング等)に終始する傾向
- コード外の知見 (論文・競合プロジェクト・ドメイン知識)が重要な場合、コードだけでは浅い仮説しか立てられない
- llama.cppのCPU推論 では、計算経路のマイクロ最適化がほぼ効果なし(メモリ帯域がボトルネック)
- ドメイン知識 (Rooflineモデル、ハードウェア特性、他実装の工夫)が不可欠
文献調査フェーズの導入
- 研究フェーズの追加 でエージェントの仮説品質を向上
- 論文・フォーク・他プロジェクトの実装を調査
- シニアエンジニアが未知のコードを触る前の準備と同様
- 自動リサーチループ の流れ
- コード編集→実験→メトリクス確認→結果判定に加え、調査→仮説立案→実験のサイクル
- SkyPilot でクラウドVMに分散実験
- エージェントがベンチマーク・正当性チェックスクリプトも自動生成
実験環境とターゲット
- ターゲット :TinyLlama 1.1B(Q4_0量子化)のCPU推論スループット
- アーキテクチャ :x86(AVX-512対応)、ARM(NEON対応)AWS VM
- メトリクス :llama-benchでtokens/secondを測定
- 実験コスト :3時間・4台VM・計約$29(CPU VM $20、API $9)
調査で得られた主な知見
- ik_llama.cpp の独自量子化リパックで2.9倍高速化(既に本家に取り込み済み)
- Blockbuster論文 :FFN全体の演算融合を提案
- CUDA/Metalバックエンド にはあるRMS_NORM + MUL融合がCPUには未実装
- 競合プロジェクトやフォークの解析 が論文検索より実用的な最適化案を多く提供
最適化案の具体例(5件)
- 1. Softmax融合
- コピー・スケール・マスク加算の3パスを1パス化
- 2. RMSノルム融合
- コピー+スケールの2パスを1パス化
- 3. 適応的from_float並列化
- 行数に応じて並列化戦略を変更し、プロンプト処理で+2.5%高速化
- 4. グラフレベルRMS_NORM + MUL融合
- 他バックエンドの手法をCPUにも導入
- AVX2/NEON命令を明示的に使い、1パスで処理
- 5. Flash attention KQ融合
- (詳細割愛、KQタイルの3パスを1つのAVX2 FMAループへ融合)
コードのみ文脈の限界と研究フェーズの有効性
- コードのみ では計算量ばかりに目が行き、根本的なボトルネック(メモリ帯域や他手法の存在)に気づきにくい
- 調査フェーズ により、他実装の融合手法や未活用の最適化を発見できた
- 複数の最適化 が積み重なり、特にx86で顕著な高速化を実現
まとめと今後の展開
- 論文・競合分析を自動化したエージェント は、従来のコード専用エージェントを凌駕する最適化を発見可能
- ベンチマーク・テストスイート が整備されていれば、他のプロジェクトにも容易に適用可能
- クラウド分散実験 と自動調査の組み合わせが、今後の自動最適化の標準手法となる可能性
参考
- 主要プロジェクト:llama.cpp, ik_llama.cpp, llamafile, PowerInfer, ExLlamaV2
- 参考論文:FlashAttention, Blockbuster, LLM Inference Acceleration via Efficient Operation Fusion, ほか
- 実験環境:AWS c6i.2xlarge (x86), c7g.2xlarge (ARM), SkyPilot
- 主要技術:AVX2, NEON, FMA, SIMD, メモリ帯域最適化