Amazon Web Services ブログ

Kiro の Auto がモデルカスケードで作業に合ったモデルを使い分ける仕組み

本記事は 2026 年 11 月 6 日に Kiro ブログで公開された「How Kiro Auto uses model cascading to match the model to the work」を翻訳したものです。

イメージ図。コーディングのセッションを点線の道で描いている。道は平らで簡単な区間を通ったあと、急な上り坂になって頂上へ向かう。出発点の「最初のモデル」と書かれた旗が、セッションが効率のよい最初のモデルで始まる場所を示す。小さな Kiro のゴーストが簡単な区間を進み、通った道は青く光る。道の上にある「独立したチェック・バックグラウンドで実行」と書かれた灯台が、ゴーストがすでに通った道を照らしている。上り坂からは大きなゴーストが引き継ぎ、道は紫に光る。図の中には「最初は効率のよいモデルで始めます。必要なら、より高性能なモデルが引き継ぎます。」と書かれている。

TL;DR:Auto は裏側でモデルカスケードを使っています。どのセッションも効率のよい最初のモデルで始まり、独立したチェックがバックグラウンドで作業を確かめ、必要になったときに Auto はセッションをより高性能なモデルに引き継ぎます。DeepSWE v1.1 を使った社内の評価では、カスケードは高性能なモデル単独とほぼ同じ成績を出し、タスクの約 5 件に 4 件は引き継ぎなしで完了しました。

Kiro では、ほとんどの方に Auto での作業をおすすめしています。モデルのドキュメントにあるとおり、Auto がユーザーに代わってモデルを選び、高い品質の基準を保ちます。有料プランでは、その基準は Claude Opus クラスの品質です。この記事では、Auto がその基準を満たすための方法の 1 つである、モデルカスケードという手法を紹介します。

難しさはセッションが進むにつれて見えてくる

Kiro に、不安定な日付パーサーの修正を頼んだとします。最初の手順は決まりきった作業です。ファイルを読み、関数を見つけ、不具合を再現する、失敗するテストを書きます。ところがそのテストで、ほかの 3 つのモジュールにまたがるタイムゾーンの前提が見つかり、小さな修正がリファクタリングに変わります。逆のことも起きます。大きく見えたタスクが、2 行の変更で済むこともあります。

モデルの性能が上がるにつれて、より大きな仕事を任せるようになり、Kiro のセッションは長くなっています。手順の多い長いセッションは、ファイルを読み、コードを編集し、テストを実行し、やり直すといった多くの手順を踏みます。その難しさは、始まった時点では決まっていません。セッションの難しさには形があり、その形は進めてみて初めて見えてきます。図 1 では、同じセッションを 3 通りのやり方で進めています。

イメージ図で、実測データではない。同じコーディングのセッションを 3 本の帯で表し、左から右へセッションが進み、上へ行くほど難しい。どの帯も始まりの部分に「同じ最初の依頼」とある。途中で難しくなるセッションでは、難しさの線は低く小さな起伏で始まり、中央の少し手前で急に上がって高いまま続き、終わり近くで下がる。1 本目の「最初から高性能なモデルを選ぶ」では、最初の依頼だけを見て決めた紫の平らな線がセッション全体の上にあり、序盤の低い難しさとのあいだに「簡単な区間では要らなかった性能」と書かれた塗りがある。評価は「簡単な区間には性能が余ります。」。2 本目の「最初から効率のよいモデルを選ぶ」では、最初に決めた青い平らな線が低い位置にあり、難しさがその線を超えたところに斜線と「上り坂で力不足」の文字がある。評価は「上り坂で力が足りません。」。3 本目の「カスケード・判断し続ける」では、線は青く低い位置で始まり、上り坂が始まってすぐの「引き継ぐ」と書かれたところで紫に上がり、最後まで紫のまま続く。青の区間と紫の高さのあいだの点線の枠に「不要だった性能」とある。評価は「軽く始め、上り坂で引き継ぎます。」。
図 1 の、簡単なままのセッションの場合。難しさの線は最後まで低い。最初に決める 2 本の線は変わらない。効率のよいモデルを選んだ場合は合っていて(「今回は合っています。」)、高性能なモデルを選んだ場合は最初から最後まで性能が余る(「このセッションには性能が余ります。」)。カスケードは青いままで、引き継ぎは起きない(「軽いまま。引き継ぎは不要です。」)。
図 1: 難しさはセッションが進むにつれて現れるため、最初に 1 回だけ選んだモデルでは、簡単な区間で性能が余るか、難しい区間で力が足りなくなります。カスケードは進めながら調整します(イメージ図)。1 枚目は途中で難しくなるセッション、2 枚目は簡単なままのセッションです。画像の右上のボタンは原文のインタラクティブな図のもので、この記事では 2 つの状態を 2 枚の画像に分けて載せています。

