CycleQDは、Sakana AIが2024年10月にarXivへ投稿し、ICLR 2025に採択された「Agent Skill Acquisition for Large Language Models via CycleQD」(arXiv:2410.14735)で提案されたモデルマージ手法です。タスクごとにファインチューニングした専門家モデルを進化的アルゴリズムで掛け合わせ、追加の勾配学習なしに複数スキルを持つ1つのモデルを作ります。Sakana AIの公式ブログは生物の「ニッチ(生態的地位)」の比喩から説明を始めていますが、論文本文はその語を使わず、MAP-Elitesというアルゴリズムの巡回適用と、タスクベクトルの線形結合+特異値分解による摂動として定式化しています。
まとめ
| 項目 | 内容 |
|---|---|
| 提案元 | Sakana AI(Kuroki ら4名) |
| 論文 | arXiv:2410.14735・ICLR 2025採択 |
| 実装 | SakanaAI/CycleQD(Apache-2.0) |
| 中核 | MAP-Elitesの巡回適用+タスクベクトルのマージ交叉+SVD突然変異 |
| ベースモデル | Llama3-8B-Instruct(画像側はSAM-ViT Huge) |
| 3タスク平均 | CycleQD 52.4/gpt-3.5-turbo 53.7/全部入りファインチューニング 47.0 |
| 計算コスト | 約410 H100 GPU時間(専門家モデルの学習時間は別) |
実務判断は3点に集約されます。CycleQDはファインチューニングの代替ではなく後段の手法で、K個の専門家モデルを先に作ることが前提です。論文の「gpt-3.5-turbo並み」は3タスク平均52.4対53.7を指す表現で、上回ったわけではありません。そして成功条件は元モデルの近さにあり、専門家ペアの類似度とマージ後スコアの相関は0.83と報告されています。
論文・ICLR 2025採択・公開実装という3つの一次情報
CycleQDは製品でもサービスでもなく、査読を通った研究成果と参照実装のセットです。
arXiv v1からICLR 2025採択までの時系列
論文の初版は2024年10月16日にarXivへ投稿されました。その後v2が2024年11月27日、v3が2025年1月27日、v4が2025年2月17日に更新されています。arXivのComments欄には「To appear at the 13th International Conference on Learning Representations (ICLR 2025)」と記載され、ICLR 2025に採択されました。著者4名(So Kuroki、Taishi Nakamura、Takuya Akiba、Yujin Tang)の所属はいずれもSakana AI(日本)です。日本語圏で話題になったのは公式ブログsakana.ai/cycleqd/と日本語版sakana.ai/cycleqd-jp/が公開された2024年12月3日以降で、当サイトの旧記事もこの時期の情報に基づいていました。なお日本語版の末尾に記載があるとおり、本研究は経済産業省のGENIACによる支援を受けており、公式ブログはその成果紹介シリーズの第1回にあたります。
GitHub実装の状態と更新の止まり方
参照実装はgithub.com/SakanaAI/CycleQDにApache-2.0ライセンスで公開されています。言語はPythonで、main.pyのほかcrossover、mutation、sampler、tasks、evaluation、configsがディレクトリとして並ぶ構成です。特徴的なのは更新の止まり方で、mainブランチの全8コミットのうちコード本体に触れたのは2024年10月16日の初回コミットだけ、残る7件はすべてREADME.mdのみの変更でした(最終は2025年2月1日)。リリースタグは1件も切られておらず、star数は49件です(いずれも2026年8月18日時点、GitHub API実測)。継続的にメンテナンスされるライブラリではなく、論文の再現用スナップショットとして扱うのが実態に合っています。依存パッケージの更新追随は自分で引き受けることになります。
K個のアーカイブを巡回させる品質・行動特徴の入れ替え
CycleQDのCycleは、品質(Quality)と行動特徴(Behavior Characteristics, BC)の役割を世代ごとに回すことを指します。ここが従来のQuality Diversity手法との差分です。
i = t mod K でアーカイブを切り替える構造
CycleQDはK個のアーカイブを保持し、各アーカイブが1つのエージェントスキルに対応します。世代tではi = t mod Kで選ばれたi番目のアーカイブが計算対象となり、そのタスクの性能指標がqualityに、残るK-1個の指標がBCに割り当てられます。アーカイブはBCで張られる格子で、格子サイズは対象アーカイブのBCを除いた次元の積です。論文の計算機科学タスクではK=3(コーディング・OS・DB)を使い、BCのbinは最も弱い専門家の性能の85%を下限、最も強い専門家の性能の115%を上限として15分割し、1つのbinに1モデルだけを残しました。生成した1体は選択中のアーカイブだけでなくK個すべての更新に使われるため、1回の評価結果をK個のアーカイブすべてに活かせます。総世代数は1200で、3スキルを交代するので1スキルあたり400世代の最適化に相当します。平均スコアは1000世代付近で頭打ちになり、それ以降はわずかな上昇にとどまりました。
データ比率調整と目的関数設計が不要になる理由
複数タスクを1回のファインチューニングで学ばせるとき、実務で削られるのは学習コードではなく、どのタスクのデータを何割混ぜるかという配合の試行錯誤です。CycleQDはこの調整自体を設計から外しました。ある世代で最適化するのは1タスクの指標だけなので、複数タスクを1本の目的関数へ重み付き合成する必要がなく、K個のタスクのデータをそのまま評価に使えます。重みを決めない以上、重みを探索する外側ループも不要。データ配合の考え方そのものはファインチューニング用データセットの作り方|サンプル形式・件数・品質の要件で扱っていますが、CycleQDはその工程を「マージ後の性能を測る」問題へ置き換えたと理解すると位置づけがはっきりします。
タスクベクトルのマージ交叉とSVD突然変異の中身
基本の枠組みは遺伝的アルゴリズムとは?仕組みとDEAPでのPython実装をわかりやすく解説と共通で、CycleQDはその交叉・突然変異という演算子をLLMのパラメータ行列に置き換えています。
負の重みを許すタスクベクトルの線形結合
交叉には、事前学習済みモデルのパラメータθ_baseとファインチューニング後のθから作るタスクベクトルτ = θ – θ_baseを使います。子モデルは2つの親のτを混合係数で足し合わせて作られ、係数はω1/(ω1+ω2)のように正規化されます。ω1とω2は平均μ・標準偏差σの正規分布から独立にサンプリングされ、実験ではμ=1.0、σ=0.03が使われました。設計上重要なのは、ωが正の数である必要がない点です。負の係数を許すことで、専門家モデルの間を内挿するだけでなく外側へ出る自由度が生まれます。係数を正規化しているのは、マージ後の重みが外れ値になって後続層を壊すのを防ぐためです。
ガウス摂動ではなく特異値方向へ動かす突然変異
交叉だけでは子モデルは親のτの線形結合にとどまり、専門家モデルが性能空間に張る凸領域から出られません。そこで交叉後に突然変異を挟みます。ただし論文は、平均と共分散を決め打ちしたガウス分布から摂動を足す一般的なやり方について、自由度が過剰で最終モデルが過学習すると述べています。代わりに採用されたのが、タスクベクトルの各パラメータ行列をτ_l = U_l Σ_l V_l^T と特異値分解し、特異値Σ_lに摂動ベクトルwを掛けて再構成する方法です。wは区間[0, w_max]の一様分布からサンプリングし、実験ではw_max=0.3としました。摂動の方向を行列が本来持つ主成分に限定することで、動かす量を保ちながら無方向な暴れを抑えています。
最終的な1モデルを作る集約とハイパーパラメータ
論文は手法一般の説明として「数百から数千のLLMエージェントが得られる」と述べています。ただし計算機科学タスクの設定では、1アーカイブが15×15の格子で1binに1体までなので上限は225体、3アーカイブ合計でも675体が上限です。論文の目的は多スキルを持つ単一モデルなので、各アーカイブのエリートモデルのタスクベクトルτ_kを、そのタスク性能f_kのソフトマックスβ_kで重み付けして足し合わせます。同点の場合は最も新しいモデルを採用します。論文が報告するCycleQDのスコアはすべてこの集約モデルのものです。Elite samplingのα_lowは0.5、α_highは0.8で、これらのハイパーパラメータは少数世代の予備実験で候補を試して選んだ値だと明記されています。網羅的な探索はしていないため、著者自身がさらなる改善余地を認めている点は引用時に落とさないでください。
AgentBench 3タスクの実測スコアと「gpt-3.5-turbo並み」の中身
評価はコーディング、OS操作、DBクエリ生成の3スキルで行われました。コーディングはEvalPlusのMBPP+でpass@1、OSとDBはAgentBenchのデータセットで成功率を測っています。
| 手法 | MBPP | DB | OS | 平均 |
|---|---|---|---|---|
| gpt-4 | 83.6 | 36.5 | 63.7 | 61.3 |
| gpt-3.5-turbo | 82.0 | 41.6 | 38.5 | 53.7 |
| Llama3-8B-Instruct(ベース) | 67.3 | 5.3 | 25.2 | 32.6 |
| ファインチューニング(DB専門) | 65.8 | 42.4 | 28.5 | 45.6 |
| ファインチューニング(全部入り) | 67.3 | 37.1 | 36.7 | 47.0 |
| マージ(学習なし) | 72.9 | 24.7 | 42.6 | 46.7 |
| マージ(NSGA-II学習) | 75.9 | 42.4 | 36.4 | 51.6 |
| CycleQD | 76.4 | 38.2 | 42.6 | 52.4 |
平均値だけを見ると、CycleQDの52.4はgpt-3.5-turboの53.7に肉薄し、全部入りファインチューニングの47.0を5.4ポイント上回ります。ただし読み方には条件が2つ付きます。1つは、GPT系のMBPP値が著者らの自前計測ではなくDubey et al. 2024からの引用だとTable 1のキャプションに明記されていること。もう1つは、平均で勝っていても個別タスクでは負けている箇所があることです。DBはDB専門ファインチューニングの42.4とマージ+NSGA-IIの42.4に対してCycleQDが38.2で、4.2ポイント下回ります。DBの精度が最優先の案件なら、素直にDB専門モデルを作るほうが結果は良くなります。CycleQDの価値は単一タスクの最高点ではなく、3タスクを1モデルで高い水準に揃えられる点にあると読むのが正確です。
アブレーションが示す設計要素ごとの寄与と、効かなかった選択肢
論文のアブレーション実験は、CycleQDのどの設計が効いたかを段階的に切り分けています。手法を自作に取り込むなら、ここが最も参考になります。
| 構成 | MBPP | DB | OS | 平均 |
|---|---|---|---|---|
| QD(巡回なし)+変異なし+ランダム抽出 | 70.4 | 28.8 | 43.7 | 47.6 |
| CycleQD+変異なし+ランダム抽出 | 72.9 | 33.5 | 41.9 | 49.4 |
| CycleQD+ガウス突然変異+ランダム抽出 | 73.4 | 30.0 | 42.2 | 48.5 |
| CycleQD+SVD突然変異+ランダム抽出 | 75.9 | 38.2 | 41.1 | 51.7 |
| CycleQD+SVD突然変異+Elite sampling | 76.4 | 38.2 | 42.6 | 52.4 |
巡回の導入で47.6が49.4へ、1.8ポイント上がりました。次にSVD突然変異を加えると49.4が51.7へ、2.3ポイント上がります。最後のElite samplingは0.7ポイントで、寄与は最も小さい部類です。注目すべきは3行目で、ガウス突然変異を入れた構成は48.5と、突然変異を入れない49.4より0.9ポイント低くなりました。突然変異を足せば探索が進むという直感がここで裏切られています。論文が「自由度が過剰で過学習を招く」と述べる主張は、この行が実測で支えている形です。モデルマージに進化計算を組み合わせるとき、摂動の入れ方を誤ると何も入れないより悪化する。この一点だけでも、SVDという選択が装飾ではなく必要条件だったとわかります。
この5行は参照実装の設定ファイルとそのまま対応しており、手元で切り替えて確かめられます。
configs/qd/mutation/gaussian_noise.yaml // 3行目のガウス突然変異
configs/qd/mutation/svd_uniform_noise.yaml // 4-5行目のSVD突然変異
configs/qd/sampling/random_sampling.yaml // 1-4行目のランダム抽出
configs/qd/sampling/elite_sampling.yaml // 5行目のElite sampling
configs/qd/crossover/model_linear.yaml // マージ交叉(全行で共通)
実装側もmutation/gaussian_mutator.pyとmutation/svd_uniform_mutator.py、sampler/random_sampler.pyとsampler/elite_sampler.pyが対になっており、タスク定義はconfigs/task/配下にmbpp.yaml、agentbench_db.yaml、agentbench_os.yamlとして分かれています。
汎化性能と言語能力に残った副作用
特定スキルを伸ばした代償として一般的な言語能力が落ちる現象は、ファインチューニングでよく問題になります。論文のTable 3は、ベースモデルを1.00とした正規化スコアでこれを検証しています。CycleQDは学習に使っていないHumanEval+で1.10、BigCodeBenchで1.03と、未学習のコーディングタスクへ汎化しました。言語系はReasoning 0.95、GSM8K 0.88、読解0.98、常識推論1.02で、平均0.99です。
平均が0.99という結果は「言語能力を維持した」と表現して差し支えありませんが、GSM8Kの0.88は無視できない下がり幅です。算術推論を含む用途にそのまま載せる計画なら、この12%の低下を自分の評価セットで再確認したほうが安全です。比較対象として、コーディング専門にファインチューニングしたモデルはReasoningが0.57、GSM8Kが0.82まで落ちており、平均は0.92でした。単一タスクへの特化で壊れる範囲に比べれば、CycleQDの劣化は明らかに小さく収まっています。
画像セグメンテーションとVQAで見えた適用範囲と類似度の壁
CycleQDはテキスト以外にも適用されています。画像側の実験ではSAM-ViT Hugeをベースに、カモフラージュ物体検出(CAM)、ポリープ検出(POL)、皮膚病変検出(SKL)、葉領域検出(LEA)の4つの専門家モデルを作り、そのペアをマージしました。スコアは対応する専門家モデルの性能を1.00とした正規化値です。
| 専門家ペア | 平均スコア | モデル類似度 |
|---|---|---|
| POL+SKL | 0.96 | 0.99 |
| CAM+POL | 0.97 | 0.98 |
| CAM+SKL | 0.92 | 0.97 |
| SKL+LEA | 0.83 | 0.95 |
| POL+LEA | 0.62 | 0.93 |
| CAM+LEA | 0.70 | 0.88 |
類似度0.97以上の3ペアは0.92から0.97を保った一方、0.95以下のペアは0.83、0.70、0.62にとどまりました。ただし関係は単調ではありません。スコア最下位の0.62は類似度0.93のPOL+LEAで、類似度が最も低いCAM+LEA(0.88)の0.70を下回っています。論文はスコアと類似度の相関を0.83と報告し、これがCycleQDの限界であると同時に改善余地でもあると述べています。マージの成否が元モデルの近さに依存するのは確かですが、類似度だけで結果を予測できるわけではない、という読み方が正確です。
もう1つの拡張として、計算機科学3タスクにTextVQAを加えた4タスクの実験もあります。VLMにはLlama3-Llava-Next-8Bを使い、TextVQAから4000サンプルで専門家を学習させた構成で、CycleQDのVQAスコア54.1は専門家単体の51.4を上回りました。4タスク平均は49.7です。異種モダリティを混ぜても崩れないことを示した一方、既存3タスクはMBPPが76.4から72.9、DBが38.2から32.4、OSが42.6から39.6へといずれも低下しました。タスクを増やすほど各タスクの取り分が薄まる傾向は読み取っておくべきです。
CycleQDを採用すべきでない条件
手法の性質上、向かない場面ははっきりしています。
- 単一タスクの精度が最優先。DBの実測が示すとおり、専門家1本のほうが強い
- 専門家モデルを用意できない。CycleQDはK個のファインチューニング済みモデルが出発点で、その工程を省く手法ではない
- マージ対象のモデルが別系統。事前学習が異なる、アーキテクチャが違う、語彙が違うといった場合は類似度が下がり、Table 4の0.62や0.70の側に落ちる
- GPU予算が逼迫している。論文の実測はH100で約410 GPU時間、全部入りファインチューニングの約200 GPU時間の2倍強にあたる
4点目には補足が要ります。論文は超過分の大半が最適化ではなくエージェントタスクの評価に費やされたと説明し、ファインチューニングの実装が成熟している一方でCycleQDの実装には効率化の余地が大きいという但し書きも付けています。410時間は手法の本質的なコストではなく、この実装・この評価設定での実測値として扱ってください。
逆に噛み合うのは、既に業務ドメインごとのファインチューニング済みモデルが手元に複数あり、それらを1つに統合したいケースです。専門家を作る手順そのものはPEFTとLoRAの違いとは?仕組み・使い方・QLoRA/DoRAとの比較を実装例つきで解説で扱っており、日本語特化モデルを起点にする場合はLlama-3-ELYZA-JP-8Bとは?日本語特化LLMの性能・Ollamaでの使い方を解説のような同系統のLlama3-8B派生が候補になります。
後継のM2N2とモデルマージ研究の現在地
CycleQDの発表から1年半以上が経ち、Sakana AIのモデルマージ研究は次の段階へ進んでいます。2025年8月22日にarXivへ投稿された「Competition and Attraction Improve Model Fusion」(arXiv:2508.16204)は、M2N2(Model Merging of Natural Niches)を提案し、GECCO 2025にフルペーパーとして採択されました。著者はJoão Abrantes、Robert Tjarko Lange、Yujin Tangで、Yujin TangがCycleQDと共通です。
M2N2はCycleQDの弱点に直接手を入れています。マージ境界を固定グループとして手で決める制約を外して動的に調整し、自然界の資源競争に着想を得た多様性維持機構と、マージ相性の良いペアを見つける誘引指標を組み合わせました。論文はMNISTの分類器をゼロから進化させられることを示し、言語モデルと画像生成モデルのマージにもスケールしたと報告しています。実装はgithub.com/SakanaAI/natural_nichesで公開されています。
論文自身は結論部で、本研究を「エージェントスキル獲得においてQDと進化的モデルマージを統合した最初の試み」と位置づけています。設計判断がアブレーションで検証されているため教材としての価値は落ちていませんが、これから新規に実装するなら後継のM2N2も評価対象に入れるのが妥当です。
よくある質問
CycleQDは誰が開発した何ですか?
日本のAI企業Sakana AIの研究チーム(So Kuroki、Taishi Nakamura、Takuya Akiba、Yujin Tang)が発表した学術研究の手法です。製品やサービスではなく、論文(arXiv:2410.14735)と参照実装(GitHub、Apache-2.0)として公開されています。論文はICLR 2025に採択されました。APIやSaaSとして提供されているものではないため、使うには自分でリポジトリを動かす必要があります。
CycleQDはGPT-3.5を超えたのですか?
超えてはいません。論文の表現は「on par(同等)」で、AgentBenchの3タスク平均がCycleQD 52.4に対しgpt-3.5-turbo 53.7です。タスク別ではOS(42.6対38.5)で上回り、MBPP(76.4対82.0)とDB(38.2対41.6)で下回ります。Llama3-8B-Instructという8B規模のモデルで、より大規模とみられるgpt-3.5-turboに近い水準へ届いた点が成果であり、上回ったと書かれた紹介は正確ではありません。
CycleQDのコードは公開されていますか?
公開されています。github.com/SakanaAI/CycleQDにApache-2.0ライセンスで置かれた、交叉・突然変異・サンプリング・評価がディレクトリに分かれたPython実装です。ただし本文の実装章で触れたとおりコード本体は初回コミット以降更新されていないため、論文の再現用スナップショットとして使う前提になります。
CycleQDとファインチューニングはどちらを選ぶべきですか?
二者択一ではありません。CycleQDはファインチューニング済みの専門家モデルを入力として受け取る後段の手法なので、まず専門家を作る工程は避けられません。1つのタスクだけを伸ばしたいならファインチューニングで完結します。複数タスクを1モデルに統合したい段階で、データ配合の試行錯誤を避けたいときにCycleQDが候補になります。
CycleQDと一般的なモデルマージの違いは何ですか?
重みを固定比率で混ぜる一般的なマージと異なり、CycleQDは混合比率を進化的に探索します。さらに、線形結合だけでは専門家モデルが張る凸領域から出られない問題に対し、特異値分解した方向へ摂動を加える突然変異を導入した点が独自です。論文のベースライン比較では、学習を伴わない単純なマージが3タスク平均46.7だったのに対し、CycleQDは52.4に達しました。