作業を始める前にモデルを選ぶとき、判断の手がかりは依頼の内容しかありません。高性能なモデルを選べば、効率のよいモデルでも同じようにこなせた決まりきった手順も含めて、すべての手順をそのモデルが担います。効率のよいモデルを選べば、決まりきった手順はうまくこなせますが、作業が難しくなると、行ったり来たりを始めたり、すでに終えた作業をやり直したりすることがあります。次に、図 1 の 2 枚目の、簡単なままのセッションを見てください。依頼が同じなので、最初に選ぶモデルは変わりません。カスケードは最後まで最初のモデルのままです。セッションが、そのモデルで扱える以上に難しくならないからです。

Auto のモデルカスケードのしくみ

モデルカスケードは、1 回のモデルの選択を、エージェントのセッション全体を通して行う一連の判断に変えます。

  • 効率のよいモデルで始める。どのセッションも最初のモデルで始まります。最初のモデルは、日常的な幅広い作業をうまくこなす効率のよいモデルです。多くのセッションでは、このモデルが適切な選択で、作業のすべてをこなします。
  • バックグラウンドで作業を確かめる。独立したモデルが、セッションの軌跡、つまりここまでに行われた作業を確かめます。チェックは非同期に動くので、セッションがチェックを待つことはありません。また、作業しているモデルが自分の進み具合を採点することもありません。
  • そのまま続けるか、引き継ぐ。セッションが着実に進んでいるあいだは、何も変わりません。セッションが効率よく進まなくなった兆し(同じコードを繰り返し調べる、すでに終えた作業をやり直す、など)をチェックが見つけると、Auto はセッションをより高性能なモデルに引き継ぎます。引き継ぎではここまでの作業の要点が受け渡されるので、より高性能なモデルは最初からやり直すのではなく、今の状態のセッションをそのまま引き継ぎます。
  • 必要に応じて繰り返す。引き継ぎは、セッションが最も高性能なモデルで動くようになるまで繰り返し起こりえます。現時点では、引き継ぎは上の方向にだけ行われます。セッションを効率のよいモデルへ戻すことは、今後のアップデートで検討します。

モデルへのアクセスを管理しているチームでは、引き継ぎ先も Auto が使えるモデルの中から選ばれるので、引き継ぎにも Auto と同じガバナンスの設定が適用されます。管理者がモデルへのアクセスをどう制御するかは、モデルのガバナンスをご覧ください。

モデルカスケードを 4 段階で示すイメージ図の前半。1 の「軽く始める」では、「最初のモデル」と書かれた小さなゴーストが曲がりくねった道でセッションを始め、青い足跡を残す。2 の「バックグラウンドでチェック」では、「独立したチェック・バックグラウンドで実行」と書かれた灯台が、ゴーストがすでに通った道を照らし、ゴーストは作業を続けている。
4 段階のイメージ図の後半。3 の「引き継ぐ」では、道がぐるりと輪を描いて戻っている。セッションが同じところを回っている様子を表した一般的な絵で、灯台の光がその輪に当たり、「より高性能なモデル」と書かれた大きなゴーストが来て、その地点から同じ道を進む。小さなゴーストは脇によける。4 の「必要に応じて繰り返す」では、大きなゴーストが紫の足跡を残してチェックの印のある頂上へ上り、それまでの青い足跡は光ったまま残る。横の点線の矢印は「最初のモデル」から「最も高性能なモデル」へ向かい、「繰り返せる」と書かれている。
図 2: Auto のモデルカスケードでは、最初のモデルがセッションを始め、独立したチェックがバックグラウンドで作業を確かめます。より高性能なモデルがセッションを引き継ぐのは、その必要がある兆しをチェックが見つけたときだけです。これは考え方を示したイラストで、実際のチェックの動き方を表したものではありません。

担当のエンジニアがチケットに取り組み、その肩越しにレビュアーが作業を見ている場面を考えてみてください。エンジニアは作業を続け、手を止めて自分の進み具合を採点することはありません。それはレビュアーの仕事です。作業が前に進んでいるあいだ、レビュアーは何も言いません。作業が同じところを回り始めたとレビュアーが気づいた時点で、チケットはより腕の立つエンジニアに渡り、そのエンジニアが今の状態から引き継ぎます。

カスケードを既定で動かしても安全なのは、このしくみがあるからです。作業しているモデルは自分の進み具合を採点せず、引き継ぎは最初からやり直すのではなく、すでに終えた作業の上に積み上げます。より高い性能が必要なセッションは途中でその性能を得られ、必要のないセッションは最初のモデルのまま進みます。

測定したこと

カスケードを、Datacurve による、手順の多い長いタスクを扱うソフトウェアエンジニアリングのベンチマークである DeepSWE v1.1 で評価しました。タスクはこのベンチマークのために新しく作られたもので、オープンソースのリポジトリを題材にし、人が書いた、動作を確かめるテストで採点されます。そのため、難しさが途中で変わりうる、何段階にもわたるセッションが必要になります。Kiro のエージェントエンジンで 3 つの構成を動かし、それぞれの構成でベンチマーク全体を 3 回ずつ、独立に実行しました。

  • 最初のモデルのみ。すべてのタスクを、効率のよい最初のモデルで最初から最後まで実行します。
  • 高性能なモデルのみ。すべてのタスクを、より高性能なモデルで最初から最後まで実行します。
  • カスケード。すべてのタスクを最初のモデルで始め、より高性能なモデルへ引き継げる状態にしておきます。

3 つの構成とも、推論(reasoning)の設定は同じです。違いは、どのモデルが作業を担うかだけです。結果は pass@1(1 回の試行で解けたタスクの割合)を、3 回の実行の平均 ± 1 標準偏差で示します。

高性能なモデル単独とほぼ同じ品質

図 3 は 3 つの構成の pass@1 を比べたもので、その下の表に同じ値を載せています。

Kiro のエージェントエンジンで DeepSWE v1.1 を 3 回実行したときの pass@1 のドットチャート。構成ごとに 1 行。横軸は pass@1 の 60% から 74% で、0 から始まっていない。最初のモデルのみは 63.96% ± 2.70、カスケード(最初のモデルで始め、より高性能なモデルを使える)は 69.37% ± 1.56、高性能なモデルのみは 70.57% ± 2.08。横のエラーバーは 3 回の実行の 1 標準偏差。カスケードと高性能なモデルのエラーバーは重なっていて、重なりに色が付き、2 行を結ぶ括弧に「ほぼ同じ・実行ごとのばらつきの範囲内」とある。同じ値を図の下の表に載せている。
図 3: DeepSWE v1.1 で、カスケードの pass@1 は 69.37% でした。高性能なモデル単独(70.57%)とほぼ同じで、最初のモデル単独(63.96%)より 5.40 ポイント高い値です。エラーバーは 3 回の実行の ± 1 標準偏差を示します。
構成 pass@1(3 回の実行の平均 ± 1 標準偏差)
最初のモデルのみ 63.96% ± 2.70
高性能なモデルのみ 70.57% ± 2.08
カスケード(最初のモデルで始め、より高性能なモデルを使える) 69.37% ± 1.56

カスケードはタスクの 69.37% を解きました。高性能なモデル単独(70.57%)とほぼ同じで、その差は実行ごとのばらつきの範囲内です。また、最初のモデル単独(63.96%)より 5.40 ポイント高い値です。3 つの構成のうち、実行ごとのばらつきが最も小さかったのもカスケードでした。つまり、すべてのタスクを最初のモデルで始めても、それが品質の足かせにはなりませんでした。

約 5 件に 4 件は引き継ぎなしで完了

図 4 は、カスケードのタスクがどのモデルで終わったかを示しています。

200 個のマスのユニットチャート。1 マスは、カスケードの構成で DeepSWE v1.1 のタスクを実行した回数の約 0.5% を表し、3 回の実行を合算している。青く塗られた 161 マス(80.48%)は、最初のモデルだけで完了したタスク。紫に塗られ、細い青の枠と白い中央の点がある 39 マス(19.52%、約 5 件に 1 件)は、最初のモデルで始まり、より高性能なモデルに引き継がれたタスク。引き継がれたマスはグリッドの最後にまとめて並べてある。大きな文字で「80.48% 最初のモデルだけで完了」「19.52% 最初のモデルで始まり、より高性能なモデルに引き継がれた」とある。
図 4: DeepSWE v1.1 の 3 回の実行を通して、タスクの 80.48% は最初のモデルだけで完了し、19.52%(約 5 件に 1 件)はより高性能なモデルに引き継がれました。

すべての実行を通して、タスクの 80.48% は最初のモデルで完了しました。残りの 19.52%、約 5 件に 1 件は、途中でより高性能なモデルに引き継がれました。

今回の DeepSWE の実行では、引き継がれたタスクには共通点がありました。最初から最後まで正しく仕上げるのが難しい変更だったことです。たとえば、型や API から CLI や設定まで、多くの層に同時に触れる機能や、保存された状態やキャッシュ、処理の順序に左右される振る舞いです。小さく局所的な変更で引き継ぎが必要になることはまれでしたが、大きな変更が必ず引き継ぎを必要としたわけでもありません。分かれ目になったのは、注意深い設計や、コードの複数の部分のあいだで整合性を保つことが、作業のどれだけを占めていたかでした。

引き継ぎが起きたタイミングにも、同じくらいはっきりした傾向がありました。これらのタスクでは、最初のモデルはほぼ必ず、序盤の手順を自力でこなしていました。コードを書き、多くの場合はビルドとテストを通すところまで進めています。引き継ぎは、そのあとの検証と統合の段階で起きる傾向がありました。最初のモデルが、変更したコード全体ですべての要件が満たされていることを示そうとしている段階で、セッションが効率よく進まなくなった兆しをチェックが見つけたのです。こうしたことは、どれも依頼の内容からは分かりませんでした。チェックが見守り続け、セッションが必要とするどの時点でも引き継ぎが起こりうるので、カスケードは作業がいつ難しくなるかを前もって知る必要がありません。

Auto がクレジット倍率 1x のまま複雑な作業を高い品質でこなせるのは、これが理由の 1 つです。ほとんどのセッションは最初のモデルで完了し、より高性能なモデルが引き継ぐのは作業上必要なときだけです。

ベンチマークの数値についての注意

これらの数値は、社内の評価用ベンチマークの、ある特定の実行で得られたものです。本番環境での見込みではなく、お客様ごとの実際のワークロードでの結果は異なります。

引き継ぎの割合はタスク全体の平均です。セッションがどれくらいの頻度で引き継がれるかは作業によるので、個々のセッションでは異なります。引き継ぎはユーザーには見えません。引き継ぎが起きていることを意識しなくても、品質の面での効果を得られます。

DeepSWE の数値は社内のベンチマーク用の実行環境(ハーネス)で測ったもので、公開されている DeepSWE のリーダーボードの公式の設定と同じではありません。そのため、割合を公開のリーダーボードの数値と比べることはできません。

試してみる

モデルカスケードは Auto のしくみの一部で、効率の面での利点はすべての Kiro のお客様が利用できます。次にセッションを始めるときは、Kiro で Auto を選んでください。Auto とモデルの選択のしくみについては、ドキュメントのモデルの概要をご覧ください。

原文の著者

Vijay Lingam(Applied Science)、Mayank Gupta(Applied Science)、Sudipto Nandi(Engineering)、Neil Kulkarni(Engineering)、Jack Wang(Engineering)、Sai Srinivas Somarouthu(Engineering)

翻訳者について