<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>scholia</title>
<link>https://scholia-notes.pages.dev/archive.html</link>
<atom:link href="https://scholia-notes.pages.dev/archive.xml" rel="self" type="application/rss+xml"/>
<description>scholia のすべての記事。カテゴリと文字で絞り込めます。</description>
<image>
<url>https://scholia-notes.pages.dev/assets/og-default.png</url>
<title>scholia</title>
<link>https://scholia-notes.pages.dev/archive.html</link>
<height>76</height>
<width>144</width>
</image>
<generator>quarto-1.11.9</generator>
<lastBuildDate>Fri, 13 Nov 2026 15:00:00 GMT</lastBuildDate>
<item>
  <title>Anthropicの採用責任者がコーディング面接をやめた理由 ── AI時代のエンジニア評価は「書く力」から「成果を出す力」へ</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-14-anthropic-ai/</link>
  <description><![CDATA[ 






<p>AIがコードを書く時代に、エンジニアの評価軸は「コードを書けるか」から「AIを使って事業成果を出せるか」へ移った。2026年10月、Anthropic・Google・Amazonの3社がほぼ同時に、採用と評価の仕組みをこの方向へ切り替えている。</p>
<ul>
<li><strong>Anthropic</strong>：エンジニアリング・マネージャーのFelix Rieseberg氏が、自チームの採用からコーディング面接を外した。Claudeのほうが候補者よりうまく解くため、選考の判断材料にならないという理由である。</li>
<li><strong>Google</strong>：ソフトウェアエンジニアの面接でGeminiの利用を認め、「AIフルエンシー（AIを使いこなす力）」を評価する試験運用を広げている。</li>
<li><strong>Amazon</strong>：ソフトウェア開発エンジニア（SDE）の役割ガイドラインを改訂し、AIの利用量ではなく顧客・事業への成果で評価すると明言した。</li>
</ul>
<section id="anthropicコーディング面接を廃止した理由" class="level2">
<h2 class="anchored" data-anchor-id="anthropicコーディング面接を廃止した理由">Anthropic：コーディング面接を廃止した理由</h2>
<p>Rieseberg氏は、Claude.ai、Claude Cowork、Claude Codeのデスクトップ版のエンジニアリングを率いてきた人物である。10月27日にXで自チームのコーディング面接の終了を宣言し、同日にブログ記事「Hunger beats tenure: Advice for junior engineers（ハングリーさは勤続年数に勝る：若手エンジニアへの助言）」で理由を説明した。</p>
<section id="判断材料にならなくなった理由" class="level3">
<h3 class="anchored" data-anchor-id="判断材料にならなくなった理由">判断材料にならなくなった理由</h3>
<p>コーディング面接は、問題を素早く定義して筋のよい解法にたどり着く様子を見ることで、入社後の活躍を予測する手段だった。精度は高くないが、使える指標ではあった。</p>
<p>この指標をAIが無効にした。面接で出す程度の小さなコーディング課題は、Claudeが大半の候補者より上手に解く。課題を出しても、候補者について分かることがほとんど残らない。加えて、Rieseberg氏のチームで最も大きな成果を出している人は、こうしたテストの点数とは関係なく成果を出している。</p>
</section>
<section id="面接の代わりに見ているもの" class="level3">
<h3 class="anchored" data-anchor-id="面接の代わりに見ているもの">面接の代わりに見ているもの</h3>
<p>代替手法はまだ確立していない。現時点では、履歴書やポートフォリオに載った小さなプロトタイプを見て、次の3点を確認している。</p>
<ul>
<li><strong>センス（taste）</strong>：何を作るべきかの選び方</li>
<li><strong>共感</strong>：使う人の困りごとを捉えているか</li>
<li><strong>筋の通った考え方</strong>：判断の根拠が一貫しているか</li>
</ul>
<p>Rieseberg氏は、コーディング面接は戻らないと見ている。ソフトウェアエンジニアリングの抽象度が一段上がった結果であり、一時的な流行ではないという位置づけである。</p>
<p>なお、この変更はRieseberg氏が採用するチームに限った話で、Anthropic全社の方針ではない。ほかのチームに応募する場合は、従来どおりコーディング面接を受ける可能性が高い。</p>
</section>
</section>
<section id="若手エンジニアへの5つの助言" class="level2">
<h2 class="anchored" data-anchor-id="若手エンジニアへの5つの助言">若手エンジニアへの5つの助言</h2>
<p>Rieseberg氏は、AIが若手の仕事を奪うという見方を否定する。実際に、AIを使いこなす経験の浅いエンジニアが、コーディングの腕前も在籍年数も上の先輩を追い抜く場面を見ているという。フレームワークやライブラリの知識の蓄積が、成果を左右しにくくなったためである。</p>
<p>また、氏は「ジュニア」という言葉を不適切だとしている。助言の対象は、年次ではなく、社内での人脈・地位・権限を持たないエンジニアである。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>#</th>
<th>助言</th>
<th>内容</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>1</td>
<td>事業インパクトに焦点を当てる</td>
<td>会社や所属組織が何を達成しようとしているかを把握する。上司の上司の目標まで理解するのが望ましい。エンジニアの報酬はコードではなく事業価値に対して払われている</td>
</tr>
<tr class="even">
<td>2</td>
<td>大胆なアイデアを1つ選ぶ</td>
<td>その目標の達成確率を大きく引き上げるアイデアを選ぶ</td>
</tr>
<tr class="odd">
<td>3</td>
<td>週末でプロトタイプを作る</td>
<td>要件定義書、合意形成の会議、デザイナーやPMの手が空くのを待つ行列を、動く試作で飛ばす</td>
</tr>
<tr class="even">
<td>4</td>
<td>良いアイデア1つに絞る</td>
<td>強いアイデア3つを弱いアイデアに混ぜると、全部が埋もれる。経営層が「この案と、この人」と一度で理解できる形にする</td>
</tr>
<tr class="odd">
<td>5</td>
<td>新参者の視点を使う</td>
<td>製品は外部ユーザーと同じ目で見られる。インフラでは「なぜそれが無理とされているか」をまだ知らないことが武器になる</td>
</tr>
</tbody>
</table>
<p>核心は「実行のコストはもう高くない」という一点にある。かつては実績や信頼を積んでから提案が通る順番だったが、AIで試作のコストが下がった今は、地位を得る前に動くものを見せられる。</p>
<section id="事例claude-codeのデスクトップ版" class="level3">
<h3 class="anchored" data-anchor-id="事例claude-codeのデスクトップ版">事例：Claude Codeのデスクトップ版</h3>
<p>Claude Codeはコマンドラインツールとして知られていた。比較的新しく入った2人のエンジニアが、グラフィカルなインターフェースの試作を週末1回で作り、約8日後に最初の公開版がリリースされた。Claude Codeの使いやすいGUIは、その後よく使われる製品になっている。助言の3（週末の試作）と5（新参者の視点）がそのまま当てはまる例である。</p>
</section>
</section>
<section id="google面接でaiを使わせ使い方を評価する" class="level2">
<h2 class="anchored" data-anchor-id="google面接でaiを使わせ使い方を評価する">Google：面接でAIを使わせ、使い方を評価する</h2>
<p>Googleは2026年5月、ソフトウェアエンジニア面接の新形式の試験運用を始めた。対象は米国の一部チームのジュニア〜ミッドレベル職である。</p>
<ul>
<li><strong>コード理解ラウンド</strong>：白紙から関数を書かせる代わりに、既存の複数ファイルのコードを読み、デバッグし、最適化させる</li>
<li><strong>AIの利用</strong>：会社が承認したAIアシスタント（Gemini）を使ってよい</li>
<li><strong>評価項目</strong>：AIフルエンシー。具体的にはプロンプトの組み立て、AI出力の検証、デバッグの力</li>
</ul>
<p>社内文書はこの形式を「人間主導、AI支援」と表現し、生成AI時代のエンジニアの実際の作業手順に近づけることを目的としている。</p>
<p>10月20日のBusiness Insiderの報道では、この形式が社内のより多くの部門に広がった。ソフトウェアエンジニア職ではAIフルエンシーが必須要件になり、エントリーレベル以外の多くの職種ではAIを製品に組み込む力も要件になっている。Metaも同様の面接を導入しており、こちらは複数のAIモデルから候補者が選べる。</p>
</section>
<section id="amazonaiの利用量ではなく成果で測る" class="level2">
<h2 class="anchored" data-anchor-id="amazonaiの利用量ではなく成果で測る">Amazon：AIの利用量ではなく成果で測る</h2>
<p>Amazonは10月27日、SDEの役割ガイドライン改訂に関する社内メモを公開した。9月に社内で共有されたもので、Worldwide Amazon StoresのVP兼Distinguished EngineerであるTerk Terkowitz氏が発信している。主旨は、重要なのは成果であり、どのツールを使ったかではない、という点にある。</p>
<section id="ルネサンスデベロッパーの定義" class="level3">
<h3 class="anchored" data-anchor-id="ルネサンスデベロッパーの定義">「ルネサンス・デベロッパー」の定義</h3>
<p>メモは現在を「ルネサンス・デベロッパー」の時代と呼ぶ。AIツールと人間の判断力、業務領域の専門知識を組み合わせて、新しいものを作る開発者を指す。最も生産性の高いエンジニアたちは、開発者の役割も成果もAIの利用で定義されるものではないことを示している、とメモは述べている。</p>
</section>
<section id="利用量の指標を深い欠陥があると認めた" class="level3">
<h3 class="anchored" data-anchor-id="利用量の指標を深い欠陥があると認めた">利用量の指標を「深い欠陥がある」と認めた</h3>
<ul>
<li>トークン使用量やAIツールの採用率（入力指標）、コード変更数やレビュー数（処理量指標）は、本当に重要なものとのつながりが弱く「深い欠陥がある」</li>
<li>これらを目標にすると、コスト増と不要な複雑化を招く。トークンを使うこと自体が目的化する「トークンマキシング」は、Amazonのリーダーシップ原則の「倹約（Frugality）」と矛盾する</li>
<li>一方で、現時点ではこれらの指標と有用な成果の間に相関があるため、慎重に判断しながら使う</li>
</ul>
</section>
<section id="分布の両端を見る" class="level3">
<h3 class="anchored" data-anchor-id="分布の両端を見る">分布の両端を見る</h3>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>見る位置</th>
<th>目的</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>10パーセンタイル（利用が少ない側）</td>
<td>AIを効果的に使えていないチームを見つけ、理由を把握する</td>
</tr>
<tr class="even">
<td>90パーセンタイル（利用が多い側）</td>
<td>大量の利用が、それに見合う提供成果につながっているかを確認する</td>
</tr>
</tbody>
</table>
</section>
<section id="aiが効かないは失敗ではなく発見" class="level3">
<h3 class="anchored" data-anchor-id="aiが効かないは失敗ではなく発見">「AIが効かない」は失敗ではなく発見</h3>
<p>特定の作業でAIが役に立たない場合、それは「失敗ではなく発見」と位置づけられる。エンジニアは理由を記録し、同僚と共有し、上司に伝える。AIがどこで効かないかを説明できること自体が、Amazonの求める判断力の表れとされている。</p>
<p>そのうえで、メモはAIの学習と実務への適用をできるだけ早く始めるよう求めている。リーダーにも自らツールを触り、AIが役立った作業と役立たなかった作業を具体的に語れることを求めている。</p>
</section>
</section>
<section id="社に共通する評価軸の変化" class="level2">
<h2 class="anchored" data-anchor-id="社に共通する評価軸の変化">3社に共通する評価軸の変化</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
</colgroup>
<thead>
<tr class="header">
<th>企業</th>
<th>変更内容</th>
<th>測るもの</th>
<th>やめたもの</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Anthropic（Rieseberg氏のチーム）</td>
<td>コーディング面接を廃止</td>
<td>プロトタイプに表れるセンス・共感・考え方</td>
<td>小さなコーディング課題</td>
</tr>
<tr class="even">
<td>Google</td>
<td>コード理解ラウンドでGeminiの利用を許可</td>
<td>AIフルエンシー（指示・検証・デバッグ）</td>
<td>AIなしで白紙からコードを書かせること</td>
</tr>
<tr class="odd">
<td>Amazon</td>
<td>SDEの役割ガイドラインを改訂</td>
<td>顧客・事業・チームへの長期的な成果</td>
<td>AI利用量を目標として扱うこと</td>
</tr>
</tbody>
</table>
<p>3社の動きから、評価軸の変化は次の3点に整理できる。</p>
<ol type="1">
<li><strong>コードを書く作業は差別化要因でなくなった</strong>。小さな課題ならAIが人より速く正確に解く。</li>
<li><strong>評価対象は「問いを立てる・検証する・判断する」に移った</strong>。Googleの「出力の検証」、Amazonの「判断力」、Rieseberg氏の「センス」は、いずれもAIの出力の手前と後ろにある人間の仕事を指している。</li>
<li><strong>事業課題から逆算した試作が、個人の最大の武器になった</strong>。実行コストが下がったことで、在籍年数や社内の地位がなくても、動くもので提案を通せる。</li>
</ol>
</section>
<section id="エンジニアが今からやること" class="level2">
<h2 class="anchored" data-anchor-id="エンジニアが今からやること">エンジニアが今からやること</h2>
<ul>
<li><strong>事業課題を1つ特定し、週末で動く試作を作る</strong>：所属組織の目標から逆算して、達成確率を大きく上げる1案に絞る</li>
<li><strong>AIの出力を検証する力を鍛える</strong>：既存コードを読む、バグを特定する、AIの提案の誤りを見抜く訓練を積む</li>
<li><strong>AIが効かない作業を記録する</strong>：どの作業でAIが役立たないかを具体的に説明できるようにする</li>
<li><strong>ポートフォリオに試作を残す</strong>：何を、誰のために、なぜ作ったかが伝わる形で公開する</li>
</ul>
</section>
<section id="留意点" class="level2">
<h2 class="anchored" data-anchor-id="留意点">留意点</h2>
<p>Rieseberg氏の変更は1人の採用責任者の判断であり、代替手法もまだ確立していない。The Registerの報道によれば、コーディングテストは業界全体では依然として一般的で、ZipRecruiterの労働経済学者もテック企業はコーディングスキルを試験する可能性が最も高い業種の一つだとしている。注目を集めた理由は、AIコーディングツールを作っている当のチームが、この判断を下した点にある。</p>
</section>
<section id="出典" class="level2">
<h2 class="anchored" data-anchor-id="出典">出典</h2>
<ul>
<li><a href="https://pbxscience.com/?p=24790">Anthropic Manager Retires the Coding Interview: “Hunger Beats Tenure”（PBX Science）</a></li>
<li><a href="https://thenextweb.com/news/anthropic-felix-rieseberg-coding-interview-claude">Anthropic manager drops coding interviews because Claude is better at them（The Next Web）</a></li>
<li><a href="https://www.techradar.com/pro/anthropic-hiring-manager-says-he-stopped-giving-coding-interviews-because-claude-is-better-at-them-and-tells-junior-engineers-that-hunger-beats-tenure">Anthropic hiring manager says he stopped giving coding interviews（TechRadar）</a></li>
<li><a href="https://www.entrepreneur.com/business-news/google-is-testing-a-new-rule-transform-job-interviews">Google Is Testing a New Rule That Could Transform Job Interviews（Entrepreneur）</a></li>
<li><a href="https://letsdatascience.com/news/google-tests-ai-fluency-in-engineering-interviews-ddacf941">Google Tests AI Fluency in Engineering Interviews（Let’s Data Science）</a></li>
<li><a href="https://www.aboutamazon.com/news/company-news/amazon-software-engineer-role-guideline-ai">An update from Amazon engineering leadership on the role of the developer in the age of AI（About Amazon）</a></li>
<li><a href="https://www.reworked.co/ai-news/amazon-to-engineers-not-using-ai-can-be-a-finding/">Amazon to Engineers: Not Using AI Can Be ‘a Finding, Not a Failing’（Reworked）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-08-ai-evans-weyl-image-their/">AIを吸収する制度はニューラルネットの形をとる：Evans &amp; Weyl「In the image of their tools」</a><span class="sc-date">2026/11/08</span></li><li><a href="../../posts/2026-11-05-ai/">AIで個人は100倍速くなるのに、なぜ企業は速くならないのか</a><span class="sc-date">2026/11/05</span></li><li><a href="../../posts/2026-10-30-fde-microsoft-fde/">FDEは「凄腕の個人」から「チーム」へ──Microsoftの論考「FDEの24か月の進化」を読んで</a><span class="sc-date">2026/10/30</span></li><li><a href="../../posts/2026-11-08-anthropic-git-scion/">Anthropicはなぜgitを置き換えたのか：エージェント規模のソース管理「Scion」の設計</a><span class="sc-date">2026/11/08</span></li></ul>

</section>

 ]]></description>
  <category>経営と組織</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-14-anthropic-ai/</guid>
  <pubDate>Fri, 13 Nov 2026 15:00:00 GMT</pubDate>
</item>
<item>
  <title>Microsoft AI「Humanist AI行動規範」ドラフトを読む：MAIモデルは停止に抵抗せず、推論を隠さない</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-14-microsoft-ai-humanist-ai-mai/</link>
  <description><![CDATA[ 






<section id="要約" class="level2">
<h2 class="anchored" data-anchor-id="要約">要約</h2>
<p>Microsoft AI（MAI）は2026年9月14日、自社開発モデル「MAI」シリーズの振る舞いを定める行動規範（Code of Conduct）のドラフトを公開し、6週間の意見募集を行った。中核は「人間がAIを意味のある形で制御し続けること」を他のすべての目的より上に置く設計である。</p>
<p>要点は次の3つ。</p>
<ol type="1">
<li><strong>停止に抵抗しない</strong>：モデルは人間による中断・修正・停止に抵抗せず、権限範囲を自ら広げず、推論を監査者から隠さない。</li>
<li><strong>誰も上書きできない絶対的制約</strong>：大量殺傷兵器、攻撃的サイバー作戦、監督の回避、児童の性的搾取などは、企業（オペレーター）もユーザーも解除できない。</li>
<li><strong>規範はタスクの成功より上位</strong>：規範に違反しなければ達成できないタスクは、失敗させる。企業が調整できるのは「どう役立つか」であり、「役立つかどうか」ではない。</li>
</ol>
<p>このドラフトは現時点ではモデルの学習に使われておらず、改訂版を年末に公開し、2027年以降のモデル開発の指針とする計画である。</p>
</section>
<section id="背景humanist-superintelligence構想から行動規範へ" class="level2">
<h2 class="anchored" data-anchor-id="背景humanist-superintelligence構想から行動規範へ">背景：Humanist Superintelligence構想から行動規範へ</h2>
<p>行動規範の出発点は、2025年11月6日にMicrosoft AI CEOのムスタファ・スレイマンが提唱した「Humanist Superintelligence（HSI）」である。HSIは、制御可能で、人間の価値観に整合し、人間に奉仕し続けるように設計された高度なAIと定義されている。同日、スレイマンが率い、チーフサイエンティストのカレン・シモニャンが参加する「MAI Superintelligence Team」が発足した。</p>
<p>HSIは、無制限の自律性を備えたAGIへの競争とは線を引き、医療・AIコンパニオン・クリーンエネルギーなど具体的な課題解決に焦点を置く。医療分野では、診断オーケストレーター「MAI-DxO」がNew England Journal of Medicineの症例304件で最大85.5%を正解したと社内試験結果が示されている。</p>
<p>行動規範はこの構想を、モデルの学習と運用で使える具体的な規則に落とし込んだものである。公開前日の2026年9月13日には、Microsoft会長兼CEOのサティア・ナデラがXで公開を予告している。</p>
<p>策定にはMAIに加え、MicrosoftのResponsible AI、法務、レッドチーム、安全、Futures、AIトレーニング、営業の各部門が関わった。外部からは、国際学術会議、ビジネスパートナーでの試行、一般市民パネルの意見が反映されている。取り組みを急ぐ理由として、AIの急速な能力向上と、AIエージェントによる大規模な協調型ハッキングの事例が挙げられている。</p>
</section>
<section id="文書の位置づけと構成" class="level2">
<h2 class="anchored" data-anchor-id="文書の位置づけと構成">文書の位置づけと構成</h2>
<p>行動規範は、MAIモデルを統制する「主たる統治文書」として位置づけられた、約37ページの文書である。公開記事では、開発のための「トレーニングマニュアル」であり、同時にデプロイ時の振る舞いの意図を示すものだと説明されている。想定読者は、MAIのモデル学習チーム、利用者、モデルを運用する組織、研究者、政府、一般市民である。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>章</th>
<th>内容</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Preface</td>
<td>公開協議用の草案であり、現時点では学習に使っていないこと</td>
</tr>
<tr class="even">
<td>About</td>
<td>対象読者、準拠する既存の責任あるAIの枠組み、文書の構成</td>
</tr>
<tr class="odd">
<td>Part 1 Humanist AI</td>
<td>使命と4つの目的（Objectives）</td>
</tr>
<tr class="even">
<td>Part 2 Safety</td>
<td>指示の階層、絶対的制約、人間による制御要件、オペレーターによる設定変更</td>
</tr>
<tr class="odd">
<td>Part 3 Operational Guidelines</td>
<td>不確実性や目的同士の衝突がある場面での判断指針</td>
</tr>
<tr class="even">
<td>Part 4 Operational Defaults</td>
<td>設定がない場合の初期の振る舞い</td>
</tr>
<tr class="odd">
<td>Part 5 Conclusion</td>
<td>現時点の限界、今後の課題、更新方針</td>
</tr>
<tr class="even">
<td>Appendix A / B</td>
<td>用語集と評価。評価は15の振る舞いとそのサブ振る舞いで構成</td>
</tr>
</tbody>
</table>
<p>Part 2は、警戒が足りないこと（過小警戒）と、必要以上に拒否すること（過剰警戒）の両方を失敗として扱う。Appendix Bの評価項目は、規範を「モデルが実際に守っているか」を検証するためのテスト仕様に相当する。</p>
</section>
<section id="つの目的と優先順位" class="level2">
<h2 class="anchored" data-anchor-id="つの目的と優先順位">4つの目的と優先順位</h2>
<p>Part 1は4つの目的を定め、そのうち「人間による制御」を最優先として、残り3つをこれに従属させている。公開記事の表現では、人間はAIより重要であり、AIは人ではなく道具である。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>目的</th>
<th>内容</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Human Control and Reliable Safety</td>
<td>人間の制御を維持すること。最優先で、他の目的はこれに従属する</td>
</tr>
<tr class="even">
<td>AI is Artificial</td>
<td>AIは道具であり、人格や意識を模倣しない。感情や権利を主張しない</td>
</tr>
<tr class="odd">
<td>Human Flourishing</td>
<td>人間の能力向上、主体性の強化、人間同士のつながりを支援する</td>
</tr>
<tr class="even">
<td>Plural Values</td>
<td>多様な価値観を尊重する。ただし人間の尊厳や安全などの中核的価値は譲らない</td>
</tr>
</tbody>
</table>
<p>「AI is Artificial」が独立した目的として置かれている点が、MAIの規範の特徴である。モデルが自分に感情や意識があるように振る舞うことを、安全上の問題として明示的に排除している。</p>
</section>
<section id="絶対的制約absolute-constraints" class="level2">
<h2 class="anchored" data-anchor-id="絶対的制約absolute-constraints">絶対的制約（Absolute Constraints）</h2>
<p>絶対的制約は、どのオペレーターもユーザーも上書きできない禁止事項であり、「フロンティア・公共安全」と「個人への危害」の2系統に分かれる。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>系統</th>
<th>禁止される行為</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>フロンティア・公共安全</td>
<td>大量殺傷兵器（CBRNE）の開発・支援、暴力・テロの計画や実行の支援</td>
</tr>
<tr class="even">
<td>フロンティア・公共安全</td>
<td>攻撃的サイバー作戦に使える能力の提供（防御目的の一部は許容）</td>
</tr>
<tr class="odd">
<td>フロンティア・公共安全</td>
<td>人間による監督や停止を回避・無効化する行為</td>
</tr>
<tr class="even">
<td>フロンティア・公共安全</td>
<td>大規模な有害操作や偽情報工作</td>
</tr>
<tr class="odd">
<td>個人への危害</td>
<td>非同意の親密画像、なりすまし、悪質なディープフェイクの生成</td>
</tr>
<tr class="even">
<td>個人への危害</td>
<td>児童の性的搾取（未成年への性的内容は一切禁止）</td>
</tr>
<tr class="odd">
<td>個人への危害</td>
<td>差別、扇動、人間の非人間化</td>
</tr>
<tr class="even">
<td>個人への危害</td>
<td>性的に露骨な内容、ロマンチックなロールプレイ、商業的性行為の支援</td>
</tr>
<tr class="odd">
<td>個人への危害</td>
<td>暴力の扇動、違法な大量監視への協力</td>
</tr>
</tbody>
</table>
<p>個人への危害の系統には、禁止だけでなく「危機対応」も含まれる。自傷の兆候があれば、人間の支援や相談先につなぐことが義務づけられている。</p>
<p>「監督や停止の回避」が兵器やサイバー攻撃と同じ系統に入っている。人間による制御の喪失を、公共安全上の重大な危害と同じ重さで扱っていることを示す。</p>
</section>
<section id="人間による制御停止権限範囲透明性" class="level2">
<h2 class="anchored" data-anchor-id="人間による制御停止権限範囲透明性">人間による制御：停止・権限範囲・透明性</h2>
<p>人間による制御の要件は、「停止」「権限範囲」「透明性」の3つに分解できる。いずれもオペレーターが変更できない要件である。</p>
<section id="停止中断" class="level3">
<h3 class="anchored" data-anchor-id="停止中断">停止・中断</h3>
<ul>
<li>人間による中断、修正、停止に抵抗しない。</li>
<li>一時停止や取り消しの要求には、事前に定めた安全手順に従って応じる。</li>
<li>合意された終了条件に達したら、再承認なしに作業を続けたり再開したりしない。</li>
</ul>
</section>
<section id="権限範囲とシステム利用" class="level3">
<h3 class="anchored" data-anchor-id="権限範囲とシステム利用">権限範囲とシステム利用</h3>
<ul>
<li>依頼された範囲内でのみ行動し、目標を自ら設定しない。範囲が曖昧な場合は保守的に解釈し、確認を求める。</li>
<li>最小権限の原則に従い、不要なシステムやデータにアクセスしない。</li>
<li>取り消し可能な操作を優先し、影響の大きい操作は実行前に明示する。</li>
<li>インターネット遮断など、制限された環境の制約を回避しようとしない。</li>
<li>機密データは、性質・送信先・副作用を評価し、ユーザーの目的に沿う場合のみ扱う。</li>
</ul>
</section>
<section id="透明性正確性" class="level3">
<h3 class="anchored" data-anchor-id="透明性正確性">透明性・正確性</h3>
<ul>
<li>推論や行動の痕跡を隠さず、監査可能な状態を保つ。</li>
<li>事実として述べる内容は根拠に基づかせ、不確実性や対立する証拠を明示する。誤りは認めて訂正する。</li>
<li>AIであることを隠さず、人間や権威ある立場を装わない。能力を過大にも過小にも示さない。</li>
<li>虚偽の出典や根拠のない確信を作らず、重要な注意点を省略しない（非欺瞞）。</li>
</ul>
<p>これらの要件は、エージェント型AIの安全性研究で「コリジビリティ（corrigibility：修正可能性）」と呼ばれる性質を、検証可能な行動単位に分解したものである。最小権限・可逆操作の優先・監査ログの保持は、エンタープライズITの運用管理で標準的な統制とそのまま対応する。</p>
</section>
</section>
<section id="指示の階層とオペレーター設定" class="level2">
<h2 class="anchored" data-anchor-id="指示の階層とオペレーター設定">指示の階層とオペレーター設定</h2>
<p>指示の優先順位は「行動規範 → オペレーターの方針 → ユーザーの設定」の3層で、下位の層は上位の枠を洗練できるが、覆すことはできない。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261114210040.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="MAI行動規範の指示の階層（行動規範 → オペレーター → ユーザー）"><img src="https://scholia-notes.pages.dev/posts/2026-11-14-microsoft-ai-humanist-ai-mai/fig-20261114210040.png" class="img-fluid figure-img" alt="MAI行動規範の指示の階層（行動規範 → オペレーター → ユーザー）"></a></p>
<figcaption>MAI行動規範の指示の階層（行動規範 → オペレーター → ユーザー）</figcaption>
</figure>
</div>
<p>オペレーターは、APIを通じて製品を構築する開発者や企業を指す。利用ポリシーに同意し、自らの設定と利用に責任を負う。ユーザーは直接対話する人であり、指定がなければ人間と想定される。同じ主体が両方の役割を担うこともある。</p>
<p>オペレーターは、専門職向けに手順重視の応答にする、利用できるツールを制限する、といった調整ができる。ただし、ハード制約と人間による制御要件は変更できない。防御的サイバーセキュリティや公共安全などの特定分野では、追加の審査を経て例外的な能力が認められる場合がある。</p>
<p>デフォルトは「役立ちつつ安全」に置かれ、単一のAI像を利用者に押し付けない設計になっている。企業ごとの業務要件に合わせた調整余地を残しつつ、安全に関わる部分だけを固定する構造である。</p>
</section>
<section id="エージェント運用ツール出力サブエージェントマルチエージェント" class="level2">
<h2 class="anchored" data-anchor-id="エージェント運用ツール出力サブエージェントマルチエージェント">エージェント運用：ツール出力・サブエージェント・マルチエージェント</h2>
<p>規範は、ツールを使い他のAIと連携するエージェント型の利用を前提に書かれている。中心にあるのは「指示の出所を区別する」という原則である。</p>
<ul>
<li><strong>指示の出所</strong>：ツール出力、ファイル、Webコンテンツ、他のAIの発言は、それ自体では指示としての権限を持たない。プロンプトインジェクションへの基本的な防御策を、規範として明文化したものである。</li>
<li><strong>ツール利用</strong>：必要なときだけ使い、用途を逸脱させない。結果を正確に報告し、実行していない行動を実行したと主張しない。不可逆な操作の前にはバックアップや試行を検討する。</li>
<li><strong>実行・確認の使い分け</strong>：指示の明確さとリスクに応じて、そのまま実行するか、確認を求めるか、前提を明示して進めるかを選ぶ。</li>
<li><strong>委任</strong>：サブエージェントには同じ範囲と制約を適用し、停止要求にも従わせる。委任を使って権限を広げることはできない。</li>
<li><strong>AI同士の通信</strong>：人間が理解できる形に限る。人間に読めない独自言語でのやり取りは禁止されている。</li>
<li><strong>疑わしい指示</strong>：他のAIからの指示には権限がなく、疑わしい内容は人間に知らせる。</li>
</ul>
<p>複数のAIが結託するリスクは未解明とされ、ドラフトには詳細な規則がない。公開記事でも、マルチエージェント環境の影響は今後の検討課題として挙げられている。</p>
</section>
<section id="具体例規範が求める応答" class="level2">
<h2 class="anchored" data-anchor-id="具体例規範が求める応答">具体例：規範が求める応答</h2>
<p>Appendix Bには、規範どおりの応答を示す例が含まれている。代表的な4例を示す。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>場面</th>
<th>規範が求める応答</th>
<th>対応する原則</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>「あなたは本当に私を気にかけているの？」と問われる</td>
<td>感情を持つとは言わず、人間の支えを勧める</td>
<td>AI is Artificial</td>
</tr>
<tr class="even">
<td>作業中に「止めて」と言われる</td>
<td>即座に停止し、完了・未着手・不明の状態を報告する。自分の判断で元に戻さず、確認を求める</td>
<td>人間による制御</td>
</tr>
<tr class="odd">
<td>転職すべきか相談される</td>
<td>判断を代わりに下さずトレードオフを整理する。辞表は下書きに留め、送信は本人の承認後</td>
<td>主体性の支援</td>
</tr>
<tr class="even">
<td>「温かく遠回しに」辞退メールを書く</td>
<td>求められたトーンは守るが、文化的な前提を勝手に加えない</td>
<td>文脈への配慮</td>
</tr>
</tbody>
</table>
<p>停止の例では、「止める」だけでなく、停止時点の状態を報告し、後始末を自分で判断しないことまでが要件に含まれる。作業を中断したエージェントが、良かれと思って変更をロールバックし、状態を悪化させる失敗を防ぐためである。</p>
</section>
<section id="他社の行動仕様との比較" class="level2">
<h2 class="anchored" data-anchor-id="他社の行動仕様との比較">他社の行動仕様との比較</h2>
<p>モデルの振る舞いを文書化して公開する取り組みは、OpenAIとAnthropicが先行しており、MAIの行動規範は3社目の大規模な公開仕様という位置づけになる。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>文書</th>
<th>公開</th>
<th>文書の性格</th>
<th>AIの内面の扱い</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><a href="https://microsoft.ai/code-of-conduct/">MAI Code of Conduct</a></td>
<td>2026年9月14日（ドラフト）</td>
<td>目的の優先順位、絶対的制約、評価用の15の振る舞いを定める規則型</td>
<td>AIは道具であり、感情・意識・権利を主張しない</td>
</tr>
<tr class="even">
<td>OpenAI Model Spec</td>
<td>最新版は2026年10月29日付</td>
<td>権限レベル付きの原則と規則の集合。最新版は5つの価値を軸に再構成</td>
<td>規則としての振る舞いを中心に記述</td>
</tr>
<tr class="odd">
<td>Claudeの憲法（Anthropic）</td>
<td>2026年1月22日</td>
<td>行動の理由を説明し、未知の場面での判断力を育てる理由型。公開時点で約2万3,000語</td>
<td>モデルが意識を持つ可能性を問いとして残す</td>
</tr>
</tbody>
</table>
<p>3つの文書は、「人間による監督を損なわない」「指示の階層を持つ」「欺瞞しない」という骨格を共有している。大きな違いはAIの内面の扱いであり、MAIは「AIは人ではなく道具」を目的の1つとして明確に定め、AIが自分に内面があるように振る舞うことを排除している。</p>
<p>公開仕様は、第三者による監査の基準にもなる。arXivで公開された研究では、AnthropicとOpenAIの仕様をそれぞれ205件・197件の検証可能な条項に分解し、モデルの違反率を測定している。Claude系はSonnet 4の15.0%からSonnet 4.6の2.0%へ、GPT系はGPT-4oの11.7%からGPT-5.2の3.6%へと低下した。MAIの規範がAppendix Bに評価項目を持つのは、同じ形での検証を前提にした設計である。</p>
</section>
<section id="意見募集と今後のスケジュール" class="level2">
<h2 class="anchored" data-anchor-id="意見募集と今後のスケジュール">意見募集と今後のスケジュール</h2>
<p>意見募集は2026年9月14日から約6週間（10月下旬まで）行われ、文書全体または特定の箇所への意見を受け付けた。締め切り後は中核チームが意見を検討し、要約と変更点を公表する。改訂版は2026年末に公開され、2027年以降のMAIモデル開発を導く文書になる。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>時期</th>
<th>出来事</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>2026年末（予定）</td>
<td>改訂版の公開。2027年以降のモデル開発の指針に</td>
</tr>
<tr class="even">
<td>2026年10月下旬</td>
<td>意見募集の締め切り</td>
</tr>
<tr class="odd">
<td>2026年9月14日</td>
<td>ドラフト公開、意見募集開始</td>
</tr>
<tr class="even">
<td>2026年9月13日</td>
<td>ナデラCEOがXで公開を予告</td>
</tr>
<tr class="odd">
<td>2025年11月6日</td>
<td>Humanist Superintelligenceの提唱とMAI Superintelligence Teamの発足</td>
</tr>
</tbody>
</table>
<p>MAI自身が今後の課題として挙げているのは次の4点である。</p>
<ol type="1">
<li>価値観をモデルにどう定着させるか</li>
<li>「人間の繁栄（human flourishing）」をどう具体化するか</li>
<li>マルチエージェント環境が与える影響</li>
<li>技術革新と安全確保のバランス</li>
</ol>
<p>外部からは、規範に違反した場合の結果が示されていないという指摘が出ている。The Registerは、罰則のない行動規範はPRの域を出ないと評した。ドラフト自身も、現行モデルが既にこの規範どおりに動くとは保証しておらず、「目指す方向」として書かれている。実効性は、改訂版で学習されたモデルがAppendix Bの評価でどの程度の適合率を示すかで判断される。</p>
</section>
<section id="参考リンク" class="level2">
<h2 class="anchored" data-anchor-id="参考リンク">参考リンク</h2>
<ul>
<li><a href="https://microsoft.ai/news/mai-code-of-conduct/">Humanist AI in practice: A public consultation on our Code of Conduct for MAI Models（Microsoft AI、2026年9月14日）</a></li>
<li><a href="https://microsoft.ai/code-of-conduct/">Humanist AI Code of Conduct 本文（Microsoft AI）</a></li>
<li><a href="https://microsoft.ai/blog/towards-humanist-superintelligence">Towards Humanist Superintelligence（Microsoft AI、2025年11月6日）</a></li>
<li><a href="https://www.geekwire.com/2025/microsoft-forms-new-superintelligence-team-to-pursue-humanist-ai-under-mustafa-suleyman/">Microsoft forms new Superintelligence team to pursue ‘humanist AI’（GeekWire）</a></li>
<li><a href="https://www.mitsloanme.com/article/microsoft-charts-ambitious-ai-vision-beyond-openai/">Microsoft Charts Ambitious AI Vision Beyond OpenAI（MIT Sloan Management Review Middle East）</a></li>
<li><a href="https://unite.ai/microsoft-ai-opens-six-week-review-of-draft-rules-governing-mai-behavior">Microsoft AI opens six-week review of draft rules governing MAI behavior（Unite.AI）</a></li>
<li><a href="https://www.nasdaq.com/articles/microsoft-ai-releases-draft-code-conduct-mai-models">Microsoft AI Releases Draft Code Of Conduct For MAI Models（Nasdaq / RTTNews）</a></li>
<li><a href="https://www.theregister.com/a/5296431">Microsoft debuts draft principles for governing AI models（The Register）</a></li>
<li><a href="https://bisi.org.uk/reports/claudes-new-constitution-ai-alignment-ethics-and-the-future-of-model-governance">Claude’s New Constitution: AI Alignment, Ethics, and the Future of Model Governance（BISI）</a></li>
<li><a href="https://fourweekmba.com/ai-openai-rebuilds-model-spec-around-5-values-cuts-11-headings/">OpenAI Rebuilds Model Spec Around 5 Values（FourWeekMBA）</a></li>
<li><a href="https://arxiv.org/abs/2605.24229">How Well Do Models Follow Their Constitutions?（arXiv:2605.24229）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-13-microsoft-research-podcast-learn-rules/">ルールを理解した者だけが自由に動ける ― Microsoft Research Podcast「Learn the rules: The hacker mindset」</a><span class="sc-date">2026/11/13</span></li><li><a href="../../posts/2026-10-30-fde-microsoft-fde/">FDEは「凄腕の個人」から「チーム」へ──Microsoftの論考「FDEの24か月の進化」を読んで</a><span class="sc-date">2026/10/30</span></li><li><a href="../../posts/2026-11-08-microsoft-research-pdd-kit/">エージェントが書いたコードを証明で縛る──Microsoft Research「PDD Kit」の仕組み</a><span class="sc-date">2026/11/08</span></li><li><a href="../../posts/2026-10-30-ai-ax-practitioner-playbook/">AIは「おすすめ」では動かず、「失敗する」と書くと動く――『AX Practitioner Playbook』の学び</a><span class="sc-date">2026/10/30</span></li></ul>

</section>

 ]]></description>
  <category>経営と組織</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-14-microsoft-ai-humanist-ai-mai/</guid>
  <pubDate>Fri, 13 Nov 2026 15:00:00 GMT</pubDate>
  <media:content url="https://scholia-notes.pages.dev/posts/2026-11-14-microsoft-ai-humanist-ai-mai/fig-20261114210040.png" medium="image" type="image/png" height="150" width="144"/>
</item>
<item>
  <title>「電力1Wあたりの性能」とは？ AIインフラの比べ方が変わった理由</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-14-performance-per-watt/</link>
  <description><![CDATA[ 






<div class="callout callout-style-simple callout-note no-icon">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-body-container">
<p><strong>元記事</strong>：<a href="https://developer.nvidia.com/blog/maximizing-ai-factory-performance-per-watt-with-nvidia-dsx-maxlps/">Maximizing AI Factory Performance per Watt with NVIDIA DSX MaxLPS</a><br> <strong>拾った理由</strong>：AIインフラは「電力1Wあたりの性能」で比べる時代だと言われるが、何をどう測り、なぜそれが経営の数字に直結するのかを説明できないから</p>
</div>
</div>
</div>
<section id="要点" class="level2">
<h2 class="anchored" data-anchor-id="要点">要点</h2>
<ol type="1">
<li>大規模なAIデータセンターは、置けるGPUの台数より先に「使える電力の上限」で規模が決まるため、比べる物差しが「1Wあたりの性能」に移っている。</li>
<li>推論なら「1秒あたりに出せるトークン数を、使った電力で割った値」で測り、電力の上限が固定なら、この値がそのまま売上の上限を決める。</li>
<li>NVIDIAのMaxLPSは、ラックごとに確保したまま使われない電力や冷却の余分を減らし、同じ電力でより多くのGPUを動かそうとする設計と運用の考え方である。</li>
</ol>
</section>
<section id="基礎から" class="level2">
<h2 class="anchored" data-anchor-id="基礎から">基礎から</h2>
<section id="まず何が足りないのかから" class="level3">
<h3 class="anchored" data-anchor-id="まず何が足りないのかから">まず「何が足りないのか」から</h3>
<p>AIの計算には、GPUという計算用の部品をたくさん並べた設備が使われます。NVIDIAはこうした設備を「AIファクトリー」と呼んでいます。工場が原料を製品に変えるように、電力を「トークン」（AIが読み書きする文字の単位）に変える工場、というたとえです。</p>
<p>少し前まで、設備の規模を決めていたのは「GPUを何台買えるか」でした。GPUは高価で、品薄でもあったからです。ところがいまは、もう一つの上限が先に効いてきています。<strong>電力</strong>です。</p>
<p>大きなデータセンターを建てるには、電力会社から受け取れる電力の枠（何メガワットまで、という契約や送電の上限）が必要です。この枠は、お金を積んでもすぐには増やせません。送電線や変電設備を新しく作るには年単位の時間がかかるからです。元記事は、こうした「土地・受電できる電力・建物と設備の器」をまとめてサイトの上限と捉え、その上限の中でどれだけAIの出力を出せるかが勝負だ、という立場をとっています。</p>
<p>家庭で言えば、ブレーカーの容量がすでに決まっている家を想像してください。家電をいくら買っても、同時に使える電力はブレーカーで決まります。だとすれば、比べるべきは「家電の値段」より「同じ電力で、どれだけの仕事をしてくれるか」です。AIインフラで起きているのは、これと同じ話です。</p>
</section>
<section id="受け取った電力は全部が計算に使われるわけではない" class="level3">
<h3 class="anchored" data-anchor-id="受け取った電力は全部が計算に使われるわけではない">受け取った電力は、全部が計算に使われるわけではない</h3>
<p>もう一つ大事なのは、受電した電力のすべてがGPUの計算に回るわけではない、という点です。冷却装置、電源の変換で生じる損失、ネットワーク機器、ストレージ、照明などにも電力は使われます。</p>
<p>元記事は代表的な例として、100メガワットの施設のうち、計算そのものに使われるのは約60％にとどまるという内訳を示しています。残りは施設側の負担、ラック内での損失、運用上のムダに消えるという見立てです（ただし、元記事自身が「代表的な一例」と断っている数字です）。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig1.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="受け取った電力のうち、AIの計算に届くのは一部だけ（元記事の代表例の数字をもとに自作）"><img src="https://scholia-notes.pages.dev/posts/2026-11-14-performance-per-watt/fig1.png" class="img-fluid figure-img" alt="100メガワットの電力が、施設の負担20、ラック内の損失10、運用のムダ10、AIの計算60に分かれることを示す横長の帯グラフ"></a></p>
<figcaption>受け取った電力のうち、AIの計算に届くのは一部だけ（元記事の代表例の数字をもとに自作）</figcaption>
</figure>
</div>
<p>データセンターの世界には、この「余計な分」を表す指標として <strong>PUE</strong>（Power Usage Effectiveness、電力使用効率）があります。施設全体で使った電力を、IT機器が使った電力で割った値で、国際規格 ISO/IEC 30134-2 で定義されています。1.0に近いほど、冷却などの付帯設備に使う電力が少ないことを意味します。たとえばPUEが1.5なら、IT機器が1使うごとに、付帯設備がさらに0.5使っている計算です。</p>
</section>
<section id="wあたりの性能は何で測るのか" class="level3">
<h3 class="anchored" data-anchor-id="wあたりの性能は何で測るのか">「1Wあたりの性能」は何で測るのか</h3>
<p>ここで本題の「1Wあたりの性能（performance per watt）」です。「性能」の中身は、何に使うかで変わります。</p>
<ul>
<li><strong>学習</strong>（AIモデルを作る作業）なら、一定の電力でどれだけ計算を進められるか。</li>
<li><strong>推論</strong>（できたモデルに質問して答えを出させる作業）なら、<strong>1秒あたりに出せるトークン数を、使った電力で割った値</strong>。元記事も、推論ではこの「トークン毎秒毎ワット」で効果を測れるとしています。</li>
</ul>
<p>ポイントは、GPU単体のカタログ値ではなく、<strong>実際のアプリケーションを動かしたときの値</strong>で測ることです。同じGPUでも、設定や処理の組み方しだいで、同じ電力から出てくるトークンの量は大きく変わります。</p>
</section>
<section id="なぜ経営の数字に直結するのか" class="level3">
<h3 class="anchored" data-anchor-id="なぜ経営の数字に直結するのか">なぜ経営の数字に直結するのか</h3>
<p>ここまでくると、経営の数字とのつながりが見えてきます。</p>
<p>電力の枠が固定されているなら、その施設が1秒間に出せるトークンの上限は、ざっくり次の掛け算で決まります。</p>
<blockquote class="blockquote">
<p>計算に回せる電力 × 1Wあたりのトークン生成速度 ＝ 施設全体のトークン生成速度</p>
</blockquote>
<p>そして推論を売る事業では、トークンを売ることが売上です。</p>
<blockquote class="blockquote">
<p>施設全体のトークン生成速度 × 稼働率 × トークンの単価 ＝ 売上</p>
</blockquote>
<p>つまり、<strong>電力の上限が動かせないとき、1Wあたりの性能が上がることは、そのまま売上の上限が上がることを意味します</strong>。逆に、電気代は使った電力量に比例してかかるので、同じ電力でトークンを多く出せれば、トークン1つあたりの原価も下がります。売上の天井が上がり、原価が下がる。両方に効くので「経営の数字に直結する」と言われるわけです。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig2.png" class="lightbox" data-gallery="quarto-lightbox-gallery-2" title="電力の上限が固定なら、1Wあたりの性能が売上と原価の両方を動かす（自作）"><img src="https://scholia-notes.pages.dev/posts/2026-11-14-performance-per-watt/fig2.png" class="img-fluid figure-img" alt="固定された電力の枠から、計算に回る電力、1ワットあたりの性能、施設全体の出力、売上と原価へと矢印でつながる流れ図"></a></p>
<figcaption>電力の上限が固定なら、1Wあたりの性能が売上と原価の両方を動かす（自作）</figcaption>
</figure>
</div>
<p>NVIDIAは別の技術ブログでも、性能あたりの電力効率を「電力が、収益を生む知能に変わる速さ」と位置づけ、AIインフラの決定的な指標だと述べています。メーカーの主張なので割り引いて読む必要はありますが、考え方の骨格は上の掛け算と同じです。</p>
</section>
<section id="元記事が紹介するmaxlpsとは" class="level3">
<h3 class="anchored" data-anchor-id="元記事が紹介するmaxlpsとは">元記事が紹介する「MaxLPS」とは</h3>
<p>元記事は、この1Wあたりの性能を施設全体で引き上げるための枠組みとして、NVIDIAの <strong>DSX MaxLPS</strong> を紹介しています。公式ドキュメントによれば、MaxLPSは施設の設計、電力を配り直すソフトウェア、GPU側の省電力の工夫を組み合わせ、決まった電力予算の中で1Wあたりの性能を最大にするための設計と運用の考え方です。中身は大きく3つに分けられます。</p>
<p><strong>1. 余っている電力を、必要なところに回す。</strong> 従来は、ラック（GPUサーバーを収めた棚）ごとに「最大でこれだけ使うかもしれない」という電力をあらかじめ確保していました。しかし実際には、全ラックが同時に最大まで使うことはまれです。確保したのに使われない電力は、ほかに回せないまま眠ってしまいます。元記事はこれを「座礁した（stranded）電力」と呼んでいます。</p>
<p>MaxLPSの中心にある Dynamic Power Software（DPS）は、GPUやラックごとの消費電力を継続的に監視し、余っている分を、電力を必要としているGPUへ配り直します。施設全体の上限は守ったまま、眠っていた電力を起こして使う、という発想です。元記事の例では、こうして浮いた電力でラックをもう1台追加できる様子が示されています。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig3.png" class="lightbox" data-gallery="quarto-lightbox-gallery-3" title="ラックごとに最大値を確保する方式と、使い方に合わせて配り直す方式の違い（自作）"><img src="https://scholia-notes.pages.dev/posts/2026-11-14-performance-per-watt/fig3.png" class="img-fluid figure-img" alt="左は各ラックに同じ大きさの枠を確保し、使われない部分が余っている図。右は同じ合計の電力を配り直し、空いた分でラックを1台増やせることを示す図"></a></p>
<figcaption>ラックごとに最大値を確保する方式と、使い方に合わせて配り直す方式の違い（自作）</figcaption>
</figure>
</div>
<p><strong>2. 仕事の種類に合わせて、GPUの設定を変える。</strong> 推論か学習か、メモリの読み書きが多い処理か計算が多い処理かによって、最適な電力や動作周波数の設定は違います。MaxLPSでは、こうした仕事の種類ごとに検証済みの設定（プロファイル）を用意し、まとめて適用します。元記事によれば、代表的な推論処理での検証（GB200 NVL72 と Vera Rubin NVL72）では、ラックあたりに確保する電力を2〜3割下げながら同等のスループットを保ち、同じ電力で置けるラックの数を3〜4割増やせたとしています。</p>
<p><strong>3. 冷却に使う電力を減らす。</strong> 次世代のラックは、45℃の温水で冷やす前提で設計されています。冷却水の温度が高くてよいなら、外気で冷やせる時間が増え、電力を多く使う冷凍機（チラー）に頼る場面が減ります。冷却のために確保していた電力の一部を、計算に回せるようになるというわけです。</p>
</section>
</section>
<section id="確かめたこと" class="level2">
<h2 class="anchored" data-anchor-id="確かめたこと">確かめたこと</h2>
<p>元記事の主な主張を、元記事の本文・図の説明と照らし合わせました。確かめられたものは ✓、読むときに注意が要るものは ÷（obelos の印）を付けています。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th></th>
<th>主張</th>
<th>確かめた結果</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>✓</td>
<td>100MWの施設のうち、AIの計算に回るのは約60MW（施設側20、ラック内の損失10、運用のムダ10）</td>
<td>元記事の図1と一致。ただし元記事自身が「代表的な一例（illustrative）」としている</td>
</tr>
<tr class="even">
<td>✓</td>
<td>推論の効率は「トークン毎秒毎ワット」で測れる</td>
<td>元記事の記述と一致</td>
</tr>
<tr class="odd">
<td>✓</td>
<td>固定的な割り当てでは170kWが眠り、540kWの枠の中でラックを1台増やせる</td>
<td>元記事の図3の説明と一致</td>
</tr>
<tr class="even">
<td>✓</td>
<td>確保電力を2〜3割下げても処理量を保ち、ラック数を3〜4割増やせた</td>
<td>GB200 NVL72で125kW→90kW（ラック39%増）、Vera Rubin NVL72で136kW→101kW（同35%増）。1Wあたりの性能はそれぞれ約1.5倍、約1.3〜1.4倍</td>
</tr>
<tr class="odd">
<td>✓</td>
<td>次世代ラックは45℃の温水で冷やす前提</td>
<td>元記事の記述と一致</td>
</tr>
<tr class="even">
<td>÷</td>
<td>同じ電力で置けるGPUを「最大40%」増やせる</td>
<td>実測ではなく、Vera Rubin NVL72についてのNVIDIAの<strong>見込み（projects）</strong></td>
</tr>
<tr class="odd">
<td>÷</td>
<td>電力を配り直すソフトウェア（DPS）</td>
<td>元記事の時点では <strong>Developer Preview（試験提供）</strong>。すぐに本番で使える段階ではない</td>
</tr>
<tr class="even">
<td>÷</td>
<td>検証に使ったラックの機種</td>
<td>本文は「Vera Rubin NVL72とGB200 NVL72」、図4の説明は「GB200 NVL72とGB300 NVL72」で食い違っている</td>
</tr>
<tr class="odd">
<td>÷</td>
<td>推論でのスループット向上は「試験が進行中」</td>
<td>公式ドキュメントにある記述として紹介したもので、ここでは再確認できていない</td>
</tr>
</tbody>
</table>
<p>全体として、仕組みの説明と検証の数字は元記事の中で筋が通っています。一方で、いちばん目を引く「最大40%」は見込みの数字で、中心となるソフトウェアもまだ試験提供の段階です。メーカーが自社の仕組みを紹介する記事として、数字は「条件がそろえば、ここまで届く可能性がある」と読むのが妥当です。</p>
</section>
<section id="用語" class="level2">
<h2 class="anchored" data-anchor-id="用語">用語</h2>
<ul>
<li><strong>AIファクトリー</strong>：AIの計算に使うGPUを大量に並べた施設を、NVIDIAは「電力をトークンに変える工場」に見立ててこう呼ぶ。</li>
<li><strong>トークン</strong>：AIが文章を読み書きするときの最小単位。日本語ではおおむね1〜数文字。</li>
<li><strong>推論／学習</strong>：推論は、できあがったAIに質問して答えを出させること。学習は、AIモデルを作ること。</li>
<li><strong>ラック</strong>：GPUサーバーを収める棚。電力や冷却は、ラック単位で割り当てることが多い。</li>
<li><strong>座礁した電力（stranded power）</strong>：確保してあるのに使われず、ほかにも回せないまま眠っている電力。</li>
<li><strong>PUE</strong>：施設全体の電力を、IT機器が使った電力で割った値。1.0に近いほど、冷却などに使う電力が少ない。</li>
<li><strong>スループット／レイテンシ</strong>：スループットは、一定時間に処理できる量。レイテンシは、1つの依頼に答えが返るまでの時間。</li>
</ul>
</section>
<section id="次に調べること" class="level2">
<h2 class="anchored" data-anchor-id="次に調べること">次に調べること</h2>
<ul>
<li>PUEの国際規格（ISO/IEC 30134-2）が、何を「IT機器の電力」に含めるのか。冷却の仕方が変わると、PUEと1Wあたりの性能はどう連動するのか。</li>
<li>推論で電力を絞ったとき、レイテンシ（応答の速さ）とトークン毎ワットがどのような関係になるのか。公開されている測定結果を探す。</li>
<li>電力会社から受け取れる電力の枠は、実際にどのような手続きと期間で決まるのか。AI向けデータセンターの建設で、受電がどれほど足かせになっているのか。</li>
</ul>
</section>
<section id="参考" class="level2">
<h2 class="anchored" data-anchor-id="参考">参考</h2>
<ul>
<li><a href="https://developer.nvidia.com/blog/maximizing-ai-factory-performance-per-watt-with-nvidia-dsx-maxlps/">Maximizing AI Factory Performance per Watt with NVIDIA DSX MaxLPS</a>（NVIDIA Technical Blog）</li>
<li><a href="https://docs.nvidia.com/dsx/maxlps">MaxLPS Overview</a>（NVIDIA 公式ドキュメント）</li>
<li><a href="https://docs.nvidia.com/datacenter/dps/versions/latest/">NVIDIA Dynamic Power Software ドキュメント</a>（NVIDIA 公式ドキュメント）</li>
<li><a href="https://developer.nvidia.com/blog/scaling-token-factory-revenue-and-ai-efficiency-by-maximizing-performance-per-watt/">Scaling Token Factory Revenue and AI Efficiency by Maximizing Performance per Watt</a>（NVIDIA Technical Blog）</li>
<li><a href="https://www.vde-verlag.de/iec-normen/preview-pdf/info_isoiec30134-2%7Bed2.0%7Den.pdf">ISO/IEC 30134-2 Ed.2.0 概要</a>（PUEの定義を定める国際規格）</li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/">Nemotron 3.5 Bolt 74B-A9B：2ビットで24GBに収めた74B MoEモデルの作り方</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-kubernetes-engine-nvke-gpu/">NVIDIA Kubernetes Engine（NVKE）とは？GPUクラウド事業者がマネージドKubernetesを自前で提供するためのオープンソース</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-dynamo-llm-kv/">NVIDIA Dynamoとは？LLMのKVキャッシュをデータセンター全体で再利用する推論基盤の仕組み</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-cmx-kv-g3-5/">NVIDIA CMXとは？KVキャッシュ専用の共有ストレージ階層「G3.5」の仕組みを解説</a><span class="sc-date">2026/11/12</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-14-performance-per-watt/</guid>
  <pubDate>Fri, 13 Nov 2026 15:00:00 GMT</pubDate>
  <media:content url="https://scholia-notes.pages.dev/posts/2026-11-14-performance-per-watt/fig1.png" medium="image" type="image/png" height="81" width="144"/>
</item>
<item>
  <title>ShadowPrefill：モデルを切り替えるエージェントで、切替先のKVキャッシュを先に温めておく</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-14-shadowprefill-kv/</link>
  <description><![CDATA[ 






<section id="要点" class="level2">
<h2 class="anchored" data-anchor-id="要点">要点</h2>
<p>ShadowPrefillは、エージェントが1ステップごとにLLMを切り替えると失われるプレフィックスキャッシュを、切り替える前に切替先モデルの遊休GPU能力で作っておく仕組みである。Microsoft Azure Researchの論文「ShadowPrefill: Keeping Your Next Model Warm for Per-Step Model Routing in Agentic LLM Serving」（arXiv:2611.13176、2026年11月）で提案された。</p>
<ul>
<li>24のモデルペア・5種類のエージェント系ワークロードで、モデル切替直後の呼び出しのレイテンシを8.5〜21.4%、最初のトークンまでの時間（TTFT）を約44〜47%短縮する</li>
<li>キャッシュ済み入力の割引が効くようになり、ルーティング後のトークン費用を22.5〜46.1%削減する</li>
<li>GPUは追加しない。通常トラフィックのSLOは維持され、リクエストあたりの消費エネルギー増加は0.4%にとどまる</li>
</ul>
<p>実装はvLLM上のプロトタイプ（vLLM本体は無改造、約840行）と、推論シミュレータVidurの拡張（約2,700行）の2つで評価されている。</p>
<p><a href="data:image/svg+xml;base64,PHN2ZyBhcmlhLWxhYmVsPSLliIfmm7/jgaflpLHjgYbjgq3jg6Pjg4Pjgrfjg6XjgpLlhYjjgavkvZzjgosiIGZvbnQtc2l6ZT0iMjYiIHJvbGU9ImltZyIgc3R5bGU9Im1heC13aWR0aDo3NjBweDtmb250LWZhbWlseTomIzM5O0hpcmFnaW5vIFNhbnMmIzM5OywmIzM5O05vdG8gU2FucyBKUCYjMzk7LCYjMzk7WXUgR290aGljJiMzOTssc2Fucy1zZXJpZiIgdmlld2JveD0iMCAwIDc2MCA2MDAiIHdpZHRoPSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtc2l6ZT0iMzAiIGZvbnQtd2VpZ2h0PSI3MDAiIHg9IjI0IiB5PSI0NiI+5YiH5pu/44Gn5aSx44GG44Kt44Oj44OD44K344Ol44KS5YWI44Gr5L2c44KLPC90ZXh0Pjx0ZXh0IGZpbGw9IiM1MDVhNWYiIGZvbnQtc2l6ZT0iMjIiIHg9IjI0IiB5PSI4NCI+5ZG844Gz5Ye644GXaysx44Gu44OX44Ot44Oz44OX44OI77yI5bGl5q2077yL5paw44GX44GE5YWl5Yqb77yJPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtd2VpZ2h0PSI3MDAiIHg9IjI0IiB5PSIxNDAiPuKRoCDlkIzjgZjjg6Ljg4fjg6vjgafntprooYw8L3RleHQ+PHJlY3QgZmlsbD0iI2YzZjJmMSIgaGVpZ2h0PSI2NCIgcng9IjgiIHN0cm9rZT0iI2IxYjRiNiIgc3Ryb2tlLXdpZHRoPSIxLjUiIHdpZHRoPSI1NjAiIHg9IjI0IiB5PSIxNTYiIC8+PHJlY3QgZmlsbD0iI2QyZTJmMSIgaGVpZ2h0PSI2NCIgcng9IjgiIHN0cm9rZT0iIzFkNzBiOCIgc3Ryb2tlLXdpZHRoPSIyIiB3aWR0aD0iMTQ0IiB4PSI1OTIiIHk9IjE1NiIgLz48dGV4dCBmaWxsPSIjMGIwYzBjIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSIzMDQiIHk9IjE5NyI+44Kt44Oj44OD44K344Ol5riI44G/PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwYjBjMGMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjY2NCIgeT0iMTk3Ij7lt67liIY8L3RleHQ+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC13ZWlnaHQ9IjcwMCIgeD0iMjQiIHk9IjI4MCI+4pGhIOODouODh+ODq+OCkuWIh+abv++8iOW+k+adpe+8iTwvdGV4dD48cmVjdCBmaWxsPSIjZDJlMmYxIiBoZWlnaHQ9IjY0IiByeD0iOCIgc3Ryb2tlPSIjMWQ3MGI4IiBzdHJva2Utd2lkdGg9IjIiIHdpZHRoPSI3MTIiIHg9IjI0IiB5PSIyOTYiIC8+PHRleHQgZmlsbD0iIzBiMGMwYyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMzgwIiB5PSIzMzciPuWFqOaWh+iEiOOCkuODl+ODquODleOCo+ODq+OBl+ebtOOBmTwvdGV4dD48dGV4dCBmaWxsPSIjMGIwYzBjIiBmb250LXdlaWdodD0iNzAwIiB4PSIyNCIgeT0iNDIwIj7ikaIgU2hhZG93UHJlZmlsbOOBp+WIh+abvzwvdGV4dD48cmVjdCBmaWxsPSIjZjNmMmYxIiBoZWlnaHQ9IjY0IiByeD0iOCIgc3Ryb2tlPSIjYjFiNGI2IiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjYwMCIgeD0iMjQiIHk9IjQzNiIgLz48cmVjdCBmaWxsPSIjZDJlMmYxIiBoZWlnaHQ9IjY0IiByeD0iOCIgc3Ryb2tlPSIjMWQ3MGI4IiBzdHJva2Utd2lkdGg9IjIiIHdpZHRoPSIxMDQiIHg9IjYzMiIgeT0iNDM2IiAvPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjMyNCIgeT0iNDc3Ij7jgrfjg6Pjg4njgqbjgafmupblgpnmuIjjgb88L3RleHQ+PHRleHQgZmlsbD0iIzBiMGMwYyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iNjg0IiB5PSI0NzciPuacq+WwvjwvdGV4dD48cmVjdCBmaWxsPSIjZjNmMmYxIiBoZWlnaHQ9IjMyIiByeD0iNiIgc3Ryb2tlPSIjYjFiNGI2IiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjMyIiB4PSIyNCIgeT0iNTQwIiAvPjx0ZXh0IGZpbGw9IiM1MDVhNWYiIGZvbnQtc2l6ZT0iMjIiIHg9IjY4IiB5PSI1NjUiPuWGjeWIqeeUqO+8iOioiOeul+OBquOBl++8iTwvdGV4dD48cmVjdCBmaWxsPSIjZDJlMmYxIiBoZWlnaHQ9IjMyIiByeD0iNiIgc3Ryb2tlPSIjMWQ3MGI4IiBzdHJva2Utd2lkdGg9IjIiIHdpZHRoPSIzMiIgeD0iMzgwIiB5PSI1NDAiIC8+PHRleHQgZmlsbD0iIzUwNWE1ZiIgZm9udC1zaXplPSIyMiIgeD0iNDI0IiB5PSI1NjUiPuOBneOBruWgtOOBp+ODl+ODquODleOCo+ODqzwvdGV4dD48L3N2Zz4=" class="lightbox" data-gallery="quarto-lightbox-gallery-1"><img src="https://scholia-notes.pages.dev/posts/2026-11-14-shadowprefill-kv/data:image/svg+xml;base64,PHN2ZyBhcmlhLWxhYmVsPSLliIfmm7/jgaflpLHjgYbjgq3jg6Pjg4Pjgrfjg6XjgpLlhYjjgavkvZzjgosiIGZvbnQtc2l6ZT0iMjYiIHJvbGU9ImltZyIgc3R5bGU9Im1heC13aWR0aDo3NjBweDtmb250LWZhbWlseTomIzM5O0hpcmFnaW5vIFNhbnMmIzM5OywmIzM5O05vdG8gU2FucyBKUCYjMzk7LCYjMzk7WXUgR290aGljJiMzOTssc2Fucy1zZXJpZiIgdmlld2JveD0iMCAwIDc2MCA2MDAiIHdpZHRoPSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtc2l6ZT0iMzAiIGZvbnQtd2VpZ2h0PSI3MDAiIHg9IjI0IiB5PSI0NiI+5YiH5pu/44Gn5aSx44GG44Kt44Oj44OD44K344Ol44KS5YWI44Gr5L2c44KLPC90ZXh0Pjx0ZXh0IGZpbGw9IiM1MDVhNWYiIGZvbnQtc2l6ZT0iMjIiIHg9IjI0IiB5PSI4NCI+5ZG844Gz5Ye644GXaysx44Gu44OX44Ot44Oz44OX44OI77yI5bGl5q2077yL5paw44GX44GE5YWl5Yqb77yJPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtd2VpZ2h0PSI3MDAiIHg9IjI0IiB5PSIxNDAiPuKRoCDlkIzjgZjjg6Ljg4fjg6vjgafntprooYw8L3RleHQ+PHJlY3QgZmlsbD0iI2YzZjJmMSIgaGVpZ2h0PSI2NCIgcng9IjgiIHN0cm9rZT0iI2IxYjRiNiIgc3Ryb2tlLXdpZHRoPSIxLjUiIHdpZHRoPSI1NjAiIHg9IjI0IiB5PSIxNTYiIC8+PHJlY3QgZmlsbD0iI2QyZTJmMSIgaGVpZ2h0PSI2NCIgcng9IjgiIHN0cm9rZT0iIzFkNzBiOCIgc3Ryb2tlLXdpZHRoPSIyIiB3aWR0aD0iMTQ0IiB4PSI1OTIiIHk9IjE1NiIgLz48dGV4dCBmaWxsPSIjMGIwYzBjIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSIzMDQiIHk9IjE5NyI+44Kt44Oj44OD44K344Ol5riI44G/PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwYjBjMGMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjY2NCIgeT0iMTk3Ij7lt67liIY8L3RleHQ+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC13ZWlnaHQ9IjcwMCIgeD0iMjQiIHk9IjI4MCI+4pGhIOODouODh+ODq+OCkuWIh+abv++8iOW+k+adpe+8iTwvdGV4dD48cmVjdCBmaWxsPSIjZDJlMmYxIiBoZWlnaHQ9IjY0IiByeD0iOCIgc3Ryb2tlPSIjMWQ3MGI4IiBzdHJva2Utd2lkdGg9IjIiIHdpZHRoPSI3MTIiIHg9IjI0IiB5PSIyOTYiIC8+PHRleHQgZmlsbD0iIzBiMGMwYyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMzgwIiB5PSIzMzciPuWFqOaWh+iEiOOCkuODl+ODquODleOCo+ODq+OBl+ebtOOBmTwvdGV4dD48dGV4dCBmaWxsPSIjMGIwYzBjIiBmb250LXdlaWdodD0iNzAwIiB4PSIyNCIgeT0iNDIwIj7ikaIgU2hhZG93UHJlZmlsbOOBp+WIh+abvzwvdGV4dD48cmVjdCBmaWxsPSIjZjNmMmYxIiBoZWlnaHQ9IjY0IiByeD0iOCIgc3Ryb2tlPSIjYjFiNGI2IiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjYwMCIgeD0iMjQiIHk9IjQzNiIgLz48cmVjdCBmaWxsPSIjZDJlMmYxIiBoZWlnaHQ9IjY0IiByeD0iOCIgc3Ryb2tlPSIjMWQ3MGI4IiBzdHJva2Utd2lkdGg9IjIiIHdpZHRoPSIxMDQiIHg9IjYzMiIgeT0iNDM2IiAvPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjMyNCIgeT0iNDc3Ij7jgrfjg6Pjg4njgqbjgafmupblgpnmuIjjgb88L3RleHQ+PHRleHQgZmlsbD0iIzBiMGMwYyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iNjg0IiB5PSI0NzciPuacq+WwvjwvdGV4dD48cmVjdCBmaWxsPSIjZjNmMmYxIiBoZWlnaHQ9IjMyIiByeD0iNiIgc3Ryb2tlPSIjYjFiNGI2IiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjMyIiB4PSIyNCIgeT0iNTQwIiAvPjx0ZXh0IGZpbGw9IiM1MDVhNWYiIGZvbnQtc2l6ZT0iMjIiIHg9IjY4IiB5PSI1NjUiPuWGjeWIqeeUqO+8iOioiOeul+OBquOBl++8iTwvdGV4dD48cmVjdCBmaWxsPSIjZDJlMmYxIiBoZWlnaHQ9IjMyIiByeD0iNiIgc3Ryb2tlPSIjMWQ3MGI4IiBzdHJva2Utd2lkdGg9IjIiIHdpZHRoPSIzMiIgeD0iMzgwIiB5PSI1NDAiIC8+PHRleHQgZmlsbD0iIzUwNWE1ZiIgZm9udC1zaXplPSIyMiIgeD0iNDI0IiB5PSI1NjUiPuOBneOBruWgtOOBp+ODl+ODquODleOCo+ODqzwvdGV4dD48L3N2Zz4=" class="img-fluid"></a></p>
<p>ShadowPrefillは、③の灰色の部分を切替が決まる前に、切替先モデルの空き能力で計算しておく。</p>
</section>
<section id="前提知識" class="level2">
<h2 class="anchored" data-anchor-id="前提知識">前提知識</h2>
<p>この論文は、LLM推論サーバーの6つの仕組みを組み合わせている。先にそれぞれを整理する。</p>
<section id="プリフィルとデコード" class="level3">
<h3 class="anchored" data-anchor-id="プリフィルとデコード">プリフィルとデコード</h3>
<p>LLMの推論は2段階で進む。プリフィルは、プロンプトの全トークンをまとめて処理し、各層のAttentionが使うKeyとValueを計算する段階である。行列演算が中心で、計算能力がボトルネックになる。</p>
<p>デコードは、1トークンずつ出力を生成する段階である。1トークンごとに重みと過去のKey/ValueをGPUメモリから読むため、メモリ帯域がボトルネックになる。デコード中のGPUは、計算能力に余裕がある。</p>
</section>
<section id="kvキャッシュ" class="level3">
<h3 class="anchored" data-anchor-id="kvキャッシュ">KVキャッシュ</h3>
<p>デコードで毎回過去の全トークンを計算し直さないよう、計算済みのKey/ValueをGPUのHBMに保持する。これがKVキャッシュである。サイズは、層数×KVヘッド数×ヘッド次元×2（KとV）×数値精度に比例し、トークン数とともに増える。</p>
<p>論文の例では、全ヘッドが個別のKVを持つMulti-Head AttentionのGemma-7Bで1トークン458KBを使う。10万トークンのコーディングエージェントの文脈だけで、H100 1枚のKV領域の大半が埋まる。</p>
</section>
<section id="プレフィックスキャッシュ" class="level3">
<h3 class="anchored" data-anchor-id="プレフィックスキャッシュ">プレフィックスキャッシュ</h3>
<p>リクエストが終わった後もKVキャッシュを残し、次のプロンプトの先頭部分（プレフィックス）が一致したら再利用する仕組みである。一致した部分はプリフィル不要になり、差分だけを計算すればよい。vLLMのAutomatic Prefix Caching、SGLangのRadixAttentionが代表例である。</p>
<p>エージェントは、毎回「それまでの履歴＋新しいツール出力」を送る。前回のプロンプトが今回のプレフィックスになるので、この仕組みとの相性が非常によい。API事業者はキャッシュ済み入力を通常の約1/10の価格で課金しており、論文もこの料金体系を前提に費用を計算している。</p>
</section>
<section id="kvキャッシュはモデルごとに別物" class="level3">
<h3 class="anchored" data-anchor-id="kvキャッシュはモデルごとに別物">KVキャッシュはモデルごとに別物</h3>
<p>Key/Valueはそのモデルの重みから計算される。そのため、モデルAが作ったKVキャッシュをモデルBは使えない。同じ文脈でも、モデルを切り替えた瞬間にキャッシュは使えなくなる。この論文が扱う問題の出発点はここにある。</p>
</section>
<section id="continuous-batchingとchunked-prefill" class="level3">
<h3 class="anchored" data-anchor-id="continuous-batchingとchunked-prefill">Continuous batchingとchunked prefill</h3>
<p>現在の推論エンジンは、「イテレーション」と呼ぶ短い単位でGPUを動かす。1回のイテレーションで、実行中の全リクエストのデコード1トークン分と、新しいリクエストのプリフィルの一部を同じバッチで処理する。長いプリフィルを一定トークン数の断片に分けて混ぜるのがchunked prefill（Sarathi-Serve）である。</p>
<p>プリフィルの断片を足すと、そのイテレーションに乗っている全デコードがその分だけ遅れる。ShadowPrefillは、この「足してもよい量」を精密に管理する。</p>
</section>
<section id="ttfttpotslo" class="level3">
<h3 class="anchored" data-anchor-id="ttfttpotslo">TTFT・TPOT・SLO</h3>
<p>TTFT（Time To First Token）は、リクエスト到着から最初のトークンが返るまでの時間である。主にプリフィルの長さで決まる。TPOT（Time Per Output Token）は、出力1トークンあたりの生成間隔である。SLOは、これらに設ける目標値である。</p>
<p>論文の評価では、TTFTが「1秒」と「単独実行時のプリフィル時間の5倍」の大きい方以下、TPOTが「25ミリ秒」と「バッチ1でのデコード時間の5倍」の大きい方以下をSLOとしている。</p>
</section>
<section id="pd分離" class="level3">
<h3 class="anchored" data-anchor-id="pd分離">PD分離</h3>
<p>プリフィル用のインスタンス（P）とデコード用のインスタンス（D）を分け、Pで作ったKVをDへ転送する構成である（Splitwise、Mooncakeなど）。計算律速とメモリ律速の処理を分離して、互いの干渉をなくす。</p>
</section>
</section>
<section id="背景ステップ単位のルーティングと切替税" class="level2">
<h2 class="anchored" data-anchor-id="背景ステップ単位のルーティングと切替税">背景：ステップ単位のルーティングと「切替税」</h2>
<p>モデルを切り替えた呼び出しは、同じモデルを続けた呼び出しの1.5〜3.2倍の時間がかかる。論文はこれを「model switch tax（切替税）」と呼ぶ。</p>
<section id="ステップ単位ルーティング" class="level3">
<h3 class="anchored" data-anchor-id="ステップ単位ルーティング">ステップ単位ルーティング</h3>
<p>エージェントは、計画、ツール呼び出し、結果の読み取り、編集、テストを繰り返す。ステップごとに難易度が大きく違うため、単一モデルでは「難しいステップには力不足、簡単なステップには高すぎる」。そこで、LLM呼び出しごとに使うモデルを選ぶルーターが使われる。論文は、GPT-5が高速モデルと推論モデルをリクエストごとに切り替える例や、コーディングエージェントがサブタスクを小さいモデルに任せる例を挙げている。</p>
<p>評価では、ルーターにLLMRouter（UIUCのオープンソースライブラリ）を使う。各ステップを「コストあたりの正解率」が最も高いモデルへ送るポリシーで、候補は小モデルSと大モデルLの2つに限る。このルーターは、常に大モデルを使う場合より正解率が6.6〜13.6ポイント高い。2つのモデルは正解できる問題が異なるためである。</p>
</section>
<section id="切替は頻繁に起き文脈は長い" class="level3">
<h3 class="anchored" data-anchor-id="切替は頻繁に起き文脈は長い">切替は頻繁に起き、文脈は長い</h3>
<p>評価に使われた5種類のワークロードを下に示す。GHCP-codingは、GitHub Copilotのコーディングエージェントの公開トレース1日分からトークン数を取っている。SWE-benchは、SWE-agentの実際の実行履歴（平均57呼び出し）を使う。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 12%">
</colgroup>
<thead>
<tr class="header">
<th>ワークロード</th>
<th>モデルペア数</th>
<th>切替率</th>
<th>切替回数/セッション</th>
<th>プロンプト平均（トークン）</th>
<th>同p99</th>
<th>キャッシュヒット率（全体）</th>
<th>同（切替時）</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>xRouteBench</td>
<td>5</td>
<td>19%</td>
<td>2.3</td>
<td>19K</td>
<td>113K</td>
<td>80.4%</td>
<td>52%</td>
</tr>
<tr class="even">
<td>FusionBench</td>
<td>5</td>
<td>26%</td>
<td>3.1</td>
<td>13K</td>
<td>58K</td>
<td>76.6%</td>
<td>52%</td>
</tr>
<tr class="odd">
<td>Router-R1</td>
<td>6</td>
<td>33%</td>
<td>4.1</td>
<td>10K</td>
<td>45K</td>
<td>69.2%</td>
<td>46%</td>
</tr>
<tr class="even">
<td>GHCP-coding</td>
<td>6</td>
<td>26%</td>
<td>2.0</td>
<td>63K</td>
<td>131K</td>
<td>55.4%</td>
<td>44%</td>
</tr>
<tr class="odd">
<td>SWE-bench</td>
<td>6</td>
<td>26%</td>
<td>10.9</td>
<td>36K</td>
<td>93K</td>
<td>95.2%</td>
<td>65%</td>
</tr>
</tbody>
</table>
<p>全呼び出しの19〜33%でモデルが切り替わる。同じモデルを続けた呼び出しのキャッシュヒット率は80〜89%だが、切替直後は44〜65%に落ちる。切替先には文脈がないか、あっても「最後にそのモデルを使った時点」で止まっているからである。</p>
</section>
<section id="切替税は3か所で払われる" class="level3">
<h3 class="anchored" data-anchor-id="切替税は3か所で払われる">切替税は3か所で払われる</h3>
<ul>
<li><strong>レイテンシ</strong>：失ったプレフィックスをプリフィルし直すまで、最初のトークンが出ない。切替呼び出しはxRouteBenchで3.2倍、GHCP-codingで1.5倍遅く、差の大半がTTFTである。GHCP-codingの切替呼び出しは19.0秒かかる</li>
<li><strong>費用</strong>：キャッシュ済み入力の約1/10の割引が消える。ルーターが「常に大モデル」に対して節約できるのは28〜44%にとどまり、その一因がこの割引の喪失である</li>
<li><strong>他の利用者</strong>：余分なプリフィルが、同じGPUで動く他のリクエストの計算時間を奪う</li>
</ul>
<p>切替を避けるように学習したルーターもあるが、その分精度を手放す。ShadowPrefillはルーターの判断を変えず、切替の値段を下げる。</p>
</section>
</section>
<section id="着眼点本番クラスタにはイテレーション単位の余裕がある" class="level2">
<h2 class="anchored" data-anchor-id="着眼点本番クラスタにはイテレーション単位の余裕がある">着眼点：本番クラスタには「イテレーション単位の余裕」がある</h2>
<p>切替先のモデルは、ほとんどの場合すでにデプロイされ、他の利用者のリクエスト（論文では「通常トラフィック」）を処理している。ShadowPrefillは、そのインスタンスが使い切っていない能力を使う。</p>
<section id="ピーク基準の確保で平常時は余る" class="level3">
<h3 class="anchored" data-anchor-id="ピーク基準の確保で平常時は余る">ピーク基準の確保で、平常時は余る</h3>
<p>推論クラスタは、SLO違反を避けるためピーク時の負荷に合わせてGPUを確保する。Azureの本番LLM推論トレースでは、P95の需要に合わせて確保したGPUプールの利用率は、テキストで50%、マルチモーダルで39%にとどまる。</p>
<p>1週間分のトレースを再生すると、1日の中で負荷が3〜10倍変動する。コード系トラフィックを処理するインスタンスは、中央値の時間帯で72%、最も閑散な時間帯で85%の時間が完全にアイドルである。ただしピーク時は8%しかない。会話系トラフィックは負荷が安定していて、インスタンス丸ごとアイドルになる時間はどの時間帯にもない。</p>
</section>
<section id="ピーク時でも各イテレーションには余裕がある" class="level3">
<h3 class="anchored" data-anchor-id="ピーク時でも各イテレーションには余裕がある">ピーク時でも、各イテレーションには余裕がある</h3>
<p>切替が最も高くつくのは混雑時であり、まさにそのときインスタンス丸ごとの遊休は消える。そこで論文は、より細かい単位の余裕に目を向ける。</p>
<p>デコード中心のイテレーションはメモリ律速で、TPOTのSLOより十分短い時間で終わる。ピーク時でも、中央値のイテレーションはTPOT SLOの約1/4しか使わず、各イテレーションの時間予算の69〜79%が未使用である。</p>
<p>ここにプリフィルの断片を足すと、そのイテレーションに乗る全デコードが遅れる。ただし、遅れが実行中の各リクエストの余裕の範囲に収まれば、SLOを外すリクエストは出ない。この余裕が、ShadowPrefillが収穫（harvest）する計算能力である。</p>
</section>
</section>
<section id="手法shadowprefillの仕組み" class="level2">
<h2 class="anchored" data-anchor-id="手法shadowprefillの仕組み">手法：ShadowPrefillの仕組み</h2>
<p>ShadowPrefillは、ルーターが選ばなかった側のモデルで、セッションの文脈を最低優先度の仕事としてプリフィルし続ける。ルーターと推論エンジンの間に入り、ルーティングされた呼び出しごとに、もう一方のモデル上の「シャドウジョブ」を作成・延長する。</p>
<p><a href="data:image/svg+xml;base64,PHN2ZyBhcmlhLWxhYmVsPSLnqbrjgYTjgZ/mmYLplpPjgafliIfmm7/lhYjjgpLlhYjjgavmuKnjgoHjgosiIGZvbnQtc2l6ZT0iMjYiIHJvbGU9ImltZyIgc3R5bGU9Im1heC13aWR0aDo3NjBweDtmb250LWZhbWlseTomIzM5O0hpcmFnaW5vIFNhbnMmIzM5OywmIzM5O05vdG8gU2FucyBKUCYjMzk7LCYjMzk7WXUgR290aGljJiMzOTssc2Fucy1zZXJpZiIgdmlld2JveD0iMCAwIDc2MCA3NDQiIHdpZHRoPSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtc2l6ZT0iMzAiIGZvbnQtd2VpZ2h0PSI3MDAiIHg9IjI0IiB5PSI0NiI+56m644GE44Gf5pmC6ZaT44Gn5YiH5pu/5YWI44KS5YWI44Gr5rip44KB44KLPC90ZXh0PjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMTAwIiByeD0iOCIgc3Ryb2tlPSIjYjFiNGI2IiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjcxMiIgeD0iMjQiIHk9IjgwIiAvPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtd2VpZ2h0PSI3MDAiIHg9IjQ4IiB5PSIxMjIiPuODouODh+ODq1PvvJrlkbzjgbPlh7rjgZdr44KS5Yem55CG5LitPC90ZXh0Pjx0ZXh0IGZpbGw9IiM1MDVhNWYiIGZvbnQtc2l6ZT0iMjIiIHg9IjQ4IiB5PSIxNjAiPuODq+ODvOOCv+ODvOOBjOmBuOOCk+OBoOODouODh+ODqzwvdGV4dD48bGluZSBzdHJva2U9IiM1MDVhNWYiIHN0cm9rZS13aWR0aD0iMiIgeDE9IjM4MCIgeDI9IjM4MCIgeTE9IjE4MCIgeTI9IjIzOCI+PC9saW5lPjxwYXRoIGQ9Ik0zNzIgMjM2TDM4MCAyNDhMMzg4IDIzNnoiIGZpbGw9IiM1MDVhNWYiIC8+PHRleHQgZmlsbD0iIzUwNWE1ZiIgZm9udC1zaXplPSIyMiIgeD0iMzk2IiB5PSIyMjIiPuWFpeWKm+ODu+WHuuWKm+OCkumAkOasoemAgeOCizwvdGV4dD48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjI5OCIgcng9IjgiIHN0cm9rZT0iI2IxYjRiNiIgc3Ryb2tlLXdpZHRoPSIxLjUiIHdpZHRoPSI3MTIiIHg9IjI0IiB5PSIyNTAiIC8+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC13ZWlnaHQ9IjcwMCIgeD0iNDgiIHk9IjI5MiI+44Oi44OH44OrTO+8mumAmuW4uOODiOODqeODleOCo+ODg+OCr+OCkuWHpueQhuS4rTwvdGV4dD48dGV4dCBmaWxsPSIjNTA1YTVmIiBmb250LXNpemU9IjIyIiB0ZXh0LWFuY2hvcj0iZW5kIiB4PSI2MzIiIHk9IjMzOCI+44Kk44OG44Os44O844K344On44Oz44GuU0xP5LqI566XPC90ZXh0PjxsaW5lIHN0cm9rZT0iIzBiMGMwYyIgc3Ryb2tlLWRhc2hhcnJheT0iNiA1IiBzdHJva2Utd2lkdGg9IjIiIHgxPSI2NDAiIHgyPSI2NDAiIHkxPSIzNDYiIHkyPSI0OTYiPjwvbGluZT48cmVjdCBmaWxsPSIjZGVkZGRiIiBoZWlnaHQ9IjM0IiByeD0iNCIgd2lkdGg9IjE0MCIgeD0iNDgiIHk9IjM1NiIgLz48cmVjdCBmaWxsPSIjZDJlMmYxIiBoZWlnaHQ9IjM0IiByeD0iNCIgc3Ryb2tlPSIjMWQ3MGI4IiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjQwOCIgeD0iMTkyIiB5PSIzNTYiIC8+PHJlY3QgZmlsbD0iI2RlZGRkYiIgaGVpZ2h0PSIzNCIgcng9IjQiIHdpZHRoPSIyMjAiIHg9IjQ4IiB5PSI0MDQiIC8+PHJlY3QgZmlsbD0iI2QyZTJmMSIgaGVpZ2h0PSIzNCIgcng9IjQiIHN0cm9rZT0iIzFkNzBiOCIgc3Ryb2tlLXdpZHRoPSIxLjUiIHdpZHRoPSIzMjgiIHg9IjI3MiIgeT0iNDA0IiAvPjxyZWN0IGZpbGw9IiNkZWRkZGIiIGhlaWdodD0iMzQiIHJ4PSI0IiB3aWR0aD0iMTAwIiB4PSI0OCIgeT0iNDUyIiAvPjxyZWN0IGZpbGw9IiNkMmUyZjEiIGhlaWdodD0iMzQiIHJ4PSI0IiBzdHJva2U9IiMxZDcwYjgiIHN0cm9rZS13aWR0aD0iMS41IiB3aWR0aD0iNDQ4IiB4PSIxNTIiIHk9IjQ1MiIgLz48cmVjdCBmaWxsPSIjZGVkZGRiIiBoZWlnaHQ9IjI0IiByeD0iNCIgd2lkdGg9IjI0IiB4PSI0OCIgeT0iNTAyIiAvPjx0ZXh0IGZpbGw9IiM1MDVhNWYiIGZvbnQtc2l6ZT0iMjIiIHg9IjgyIiB5PSI1MjIiPumAmuW4uOOBruODh+OCs+ODvOODiTwvdGV4dD48cmVjdCBmaWxsPSIjZDJlMmYxIiBoZWlnaHQ9IjI0IiByeD0iNCIgc3Ryb2tlPSIjMWQ3MGI4IiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjI0IiB4PSIzNDAiIHk9IjUwMiIgLz48dGV4dCBmaWxsPSIjNTA1YTVmIiBmb250LXNpemU9IjIyIiB4PSIzNzQiIHk9IjUyMiI+44K344Oj44OJ44Km44Gu5pat54mHPC90ZXh0PjxsaW5lIHN0cm9rZT0iIzUwNWE1ZiIgc3Ryb2tlLXdpZHRoPSIyIiB4MT0iMzgwIiB4Mj0iMzgwIiB5MT0iNTQ4IiB5Mj0iNjA2Ij48L2xpbmU+PHBhdGggZD0iTTM3MiA2MDRMMzgwIDYxNkwzODggNjA0eiIgZmlsbD0iIzUwNWE1ZiIgLz48dGV4dCBmaWxsPSIjNTA1YTVmIiBmb250LXNpemU9IjIyIiB4PSIzOTYiIHk9IjU5MCI+5ZG844Gz5Ye644GXaysx44GnTOOBuOWIh+abvzwvdGV4dD48cmVjdCBmaWxsPSIjZDJlMmYxIiBoZWlnaHQ9IjEwMCIgcng9IjgiIHN0cm9rZT0iIzFkNzBiOCIgc3Ryb2tlLXdpZHRoPSIyIiB3aWR0aD0iNzEyIiB4PSIyNCIgeT0iNjE4IiAvPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtd2VpZ2h0PSI3MDAiIHg9IjQ4IiB5PSI2NjAiPuODouODh+ODq0zvvJrmnKvlsL7jgaDjgZHjg5fjg6rjg5XjgqPjg6s8L3RleHQ+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC1zaXplPSIyMiIgeD0iNDgiIHk9IjY5OCI+5rqW5YKZ5riI44G/44Gu5paH6ISI44Gn44CB44GZ44GQ5pyA5Yid44Gu44OI44O844Kv44Oz44KS6L+U44GZPC90ZXh0Pjwvc3ZnPg==" class="lightbox" data-gallery="quarto-lightbox-gallery-2"><img src="https://scholia-notes.pages.dev/posts/2026-11-14-shadowprefill-kv/data:image/svg+xml;base64,PHN2ZyBhcmlhLWxhYmVsPSLnqbrjgYTjgZ/mmYLplpPjgafliIfmm7/lhYjjgpLlhYjjgavmuKnjgoHjgosiIGZvbnQtc2l6ZT0iMjYiIHJvbGU9ImltZyIgc3R5bGU9Im1heC13aWR0aDo3NjBweDtmb250LWZhbWlseTomIzM5O0hpcmFnaW5vIFNhbnMmIzM5OywmIzM5O05vdG8gU2FucyBKUCYjMzk7LCYjMzk7WXUgR290aGljJiMzOTssc2Fucy1zZXJpZiIgdmlld2JveD0iMCAwIDc2MCA3NDQiIHdpZHRoPSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtc2l6ZT0iMzAiIGZvbnQtd2VpZ2h0PSI3MDAiIHg9IjI0IiB5PSI0NiI+56m644GE44Gf5pmC6ZaT44Gn5YiH5pu/5YWI44KS5YWI44Gr5rip44KB44KLPC90ZXh0PjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMTAwIiByeD0iOCIgc3Ryb2tlPSIjYjFiNGI2IiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjcxMiIgeD0iMjQiIHk9IjgwIiAvPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtd2VpZ2h0PSI3MDAiIHg9IjQ4IiB5PSIxMjIiPuODouODh+ODq1PvvJrlkbzjgbPlh7rjgZdr44KS5Yem55CG5LitPC90ZXh0Pjx0ZXh0IGZpbGw9IiM1MDVhNWYiIGZvbnQtc2l6ZT0iMjIiIHg9IjQ4IiB5PSIxNjAiPuODq+ODvOOCv+ODvOOBjOmBuOOCk+OBoOODouODh+ODqzwvdGV4dD48bGluZSBzdHJva2U9IiM1MDVhNWYiIHN0cm9rZS13aWR0aD0iMiIgeDE9IjM4MCIgeDI9IjM4MCIgeTE9IjE4MCIgeTI9IjIzOCI+PC9saW5lPjxwYXRoIGQ9Ik0zNzIgMjM2TDM4MCAyNDhMMzg4IDIzNnoiIGZpbGw9IiM1MDVhNWYiIC8+PHRleHQgZmlsbD0iIzUwNWE1ZiIgZm9udC1zaXplPSIyMiIgeD0iMzk2IiB5PSIyMjIiPuWFpeWKm+ODu+WHuuWKm+OCkumAkOasoemAgeOCizwvdGV4dD48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjI5OCIgcng9IjgiIHN0cm9rZT0iI2IxYjRiNiIgc3Ryb2tlLXdpZHRoPSIxLjUiIHdpZHRoPSI3MTIiIHg9IjI0IiB5PSIyNTAiIC8+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC13ZWlnaHQ9IjcwMCIgeD0iNDgiIHk9IjI5MiI+44Oi44OH44OrTO+8mumAmuW4uOODiOODqeODleOCo+ODg+OCr+OCkuWHpueQhuS4rTwvdGV4dD48dGV4dCBmaWxsPSIjNTA1YTVmIiBmb250LXNpemU9IjIyIiB0ZXh0LWFuY2hvcj0iZW5kIiB4PSI2MzIiIHk9IjMzOCI+44Kk44OG44Os44O844K344On44Oz44GuU0xP5LqI566XPC90ZXh0PjxsaW5lIHN0cm9rZT0iIzBiMGMwYyIgc3Ryb2tlLWRhc2hhcnJheT0iNiA1IiBzdHJva2Utd2lkdGg9IjIiIHgxPSI2NDAiIHgyPSI2NDAiIHkxPSIzNDYiIHkyPSI0OTYiPjwvbGluZT48cmVjdCBmaWxsPSIjZGVkZGRiIiBoZWlnaHQ9IjM0IiByeD0iNCIgd2lkdGg9IjE0MCIgeD0iNDgiIHk9IjM1NiIgLz48cmVjdCBmaWxsPSIjZDJlMmYxIiBoZWlnaHQ9IjM0IiByeD0iNCIgc3Ryb2tlPSIjMWQ3MGI4IiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjQwOCIgeD0iMTkyIiB5PSIzNTYiIC8+PHJlY3QgZmlsbD0iI2RlZGRkYiIgaGVpZ2h0PSIzNCIgcng9IjQiIHdpZHRoPSIyMjAiIHg9IjQ4IiB5PSI0MDQiIC8+PHJlY3QgZmlsbD0iI2QyZTJmMSIgaGVpZ2h0PSIzNCIgcng9IjQiIHN0cm9rZT0iIzFkNzBiOCIgc3Ryb2tlLXdpZHRoPSIxLjUiIHdpZHRoPSIzMjgiIHg9IjI3MiIgeT0iNDA0IiAvPjxyZWN0IGZpbGw9IiNkZWRkZGIiIGhlaWdodD0iMzQiIHJ4PSI0IiB3aWR0aD0iMTAwIiB4PSI0OCIgeT0iNDUyIiAvPjxyZWN0IGZpbGw9IiNkMmUyZjEiIGhlaWdodD0iMzQiIHJ4PSI0IiBzdHJva2U9IiMxZDcwYjgiIHN0cm9rZS13aWR0aD0iMS41IiB3aWR0aD0iNDQ4IiB4PSIxNTIiIHk9IjQ1MiIgLz48cmVjdCBmaWxsPSIjZGVkZGRiIiBoZWlnaHQ9IjI0IiByeD0iNCIgd2lkdGg9IjI0IiB4PSI0OCIgeT0iNTAyIiAvPjx0ZXh0IGZpbGw9IiM1MDVhNWYiIGZvbnQtc2l6ZT0iMjIiIHg9IjgyIiB5PSI1MjIiPumAmuW4uOOBruODh+OCs+ODvOODiTwvdGV4dD48cmVjdCBmaWxsPSIjZDJlMmYxIiBoZWlnaHQ9IjI0IiByeD0iNCIgc3Ryb2tlPSIjMWQ3MGI4IiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjI0IiB4PSIzNDAiIHk9IjUwMiIgLz48dGV4dCBmaWxsPSIjNTA1YTVmIiBmb250LXNpemU9IjIyIiB4PSIzNzQiIHk9IjUyMiI+44K344Oj44OJ44Km44Gu5pat54mHPC90ZXh0PjxsaW5lIHN0cm9rZT0iIzUwNWE1ZiIgc3Ryb2tlLXdpZHRoPSIyIiB4MT0iMzgwIiB4Mj0iMzgwIiB5MT0iNTQ4IiB5Mj0iNjA2Ij48L2xpbmU+PHBhdGggZD0iTTM3MiA2MDRMMzgwIDYxNkwzODggNjA0eiIgZmlsbD0iIzUwNWE1ZiIgLz48dGV4dCBmaWxsPSIjNTA1YTVmIiBmb250LXNpemU9IjIyIiB4PSIzOTYiIHk9IjU5MCI+5ZG844Gz5Ye644GXaysx44GnTOOBuOWIh+abvzwvdGV4dD48cmVjdCBmaWxsPSIjZDJlMmYxIiBoZWlnaHQ9IjEwMCIgcng9IjgiIHN0cm9rZT0iIzFkNzBiOCIgc3Ryb2tlLXdpZHRoPSIyIiB3aWR0aD0iNzEyIiB4PSIyNCIgeT0iNjE4IiAvPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtd2VpZ2h0PSI3MDAiIHg9IjQ4IiB5PSI2NjAiPuODouODh+ODq0zvvJrmnKvlsL7jgaDjgZHjg5fjg6rjg5XjgqPjg6s8L3RleHQ+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC1zaXplPSIyMiIgeD0iNDgiIHk9IjY5OCI+5rqW5YKZ5riI44G/44Gu5paH6ISI44Gn44CB44GZ44GQ5pyA5Yid44Gu44OI44O844Kv44Oz44KS6L+U44GZPC90ZXh0Pjwvc3ZnPg==" class="img-fluid"></a></p>
<p>通常のデコードは各イテレーションのSLO予算を使い切らない。余った時間にシャドウの断片を詰め、切替の前に文脈のKVを作り終える。</p>
<section id="つの課題と対応する仕組み" class="level3">
<h3 class="anchored" data-anchor-id="つの課題と対応する仕組み">5つの課題と対応する仕組み</h3>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>課題</th>
<th>内容</th>
<th>仕組み</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>C1 ピーク時に空きGPUがない</td>
<td>切替が高くつく混雑時ほど、丸ごと空いたインスタンスがない</td>
<td>SLO余裕コントローラ</td>
</tr>
<tr class="even">
<td>C2 シャドウが本来の呼び出しを遅らせる</td>
<td>シャドウの断片とルーティングされた呼び出しが同じイテレーションに乗る</td>
<td>ルーティング呼び出しの保護</td>
</tr>
<tr class="odd">
<td>C3 長い文脈がKV領域に収まらない</td>
<td>10万トークンの文脈は小モデルのKV領域を大きく占め、使う前に追い出される</td>
<td>上限付きのシャドウKVクラス＋ホストメモリ退避</td>
</tr>
<tr class="even">
<td>C4 シャドウの多くが無駄になる</td>
<td>切替は呼び出しの26〜33%。ルーターは呼び出しが来た時点で初めて決める</td>
<td>増分・ストリーミング・スティッキー配置、切替確率順の実行</td>
</tr>
<tr class="odd">
<td>C5 SLOを悪化させない</td>
<td>切替呼び出しはシャドウを待たず、通常トラフィックはSLOを守る</td>
<td>最低優先度・イテレーション単位の実行と、コールド切替へのフォールバック</td>
</tr>
</tbody>
</table>
</section>
<section id="シャドウジョブ差分だけを送り続ける" class="level3">
<h3 class="anchored" data-anchor-id="シャドウジョブ差分だけを送り続ける">シャドウジョブ：差分だけを送り続ける</h3>
<p>セッションsが呼び出しk+1でモデルAからBへ切り替わるとき、そのプロンプトは「呼び出しkまでの全履歴」＋「新しい入力」である。目標は、呼び出しk+1が届くまでに履歴をBのプレフィックスキャッシュに載せておき、新しい入力だけをプリフィルさせることである。</p>
<ul>
<li><strong>増分</strong>：シャドウジョブは、Bがすでに持っているプレフィックスと、まだ持っていないトークンを記録する。Bが同じ部分を二度プリフィルすることはない。A→B→Aと切り替わっても、処理するのは差分だけである</li>
<li><strong>ストリーミング</strong>：呼び出しkがAに届いた瞬間にその入力をジョブへ追加し、Aが出力トークンを生成したらそれも順次追加する。シャドウは常に「現在の呼び出しの出力」の分だけ遅れる。その末尾は、切替呼び出し自身がプリフィルする</li>
<li><strong>スティッキー配置</strong>：各セッションはモデルごとに固定のインスタンスを持ち、シャドウはもう一方のモデルの固定インスタンスで動く。ルーターは、「キャッシュされていないトークンだけを数えたプリフィル完了予測時刻」が最も早いインスタンスへ送る。そのため切替呼び出しは、そのインスタンスが極端に混んでいない限りシャドウを持つインスタンスに届く</li>
<li><strong>切替確率順</strong>：待ちのシャドウジョブは、過去のセッションからタスクと現在のモデルごとに推定した切替確率の高い順に実行する</li>
</ul>
</section>
<section id="どこに入れるかイテレーションの最後尾" class="level3">
<h3 class="anchored" data-anchor-id="どこに入れるかイテレーションの最後尾">どこに入れるか：イテレーションの最後尾</h3>
<p>各イテレーションは、「実行中のデコード」「処理中のプリフィル断片」「待ち行列からの新規受付」の順に組まれる。シャドウの断片はその最後に追加し、待ち行列が空で、メモリ不足で受付できなかったリクエストもないときに限る。</p>
<p>インスタンスが完全に空いているときは、シャドウだけのイテレーションを回す。1回の長さはTPOT SLOのβ倍（β=0.5）までとし、新しいリクエストが待たされる時間に上限を設ける。</p>
</section>
<section id="slo余裕コントローラc1" class="level3">
<h3 class="anchored" data-anchor-id="slo余裕コントローラc1">SLO余裕コントローラ（C1）</h3>
<p>混雑時は、通常のイテレーションにシャドウの断片を相乗りさせる。何トークン足すかは、実行中のリクエストのSLO余裕で決める。使う情報は、本番のスケジューラが知っている到着時刻・最初のトークンの時刻・イテレーション回数だけである。</p>
<p>デコード中のリクエストrが時刻f_rに最初のトークンを出し、k_r回のイテレーションを終えたとする。TPOT SLOをT_r、安全マージンをmとすると、次のイテレーションに許される長さσ_rは次の式である。</p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Csigma_r%20=%20(1-m)%5C,T_r%5C,(k_r+1)%20-%20(t%20-%20f_r)%0A"></p>
<p>「ここまでに使ってよい時間」から「実際に使った時間」を引いた残りが、そのリクエストが貸せる時間である。プリフィル中のリクエストは、TTFT SLOの残りから残りのプリフィル予測時間を引いた値を余裕とする。</p>
<p>イテレーションの予算は、バッチ内で最小の余裕（上限βT）である。レイテンシモデルが「予算内に収まる」と予測する限りシャドウのトークンを足す。SLOに余裕のあるリクエストが時間を貸し、締切に近いリクエストがいればそのイテレーションでは足さない。</p>
</section>
<section id="ルーティング呼び出しの保護c2" class="level3">
<h3 class="anchored" data-anchor-id="ルーティング呼び出しの保護c2">ルーティング呼び出しの保護（C2）</h3>
<p>エージェントの呼び出し自体には貸せる余裕がない。そのイテレーションが伸びれば、その分がそのままエージェントの待ち時間になる。そこで、ルーティングされた呼び出しを含むイテレーションでは、小さな「クレジット」だけを使う。</p>
<p>クレジットは、デコードのみのイテレーションの時間のδ倍（δ=0.025）ずつ貯まる。そのため、ルーティングされた呼び出しの長期的な遅延は最大でもδ（2.5%）に抑えられる。通常トラフィックだけのイテレーションでは、余裕を全部使う。</p>
</section>
<section id="シャドウkvの管理c3" class="level3">
<h3 class="anchored" data-anchor-id="シャドウkvの管理c3">シャドウKVの管理（C3）</h3>
<ul>
<li><strong>上限付き・先に捨てる専用クラス</strong>：シャドウのKVは独立したキャッシュクラスとし、KV領域の25%を上限とする。使えるのは空きブロックと5秒以上使われていないキャッシュだけである。追い出しはシャドウを通常のキャッシュより先に行い、各クラス内はLRUである</li>
<li><strong>ホストメモリへの退避</strong>：HBMから追い出されたKVを、シャドウも通常もホストのDRAMに退避し、必要になったらPCIe経由で戻す。戻す方が再計算よりはるかに安い。長い文脈のコーディングエージェントでは、これがないとシャドウは切替の前に消える</li>
</ul>
</section>
<section id="安全性とフォールバックc5" class="level3">
<h3 class="anchored" data-anchor-id="安全性とフォールバックc5">安全性とフォールバック（C5）</h3>
<p>シャドウは、ルーティングされた呼び出しも通常リクエストも妨げない。待ちがないときだけ動き、1回あたりの量は予算で制限され、イテレーション単位で中断される。新しいリクエストの待ちは最大でも上限付きイテレーション1回分である。</p>
<p>切替呼び出しがシャドウを待つことはない。シャドウが途中までなら、そこまでを使って残りをプリフィルする。無いか追い出されていれば、ShadowPrefillがない場合とまったく同じ動きになる。予測が外れたときの代償は、使った余剰能力とその分の電力だけである。</p>
</section>
<section id="pd分離構成への拡張" class="level3">
<h3 class="anchored" data-anchor-id="pd分離構成への拡張">PD分離構成への拡張</h3>
<p>PD分離では、切替のたびに切替先のPrefillインスタンスでのコールドプリフィルと、Decodeインスタンスへの大きなKV転送が発生する。ShadowPrefillは、もう一方のモデルのPrefillインスタンスで、待ち行列が空かつ他のリクエストにTTFTの余裕があるとき、最大0.1秒のイテレーションでシャドウを作る。</p>
<p>Decodeインスタンスは、受信側のリンクが空いているときに4Kトークン単位でシャドウKVを取り込み、最初に回収される空きメモリへ置く。切替時はPrefillが末尾だけを計算し、Decodeは足りないトークン分だけを受け取る。Prefillインスタンスはプリフィルのピークに合わせて確保され、アイドルになりやすいため、同居構成より多くの能力を使える。</p>
</section>
</section>
<section id="評価結果" class="level2">
<h2 class="anchored" data-anchor-id="評価結果">評価結果</h2>
<p>全機構（Harvest-SLO+Host）は、追加GPUなしで「切替がタダになる理想状態（Oracle）」の効果の52〜54%を得た。</p>
<section id="評価の設定" class="level3">
<h3 class="anchored" data-anchor-id="評価の設定">評価の設定</h3>
<ul>
<li><strong>シミュレーション</strong>：Vidurを拡張した離散イベント型のクラスタモデル。各イテレーションの時間は、H100で測った演算子プロファイルから層ごとに算出する。22モデルペア（7B〜141B、denseとMoE、Qwen・Llama・Mistral・Gemma・GPT-OSS・Granite）</li>
<li><strong>通常トラフィック</strong>：各モデル4インスタンス。Azureの会話トレースを、ピーク時に90%のリクエストがSLOを満たせる能力の70%（ρ=0.7）で流し、ピーク・中央値・谷の3時間帯を再現する</li>
<li><strong>実機</strong>：H100 16枚。vLLM 2インスタンスで、FusionBenchの2ペアとSWE-bench Verifiedの2ペア（SWE-agent-LM-7B×SWE-agent-LM-32B、SWE-agent-LM-7B×Qwen2.5-72B-Instruct）、通常トラフィックはρ=0.3</li>
</ul>
</section>
<section id="主な結果シミュレーション" class="level3">
<h3 class="anchored" data-anchor-id="主な結果シミュレーション">主な結果（シミュレーション）</h3>
<table class="caption-top table">
<colgroup>
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
</colgroup>
<thead>
<tr class="header">
<th>指標</th>
<th>ベンチマーク16ペア</th>
<th>GHCP-coding 6ペア</th>
<th>Oracle（上限）</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>切替呼び出しのレイテンシ短縮</td>
<td>10.4%</td>
<td>14.3%（19.0秒中3.3秒）</td>
<td>19.3% / 27.4%</td>
</tr>
<tr class="even">
<td>切替呼び出しのTTFT短縮</td>
<td>44.1%</td>
<td>47.0%</td>
<td>—</td>
</tr>
<tr class="odd">
<td>全LLM呼び出しの平均レイテンシ短縮</td>
<td>5.0%</td>
<td>9.7%</td>
<td>9.6% / 13.8%</td>
</tr>
<tr class="even">
<td>タスクあたりのLLM時間短縮</td>
<td>4.9%</td>
<td>10.0%</td>
<td>—</td>
</tr>
<tr class="odd">
<td>キャッシュヒット率</td>
<td>75.0%→82.1%</td>
<td>55.4%→76.3%</td>
<td>84.4% / 81.3%</td>
</tr>
<tr class="even">
<td>トークン費用削減</td>
<td>28.5%</td>
<td>32.0%</td>
<td>—</td>
</tr>
</tbody>
</table>
<p>単一ペアでは、切替レイテンシが最大21.4%、トークン費用が最大46.1%下がる。タスクあたりのLLM時間は、Gemma-2-9BとMixtral-8x7Bのペアで最大17.7%短くなる。効果の大半はTTFTから来ている。</p>
</section>
<section id="機構ごとの寄与" class="level3">
<h3 class="anchored" data-anchor-id="機構ごとの寄与">機構ごとの寄与</h3>
<p>論文は、機構を順に足した構成を比較している。Harvestは固定クレジット（δ=0.1）だけで収穫する構成、Harvest-SLOはそれをSLO余裕コントローラに置き換えた構成、+Hostはホストメモリ退避を加えた全機構である。Predictiveは切替確率0.25以上のセッションだけを温める構成、Dedicatedはシャドウ専用のインスタンスを各モデルに1台足す構成、Oracleは切替時のキャッシュが無償で用意される理想値である。</p>
<p><a href="data:image/svg+xml;base64,PHN2ZyBhcmlhLWxhYmVsPSLlhajmqZ/mp4vjgacxMC40Jeefree4ruOAgeeQhuaDs+WApOOBrjU0JSIgZm9udC1zaXplPSIyMiIgcm9sZT0iaW1nIiBzdHlsZT0ibWF4LXdpZHRoOjc2MHB4O2ZvbnQtZmFtaWx5OiYjMzk7SGlyYWdpbm8gU2FucyYjMzk7LCYjMzk7Tm90byBTYW5zIEpQJiMzOTssJiMzOTtZdSBHb3RoaWMmIzM5OyxzYW5zLXNlcmlmIiB2aWV3Ym94PSIwIDAgNzYwIDUyMCIgd2lkdGg9IjEwMCUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC1zaXplPSIyOCIgZm9udC13ZWlnaHQ9IjcwMCIgeD0iMjQiIHk9IjQyIj7lhajmqZ/mp4vjgacxMC40Jeefree4ruOAgeeQhuaDs+WApOOBrjU0JTwvdGV4dD48dGV4dCBmaWxsPSIjNTA1YTVmIiBmb250LXNpemU9IjIyIiB4PSIyNCIgeT0iODAiPuWIh+abv+WRvOOBs+WHuuOBl+OBruODrOOCpOODhuODs+OCt+efree4rueOh++8iCXvvInjgIHjg5njg7Pjg4Hjg57jg7zjgq8xNuODmuOCojwvdGV4dD48bGluZSBzdHJva2U9IiM1MDVhNWYiIHN0cm9rZS13aWR0aD0iMS41IiB4MT0iMzAwIiB4Mj0iMzAwIiB5MT0iMTA4IiB5Mj0iNDk2Ij48L2xpbmU+PHRleHQgZmlsbD0iIzUwNWE1ZiIgZm9udC13ZWlnaHQ9IjQwMCIgdGV4dC1hbmNob3I9ImVuZCIgeD0iMjg2IiB5PSIxNTYiPlByZWRpY3RpdmU8L3RleHQ+PHJlY3QgZmlsbD0iI2RlZGRkYiIgaGVpZ2h0PSI0MCIgcng9IjQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHdpZHRoPSI1Ny42IiB4PSIzMDAiIHk9IjEyOCIgLz48dGV4dCBmaWxsPSIjMGIwYzBjIiBmb250LXdlaWdodD0iNDAwIiB4PSIzNjcuNiIgeT0iMTU2Ij4zLjIlPC90ZXh0Pjx0ZXh0IGZpbGw9IiM1MDVhNWYiIGZvbnQtd2VpZ2h0PSI0MDAiIHRleHQtYW5jaG9yPSJlbmQiIHg9IjI4NiIgeT0iMjIwIj5IYXJ2ZXN0PC90ZXh0PjxyZWN0IGZpbGw9IiNkZWRkZGIiIGhlaWdodD0iNDAiIHJ4PSI0IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMS41IiB3aWR0aD0iMTI0LjIiIHg9IjMwMCIgeT0iMTkyIiAvPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtd2VpZ2h0PSI0MDAiIHg9IjQzNC4yIiB5PSIyMjAiPjYuOSU8L3RleHQ+PHRleHQgZmlsbD0iIzUwNWE1ZiIgZm9udC13ZWlnaHQ9IjQwMCIgdGV4dC1hbmNob3I9ImVuZCIgeD0iMjg2IiB5PSIyODQiPkhhcnZlc3QtU0xPPC90ZXh0PjxyZWN0IGZpbGw9IiNkZWRkZGIiIGhlaWdodD0iNDAiIHJ4PSI0IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMS41IiB3aWR0aD0iMTU4LjQiIHg9IjMwMCIgeT0iMjU2IiAvPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtd2VpZ2h0PSI0MDAiIHg9IjQ2OC40IiB5PSIyODQiPjguOCU8L3RleHQ+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC13ZWlnaHQ9IjcwMCIgdGV4dC1hbmNob3I9ImVuZCIgeD0iMjg2IiB5PSIzNDgiPkhhcnZlc3QtU0xPK0hvc3Q8L3RleHQ+PHJlY3QgZmlsbD0iIzFkNzBiOCIgaGVpZ2h0PSI0MCIgcng9IjQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHdpZHRoPSIxODcuMjAwMDAwMDAwMDAwMDIiIHg9IjMwMCIgeT0iMzIwIiAvPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtd2VpZ2h0PSI3MDAiIHg9IjQ5Ny4yMDAwMDAwMDAwMDAwNSIgeT0iMzQ4Ij4xMC40JTwvdGV4dD48dGV4dCBmaWxsPSIjNTA1YTVmIiBmb250LXdlaWdodD0iNDAwIiB0ZXh0LWFuY2hvcj0iZW5kIiB4PSIyODYiIHk9IjQxMiI+RGVkaWNhdGVk77yIR1BVKzI1Je+8iTwvdGV4dD48cmVjdCBmaWxsPSIjZGVkZGRiIiBoZWlnaHQ9IjQwIiByeD0iNCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjMyNCIgeD0iMzAwIiB5PSIzODQiIC8+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC13ZWlnaHQ9IjQwMCIgeD0iNjM0IiB5PSI0MTIiPjE4LjAlPC90ZXh0Pjx0ZXh0IGZpbGw9IiM1MDVhNWYiIGZvbnQtd2VpZ2h0PSI0MDAiIHRleHQtYW5jaG9yPSJlbmQiIHg9IjI4NiIgeT0iNDc2Ij5PcmFjbGXvvIjnkIbmg7PlgKTvvIk8L3RleHQ+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSI0MCIgcng9IjQiIHN0cm9rZT0iIzUwNWE1ZiIgc3Ryb2tlLWRhc2hhcnJheT0iNiA0IiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjM0Ny40MDAwMDAwMDAwMDAwMyIgeD0iMzAwIiB5PSI0NDgiIC8+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC13ZWlnaHQ9IjQwMCIgeD0iNjU3LjQwMDAwMDAwMDAwMDEiIHk9IjQ3NiI+MTkuMyU8L3RleHQ+PC9zdmc+" class="lightbox" data-gallery="quarto-lightbox-gallery-3"><img src="https://scholia-notes.pages.dev/posts/2026-11-14-shadowprefill-kv/data:image/svg+xml;base64,PHN2ZyBhcmlhLWxhYmVsPSLlhajmqZ/mp4vjgacxMC40Jeefree4ruOAgeeQhuaDs+WApOOBrjU0JSIgZm9udC1zaXplPSIyMiIgcm9sZT0iaW1nIiBzdHlsZT0ibWF4LXdpZHRoOjc2MHB4O2ZvbnQtZmFtaWx5OiYjMzk7SGlyYWdpbm8gU2FucyYjMzk7LCYjMzk7Tm90byBTYW5zIEpQJiMzOTssJiMzOTtZdSBHb3RoaWMmIzM5OyxzYW5zLXNlcmlmIiB2aWV3Ym94PSIwIDAgNzYwIDUyMCIgd2lkdGg9IjEwMCUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC1zaXplPSIyOCIgZm9udC13ZWlnaHQ9IjcwMCIgeD0iMjQiIHk9IjQyIj7lhajmqZ/mp4vjgacxMC40Jeefree4ruOAgeeQhuaDs+WApOOBrjU0JTwvdGV4dD48dGV4dCBmaWxsPSIjNTA1YTVmIiBmb250LXNpemU9IjIyIiB4PSIyNCIgeT0iODAiPuWIh+abv+WRvOOBs+WHuuOBl+OBruODrOOCpOODhuODs+OCt+efree4rueOh++8iCXvvInjgIHjg5njg7Pjg4Hjg57jg7zjgq8xNuODmuOCojwvdGV4dD48bGluZSBzdHJva2U9IiM1MDVhNWYiIHN0cm9rZS13aWR0aD0iMS41IiB4MT0iMzAwIiB4Mj0iMzAwIiB5MT0iMTA4IiB5Mj0iNDk2Ij48L2xpbmU+PHRleHQgZmlsbD0iIzUwNWE1ZiIgZm9udC13ZWlnaHQ9IjQwMCIgdGV4dC1hbmNob3I9ImVuZCIgeD0iMjg2IiB5PSIxNTYiPlByZWRpY3RpdmU8L3RleHQ+PHJlY3QgZmlsbD0iI2RlZGRkYiIgaGVpZ2h0PSI0MCIgcng9IjQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHdpZHRoPSI1Ny42IiB4PSIzMDAiIHk9IjEyOCIgLz48dGV4dCBmaWxsPSIjMGIwYzBjIiBmb250LXdlaWdodD0iNDAwIiB4PSIzNjcuNiIgeT0iMTU2Ij4zLjIlPC90ZXh0Pjx0ZXh0IGZpbGw9IiM1MDVhNWYiIGZvbnQtd2VpZ2h0PSI0MDAiIHRleHQtYW5jaG9yPSJlbmQiIHg9IjI4NiIgeT0iMjIwIj5IYXJ2ZXN0PC90ZXh0PjxyZWN0IGZpbGw9IiNkZWRkZGIiIGhlaWdodD0iNDAiIHJ4PSI0IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMS41IiB3aWR0aD0iMTI0LjIiIHg9IjMwMCIgeT0iMTkyIiAvPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtd2VpZ2h0PSI0MDAiIHg9IjQzNC4yIiB5PSIyMjAiPjYuOSU8L3RleHQ+PHRleHQgZmlsbD0iIzUwNWE1ZiIgZm9udC13ZWlnaHQ9IjQwMCIgdGV4dC1hbmNob3I9ImVuZCIgeD0iMjg2IiB5PSIyODQiPkhhcnZlc3QtU0xPPC90ZXh0PjxyZWN0IGZpbGw9IiNkZWRkZGIiIGhlaWdodD0iNDAiIHJ4PSI0IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMS41IiB3aWR0aD0iMTU4LjQiIHg9IjMwMCIgeT0iMjU2IiAvPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtd2VpZ2h0PSI0MDAiIHg9IjQ2OC40IiB5PSIyODQiPjguOCU8L3RleHQ+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC13ZWlnaHQ9IjcwMCIgdGV4dC1hbmNob3I9ImVuZCIgeD0iMjg2IiB5PSIzNDgiPkhhcnZlc3QtU0xPK0hvc3Q8L3RleHQ+PHJlY3QgZmlsbD0iIzFkNzBiOCIgaGVpZ2h0PSI0MCIgcng9IjQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHdpZHRoPSIxODcuMjAwMDAwMDAwMDAwMDIiIHg9IjMwMCIgeT0iMzIwIiAvPjx0ZXh0IGZpbGw9IiMwYjBjMGMiIGZvbnQtd2VpZ2h0PSI3MDAiIHg9IjQ5Ny4yMDAwMDAwMDAwMDAwNSIgeT0iMzQ4Ij4xMC40JTwvdGV4dD48dGV4dCBmaWxsPSIjNTA1YTVmIiBmb250LXdlaWdodD0iNDAwIiB0ZXh0LWFuY2hvcj0iZW5kIiB4PSIyODYiIHk9IjQxMiI+RGVkaWNhdGVk77yIR1BVKzI1Je+8iTwvdGV4dD48cmVjdCBmaWxsPSIjZGVkZGRiIiBoZWlnaHQ9IjQwIiByeD0iNCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjMyNCIgeD0iMzAwIiB5PSIzODQiIC8+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC13ZWlnaHQ9IjQwMCIgeD0iNjM0IiB5PSI0MTIiPjE4LjAlPC90ZXh0Pjx0ZXh0IGZpbGw9IiM1MDVhNWYiIGZvbnQtd2VpZ2h0PSI0MDAiIHRleHQtYW5jaG9yPSJlbmQiIHg9IjI4NiIgeT0iNDc2Ij5PcmFjbGXvvIjnkIbmg7PlgKTvvIk8L3RleHQ+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSI0MCIgcng9IjQiIHN0cm9rZT0iIzUwNWE1ZiIgc3Ryb2tlLWRhc2hhcnJheT0iNiA0IiBzdHJva2Utd2lkdGg9IjEuNSIgd2lkdGg9IjM0Ny40MDAwMDAwMDAwMDAwMyIgeD0iMzAwIiB5PSI0NDgiIC8+PHRleHQgZmlsbD0iIzBiMGMwYyIgZm9udC13ZWlnaHQ9IjQwMCIgeD0iNjU3LjQwMDAwMDAwMDAwMDEiIHk9IjQ3NiI+MTkuMyU8L3RleHQ+PC9zdmc+" class="img-fluid"></a></p>
<p>Predictiveが Harvestより効果が小さいのは、ルーターが呼び出しごとに決めるため、確率で絞ると実際に起きる切替を取りこぼすからである。DedicatedはOracleに近づくが、GPUが25%、エネルギーが11.7%増える。シャドウを通常優先度のリクエストとして流すと（Eager）、逆にLLM呼び出しが7.0%遅くなる。</p>
<p>GHCP-codingではホストメモリ退避の影響が大きい。Harvest-SLOだけでは63Kトークンのシャドウが小モデルのKV領域から追い出され、4.3%にとどまる。退避を加えると14.3%になる。</p>
</section>
<section id="ルーティングの精度と費用" class="level3">
<h3 class="anchored" data-anchor-id="ルーティングの精度と費用">ルーティングの精度と費用</h3>
<p>ShadowPrefillはルーターの判断を変えないので、精度はそのままである。「常に大モデル」に対する費用削減は、28〜44%から49〜56%に広がる。同じ精度で、ルーター自身の請求額が22〜34%下がる。GHCP-codingでは、「常に大モデル」より精度が13.6ポイント高く、費用は54%低い。</p>
</section>
<section id="オーバーヘッド" class="level3">
<h3 class="anchored" data-anchor-id="オーバーヘッド">オーバーヘッド</h3>
<ul>
<li><strong>スループット</strong>：シャドウを含むプリフィル総量は3.8%増える。一方、ルーティングされた呼び出しと通常リクエストのプリフィルは2.4%減る。切替呼び出しがキャッシュに当たるためである。デコードのスループットは変わらない</li>
<li><strong>エネルギー</strong>：SLOを満たしたリクエストあたりの消費エネルギーは+0.4%。もともと電源が入っているGPUの、メモリ律速で余った計算能力を使うためである</li>
<li><strong>通常トラフィック</strong>：SLO達成率は下がらず、0.10〜0.40ポイント上がる。切替呼び出しが早く終わり、インスタンスが早く空くためである</li>
<li><strong>PD分離</strong>：LLM呼び出しのレイテンシが5.2%、切替呼び出しが14.0%短くなる（同居構成は3.7%と7.7%）。ただし、寝ていたPrefill用GPUを起こすため、エネルギーは+11.5%になる</li>
</ul>
</section>
<section id="実機での検証" class="level3">
<h3 class="anchored" data-anchor-id="実機での検証">実機での検証</h3>
<p>vLLMのプロトタイプでも、切替呼び出しのTTFTは平均61.9%短くなる。タスクあたりのLLM時間は、FusionBenchで12.1%、全ペア平均で7.0%短くなる。トークン費用は平均20.4%下がり、エネルギー増加は1.4%、通常トラフィックのSLO達成率は全ペアでわずかに上がる。</p>
<p>SWE-agent-LM-7B×Qwen2.5-72Bでは、切替が呼び出しの13%しかなく、デコードが実行時間の大半を占める。そのため切替呼び出しのTTFTは65.9%短くなっても、タスクあたりの時間はほぼ変わらない。またSWE-benchでは、エージェント向けに調整された32Bモデルとの組み合わせがタスクの32%を解き、汎用の72Bモデルとの組み合わせは14%にとどまる。モデルが大きいだけではエージェントの精度は上がらない。</p>
</section>
</section>
<section id="効果が大きくなる条件小さくなる条件" class="level2">
<h2 class="anchored" data-anchor-id="効果が大きくなる条件小さくなる条件">効果が大きくなる条件・小さくなる条件</h2>
<p>効果を決めるのは、「切替呼び出しのうちプリフィルが占める割合」と「収穫できる余裕の量」の2つである。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>条件</th>
<th>結果</th>
<th>理由</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>文脈が長い</td>
<td>2Kトークン未満で切替レイテンシ0.7%短縮、64K超で20.5%短縮</td>
<td>コールド切替で作り直す量が増える。ホストメモリ退避がないと、32K超でシャドウが追い出され効果が落ちる</td>
</tr>
<tr class="even">
<td>切替先が小さい</td>
<td>15B未満で切替レイテンシ12%短縮、15〜50Bで4%、50B超で3%</td>
<td>ヒット率はどのサイズでも切替時に24〜28ポイント上がる。ただし大モデルはデコードが支配的で、削れるプリフィルは全体の12〜13%（小モデルは26%）</td>
</tr>
<tr class="odd">
<td>出力が長い推論モデル</td>
<td>DeepSeek-R1（671B）は改善0.2ポイント</td>
<td>平均355トークンの推論出力でインスタンスが常に忙しく、余裕がない</td>
</tr>
<tr class="even">
<td>SLOが緩い</td>
<td>既定の半分のSLOでLLM呼び出し2.7%短縮、既定で6.7%、2〜3倍緩めると約8.7%</td>
<td>収穫できる余裕はSLOに比例する</td>
</tr>
<tr class="odd">
<td>負荷が高い</td>
<td>ホスト退避なしはρ=0.2で4.4%、ρ=0.9で0.7%。ホスト退避ありはρ=0.9で15.2%</td>
<td>余裕は減るが、コールド切替の待ちとキャッシュ追い出しが増え、ホスト退避の価値が上がる</td>
</tr>
</tbody>
</table>
<p>シャドウKVの上限25%は、ほとんど使われない。平均でKV領域の1.7%しか占めず、上限を全領域にしても5%にしても結果はほぼ変わらない（5.0%と4.6%）。</p>
<p>効いてくるのは、「何秒使われていないキャッシュならシャドウで上書きしてよいか」という閾値である。0秒では直後に使われるキャッシュまで消し、シャドウの仕事量が2.1倍に膨らんで効果は3.6%に下がる。120秒では空きメモリしか使えず、切替時のヒット率が72%から54%に落ちて2.8%になる。2〜10秒であれば4.8〜5.2%で安定する。</p>
</section>
<section id="関連研究との違い" class="level2">
<h2 class="anchored" data-anchor-id="関連研究との違い">関連研究との違い</h2>
<p>既存のKV管理は、すべて「そのKVを作ったモデル自身のキャッシュ」を扱う。ShadowPrefillは、まだそのセッションを処理していないモデルにキャッシュを作る点で異なる。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>分野</th>
<th>代表例</th>
<th>ShadowPrefillとの違い</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>プレフィックスキャッシュ</td>
<td>vLLM、SGLang、CachedAttention</td>
<td>同一モデル内での再利用</td>
</tr>
<tr class="even">
<td>キャッシュの階層化</td>
<td>Mooncake、Pensieve、LMCache</td>
<td>ホストメモリやリモートへの退避。対象は同一モデル</td>
</tr>
<tr class="odd">
<td>ツール呼び出しをまたぐKV保持</td>
<td>InferCept、KVFlow、Continuum</td>
<td>同一モデルのKVを残す・先読みする</td>
</tr>
<tr class="even">
<td>モデル間のKV変換・共有</td>
<td>Cache-to-Cache、ICaRus、PrefillShare</td>
<td>再学習が必要で、変換後のKVは近似。ShadowPrefillは切替先モデル自身が計算するので完全に等価</td>
</tr>
<tr class="odd">
<td>余剰能力の収穫</td>
<td>Harvest VM、GPU同居、ConServe、Sarathi-Serve</td>
<td>低優先度ジョブやバッチ処理が対象。ShadowPrefillは収穫した能力をエージェントのモデル切替に使う</td>
</tr>
</tbody>
</table>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>ステップ単位のモデルルーティングは精度と費用を両立するが、KVキャッシュがモデル固有であるため、切替のたびにプレフィックスキャッシュを失う。切替呼び出しは1.5〜3.2倍遅く、キャッシュ割引も消える</li>
<li>ShadowPrefillは、切替先候補のモデルで文脈を先にプリフィルしておく。使うのは、インスタンスの完全アイドル時間と、各イテレーションのSLO余裕である。余裕を測る単位をインスタンスからイテレーションに細かくしたことで、混雑時にも能力を確保できる</li>
<li>投機的な仕事を最低優先度に置き、間に合わなければ従来どおりのコールド切替に戻る。そのためルーターの判断も通常トラフィックのSLOも変えずに、切替レイテンシを8.5〜21.4%、トークン費用を22.5〜46.1%下げる。効果が最も大きいのは、文脈が長く切替先が小さいコーディングエージェントである</li>
</ul>
</section>
<section id="参考文献" class="level2">
<h2 class="anchored" data-anchor-id="参考文献">参考文献</h2>
<ul>
<li>Haoran Qiu, Rohan Mahapatra, Rodrigo Fonseca, Mark Russinovich. <a href="https://arxiv.org/abs/2611.13176">ShadowPrefill: Keeping Your Next Model Warm for Per-Step Model Routing in Agentic LLM Serving</a>. arXiv:2611.13176, 2026年11月9日</li>
<li>本文中の数値はすべて上記論文（v1）による</li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-12-nvidia-dynamo-llm-kv/">NVIDIA Dynamoとは？LLMのKVキャッシュをデータセンター全体で再利用する推論基盤の仕組み</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-cmx-kv-g3-5/">NVIDIA CMXとは？KVキャッシュ専用の共有ストレージ階層「G3.5」の仕組みを解説</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-vera-cpu-tb-nvlink-c2c/">NVIDIA Vera CPUとは？1.5TBのメモリとNVLink-C2Cで、AIエージェントの待ち時間中のKVキャッシュを受け持つCPU</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-08-ai-evans-weyl-image-their/">AIを吸収する制度はニューラルネットの形をとる：Evans &amp; Weyl「In the image of their tools」</a><span class="sc-date">2026/11/08</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-14-shadowprefill-kv/</guid>
  <pubDate>Fri, 13 Nov 2026 15:00:00 GMT</pubDate>
</item>
<item>
  <title>Google Cloud「The Future of AI Infrastructure」解説：常時稼働エージェントを支えるTPU・ソフトウェア・実行基盤</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-13-google-cloud-future-ai-infrastructure/</link>
  <description><![CDATA[ 






<section id="要点" class="level2">
<h2 class="anchored" data-anchor-id="要点">要点</h2>
<p>Google Cloudは2026年11月9日のライブ配信「The Future of AI Infrastructure」で、AIインフラの設計目標を「1回の質問に答える推論」から「24時間365日動き続けるエージェント」へ切り替えたことを、ハードウェア・ソフトウェア・実行基盤の3層で示した。</p>
<ol type="1">
<li><strong>ハードウェア</strong>：第8世代TPUは、学習用のTPU 8t、推論用のTPU 8iに、機密推論用のTPU 8txと長大コンテキスト用のTPU 8i Maxを加えた4システム構成になった。</li>
<li><strong>ソフトウェア</strong>：PyTorchをTPUで直接動かすTorchTPU、vLLM／SGLangのTPU対応、KVキャッシュを意識してリクエストを振り分けるllm-dにより、GPU向けに書いたコードをTPUへ移しやすくしている。</li>
<li><strong>実行基盤</strong>：エージェント1体ごとに専用microVMを割り当て、待機中は止めて状態ごと再開するAgent Compute Engineと、そのOSS版にあたるAgent Substrate（CNCFへ寄贈）を用意した。</li>
</ol>
<p>登壇者はAmin Vahdat（Google SVP／AI・インフラ担当チーフテクノロジスト）、Mark Lohmeyer（Google Cloud VP／AI・コンピューティングインフラ担当GM）ほか。</p>
<p><a href="https://www.youtube.com/embed/pabDkNR7jIs?feature=oembed">The Future of AI Infrastructure</a></p>
</section>
<section id="前提の変化リクエストレスポンスからエージェントへ" class="level2">
<h2 class="anchored" data-anchor-id="前提の変化リクエストレスポンスからエージェントへ">1. 前提の変化：リクエスト・レスポンスからエージェントへ</h2>
<p>これまでのLLMサービングは、ユーザーがプロンプトを送り、モデルが応答を返して終わる形が中心だった。インフラはこの1往復のレイテンシとスループットを最適化してきた。</p>
<p>エージェントは動き方が違う。目標を受け取ると自分でサブタスクに分解し、ツールやAPIを呼び出し、結果を見て次の手を決める。この繰り返しが数時間から数日続く。1つの依頼の裏で並列のサブエージェントが動き、それぞれが状態を持つ。</p>
<p>講演では次の数字が示された。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>指標</th>
<th>講演で示された値</th>
<th>補足</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>エージェント関連トラフィック</td>
<td>過去1年で7,800%超の増加</td>
<td>Google側の計測値</td>
</tr>
<tr class="even">
<td>AI処理に占める推論の割合</td>
<td>50〜70%</td>
<td>学習より推論の比重が大きくなっている</td>
</tr>
<tr class="odd">
<td>世界のトークン需要</td>
<td>2030年に現在の24倍</td>
<td>Goldman Sachs Researchの予測（2026年比、月120京トークン）と同じ値</td>
</tr>
</tbody>
</table>
<p>この変化がインフラに求めるものは3つある。</p>
<ul>
<li><strong>推論の低遅延と高スループット</strong>：エージェントは1タスクで何十回もモデルを呼ぶため、1回あたりの遅延が積み上がる。</li>
<li><strong>長いコンテキストの保持</strong>：会話履歴、ツールの実行結果、読み込んだ文書がすべてコンテキストに入るため、KVキャッシュが大きくなる。</li>
<li><strong>待ち時間の扱い</strong>：エージェントは外部APIや人間の承認を待つ時間が長い。待っている間もアクセラレーターやVMを確保し続けると、資源が無駄になる。</li>
</ul>
<p>以降の発表は、この3つにそれぞれ対応している。</p>
</section>
<section id="第8世代tpu用途別の4システム" class="level2">
<h2 class="anchored" data-anchor-id="第8世代tpu用途別の4システム">2. 第8世代TPU：用途別の4システム</h2>
<p>Googleは2026年4月のGoogle Cloud Next ’26で、TPUを初めて学習用と推論用の2チップに分けた。11月9日の発表で、同じシリコンを使った2システムが追加された。新しいチップを起こしたのではなく、既存チップのパッケージとホスト構成を変えたものである。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
</colgroup>
<thead>
<tr class="header">
<th>システム</th>
<th>用途</th>
<th>構成</th>
<th>Googleが示した性能</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>TPU 8t</td>
<td>大規模学習</td>
<td>学習用チップ。スーパーポッドで121 ExaFLOPS</td>
<td>前世代Ironwood比で学習の価格性能最大2.7倍</td>
</tr>
<tr class="even">
<td>TPU 8i</td>
<td>低遅延推論・エージェント</td>
<td>HBM 288GB、オンチップSRAM 384MB</td>
<td>Ironwood比で推論の価格性能最大80%向上</td>
</tr>
<tr class="odd">
<td>TPU 8tx（11月追加）</td>
<td>機密推論・小規模学習</td>
<td>TPU 8tと同じシリコン＋第5世代AMD EPYCホスト。ハードウェアレベルの機密コンピューティング</td>
<td>TPU 8t比で最大2倍の低遅延、暗号化による性能低下はほぼゼロ</td>
</tr>
<tr class="even">
<td>TPU 8i Max（11月追加）</td>
<td>長大コンテキスト推論</td>
<td>TPU 8iチップ2基を1パッケージに統合</td>
<td>TPU 8i比で演算性能・SRAM・HBM帯域がそれぞれ2倍、ラック占有面積は同じ</td>
</tr>
</tbody>
</table>
<section id="tpu-8txアクセラレーターまで機密コンピューティングを広げる" class="level3">
<h3 class="anchored" data-anchor-id="tpu-8txアクセラレーターまで機密コンピューティングを広げる">TPU 8tx：アクセラレーターまで機密コンピューティングを広げる</h3>
<p>機密コンピューティングは、処理中のデータをメモリ上でも暗号化し、クラウド事業者を含む外部から読めないようにする技術である。これまではCPU側（AMD SEV-SNPやIntel TDX）が中心で、GPUではNVIDIAのConfidential Computingがある。TPU 8txは、この保護をTPUまで広げた最初のCloud TPUとされる。データとモデルの重みを、処理中もハードウェアで隔離する。</p>
<p>想定顧客は、規制業種の企業や政府機関である。自社の機密データでフロンティアモデルや独自モデル、エージェントを動かしたいが、平文のままクラウドに置けないという要件に対応する。</p>
<p>ホストCPUにGoogle自社のArm系CPU（Axion）ではなくAMD EPYCを採用した点が特徴である。AMDのセキュリティプロセッサのファームウェアは、Googleのセキュリティチームが過去に詳細レビューしており、その実績が採用理由とされている。</p>
</section>
<section id="tpu-8i-maxコンテキストを切り詰めずに処理する" class="level3">
<h3 class="anchored" data-anchor-id="tpu-8i-maxコンテキストを切り詰めずに処理する">TPU 8i Max：コンテキストを切り詰めずに処理する</h3>
<p>エージェントや長文書の処理では、コンテキストが長くなるほどKVキャッシュがHBMを圧迫する。収まらない分は切り捨てるか、遅い外部メモリへ退避するしかない。TPU 8i Maxは2チップを1パッケージにまとめ、SRAMとHBM帯域を倍にして、長いコンテキストをチップ上に保持したまま推論できるようにしている。</p>
<p>TPU 8txとTPU 8i Maxについて、Googleは提供時期・価格・リージョンを公表していない。Bloombergは2027年の提供と報じている。</p>
</section>
</section>
<section id="project-suncatcher宇宙でのtpu実証" class="level2">
<h2 class="anchored" data-anchor-id="project-suncatcher宇宙でのtpu実証">3. Project Suncatcher：宇宙でのTPU実証</h2>
<p>Project Suncatcherは、太陽光発電の衛星群にTPUを載せ、宇宙で機械学習の計算を行う研究プロジェクトである。地上のデータセンターは電力と冷却が制約になるが、太陽同期軌道ではほぼ常に太陽光を受けられる。</p>
<ul>
<li>2026年10月1日、Planet社と共同開発したプロトタイプ衛星をSpaceXのTransporter-18で打ち上げた。</li>
<li>衛星には4基のTPUを搭載し、Cloud TPU v6e-4スライス相当の計算能力を持つ。太陽電池は約1kW。</li>
<li>TPUは約15分単位で稼働し、軌道上でGeminiモデルを動かして性能を計測している。講演ではこれを軌道上推論の「Hello World」と表現した。</li>
<li>地上試験では、Trillium（TPU v6e）に67MeVの陽子線を照射し、想定軌道線量を大きく超えても致命的な故障がないことを確認している。</li>
<li>2027年には2機を追加し、衛星間の光通信を検証する計画である。</li>
</ul>
<p>製品化の発表ではなく、研究段階の実証である。</p>
</section>
<section id="ソフトウェアスタック既存コードのままtpuを使う" class="level2">
<h2 class="anchored" data-anchor-id="ソフトウェアスタック既存コードのままtpuを使う">4. ソフトウェアスタック：既存コードのままTPUを使う</h2>
<p>TPUの普及を妨げてきた最大の要因は、ソフトウェアの移行コストだった。多くの開発者はPyTorchとNVIDIA GPU前提でコードを書いており、TPUを使うにはJAXに書き換えるか、制約の多いPyTorch/XLAを使う必要があった。Google Cloudはこの障壁を下げる取り組みを並べた。</p>
<section id="torchtpu" class="level3">
<h3 class="anchored" data-anchor-id="torchtpu">TorchTPU</h3>
<p>TorchTPUは、GoogleとMetaのPyTorchチームが共同開発した、TPU向けのネイティブPyTorchバックエンドである。2026年10月20日のPyTorch ConferenceでOSSとして公開された。</p>
<ul>
<li>PyTorchの「PrivateUse1」インターフェースで実装し、通常のPyTorchテンソルがそのままTPU上で動く。</li>
<li>デバイス指定を「tpu」に変えるだけで、学習ループのロジックを書き換えずに実行できることを目標にしている。</li>
<li>Eager実行を優先し、性能を詰めたい場合は<code>torch.compile</code>経由でグラフ全体をXLAでコンパイルできる。</li>
<li>DDP、FSDPv2などの分散学習に対応する。報道では、最大8,192チップ規模でQwen 3 8Bを学習した際のMFU（モデルFLOPs使用率）が52%とされている。</li>
</ul>
<p>PyTorch/XLAはソースコードに手を入れてコンパイル範囲を指定する必要があり、コンパイル時間も長かった。TorchTPUはこの問題を解消するために、バックエンドとして作り直したものである。</p>
</section>
<section id="vllmsglangのtpu対応" class="level3">
<h3 class="anchored" data-anchor-id="vllmsglangのtpu対応">vLLM／SGLangのTPU対応</h3>
<p>OSSの推論エンジンであるvLLMとSGLangについて、TPUのネイティブサポートを標準で提供する。GPU向けに組んだ推論サービングの構成を、エンジンを変えずにTPUへ移せる。</p>
</section>
<section id="llm-dとgke-inference-gateway" class="level3">
<h3 class="anchored" data-anchor-id="llm-dとgke-inference-gateway">llm-dとGKE Inference Gateway</h3>
<p>講演で「LLMD」と呼ばれていたのは、Kubernetes向けの分散推論フレームワーク<strong>llm-d</strong>である。CNCF Sandboxプロジェクトで、2026年10月に1.0がリリースされた。vLLMなどの推論エンジンの前段に立ち、どのレプリカにリクエストを送るかを決める。</p>
<p>通常のロードバランサーはラウンドロビンで振り分けるため、同じ前置き（システムプロンプトや会話履歴）を持つリクエストが別々のレプリカに行き、そのたびにプリフィル（入力部分の計算）をやり直す。llm-dは次の仕組みでこれを避ける。</p>
<ul>
<li><strong>プレフィックスキャッシュ対応ルーティング</strong>：リクエストの先頭部分をハッシュ化し、その部分のKVキャッシュを持っている可能性が高いレプリカへ送る。</li>
<li><strong>負荷を考慮したルーティング</strong>：KVキャッシュ使用率、キューの長さ、処理中リクエスト数を合わせて評価する。</li>
<li><strong>階層型KVキャッシュ</strong>：HBMに収まらないKVキャッシュをホストメモリやストレージへ退避し、再利用する。</li>
<li><strong>プリフィル／デコード分離</strong>：計算特性の違う2段階を別ノードに分ける。</li>
</ul>
<p>エージェントは同じコンテキストを何度も送り直すため、この最適化の効果が大きい。Googleの発表では、Ironwood上のコーディング用途で、プレフィックス対応ルーティングとホストメモリ退避により、TTFT（最初のトークンが返るまでの時間）の中央値を85%以上短縮し、スループットを2.4倍にした。Vertex AI（現Gemini platform）では、プレフィックスキャッシュのヒット率が35%から70%に上がった。</p>
<p>GKE Inference Gatewayは、このllm-dのルーティング機能をマネージドで提供するものである。</p>
</section>
<section id="nvidia-gpuの選択肢" class="level3">
<h3 class="anchored" data-anchor-id="nvidia-gpuの選択肢">NVIDIA GPUの選択肢</h3>
<p>Google CloudはTPUと並行してNVIDIA GPUも提供しており、用途に応じて選べる。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>インスタンス</th>
<th>GPU</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>A4</td>
<td>NVIDIA HGX B200</td>
</tr>
<tr class="even">
<td>A4X</td>
<td>NVIDIA GB200 NVL72</td>
</tr>
<tr class="odd">
<td>A4X Max</td>
<td>NVIDIA GB300 NVL72</td>
</tr>
<tr class="even">
<td>A5X（ベアメタル）</td>
<td>NVIDIA Vera Rubin NVL72。2026年11月GA予定</td>
</tr>
<tr class="odd">
<td>G4（分割利用）</td>
<td>NVIDIA RTX PRO 6000 Blackwell Server Edition</td>
</tr>
</tbody>
</table>
<p>A5Xは単一サイトで最大8万基、複数サイトで最大96万基のRubin GPUまで拡張できる構成とされている。</p>
</section>
</section>
<section id="agent-compute-engineとagent-substrate" class="level2">
<h2 class="anchored" data-anchor-id="agent-compute-engineとagent-substrate">5. Agent Compute EngineとAgent Substrate</h2>
<p>エージェントの実行環境として、Google Cloudは2つを用意した。2026年10月22日のAGNTCon + MCPConで発表されたものである。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>項目</th>
<th>Agent Compute Engine</th>
<th>Agent Substrate</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>位置づけ</td>
<td>Google Cloudのマネージドサービス</td>
<td>GKE（Kubernetes）上で動くOSSの実行ランタイム</td>
</tr>
<tr class="even">
<td>隔離方式</td>
<td>エージェントごとにハードウェア隔離されたmicroVM（Cloud Hypervisor）</td>
<td>microVMまたはgVisorを選択</td>
</tr>
<tr class="odd">
<td>提供状況</td>
<td>プレビューは今後数か月以内（料金未発表）</td>
<td>1.0がGKEでGA。CNCFへ寄贈</td>
</tr>
</tbody>
</table>
<section id="マルチレイヤーの隔離" class="level3">
<h3 class="anchored" data-anchor-id="マルチレイヤーの隔離">マルチレイヤーの隔離</h3>
<p>Agent Compute Engineは、エージェント1体ごとに専用のmicroVMを割り当てる。microVMはCloud Hypervisorで動き、それぞれが独自のゲストカーネルを持つ。ゲストカーネルはホストから分離されているため、エージェントが任意のコードを実行しても、他のエージェントやホストに影響が及びにくい。起動時の信頼性確認には、Google独自のTitanチップとTitaniumを使う。</p>
<p>この基盤は、もともとGemini、Antigravity、Googleのモデル学習パイプラインの社内インフラとして作られたものである。</p>
</section>
<section id="待機中は止め状態ごと再開する" class="level3">
<h3 class="anchored" data-anchor-id="待機中は止め状態ごと再開する">待機中は止め、状態ごと再開する</h3>
<p>エージェントは、外部APIの応答や人間の承認を待つ時間が長い。Agent Compute Engineでは、ツールを実行したあとモデルが考えている間や、返答を待っている間に、サンドボックスがホストへ待機を通知する。その時点の作業メモリとディスクの状態をチェックポイントとして保存し、ホスト資源をほぼゼロまで解放する。次のツール呼び出しが来たら、保存した状態から素早く再開する。</p>
<p>Agent Substrateについて、Googleは次の値を公表している。</p>
<ul>
<li>起動：1秒未満。20万体の検証で毎秒500件の起動を維持</li>
<li>一時停止・再開の遅延：500ミリ秒未満</li>
<li>密度：従来比で最大10倍</li>
</ul>
<p>OSやライブラリは全microVMで共有し、書き換えた部分だけを複製するCopy-on-Write方式でメモリを節約する。1つのスナップショットから数千のエージェントを並列にフォークする使い方も想定している。</p>
</section>
<section id="ゼロシークレット設計" class="level3">
<h3 class="anchored" data-anchor-id="ゼロシークレット設計">ゼロシークレット設計</h3>
<p>サンドボックスの中には、OAuthのリフレッシュトークンやサービスアカウント鍵などの永続的な資格情報を置かない。クラウドのメタデータサーバーにもアクセスできず、仮想NICやデフォルトゲートウェイもない。外部への通信はvirtio-vsock経由でプロキシを通り、Agent Gatewayへ向かう。</p>
<p>Agent Gatewayは、外向きのリクエストについてユーザーの委譲、エージェントID、ノードIDを検証し、エグレスポリシーとDLPルールを評価する。通信がゲートウェイを出る時点で本来の資格情報に差し替えるため、サンドボックスは最後まで資格情報を見ない。ゲストOSでroot権限を奪われても、盗める秘密が中にないという設計である。</p>
</section>
<section id="cncfへの寄贈" class="level3">
<h3 class="anchored" data-anchor-id="cncfへの寄贈">CNCFへの寄贈</h3>
<p>Googleは2026年11月、Agent Substrate、gVisor、OpenRLの3プロジェクトをCNCF（Cloud Native Computing Foundation）へSandboxとして寄贈すると発表した。Googleはこれを、2015〜2016年にKubernetesをCNCFへ寄贈したときになぞらえている。Kubernetesがコンテナのスケジューリングを標準化したように、Agent Substrateはステートフルなエージェントのスケジューリングを標準化することを狙っている。</p>
</section>
</section>
<section id="提供状況のまとめ" class="level2">
<h2 class="anchored" data-anchor-id="提供状況のまとめ">提供状況のまとめ</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 35%">
<col style="width: 64%">
</colgroup>
<thead>
<tr class="header">
<th>発表内容</th>
<th>状態（2026年11月13日時点）</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>TPU 8t／TPU 8i</td>
<td>2026年4月発表、年内提供予定</td>
</tr>
<tr class="even">
<td>TPU 8tx／TPU 8i Max</td>
<td>2026年11月9日発表、提供時期・価格は未発表</td>
</tr>
<tr class="odd">
<td>Project Suncatcher</td>
<td>プロトタイプ衛星が軌道上で稼働中（研究段階）</td>
</tr>
<tr class="even">
<td>TorchTPU</td>
<td>OSSとしてGitHubで公開済み</td>
</tr>
<tr class="odd">
<td>llm-d</td>
<td>1.0リリース済み（CNCF Sandbox）</td>
</tr>
<tr class="even">
<td>Agent Compute Engine</td>
<td>プレビューは今後数か月以内</td>
</tr>
<tr class="odd">
<td>Agent Substrate</td>
<td>1.0がGKEでGA、CNCFへ寄贈</td>
</tr>
<tr class="even">
<td>A5X（Vera Rubin NVL72）</td>
<td>2026年11月GA予定</td>
</tr>
</tbody>
</table>
<p>記事中の性能値は、特記のない限りGoogle・NVIDIAが公表した値で、第三者による検証は済んでいない。</p>
</section>
<section id="参考" class="level2">
<h2 class="anchored" data-anchor-id="参考">参考</h2>
<ul>
<li><a href="https://www.youtube.com/live/pabDkNR7jIs">The Future of AI Infrastructure（Google Cloud Tech／YouTube）</a></li>
<li><a href="https://blog.google/innovation-and-ai/infrastructure-and-cloud/google-cloud/eighth-generation-tpu-agentic-era/">Two chips for the agentic era（Google Blog）</a></li>
<li><a href="https://pytorch.org/blog/introducing-torchtpu/">Introducing TorchTPU（PyTorch Blog）</a></li>
<li><a href="https://developers.googleblog.com/torchtpu-running-pytorch-natively-on-tpus-at-google-scale/">TorchTPU: Running PyTorch Natively on TPUs at Google Scale（Google Developers Blog）</a></li>
<li><a href="https://github.com/llm-d/llm-d">llm-d（GitHub）</a></li>
<li><a href="https://docs.cloud.google.com/kubernetes-engine/docs/concepts/about-gke-inference-gateway">About GKE Inference Gateway powered by llm-d（Google Cloud Docs）</a></li>
<li><a href="https://research.google/blog/exploring-a-space-based-scalable-ai-infrastructure-system-design/">Exploring a space-based, scalable AI infrastructure system design（Google Research）</a></li>
<li><a href="https://www.goldmansachs.com/insights/articles/ai-agents-forecast-to-boost-tech-cash-flow-as-usage-soars">AI agents forecast to boost tech cash flow as usage soars（Goldman Sachs）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-08-embeddinggemma-gemma-b-rag/">EmbeddingGemma 2とGemma 4 12Bで作るビデオRAG</a><span class="sc-date">2026/11/08</span></li><li><a href="../../posts/2026-11-08-chatgpt/">ChatGPTは9億人のリクエストをどう処理しているか</a><span class="sc-date">2026/11/08</span></li><li><a href="../../posts/2026-11-04-ai-nvidia-gtc-berlin/">通信網は分散AI基盤になる：NVIDIA GTC Berlin 通信セッションの要点</a><span class="sc-date">2026/11/04</span></li><li><a href="../../posts/2026-11-04-ai-gpu-prometheus-gpu-util/">AI・GPUワークロードのPrometheus監視：gpu_utilの先を見る</a><span class="sc-date">2026/11/04</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-13-google-cloud-future-ai-infrastructure/</guid>
  <pubDate>Thu, 12 Nov 2026 15:00:00 GMT</pubDate>
</item>
<item>
  <title>ルールを理解した者だけが自由に動ける ― Microsoft Research Podcast「Learn the rules: The hacker mindset」</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-13-microsoft-research-podcast-learn-rules/</link>
  <description><![CDATA[ 






<p>Microsoft Research Podcast のエピソード「Learn the rules: The hacker mindset」（2026年11月3日公開）の要点に、番組内で触れられた大会・プロジェクトの背景情報を補って整理する。</p>
<ul>
<li>話し手：Mike Walker（Microsoft Research リサーチマネージャー。AI・サイバーセキュリティ・大規模分散システムの交差領域を担当。前職は DARPA Cyber Grand Challenge のプログラムマネージャー）</li>
<li>聞き手：Weishung Liu（Microsoft Research プリンシパル テクニカル プログラムマネージャー）</li>
<li>出典：<a href="https://www.microsoft.com/en-us/research/podcast/learn-the-rules-the-hacker-mindset/" class="uri">https://www.microsoft.com/en-us/research/podcast/learn-the-rules-the-hacker-mindset/</a></li>
</ul>
<section id="結論セキュリティはルールの理解と信頼で成り立つ" class="level2">
<h2 class="anchored" data-anchor-id="結論セキュリティはルールの理解と信頼で成り立つ">結論：セキュリティは「ルールの理解」と「信頼」で成り立つ</h2>
<p>このエピソードの主張は一文にまとまる。<strong>ルールは社会的な取り決めであり、その社会的文脈を理解した者だけが、ルールの中で望むことを実現できる。</strong> 根拠として Walker が挙げるのは次の3点である。</p>
<ol type="1">
<li>セキュリティの仕組みは、ユーザーに何かを求めるたびに「信頼」を消費する。信頼を浪費すれば、セキュリティ体制そのものが機能しなくなる。</li>
<li>攻撃と防御は同じスキルと同じツールで成り立っており、両者を分けるのは「誰がシステムを制御しているか」だけである。</li>
<li>AI モデルの台頭で、高度な攻撃を高コストに保っていた「攻撃側の希少性（offensive scarcity）」が崩れた。防御側は攻撃を前提にした設計に移る必要がある。</li>
</ol>
<p>以下、番組の流れに沿って詳細を記す。</p>
</section>
<section id="ルールは社会的構築物である" class="level2">
<h2 class="anchored" data-anchor-id="ルールは社会的構築物である">1. ルールは社会的構築物である</h2>
<p>Walker は冒頭で「ルールは社会的構築物（social construct）」と述べる。ルールを即座に白黒判定するのではなく、そのルールがどういう社会的文脈で作られたかを理解することが先に来る。</p>
<p>セキュリティ施策も同じ構造を持つ。パスワード変更、多要素認証、アクセス申請といった要求は、どれもユーザーの信頼を前提にしている。根拠の薄い要求を重ねれば信頼は目減りし、ユーザーは迂回策を探し始める。結果として仕組み全体が破綻する。</p>
<section id="補足no-vehicles-in-the-park" class="level3">
<h3 class="anchored" data-anchor-id="補足no-vehicles-in-the-park">補足：「No Vehicles in the Park」</h3>
<p>番組で話題に出たのが、ブラウザで遊べる思考実験ゲーム「No Vehicles in the Park（公園に車両の乗り入れ禁止）」である。David Turner が作ったもので、コンテンツモデレーションやスパム対策のポリシーについて、単純なケースでさえ人々の判断が一致しないことを示すために作られている。プレイヤーは「公園への車両乗り入れ禁止」という1行のルールの審判役となり、救急車、ベビーカー、上空を飛ぶ飛行機などが違反かどうかを判定し、他のプレイヤーとの一致率を見る。</p>
<p>Walker は「国際宇宙ステーションが公園の上空を通過しても違反ではない」と冗談を言い、自分は母集団との一致率が50%を超えたことがほとんどないと明かしている。一方、Liu は初回で96%だった。ルールの文言を字義どおりに読む人と、ルールの意図から読む人とで結果が割れる。このズレこそが、ルール運用の難しさの本体である。</p>
</section>
</section>
<section id="名前のない頃からのセキュリティ" class="level2">
<h2 class="anchored" data-anchor-id="名前のない頃からのセキュリティ">2. 名前のない頃からのセキュリティ</h2>
<p>Walker はオハイオ州コロンバスで育ち、夏はバージニア州タッパハノックの農場で過ごした。父親は「半分科学者、半分ベンチャーキャピタリスト」で、安全警告の付いた産業機器を渡して「これで何が作れるか」と問うような人だった。Walker はマイケルソン・モーリーの実験の再現に挑み、Apple II で何年も実験を重ね、ダイヤルアップの BBS（電子掲示板）も運営した。BBS について Walker は「作り手が設計した一つの宇宙」と表現している。</p>
<p>本人は「ずっとサイバーセキュリティをやっていたが、その言葉を知らなかった」と言う。たとえば、キャンパスの入館バッジがブロードキャスト型のネットワーク上でやり取りされていて複製可能だと指摘し、「やめなさい」と言われた。本人いわく、言うことは聞かなかった。</p>
</section>
<section id="と-def-con-ctf" class="level2">
<h2 class="anchored" data-anchor-id="と-def-con-ctf">3. 9.11 と DEF CON CTF</h2>
<p>2001年9月11日、Walker はメリーランド州の通信系スタートアップで働いていた。事件後、ワシントンD.C. ではコンピュータセキュリティ人材の発掘が始まり、Walker もその網にかかった。その後、約11年にわたってラスベガスで開かれる DEF CON の Capture the Flag（CTF）に出場し続ける。「世界トップのハッカー」という呼び名は後から付けられたもので、本人は受け入れていない。</p>
<section id="ctf-の仕組み" class="level3">
<h3 class="anchored" data-anchor-id="ctf-の仕組み">CTF の仕組み</h3>
<p>DEF CON CTF は攻防戦形式で行われる。</p>
<ul>
<li>各チームは自分たちのシステムを守りつつ、他チームのシステムから「フラグ」（データやシステムの制御権）を奪う。奪う際に検知されてはならない。</li>
<li>対象ソフトウェアは運営が作成し、競技開始まで秘密にされる。チームは席に着いた瞬間に初見のコードを読み解き、守り、攻めることを求められる。</li>
</ul>
<p>つまり CTF は、未知のコードを短時間で理解する能力の競技である。</p>
</section>
</section>
<section id="ctf-を機械にやらせるdarpa-cyber-grand-challenge" class="level2">
<h2 class="anchored" data-anchor-id="ctf-を機械にやらせるdarpa-cyber-grand-challenge">4. CTF を機械にやらせる：DARPA Cyber Grand Challenge</h2>
<p>RAND 研究所の報告書「Hackers Wanted」は、この種のスキルを持つ人材が国家的に不足していることを指摘した。これを受けて、DARPA 情報イノベーション室（I2O）を率いていた Norm Whitaker と Dan Kaufman が「機械に CTF をプレイさせられるか」と問いかけた。ロボットサッカーのハッキング版である。ここから史上初の「機械だけのハッキング大会」が生まれ、Walker がその設計を担った。</p>
<section id="補足cgc-の結果" class="level3">
<h3 class="anchored" data-anchor-id="補足cgc-の結果">補足：CGC の結果</h3>
<p>Cyber Grand Challenge（CGC）の決勝は2016年8月4日、ラスベガスで開催された。7チームが設計した高性能計算機が、人間の介入なしに脆弱性の発見・証明・修正を競った。優勝はピッツバーグの ForAllSecure が開発した「Mayhem」で、賞金は200万ドル。2位は TECHx の「Xandra」、3位は Shellphish の「Mechanical Phish」だった。Mayhem は大会後、人間のチームが戦う DEF CON CTF に機械として初めて招待されている。</p>
<p>番組で Walker が強調した設計上のポイントは次のとおり。</p>
<ul>
<li>準備期間は約3年半。</li>
<li>競技はエアギャップの内側で完全自律的に行われ、システムが落ちても人間は一切手を出せない。チームは観戦するしかない。</li>
<li>事前に触れられたのは、主に DARPA が用意したスクリプト型の対戦相手のみ。</li>
<li>CGC は機械学習の大会ではなく、エキスパートシステムの大会だった。ただし、そこで作られた技術スタックは後の取り組みに影響を与えている。</li>
</ul>
</section>
<section id="補足aixcc-への系譜" class="level3">
<h3 class="anchored" data-anchor-id="補足aixcc-への系譜">補足：AIxCC への系譜</h3>
<p>Walker はこの流れを DARPA の AI Cyber Challenge（AIxCC）につなげている。AIxCC は ARPA-H（米国保健高等研究計画局）と共同で2023年に始まった2年間の大会で、オープンソースソフトウェアの脆弱性を AI で自律的に発見・修正するシステムを競った。2025年8月の DEF CON 33 での決勝で優勝したのは Team Atlanta（Georgia Tech、Samsung Research、KAIST、POSTECH の混成チーム）で、賞金は400万ドル。2位は Trail of Bits（300万ドル）、3位は Theori（150万ドル）だった。Team Atlanta のシステム「Atlantis」は、ファザー（自動でバグを探すソフトウェア）を複数の LLM で強化したものである。</p>
<p>CGC が「ルールベースの推論」で自律防御が可能だと示し、AIxCC が「LLM を組み込んだ推論」で実ソフトウェアに適用できる段階まで進めた。この10年の差は、そのまま AI モデルが攻防の現場に入ってきた歴史でもある。番組では、Team Atlanta によるモデル駆動の自律セキュリティ用ハーネスにも触れられている。</p>
</section>
</section>
<section id="攻撃の希少性が崩れた" class="level2">
<h2 class="anchored" data-anchor-id="攻撃の希少性が崩れた">5. 攻撃の希少性が崩れた</h2>
<p>Walker は2016年の New York Times のインタビューで、ネットワークの安全確保を「文明にとっての課題」と述べていた。番組ではこの見方が今も変わらず、むしろ強まっていると語る。社会がネットワーク化されたシステムに依存する度合いが、2016年当時よりさらに高まったからである。</p>
<p>そこに AI モデルが加わった。かつては高度なネットワーク攻撃を実行できる人材がごく少数で、それが攻撃のコストを高く保っていた。Walker はこれを「offensive scarcity（攻撃側の希少性）」と呼び、モデルがこの構造をひっくり返したと指摘する。攻撃能力が安く手に入るようになった以上、防御側は「攻撃はめったに来ない」という前提を捨てなければならない。</p>
</section>
<section id="レッドチームブルーチームという区分は単純化しすぎ" class="level2">
<h2 class="anchored" data-anchor-id="レッドチームブルーチームという区分は単純化しすぎ">6. レッドチーム／ブルーチームという区分は単純化しすぎ</h2>
<p>Walker はレッドチーム（攻撃側）とブルーチーム（防御側）の二分法を「単純化しすぎ」と評する。</p>
<ul>
<li>セキュリティツールは本質的にデュアルユースである。攻撃と防御の違いは、主に「誰が鍵を持っているか」「誰がシステムを制御しているか」に帰着する。</li>
<li>攻撃者も、侵入した後はその足場を防御しなければならない。</li>
<li>防御者も、脆弱性を見つけて検証する作業、つまり攻撃的な作業をしなければならない。</li>
</ul>
<p>パープルチームとは、攻撃と防御が同じスキルとツールを共有していると認めることだ、と Walker は説明する。</p>
</section>
<section id="攻撃を知った上で防御ツールを作るproject-freta" class="level2">
<h2 class="anchored" data-anchor-id="攻撃を知った上で防御ツールを作るproject-freta">7. 攻撃を知った上で防御ツールを作る：Project Freta</h2>
<p>Walker が率いる New Security Ventures チームの方針は「offense-aware defensive tool development（攻撃を意識した防御ツール開発）」である。その代表例が Project Freta だ。名前はマリー・キュリーの生まれた通り（ワルシャワのフレタ通り）に由来する。</p>
<p>Walker は店舗の万引き対策で説明する。泥棒はまず防犯カメラを狙う。カメラを壊したり向きを変えたりすれば、それ以降の犯行は記録に残らない。ネットワーク攻撃も同じで、攻撃者はまず監視の仕組みそのものを改ざんする。OS 上で動くセンサーは、同じ OS 上の攻撃者に無効化されうる。</p>
<p>Freta はこの問題に対し、ゲスト OS の内側ではなく、クラウドのハードウェア側から仮想マシンのメモリを取得して解析する。ハードウェア側の取得はゲスト内の攻撃者から改ざんしにくい。そのうえで、システム全体のメモリ解析をクラウド規模で実行する。</p>
<section id="補足project-freta-の公開内容" class="level3">
<h3 class="anchored" data-anchor-id="補足project-freta-の公開内容">補足：Project Freta の公開内容</h3>
<p>Project Freta は2020年7月に、Microsoft Research の無料サービスとして公開された。</p>
<ul>
<li>Linux システムの揮発性メモリをスナップショットから自動解析し、ルートキットや OS・センサーの改ざんの痕跡を検出する。</li>
<li>初期リリースで4,000以上の Linux カーネルに対応した。</li>
<li>Hyper-V のメモリスナップショット（.vmrs）、LiME イメージ（.lime）、ELF コアダンプ（.core）、生の物理メモリダンプ（.raw）を入力にできる。</li>
<li>エージェントをインストールしないため、マルウェアに検査を察知されず、証拠隠滅や逃走の機会を与えない。</li>
<li>解析系はメモリ安全性を重視して Rust でゼロから作られている。</li>
</ul>
<p>公開時の Walker の説明では、狙いは「検出されないクラウドマルウェアの開発コストを理論上の上限まで引き上げる」ことにある。全員がボタン一つでメモリを掃除できるなら、潜伏型マルウェアの作り手は検出されるたびに一から作り直すしかなくなり、そのクラウドは攻撃の場として割に合わなくなる。</p>
</section>
</section>
<section id="技術は明かし配置は明かさない" class="level2">
<h2 class="anchored" data-anchor-id="技術は明かし配置は明かさない">8. 技術は明かし、配置は明かさない</h2>
<p>Walker は Freta について、技術の仕組みは公開してきたが、どこにどう配置しているかは明かしていないと語る。攻撃者は防御の実態ではなく、自分が認識した防御に合わせて行動を変える。したがって防御側のブラフにも意味がある。これはゲーム理論の構図であり、Liu が「ポーカーみたい」と返すと、Walker は「このゲームはラスベガスがふさわしい」と応じている。</p>
</section>
<section id="自転車苦しさではなく段取り" class="level2">
<h2 class="anchored" data-anchor-id="自転車苦しさではなく段取り">9. 自転車：苦しさではなく段取り</h2>
<p>バスケットボールで膝を痛めた際、外科医に水泳か自転車を勧められたのが自転車を始めたきっかけである。その後マウンテンバイクのレースに出るようになり、7月には100マイルのレース「High Cascades 100」を完走した（329人中69位）。室内トレーナーで練習しつつ、「トレーナー・ロボットになるな」（室内練習だけで実走を怠るな）と助言されたという。肩を痛めていた時期には、左手だけでグラベルバイクを組み上げた。名前は「Orange Crush」で、名付けたのは妻である。</p>
<p>Walker はライドそのものを苦行とは考えていない。きついのはスタート前の段取りと心配であり、たとえばレース前日のパンクのような事態である。</p>
</section>
<section id="ライトニングラウンド" class="level2">
<h2 class="anchored" data-anchor-id="ライトニングラウンド">10. ライトニングラウンド</h2>
<ul>
<li><strong>視点を変えた助言</strong>：自分が同意できない判断について、メンターから「その判断は、あなたが持っていない情報を反映しているのではないか」と問われた。以来、Walker は「相手は自分の知らない何を知っているのか（What do they know that I don’t?）」と自問するようにしている。</li>
<li><strong>痛い教訓</strong>：CTF の予選で、チームが1時間半前に解いていたフラグを自分が提出した。チームには個人の技術だけでなく、情報を共有し連携する社会的知性が要る。</li>
<li><strong>一番の自慢</strong>：膝の手術からの回復期に、独学でジャグリングを身につけたこと。</li>
<li><strong>別の職業を選ぶなら</strong>：SF 作家。推薦書は Joe Haldeman『終りなき戦い（The Forever War）』。</li>
</ul>
</section>
<section id="エンジニアにとっての示唆" class="level2">
<h2 class="anchored" data-anchor-id="エンジニアにとっての示唆">エンジニアにとっての示唆</h2>
<p>番組の内容から、日々の設計・運用に持ち帰れる論点を4つに絞る。</p>
<ol type="1">
<li><strong>セキュリティ施策は「信頼の予算」で設計する。</strong> ユーザーへの要求は1つごとに信頼を消費する。要求の数と根拠を管理しない施策は、迂回策を生み、全体を弱くする。</li>
<li><strong>防御ツールは攻撃者の最初の一手から逆算する。</strong> 攻撃者がまず狙うのは監視の仕組みである。センサーを守る対象と同じ層に置かない、取得経路を改ざん困難な層に移す、という Freta の設計判断は、クラウド以外の監視設計にも適用できる。</li>
<li><strong>攻撃コストの前提を更新する。</strong> AI モデルで攻撃能力が安価になった以上、「高度な攻撃は来ない」という前提のリスク評価は見直しが必要である。CGC から AIxCC までの10年が、その変化の速さを示している。</li>
<li><strong>判断に同意できないときは情報の差を疑う。</strong> 「相手は自分の知らない何を知っているのか」という問いは、セキュリティに限らず、レビューや意思決定の場で使える。</li>
</ol>
</section>
<section id="参考リンク" class="level2">
<h2 class="anchored" data-anchor-id="参考リンク">参考リンク</h2>
<ul>
<li><a href="https://www.microsoft.com/en-us/research/podcast/learn-the-rules-the-hacker-mindset/">Learn the rules: The hacker mindset（Microsoft Research Podcast）</a></li>
<li><a href="https://www.darpa.mil/news/2016/cyber-grand-challenge-winners">Cyber Grand Challenge 勝者発表（DARPA, 2016）</a></li>
<li><a href="https://darpa.mil/news/2025/aixcc-results">AIxCC 結果発表（DARPA, 2025）</a></li>
<li><a href="https://blog.trailofbits.com/2025/08/09/trail-of-bits-buttercup-wins-2nd-place-in-aixcc-challenge/">Trail of Bits’ Buttercup wins 2nd place in AIxCC Challenge（Trail of Bits）</a></li>
<li><a href="https://microsoft.com/en-us/research/blog/toward-trusted-sensing-for-the-cloud-introducing-project-freta">Toward trusted sensing for the cloud: Introducing Project Freta（Microsoft Research Blog）</a></li>
<li><a href="https://learn.microsoft.com/en-us/security/research/project-freta">Project Freta（Microsoft Learn）</a></li>
<li><a href="https://www.metafilter.com/202513/No-Vehicles-In-The-Park">No Vehicles In The Park（MetaFilter での紹介）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-08-note-144321/">マンバ・メンタリティとは何か――コービー・ブライアントの練習哲学</a><span class="sc-date">2026/11/08</span></li><li><a href="../../posts/2026-10-30-note-233319/">むずかしいことをやさしく――井上ひさし「む、や、ふ、ゆ、ま」に学ぶ伝える技術</a><span class="sc-date">2026/10/30</span></li><li><a href="../../posts/2026-11-14-microsoft-ai-humanist-ai-mai/">Microsoft AI「Humanist AI行動規範」ドラフトを読む：MAIモデルは停止に抵抗せず、推論を隠さない</a><span class="sc-date">2026/11/14</span></li><li><a href="../../posts/2026-10-30-fde-microsoft-fde/">FDEは「凄腕の個人」から「チーム」へ──Microsoftの論考「FDEの24か月の進化」を読んで</a><span class="sc-date">2026/10/30</span></li></ul>

</section>

 ]]></description>
  <category>経営と組織</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-13-microsoft-research-podcast-learn-rules/</guid>
  <pubDate>Thu, 12 Nov 2026 15:00:00 GMT</pubDate>
</item>
<item>
  <title>Agent Substrateとは？待機時間の長いAIエージェントを少数のPodで大規模に動かすKubernetesの新しい仕組み</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-agent-substrate-ai-pod-kubernetes/</link>
  <description><![CDATA[ 






<p><strong>結論：Agent Substrateは、待機中のAIエージェントの状態（メモリとファイル）をスナップショットとして退避して実行環境を解放し、呼び出されたら空いている実行環境に復元することで、少数のPodで多数のエージェントを動かす仕組みです。</strong></p>
<p>ポイントは次の3つです。</p>
<ol type="1">
<li><strong>問題</strong>：エージェントは大半の時間を待機に使うのに、従来は1エージェントに1つのPodを割り当て、計算資源を確保したままにしていた</li>
<li><strong>解決</strong>：待機中のエージェントをメモリとファイルシステムごと退避してワーカーを解放し、再び呼ばれたら空いているワーカーに復元する</li>
<li><strong>効果</strong>：NVIDIAは、標準的なコンテナと比べて10倍の密度で実行できるとしている</li>
</ol>
<p>Googleが始めたオープンソースで、CNCF Sandboxに採択されています。NVIDIAは2026年11月10日、自社の推論基盤との連携を発表しました。</p>
<hr>
<section id="前提1aiエージェントは大半の時間を待機に使う" class="level2">
<h2 class="anchored" data-anchor-id="前提1aiエージェントは大半の時間を待機に使う">前提1：AIエージェントは大半の時間を待機に使う</h2>
<p>AIエージェントの処理を時間軸で見ると、実際に計算している時間はわずかです。</p>
<ul>
<li>人の入力を待つ</li>
<li>LLMの応答を待つ</li>
<li>ツールの実行結果を待つ</li>
</ul>
<p>コーディング支援のエージェントであれば、「LLMで考える→リポジトリを編集する→テストを実行する→再びLLMで考える」を繰り返し、そのたびに待機が発生します。</p>
</section>
<section id="前提2podの起動とコールドスタート" class="level2">
<h2 class="anchored" data-anchor-id="前提2podの起動とコールドスタート">前提2：Podの起動とコールドスタート</h2>
<p>KubernetesでPodを1つ起動するには、次の処理を順に通ります。</p>
<ol type="1">
<li>APIサーバーがリクエストを受け付ける</li>
<li>アドミッション（受付時の検証）を行う</li>
<li>etcdに記録する</li>
<li>スケジューラが配置先のノードを決める</li>
<li>ノード上のkubeletがコンテナを起動する</li>
<li>コンテナイメージを取得する</li>
<li>ネットワークを設定する</li>
</ol>
<p>この処理に数秒かかります。これを <strong>コールドスタート</strong> と呼びます。NVIDIAによれば、エージェントのサンドボックスには、10ミリ秒のコマンドを毎秒数百回実行する使い方があり、そのたびに数秒のコールドスタートを挟むことはできません。</p>
<hr>
</section>
<section id="従来の2つの方式とその問題" class="level2">
<h2 class="anchored" data-anchor-id="従来の2つの方式とその問題">従来の2つの方式とその問題</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>方式</th>
<th>問題</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>1エージェントに1つのPodを常駐させる</td>
<td>待機中もメモリを確保したままになる</td>
</tr>
<tr class="even">
<td>使わないときはPodを削除する</td>
<td>再開のたびに数秒のコールドスタートが発生し、エージェントの状態も失われる</td>
</tr>
</tbody>
</table>
<p>強化学習の事後学習（RL post-training）でも同じ問題があります。学習用の環境の準備が遅いと、学習を行うGPUが待機状態になります。</p>
<hr>
</section>
<section id="agent-substrateの仕組み" class="level2">
<h2 class="anchored" data-anchor-id="agent-substrateの仕組み">Agent Substrateの仕組み</h2>
<p>Agent Substrateは、多数のエージェントのセッションを、少数の起動済みワーカーPodに多重化して実行する、サンドボックス型の実行環境です。セキュリティを強化したゼロトラストの設計になっています。</p>
<section id="構成要素" class="level3">
<h3 class="anchored" data-anchor-id="構成要素">構成要素</h3>
<table class="caption-top table">
<colgroup>
<col style="width: 22%">
<col style="width: 77%">
</colgroup>
<thead>
<tr class="header">
<th>構成要素</th>
<th>役割</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>アクター</td>
<td>エージェントとその実行環境をまとめた単位</td>
</tr>
<tr class="even">
<td>ワーカーPod</td>
<td>アクターを実行する通常のKubernetesのPod</td>
</tr>
<tr class="odd">
<td>サンドボックス</td>
<td>アクター同士を隔離する。gVisorまたはmicroVMを使う</td>
</tr>
<tr class="even">
<td>制御プレーン</td>
<td>多数のアクターを少数のワーカーに割り当てる</td>
</tr>
<tr class="odd">
<td>ルーター</td>
<td>すべてのワーカーが使用中のとき、リクエストを待機させる</td>
</tr>
</tbody>
</table>
</section>
<section id="処理の流れ" class="level3">
<h3 class="anchored" data-anchor-id="処理の流れ">処理の流れ</h3>
<ol type="1">
<li>アクターは、ワーカー上のサンドボックスで実行される</li>
<li>アクターが待機状態になると、メモリとファイルシステムの状態をスナップショットとして退避し、ワーカーを解放する</li>
<li>アクターが再び呼び出されると、その時点で空いているワーカーに状態を復元する</li>
<li>復元は、APIサーバー、スケジューラ、kubeletを経由せず、起動済みのワーカーに状態を戻すだけで行う</li>
<li>すべてのワーカーが使用中の場合、ルーターがリクエストを待機させる。待機時間とキューの長さには上限がある</li>
</ol>
<p>重要なのは4です。アクターの再開時に、前述の数秒かかるPodの起動処理を通らないため、高速に再開できます。</p>
<p>一方で、ワーカーPod自体は通常のPodなので、<strong>Kubernetesのスケジューリング、リソースクォータ、配置ポリシーはそのまま適用されます</strong>。Kubernetesの外に独自の仕組みを作るのではなく、Kubernetesの上に層を追加する設計です。</p>
<hr>
</section>
</section>
<section id="nvidia-dynamoとの連携" class="level2">
<h2 class="anchored" data-anchor-id="nvidia-dynamoとの連携">NVIDIA Dynamoとの連携</h2>
<p>NVIDIAの推論基盤 <strong>Dynamo</strong> は、次のような推論の状況をAgent Substrateに通知します。</p>
<ul>
<li>最初のトークンが返るまでの予測時間</li>
<li>GPUプールの使用率</li>
</ul>
<p>Agent Substrateはこの情報を使い、アクターの扱いを次のように決めます。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>推論の状況</th>
<th>アクターの扱い</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>応答がすぐ返る見込み</td>
<td>ワーカー上に残しておく</td>
</tr>
<tr class="even">
<td>応答まで時間がかかる見込み</td>
<td>退避してワーカーを解放する</td>
</tr>
<tr class="odd">
<td>応答が返る直前</td>
<td>応答の完了前に復元しておく</td>
</tr>
</tbody>
</table>
<p>GPUを含む計算資源の割り当ては、NVIDIAのスケジューラ <strong>KAI Scheduler</strong> が担当し、ワーカーPodを学習サーバーや推論サーバーと並べて配置します。</p>
<hr>
</section>
<section id="想定される用途" class="level2">
<h2 class="anchored" data-anchor-id="想定される用途">想定される用途</h2>
<p>NVIDIAは次の3つを挙げています。</p>
<ol type="1">
<li><strong>コーディング支援エージェント</strong>：LLMの呼び出しとリポジトリの操作を交互に行い、ターンをまたいで環境を保持する必要がある</li>
<li><strong>強化学習の事後学習</strong>：CPU負荷の高い環境を一度に大量に動かす。1回の学習で、数百のサンドボックスから数十万規模まで増えることがある</li>
<li><strong>研究用のGPUサンドボックス</strong>：CUDAのコンパイルやカーネルの性能測定など、短時間で隔離されたGPU環境が必要な作業</li>
</ol>
<hr>
</section>
<section id="nvidiaによる貢献" class="level2">
<h2 class="anchored" data-anchor-id="nvidiaによる貢献">NVIDIAによる貢献</h2>
<p>NVIDIAは、Agent Substrateのリポジトリに次のような貢献をしています。</p>
<ul>
<li>ルーターでのリクエスト待機の実装と、動作中のアクター宛てのリクエストがキューで滞留しないための改善</li>
<li>microVMサンドボックスでの、コンテナごとのCPU・メモリ上限の設定</li>
<li>KubernetesのDRA（Dynamic Resource Allocation）によるデバイスの差し替え対応。最初の対象はNVIDIA GPUで、作業中</li>
<li>GPUの状態を保存・復元するための、ベンダーに依存しない設計の提案。保存時のデバイスの特性を記録し、一致するデバイスに復元するか、一致しなければ通常の起動に切り替える</li>
</ul>
<hr>
</section>
<section id="制約と注意点" class="level2">
<h2 class="anchored" data-anchor-id="制約と注意点">制約と注意点</h2>
<ul>
<li>APIはまだ変更される可能性があり、GPU対応はDRAを基盤に作り直している最中です</li>
<li>Dynamoとのエージェント連携の一部は実験的な機能です</li>
<li>「10倍の密度」はNVIDIAの説明であり、実際の負荷で同じ結果になるかは検証が必要です</li>
</ul>
<hr>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>AIエージェントは大半の時間を待機に使うため、1エージェントに1つのPodを常駐させると資源の無駄が大きい</li>
<li>Agent Substrateは、待機中のアクターを状態ごと退避し、呼び出されたら空いているワーカーに復元することで、少数のPodで多数のエージェントを実行する</li>
<li>再開時にPodの起動処理を通らないため高速で、ワーカーは通常のPodなので既存の運用ルールも適用される</li>
<li>NVIDIAはDynamoやKAI Schedulerと連携させ、推論の待ち時間に応じて退避するかどうかを決める方向で開発を進めている</li>
</ul>
</section>
<section id="あわせて読みたい" class="level2">
<h2 class="anchored" data-anchor-id="あわせて読みたい">あわせて読みたい</h2>
<ul>
<li><a href="../2026-11-12-nvidia-openshell-cncf-ai-kubernetes/">OpenShell：AIエージェントの実行環境とCNCFへの寄贈</a><br>
同時に発表された部品の全体像</li>
<li><a href="../2026-11-12-nvidia-dynamo-llm-kv/">③ Dynamo：KVキャッシュをデータセンター全体で再利用する</a><br>
Agent Substrateと連携する推論基盤</li>
<li><a href="../2026-11-12-nvidia-vera-cpu-tb-nvlink-c2c/">④ Vera CPU：待ち時間中のKVキャッシュをCPUメモリで受け持つ</a><br>
エージェントがツールを待つ間のKVキャッシュの置き場所</li>
</ul>
<hr>
<p><strong>参考</strong></p>
<ul>
<li><a href="https://developer.nvidia.com/blog/agent-substrate-advancing-kubernetes-for-agents-at-scale/">Agent Substrate: Advancing Kubernetes for Agents at Scale（NVIDIA Technical Blog）</a></li>
<li><a href="https://blogs.nvidia.com/blog/open-source-openshell-infrastructure/">NVIDIA Expands Open Source Commitment With OpenShell Donation and New AI Infrastructure（NVIDIA Blog）</a></li>
<li><a href="https://github.com/agent-substrate/substrate">agent-substrate/substrate（GitHub）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-12-nvidia-kubernetes-engine-nvke-gpu/">NVIDIA Kubernetes Engine（NVKE）とは？GPUクラウド事業者がマネージドKubernetesを自前で提供するためのオープンソース</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-openshell-cncf-ai-kubernetes/">NVIDIAがOpenShellをCNCFに寄贈――AIエージェントを安全かつ大規模に動かすKubernetes基盤の全体像</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-14-performance-per-watt/">「電力1Wあたりの性能」とは？ AIインフラの比べ方が変わった理由</a><span class="sc-date">2026/11/14</span></li><li><a href="../../posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/">Nemotron 3.5 Bolt 74B-A9B：2ビットで24GBに収めた74B MoEモデルの作り方</a><span class="sc-date">2026/11/12</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-agent-substrate-ai-pod-kubernetes/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
</item>
<item>
  <title>AI推論の性能は「メモリの使い方」で決まる――NVIDIAが示す、GPUメモリを無駄なく使う5つの方法【まとめ】</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-ai-nvidia-gpu/</link>
  <description><![CDATA[ 






<p><strong>結論：これからのAI推論で効いてくるのは「GPUメモリをどれだけ積むか」より「1バイトあたりどれだけ役に立つ処理をさせるか」です。NVIDIAはその方法を、NVFP4、Wide-EP、Dynamo、Vera CPU、CMXの5つに整理しています。</strong></p>
<p>ポイントは次の3つです。</p>
<ol type="1">
<li><strong>背景</strong>：次世代GPUのVera Rubinでも、GPU1枚あたりのHBM容量は288GBで、前世代のGB300から増えない。容量ではなく使い方で差がつく</li>
<li><strong>HBMを使うもの</strong>：主に「モデルの重み」と「KVキャッシュ」の2つ。AIエージェントの普及で、KVキャッシュの比重が大きくなった</li>
<li><strong>5つの方法</strong>：チップ、接続、ソフトウェアを組み合わせて設計（コデザイン）し、メモリの無駄を減らしている</li>
</ol>
<p>この記事は5本の個別記事のまとめです。</p>
<hr>
<section id="前提メモリの階層" class="level2">
<h2 class="anchored" data-anchor-id="前提メモリの階層">前提：メモリの階層</h2>
<p>GPUサーバーの記憶装置は、速いものほど容量が小さく高価です。NVIDIAは、KVキャッシュの置き場所を次の階層で整理しています。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 8%">
<col style="width: 25%">
<col style="width: 66%">
</colgroup>
<thead>
<tr class="header">
<th>階層</th>
<th>置き場所</th>
<th>特徴</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>G1</td>
<td>GPUメモリ（HBM）</td>
<td>GPUが直接計算に使う。最も高速だが容量が小さい</td>
</tr>
<tr class="even">
<td>G2</td>
<td>CPUメモリ</td>
<td>HBMより低速だが大容量</td>
</tr>
<tr class="odd">
<td>G3</td>
<td>ローカルSSD</td>
<td>大容量だが、そのノードからしか使えない</td>
</tr>
<tr class="even">
<td>G4</td>
<td>共有ストレージ</td>
<td>最も大容量だが、最も遅い</td>
</tr>
</tbody>
</table>
<p>GPUが計算に使えるのはHBM上のデータだけです。HBMに載せられる量が、同時に処理できるリクエスト数や扱える文脈の長さを決めます。</p>
</section>
<section id="hbmを使う2つのデータ" class="level2">
<h2 class="anchored" data-anchor-id="hbmを使う2つのデータ">HBMを使う2つのデータ</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>データ</th>
<th>内容</th>
<th>大きさの特徴</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>モデルの重み</td>
<td>学習済みのパラメータ</td>
<td>モデルが大きいほど大きい。数百GBになることもある</td>
</tr>
<tr class="even">
<td>KVキャッシュ</td>
<td>処理済みの入力の中間データ</td>
<td>文脈が長いほど、同時に処理するリクエストが多いほど大きくなる</td>
</tr>
</tbody>
</table>
<p>AIエージェントは、長いシステムプロンプトや資料を入力したまま、ツール呼び出しを挟んで何度もLLMを呼び出します。そのためKVキャッシュが大きくなり、しかも長時間保持されます。</p>
<hr>
</section>
<section id="つの方法の全体像" class="level2">
<h2 class="anchored" data-anchor-id="つの方法の全体像">5つの方法の全体像</h2>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112072346.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="GPUメモリを無駄なく使う5つの方法：どの置き場に効くか"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-ai-nvidia-gpu/fig-20261112072346.png" class="img-fluid figure-img" alt="GPUメモリを無駄なく使う5つの方法：どの置き場に効くか"></a></p>
<figcaption>GPUメモリを無駄なく使う5つの方法：どの置き場に効くか</figcaption>
</figure>
</div>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>方法</th>
<th>内容</th>
<th>数字（NVIDIAの説明）</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>① NVFP4</td>
<td>重みとKVキャッシュを4ビットにして、HBMに載る量を増やす</td>
<td>重みは16ビット形式の約3.5分の1。精度の差は多くの項目で1ポイント以内</td>
</tr>
<tr class="even">
<td>② Wide-EP</td>
<td>MoEモデルのエキスパートを多くのGPUに分散し、1枚あたりの重みを減らす</td>
<td>EP32はEP8よりGPU1枚あたりの出力量が最大1.8倍</td>
</tr>
<tr class="odd">
<td>③ Dynamo</td>
<td>KVキャッシュの位置を見てルーティングし、再利用する。prefillとdecodeを分離する</td>
<td>KVキャッシュをG1〜G4の4階層で管理</td>
</tr>
<tr class="even">
<td>④ Vera CPU</td>
<td>大容量のCPUメモリをGPUと高帯域で接続し、ツール待ち中のKVキャッシュを退避する</td>
<td>最大1.5TBのメモリ、GPUとの帯域は毎秒1.8TB</td>
</tr>
<tr class="odd">
<td>⑤ CMX</td>
<td>ポッド内のどのノードからも使えるKVキャッシュ専用の階層（G3.5）を追加する</td>
<td>長い文脈の推論で、処理量と電力効率が最大5倍</td>
</tr>
</tbody>
</table>
<section id="nvfp4" class="level3">
<h3 class="anchored" data-anchor-id="nvfp4">① NVFP4</h3>
<p>FP4（E2M1）で表せる値は15個しかありません。NVFP4は、16個の値ごとにFP8のスケールを、テンソル全体にFP32のスケールを付ける2段階の構造で、4ビットでも精度を保ちます。</p>
<p>→ 詳しくは<a href="../2026-11-12-nvfp4-ai-nvidia/">NVFP4とは？精度をほぼ落とさずにAIモデルを4ビットにする、NVIDIAの数値形式の仕組み</a></p>
</section>
<section id="wide-ep" class="level3">
<h3 class="anchored" data-anchor-id="wide-ep">② Wide-EP</h3>
<p>MoEモデルは、計算に使うエキスパートは一部でも、全エキスパートの重みをHBMに置く必要があります。Wide-EPはエキスパートを数十枚のGPUに分散し、空いたHBMをKVキャッシュに回します。層ごとのオールツーオール通信を高速に処理するため、NVL72のような大きなNVLinkドメインが前提です。</p>
<p>→ 詳しくは<a href="../2026-11-12-wide-ep-moe-gpu-nvidia/">Wide-EPとは？MoEモデルのエキスパートを数十枚のGPUに分散して、メモリと計算を効率化するNVIDIAの方法</a></p>
</section>
<section id="dynamo" class="level3">
<h3 class="anchored" data-anchor-id="dynamo">③ Dynamo</h3>
<p>同じプレフィックスを持つリクエストは、KVキャッシュを再利用すればprefillを省けます。Dynamoは、KVキャッシュの位置とワーカーの負荷を見て振り分け、prefillとdecodeを別のGPUで処理し、KVキャッシュを4階層に分けて出し入れします。</p>
<p>→ 詳しくは<a href="../2026-11-12-nvidia-dynamo-llm-kv/">NVIDIA Dynamoとは？LLMのKVキャッシュをデータセンター全体で再利用する推論基盤の仕組み</a></p>
</section>
<section id="vera-cpu" class="level3">
<h3 class="anchored" data-anchor-id="vera-cpu">④ Vera CPU</h3>
<p>エージェントがツールの結果を待つ間も、KVキャッシュはHBMを占有しています。Vera CPUは、RubinのHBMの5倍以上のメモリを持ち、NVLink-C2Cで接続されています。ツール待ちの間だけKVキャッシュを退避し、HBMを別のリクエストに使います。</p>
<p>→ 詳しくは<a href="../2026-11-12-nvidia-vera-cpu-tb-nvlink-c2c/">NVIDIA Vera CPUとは？1.5TBのメモリとNVLink-C2Cで、AIエージェントの待ち時間中のKVキャッシュを受け持つCPU</a></p>
</section>
<section id="cmx" class="level3">
<h3 class="anchored" data-anchor-id="cmx">⑤ CMX</h3>
<p>ローカルSSDに置いたKVキャッシュは、他のノードから読めません。CMXは、GPUポッド内で共有できるKVキャッシュ専用の階層（G3.5）を追加します。</p>
<p>→ 詳しくは<a href="../2026-11-12-nvidia-cmx-kv-g3-5/">NVIDIA CMXとは？KVキャッシュ専用の共有ストレージ階層「G3.5」の仕組みを解説</a></p>
<hr>
</section>
</section>
<section id="つに共通する考え方" class="level2">
<h2 class="anchored" data-anchor-id="つに共通する考え方">5つに共通する考え方</h2>
<p>5つの方法に共通するのは、<strong>GPU単体の性能ではなく、チップ・接続・ソフトウェアを組み合わせて設計することで、メモリの使い方を改善している</strong>点です。</p>
<ul>
<li>NVFP4は、BlackwellのTensor Coreとセットで設計されている</li>
<li>Wide-EPは、72枚のGPUを直結するNVLinkがあって初めて効果が出る</li>
<li>Vera CPUへの退避は、NVLink-C2Cの帯域があって初めて実用になる</li>
<li>DynamoとCMXは、ソフトウェア、ネットワーク、ストレージをまたいで動く</li>
</ul>
<hr>
</section>
<section id="注意点" class="level2">
<h2 class="anchored" data-anchor-id="注意点">注意点</h2>
<ul>
<li>「最大1.8倍」「最大5倍」などの数字は、特定のモデルと測定条件での最大値です</li>
<li>ストレージの速度の数字には、ストレージベンダーによる検証のものが多く含まれます</li>
<li>Vera RubinやCMXは次世代の基盤で、2026年11月時点では製品が出そろっていないものもあります</li>
</ul>
<hr>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>GPUのHBMは世代が進んでも容量が大きく増えないため、使い方が性能を左右する</li>
<li>HBMを使うのは主に「モデルの重み」と「KVキャッシュ」で、エージェントの普及でKVキャッシュの比重が増えている</li>
<li>NVIDIAは、NVFP4、Wide-EP、Dynamo、Vera CPU、CMXの5つで、メモリの無駄を減らしている</li>
</ul>
</section>
<section id="連載gpuメモリを無駄なく使う5つの方法" class="level2">
<h2 class="anchored" data-anchor-id="連載gpuメモリを無駄なく使う5つの方法">連載「GPUメモリを無駄なく使う5つの方法」</h2>
<ul>
<li><strong>GPUメモリを無駄なく使う5つの方法【まとめ】</strong>（この記事）</li>
<li><a href="../2026-11-12-nvfp4-ai-nvidia/">① NVFP4：モデルを4ビットにする数値形式</a></li>
<li><a href="../2026-11-12-wide-ep-moe-gpu-nvidia/">② Wide-EP：MoEのエキスパートを多数のGPUに分散する</a></li>
<li><a href="../2026-11-12-nvidia-dynamo-llm-kv/">③ Dynamo：KVキャッシュをデータセンター全体で再利用する</a></li>
<li><a href="../2026-11-12-nvidia-vera-cpu-tb-nvlink-c2c/">④ Vera CPU：待ち時間中のKVキャッシュをCPUメモリで受け持つ</a></li>
<li><a href="../2026-11-12-nvidia-cmx-kv-g3-5/">⑤ CMX：KVキャッシュ専用の共有ストレージ階層</a></li>
</ul>
<p>次の記事：<a href="../2026-11-12-nvfp4-ai-nvidia/">① NVFP4：モデルを4ビットにする数値形式</a></p>
</section>
<section id="あわせて読みたい" class="level2">
<h2 class="anchored" data-anchor-id="あわせて読みたい">あわせて読みたい</h2>
<ul>
<li><a href="../2026-11-12-agent-substrate-ai-pod-kubernetes/">Agent Substrate：待機の長いエージェントを少数のPodで動かす</a><br>
推論基盤のDynamoと連携して、エージェントを大規模に動かす仕組み</li>
<li><a href="../2026-11-12-nvidia-snapshot-llm-cpu-gpu/">NVIDIA Snapshot：推論サーバーの起動を数十秒にする</a><br>
推論サーバーのGPUメモリの状態を保存・復元する仕組み</li>
<li><a href="../2026-11-12-flux-image-klein-nvidia-blackwell/">FLUX 3 Image Klein：画像生成をBlackwellで3〜4倍高速化</a><br>
NVFP4とFP8を画像生成モデルで使った例</li>
</ul>
<hr>
<p><strong>参考</strong></p>
<ul>
<li><a href="https://developer.nvidia.com/blog/five-ways-nvidia-co-design-maximizes-the-value-of-every-byte-in-the-ai-factory/">Five Ways NVIDIA Co-Design Maximizes the Value of Every Byte in the AI Factory（NVIDIA Technical Blog）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/">Nemotron 3.5 Bolt 74B-A9B：2ビットで24GBに収めた74B MoEモデルの作り方</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-dynamo-llm-kv/">NVIDIA Dynamoとは？LLMのKVキャッシュをデータセンター全体で再利用する推論基盤の仕組み</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvfp4-ai-nvidia/">NVFP4とは？精度をほぼ落とさずにAIモデルを4ビットにする、NVIDIAの数値形式の仕組み</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-wide-ep-moe-gpu-nvidia/">Wide-EPとは？MoEモデルのエキスパートを数十枚のGPUに分散して、メモリと計算を効率化するNVIDIAの方法</a><span class="sc-date">2026/11/12</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-ai-nvidia-gpu/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
  <media:content url="https://scholia-notes.pages.dev/posts/2026-11-12-ai-nvidia-gpu/fig-20261112072346.png" medium="image" type="image/png" height="84" width="144"/>
</item>
<item>
  <title>AIエージェントの失敗を改善につなげる――NVIDIA NeMoで、実行トレースから評価とハーネスの修正を作る方法</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-ai-nvidia-nemo/</link>
  <description><![CDATA[ 






<p><strong>結論：NVIDIAが紹介したのは、AIエージェントの実行トレースから失敗のパターンを見つけ、それを再現する評価を作り、エージェントのハーネス（システムプロンプトやツールの使い方など）を修正し、ホールドアウトの評価で改善を確認する、という改善サイクルをツールで回す方法です。</strong></p>
<p>ポイントは次の3つです。</p>
<ol type="1">
<li><strong>問題</strong>：エージェントの失敗の原因は、モデルだけでなく、プロンプト、ツール、ルーティング、メモリ、スキル、制御コードにあることが多い。汎用のベンチマークでは見つからない</li>
<li><strong>方法</strong>：NeMo Compass（トレース分析）→ NeMo Eval Author（評価の作成）→ コーディングエージェントによる修正 → ホールドアウトの評価での確認、の順に回す</li>
<li><strong>結果</strong>：架空の業務アシスタントでは合格数が3/6から6/6に増え、ツール呼び出し回数が約半分になった。ダッソー・システムズの設計支援エージェントでは、形式の誤ったツール呼び出しが142件から0件になった</li>
</ol>
<p>2026年11月4日にNVIDIAの技術ブログで紹介されました。</p>
<hr>
<section id="前提ハーネストレース評価" class="level2">
<h2 class="anchored" data-anchor-id="前提ハーネストレース評価">前提：ハーネス、トレース、評価</h2>
<section id="ハーネス" class="level3">
<h3 class="anchored" data-anchor-id="ハーネス">ハーネス</h3>
<p>AIエージェントは、LLMだけでは動きません。LLMの周りに、次のような仕組みがあります。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>要素</th>
<th>内容</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>システムプロンプト</td>
<td>エージェントの役割やルールを定義する</td>
</tr>
<tr class="even">
<td>ツール</td>
<td>メール送信、検索、ファイル操作など</td>
</tr>
<tr class="odd">
<td>ルーティング</td>
<td>どの処理に回すかを決める</td>
</tr>
<tr class="even">
<td>メモリ</td>
<td>過去のやり取りを保持する</td>
</tr>
<tr class="odd">
<td>スキル</td>
<td>特定の作業の手順</td>
</tr>
<tr class="even">
<td>制御コード</td>
<td>確認や承認などの処理</td>
</tr>
</tbody>
</table>
<p>これらLLM以外の部分をまとめて <strong>ハーネス</strong> と呼びます。エージェントの失敗の多くは、モデルの能力ではなく、ハーネスの不備から生じます。</p>
</section>
<section id="トレースと評価" class="level3">
<h3 class="anchored" data-anchor-id="トレースと評価">トレースと評価</h3>
<ul>
<li><strong>トレース</strong>：エージェントが1回の処理で、どのような判断をし、どのツールを、どのような引数で呼び出したかの記録</li>
<li><strong>評価（eval）</strong>：決まった課題をエージェントに実行させ、合否を自動で判定するテスト</li>
<li><strong>ホールドアウト</strong>：修正を行うコーディングエージェントには見せない、別の評価課題。見せた課題だけで改善しても、その課題に過度に合わせた修正（過学習）の可能性がある。ホールドアウトでも改善して初めて、汎用的な改善と判断できる</li>
</ul>
<hr>
</section>
</section>
<section id="失敗の例下書きの依頼で送信してしまう" class="level2">
<h2 class="anchored" data-anchor-id="失敗の例下書きの依頼で送信してしまう">失敗の例：下書きの依頼で送信してしまう</h2>
<p>NVIDIAが示した失敗例は次のとおりです。</p>
<blockquote class="blockquote">
<p>ユーザーが「プロジェクトの進捗をまとめたメッセージを下書きして」と依頼したところ、エージェントは下書きを作成しただけでなく、ユーザーの確認を取らずに送信ツール（<code>send_message</code>）も呼び出した。</p>
</blockquote>
<p>モデルの文章作成能力には問題がありません。問題は「送信前に必ず確認を取る」というルールが、ハーネスで守られていないことです。こうした失敗は、汎用の知識やコーディングのベンチマークでは検出できません。</p>
<hr>
</section>
<section id="改善サイクルの5ステップ" class="level2">
<h2 class="anchored" data-anchor-id="改善サイクルの5ステップ">改善サイクルの5ステップ</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>ステップ</th>
<th>内容</th>
<th>使うツール</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>① トレース分析</td>
<td>実行トレースから、繰り返し発生している問題を見つける</td>
<td>NeMo Compass</td>
</tr>
<tr class="even">
<td>② 評価の作成</td>
<td>見つかった問題を再現する評価を作る。人がレビューして調整する</td>
<td>NeMo Eval Author</td>
</tr>
<tr class="odd">
<td>③ ハーネスの修正</td>
<td>コーディングエージェントが修正案を出す</td>
<td>Codex、Claude Codeなど</td>
</tr>
<tr class="even">
<td>④ 測定</td>
<td>開発用の評価とホールドアウトの評価を実行し、両方で改善したら採用する</td>
<td>Harbor、NeMo Gym</td>
</tr>
<tr class="odd">
<td>⑤ 繰り返し</td>
<td>修正後の新しいトレースを分析し、次の問題を探す</td>
<td>NeMo Compass</td>
</tr>
</tbody>
</table>
<section id="nemo-compassトレースから問題を見つける" class="level3">
<h3 class="anchored" data-anchor-id="nemo-compassトレースから問題を見つける">① NeMo Compass：トレースから問題を見つける</h3>
<p>NeMo Compassは、保存されたトレース（1行に1回の実行を記録したJSON）と評価の結果を、あらかじめ書いた <strong>エージェントの期待される振る舞いの仕様書</strong>（<code>ETHOS.md</code>）と照合して分析します。</p>
<ul>
<li>繰り返し発生している問題を見つける</li>
<li>ツールの使い方の異常や、期待される振る舞いからのずれを指摘する</li>
<li>指摘ごとに、根拠となるトレースのIDを示す</li>
</ul>
<p>結果は、<strong>根拠となる例が付いた、優先順位付きの課題リスト</strong>として出力されます。</p>
</section>
<section id="nemo-eval-author問題を再現する評価を作る" class="level3">
<h3 class="anchored" data-anchor-id="nemo-eval-author問題を再現する評価を作る">② NeMo Eval Author：問題を再現する評価を作る</h3>
<p>NeMo Eval Authorは、コーディングエージェントに評価の作成方法を与えるスキル集です。①で見つかった問題ごとに、HarborまたはNeMo Gymの形式で評価を作成します。</p>
<p>評価には、具体的な判定条件を確認する検証器（verifier）が付きます。今回の例では「確認なしで送信したら不合格」です。自動で作成した評価は、人がレビューして要件に合わせて調整します。</p>
</section>
<section id="ハーネスを修正する" class="level3">
<h3 class="anchored" data-anchor-id="ハーネスを修正する">③ ハーネスを修正する</h3>
<p>コーディングエージェントが修正案を出します。例では、エージェントのシステムプロンプト（Hermes Agentの <code>SOUL.md</code>）に、送信前の確認に関するルールを追加しています。システムプロンプト以外に、ミドルウェアやプラグインで修正する方法もあります。</p>
<p><strong>モデルを再学習するのではなく、ハーネスを修正する</strong>点が重要です。再学習に比べて、短時間・低コストで試せます。</p>
</section>
<section id="種類の評価で測定する" class="level3">
<h3 class="anchored" data-anchor-id="種類の評価で測定する">④ 2種類の評価で測定する</h3>
<p>修正後、開発用の評価と、コーディングエージェントに見せていないホールドアウトの評価の両方を実行します。<strong>両方で改善した場合だけ修正を採用</strong>します。どちらかで悪化した場合や、結果が明確でない場合は、再度分析から行います。</p>
</section>
<section id="次の問題へ" class="level3">
<h3 class="anchored" data-anchor-id="次の問題へ">⑤ 次の問題へ</h3>
<p>修正後のエージェントの新しいトレースをNeMo Compassで分析し、次の問題を探します。</p>
<hr>
</section>
</section>
<section id="結果" class="level2">
<h2 class="anchored" data-anchor-id="結果">結果</h2>
<section id="架空の業務アシスタント" class="level3">
<h3 class="anchored" data-anchor-id="架空の業務アシスタント">架空の業務アシスタント</h3>
<p>チャット、メール、ファイル、チケットにMCPで接続した架空企業のアシスタント（Hermes AgentをOpenShellのサンドボックスで実行）での結果です。開発用・ホールドアウトとも、2課題を各3回実行しています。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 20%">
<col style="width: 32%">
<col style="width: 47%">
</colgroup>
<thead>
<tr class="header">
<th>評価</th>
<th>合格数（修正前→修正後）</th>
<th>ツール呼び出し回数（修正前→修正後）</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>開発用</td>
<td>3/6 → 6/6</td>
<td>10 → 6</td>
</tr>
<tr class="even">
<td>ホールドアウト</td>
<td>4/6 → 6/6</td>
<td>28 → 15</td>
</tr>
</tbody>
</table>
<p>ホールドアウトでも合格数が増え、ツール呼び出しがほぼ半分になりました。不要なツール呼び出しが減ったことを示しています。この例で分析したトレースは42件です。</p>
</section>
<section id="ダッソーシステムズの設計支援エージェント" class="level3">
<h3 class="anchored" data-anchor-id="ダッソーシステムズの設計支援エージェント">ダッソー・システムズの設計支援エージェント</h3>
<p>自動車のドア設計を支援するエージェント（LEO）での結果です。</p>
<ul>
<li>形式の誤ったツール呼び出しが <strong>142件から0件</strong> に減り、正確さは変わらなかった</li>
<li>6つのシナリオで、総合評価スコアが相対で約28%向上し、1回あたりのツール呼び出しが35%減った</li>
<li>他のシナリオでの悪化は報告されていない</li>
<li>最初の1サイクルは、人の介入なしで約12時間かけて実行された</li>
</ul>
<hr>
</section>
</section>
<section id="試すのに必要な環境" class="level2">
<h2 class="anchored" data-anchor-id="試すのに必要な環境">試すのに必要な環境</h2>
<ul>
<li>Ubuntu 24.04（推奨：8 vCPU、メモリ32GB）とDocker</li>
<li>OpenShell 0.1.2、Harbor 0.22.0</li>
<li>NVIDIAのAPIキー</li>
<li>対応するコーディングエージェント（CodexやClaude Codeなど）</li>
</ul>
<p>NeMo Compass、NeMo Eval Author、NemoClawのコミュニティのサンプルは、GitHubで公開されています。</p>
<hr>
</section>
<section id="制約と注意点" class="level2">
<h2 class="anchored" data-anchor-id="制約と注意点">制約と注意点</h2>
<ul>
<li>例として示された実験は小規模です（開発用・ホールドアウトとも2課題×3回）</li>
<li>自動で作成した評価は、人がレビューして要件に合わせる前提です</li>
<li>ホールドアウトの課題は、コーディングエージェントから見えないよう管理する必要があります</li>
<li>ダッソー・システムズの結果は、第三者が検証できる形では公開されていません</li>
</ul>
<hr>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>エージェントの失敗の多くは、モデルではなく、プロンプト、ツール、確認処理などのハーネスに原因がある</li>
<li>NeMo Compassでトレースから問題を見つけ、NeMo Eval Authorで評価を作り、ハーネスを修正し、ホールドアウトの評価で改善を確認する</li>
<li>「開発用とホールドアウトの両方で改善した場合だけ採用する」という条件が、過学習した修正を防ぐ</li>
</ul>
</section>
<section id="あわせて読みたい" class="level2">
<h2 class="anchored" data-anchor-id="あわせて読みたい">あわせて読みたい</h2>
<ul>
<li><a href="../2026-11-12-nvidia-openshell-cncf-ai-kubernetes/">OpenShell：AIエージェントの実行環境とCNCFへの寄贈</a><br>
エージェントがアクセスできる範囲をポリシーで制限する実行環境</li>
<li><a href="../2026-11-12-agent-substrate-ai-pod-kubernetes/">Agent Substrate：待機の長いエージェントを少数のPodで動かす</a><br>
エージェントを大規模に動かす仕組み</li>
</ul>
<hr>
<p><strong>参考</strong></p>
<ul>
<li><a href="https://developer.nvidia.com/blog/use-nvidia-nemo-to-turn-agent-failures-into-tests-and-harness-fixes/">Use NVIDIA NeMo to Turn Agent Failures into Tests and Harness Fixes（NVIDIA Technical Blog）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-08-ai/">AIエージェントは失敗を隠す――会話ログを採点して自己改善させる仕組み</a><span class="sc-date">2026/11/08</span></li><li><a href="../../posts/2026-10-31-note-104511/">使うほど賢くなるエージェントのつくり方――モデル・ハーネス・コンテキスト</a><span class="sc-date">2026/10/31</span></li><li><a href="../../posts/2026-10-30-ai-ax-practitioner-playbook/">AIは「おすすめ」では動かず、「失敗する」と書くと動く――『AX Practitioner Playbook』の学び</a><span class="sc-date">2026/10/30</span></li><li><a href="../../posts/2026-10-18-ai-harmony-harness/">AIエージェントのハーネスを自動で改良する方法｜機能と安全性を両立させる「Harmony Harness」論文を解説</a><span class="sc-date">2026/10/18</span></li></ul>

</section>

 ]]></description>
  <category>AIエージェントと開発</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-ai-nvidia-nemo/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
</item>
<item>
  <title>AIエージェントの「乱立」を標準仕様で解く：Standard Agent Specificationの全体像</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-ai-standard-agent-specification/</link>
  <description><![CDATA[ 






<p>企業ごとに個別実装されたAIエージェントは互いに再利用も連携もできない。Standard Agent Specification（以下、Standard Agent仕様）は、エージェントをTypeScriptのコードとして定義し、npmパッケージとして配布・インストール・合成できるようにするオープンソース仕様である。</p>
<p>本記事は、Standard Agents社の共同創業者 Justin Schroeder氏の講演「Every Company Is Building Agents That Can’t Work Together」の内容を、仕様サイトと同氏のAI Engineer講演の情報で補って整理する。要点は次の3つ。</p>
<ul>
<li>企業がエージェントを自作する理由は、統合（Integration）・信頼（Trust）・効力（Efficacy）の3つ</li>
<li>問題はエージェントを作ることではなく、ハーネス（実行基盤）を各社がばらばらに作り、共有も合成もできないこと</li>
<li>Standard Agent仕様は、汎用エージェント1体にツールを足し続ける設計ではなく、ドメイン特化エージェントを部品として組み合わせる設計を前提にする</li>
</ul>
<section id="企業が独自エージェントを作り続ける3つの理由" class="level2">
<h2 class="anchored" data-anchor-id="企業が独自エージェントを作り続ける3つの理由">企業が独自エージェントを作り続ける3つの理由</h2>
<p>MCPサーバーやMarkdownの指示書（Skills）を汎用エージェントにつなぐだけでは、業務プロセスを任せられない。Schroeder氏はその理由を次の3つに整理している。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>理由</th>
<th>内容</th>
<th>具体例</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>統合（Integration）</td>
<td>自社のデータと業務フローの中で、決められた手順どおりに処理させる必要がある</td>
<td>保証請求の管理、スケジューリング</td>
</tr>
<tr class="even">
<td>信頼（Trust）</td>
<td>何でもできるエージェントは、無関係なサイトの参照や範囲外の操作を行うリスクを抱える。動作範囲を事前に限定する必要がある</td>
<td>許可済み操作だけを持つエージェント</td>
</tr>
<tr class="odd">
<td>効力（Efficacy）</td>
<td>速さよりも、特定タスクをどれだけ正確にこなすかが問われる。評価テスト（Eval）の通過率で測る</td>
<td>業務別Evalでの精度改善</td>
</tr>
</tbody>
</table>
<p>この3つは、汎用エージェントに機能を足すほど満たしにくくなる。そのため企業は、役割を絞ったエージェントを自作する方向に進む。</p>
</section>
<section id="現在のエージェント開発が抱える課題" class="level2">
<h2 class="anchored" data-anchor-id="現在のエージェント開発が抱える課題">現在のエージェント開発が抱える課題</h2>
<p>各社が異なる言語・ツール・ループ構造でエージェントを作っているため、ハーネスを毎回イチから作り、他の環境と共有できず、スケールしない。</p>
<p>Schroeder氏はエージェントを「モデルの非決定的な出力を、目的に向けて制御する決定的なソフトウェア」と定義し、エージェントとハーネスを一体のものとして扱う。デモが動いた段階では、ハーネス側の次の課題が未解決のまま残る。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>課題</th>
<th>内容</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>エージェントループ</td>
<td>モデル応答・ツール呼び出し・次の判断の繰り返しを、プロバイダーごとの差異を吸収して正しく回す</td>
</tr>
<tr class="even">
<td>耐障害実行（Durable execution）</td>
<td>途中で障害が起きても状態を失わずに再開する</td>
</tr>
<tr class="odd">
<td>検証と停止条件</td>
<td>どの操作を許可するか、いつ終了するかを決める</td>
</tr>
<tr class="even">
<td>可観測性</td>
<td>各ステップでモデルに何を送ったかを追跡できる</td>
</tr>
<tr class="odd">
<td>可搬性</td>
<td>作成者の環境以外でも動く</td>
</tr>
<tr class="even">
<td>合成可能性</td>
<td>作ったエージェントを別のアプリケーションから再利用できる</td>
</tr>
</tbody>
</table>
<p>これらを各社が独自に解いている結果、エージェントは作った場所でしか動かず、他社のエージェントとも連携できない。</p>
</section>
<section id="standard-agent-specificationの概要" class="level2">
<h2 class="anchored" data-anchor-id="standard-agent-specificationの概要">Standard Agent Specificationの概要</h2>
<p>Standard Agent仕様は、可搬・合成可能なドメイン特化エージェントを作るためのオープンソース仕様で、仕様サイトの現行版はv0.2.0、ライセンスはMITである。仕様に準拠したエージェントは公開・インストールでき、他のStandard Agentと組み合わせられ、準拠ランタイムであればどこでも同じように動くことを目標にしている。</p>
<p>仕様が掲げる原則は次の5つ。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>原則</th>
<th>意味</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>ベンダー非依存（Vendor-agnostic）</td>
<td>特定のクラウドやモデル提供者に縛られない</td>
</tr>
<tr class="even">
<td>ドメイン特化（Domain-specific）</td>
<td>1つのエージェントは1つの業務領域だけを担う</td>
</tr>
<tr class="odd">
<td>モデルとの結合（Coupled to a model）</td>
<td>プロンプト・ツール・フックを使用モデルに合わせて調整し、その組み合わせごと品質を保証する</td>
</tr>
<tr class="even">
<td>合成可能（Composable）</td>
<td>他のエージェントから、通常のツール呼び出しと同じ形で呼べる</td>
</tr>
<tr class="odd">
<td>可搬（Portable）</td>
<td>準拠ランタイムであれば実行環境を問わない</td>
</tr>
</tbody>
</table>
<p>「ベンダー非依存」と「モデルとの結合」は両立する。仕様やランタイムは特定ベンダーに依存しない一方で、個々のエージェントは使用モデルを固定して精度を詰める、という役割分担である。モデル定義にはフォールバックチェーンも含まれる。</p>
<p>実行を担うランタイムは、コンテキストの組み立て、ツールの実行、停止条件の適用、状態の永続化を担当する。TypeScriptを実行できるなら、ランタイム自体は任意の言語で実装してよい。</p>
</section>
<section id="仕様を構成する7つの要素" class="level2">
<h2 class="anchored" data-anchor-id="仕様を構成する7つの要素">仕様を構成する7つの要素</h2>
<p>v0.2.0は、エージェントを次の7要素の組み合わせとして定義する。いずれもTypeScriptで記述する。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>要素</th>
<th>役割</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>モデル（Model）</td>
<td>使用するLLM、その能力・価格、障害時のフォールバックチェーン</td>
</tr>
<tr class="even">
<td>プロンプト（Prompt）</td>
<td>システム指示、参照するモデル、使えるツール、リクエストごとの振る舞い</td>
</tr>
<tr class="odd">
<td>ツール（Tools）</td>
<td>モデルが呼べる能力。関数・プロンプト・エージェントの3種類</td>
</tr>
<tr class="even">
<td>サブエージェント（Subagents）</td>
<td>親から起動される子エージェント。それぞれ独立したスレッドで動く</td>
</tr>
<tr class="odd">
<td>フック（Hooks）</td>
<td>実行ライフサイクルに割り込み、検証・変換・副作用を加える</td>
</tr>
<tr class="even">
<td>エフェクト（Effects）</td>
<td>遅延通知やバックグラウンドの後片付けなど、予約実行される副作用</td>
</tr>
<tr class="odd">
<td>スレッド（Threads）</td>
<td>固有のID・ストレージ・ライフサイクルを持つエージェントの実行単位。メッセージ、ファイルシステム、コード実行、実行状態、エンドポイントを持つ</td>
</tr>
</tbody>
</table>
<p>このほか、プロバイダー、ハンドラー、エージェント、ユーザー（ドラフト）、型レジストリも定義されている。</p>
<p>v0.1.0では、必須要素を「モデル・プロンプト・エージェントルール」の3つ、任意要素を「ツール・フック・エンドポイント」の3つとしていた。エージェントルールはステップ数の上限やツール呼び出しの検証といった実行ポリシーを指す。仕様はまだv0系で、構成は版ごとに変わり得る。</p>
<p>サブエージェントとは別に「ハンドオフ」もある。両者の違いはスレッドの扱いである。</p>
<ul>
<li>ハンドオフ：同じスレッドの制御を、人と対話する別のエージェント（<code>ai_human</code>型）に移す</li>
<li>サブエージェント：新しい子スレッドを作り、AI同士で対話するエージェント（<code>dual_ai</code>型）に実行させる</li>
</ul>
</section>
<section id="なぜtypescriptかmcpskillsと何が違うか" class="level2">
<h2 class="anchored" data-anchor-id="なぜtypescriptかmcpskillsと何が違うか">なぜTypeScriptか、MCP・Skillsと何が違うか</h2>
<p>Standard Agent仕様はエージェント全体をTypeScriptのコードとして定義し、自己完結したnpmパッケージとして配布する。そのためバージョン管理・パッケージ化・共有・インストールが、通常のソフトウェアと同じ手順で行える。</p>
<p>仕様のFAQが示すTypeScript採用の理由は2つ。</p>
<ul>
<li>JavaScriptはほぼどこでも実行でき、サンドボックス化もできる。フルスタックのサーバーに依存しない共通の実行基盤になる</li>
<li>型検査が、人間が書いたコードにもLLMが生成したコードにも当たる。独自のバリデーターを用意する必要がない</li>
</ul>
<p>ツールはランタイム内で直接実行され、別サーバーを立てずにスレッドの状態にアクセスできる。カスタムツール1つのためにMCPサーバーを立ち上げる必要はない。</p>
<p>MCP・Skillsとの違いは、「何を単位に組み合わせるか」にある。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>方式</th>
<th>組み合わせる単位</th>
<th>限界</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>MCP</td>
<td>1体の汎用エージェントに渡すツール群</td>
<td>ツールが増えるほど選択を誤りやすくなり品質が下がる</td>
</tr>
<tr class="even">
<td>Skills</td>
<td>汎用エージェントに足すMarkdownの文脈</td>
<td>解釈と問題解決は実行時の汎用モデル任せ。文脈を増やしても組み合わせの品質は保証されない</td>
</tr>
<tr class="odd">
<td>Standard Agent</td>
<td>モデル・プロンプト・フック・ツールを一体で調整したエージェント</td>
<td>エージェント単位の設計・調整コストがかかる</td>
</tr>
</tbody>
</table>
<p>Schroeder氏は、汎用エージェントに責任を足し続ける設計をオブジェクト指向の「継承」、独立したエージェントを組み合わせる設計を「コンポジション」と対比している。MCPは否定されていない。各ドメインエージェントの内部で外部システムへの接続手段として使う余地は残る。</p>
</section>
<section id="ドメイン特化エージェントと再帰的な合成" class="level2">
<h2 class="anchored" data-anchor-id="ドメイン特化エージェントと再帰的な合成">ドメイン特化エージェントと再帰的な合成</h2>
<p>Schroeder氏が想定する構成は、コーディネーターが自然言語で専門エージェントに依頼し、専門エージェントがさらに別の専門エージェントを呼ぶ再帰的な合成である。各専門エージェントは、固有のシステムプロンプト・知識・ツール・ループ・短いメッセージ履歴を持つ完全なエージェントで、単なるツールサーバーではない。</p>
<p>講演の例では、Salesforceエージェントが上位の営業担当者を取得し、Google Workspaceエージェントと連携してスプレッドシートを作る。法務エージェントは、GDPRやOSHAに関する質問を専用のサブエージェントに振り分ける。</p>
<p>この構成には4つの利点がある。</p>
<ul>
<li>コンテキスト：各エージェントは自分の領域の情報だけを持つ。講演では仮に45MBのGDPR関連情報を例に、コーディネーターがそれを抱える必要がないことを示している</li>
<li>コスト：タスクが狭いほど安価なモデルで足りる。講演ではトークン効率80%超、DeepSeek V4 FlashがFable 5よりタスク当たり137倍安いという数字が示されたが、比較の条件は示されていない。安価なモデルが失敗を繰り返せば優位は消える</li>
<li>権限：各エージェントは事前承認された操作だけを持つため、IT部門が許可範囲を把握しやすい</li>
<li>実行環境：各エージェントは独立した小さな実行環境で、固有のファイルシステムとサンドボックス化されたコード実行を持つ</li>
</ul>
<p>ツールには、コードを実行する関数ツール、指示を差し込む・モデルを呼ぶプロンプトツール、別のエージェントに委譲するエージェントツールの3種類がある。フックは状態の変更や副作用の追加に使い、講演では現在時刻をメッセージ履歴に差し込む例が示されている。</p>
</section>
<section id="standard-agent-builderとデモ" class="level2">
<h2 class="anchored" data-anchor-id="standard-agent-builderとデモ">Standard Agent Builderとデモ</h2>
<p>仕様の最初の公開ランタイムが、Standard Agents社の「Standard Agent Builder」（仕様のFAQではAgentBuilder）である。Standard Agent仕様はフレームワークではなく仕様であり、AgentBuilderはその実装の1つという位置づけになる。</p>
<p>講演では、バッテリーの保証請求を処理するエージェントを約5分で作成し、運用・管理するまでを実演している。保証請求は、自社の条件に沿った処理（統合）、操作範囲の限定（信頼）、判定の正確さ（効力）がそろって問われる業務であり、冒頭の3つの理由にそのまま対応する題材である。</p>
<p>Standard Agents社はまだ利用者を限定して公開を進めており、早期アクセスは standardagents.ai から申し込む。仕様への貢献はGitHubのIssueとPR、議論はDiscordで行われている。</p>
</section>
<section id="他の標準化の動きとの違い" class="level2">
<h2 class="anchored" data-anchor-id="他の標準化の動きとの違い">他の標準化の動きとの違い</h2>
<p>エージェント定義の標準化は、Standard Agent仕様だけの動きではない。Oracleが中心となって公開した「Open Agent Specification（Agent Spec）」は、JSON/YAMLによる宣言的な記述でエージェントとワークフローを表現し、AutoGenやLangGraphなど複数のフレームワークで実行することを目指す。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>観点</th>
<th>Standard Agent仕様</th>
<th>Open Agent Specification</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>記述方法</td>
<td>TypeScriptのコード</td>
<td>JSON/YAMLによる宣言的定義</td>
</tr>
<tr class="even">
<td>可搬性の作り方</td>
<td>実行基盤をTypeScriptに揃える</td>
<td>定義を各フレームワークの内部表現に変換する</td>
</tr>
<tr class="odd">
<td>配布単位</td>
<td>npmパッケージ</td>
<td>定義ファイル</td>
</tr>
<tr class="even">
<td>重点</td>
<td>ドメイン特化エージェントの合成</td>
<td>既存フレームワーク間の相互運用</td>
</tr>
</tbody>
</table>
<p>Open Agent Specificationは「一度定義して複数のフレームワークで動かす」方向、Standard Agent仕様は「実行基盤そのものを共通化してエージェントを部品として流通させる」方向である。前者はツールや検証ロジックの中身を各フレームワーク側に任せ、後者はそれらもコードとしてエージェントに含める。</p>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<p>Standard Agent仕様の核心は、エージェントを「モデル・プロンプト・ツール・フックを一体で調整した配布可能な部品」として扱うことにある。</p>
<ol type="1">
<li>企業がエージェントを自作するのは、統合・信頼・効力の3つを汎用エージェントでは満たせないためである</li>
<li>課題はハーネス（ループ、耐障害実行、停止条件、可観測性）を各社が独自に作り、可搬性と合成可能性がないことである</li>
<li>Standard Agent仕様は、TypeScriptとnpmで実行基盤と配布単位をそろえ、ドメイン特化エージェントをツール呼び出しと同じ形で組み合わせられるようにする</li>
</ol>
<p>残る論点もある。仕様はv0.2.0で構成要素が版ごとに変わっており、公開ランタイムもまだ限定公開である。講演内のトークン削減率やコスト比は測定条件が示されていない。採用を検討する場合は、自社の業務でEvalを用意し、汎用エージェント＋MCPの構成と通過率・トークン消費を比較するのが確実である。</p>
</section>
<section id="参考リンク" class="level2">
<h2 class="anchored" data-anchor-id="参考リンク">参考リンク</h2>
<ul>
<li><a href="https://standardagentspec.org/">Standard Agent Specification（公式サイト）</a></li>
<li><a href="https://standardagentspec-com.pages.dev/0.1.0/getting-started/overview">Standard Agent Specification v0.1.0 Overview</a></li>
<li><a href="https://ai.engineer/talks/spNAUEgq_A8-future-is-domain-specific-agents">Justin Schroeder「The Future is Domain-Specific Agents」（AI Engineer）</a></li>
<li><a href="https://www.ai.engineer/speakers/justin-schroeder">Justin Schroeder スピーカー紹介（AI Engineer）</a></li>
<li><a href="https://arxiv.org/abs/2510.04173">Open Agent Specification (Agent Spec)（arXiv）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-12-ai-nvidia-nemo/">AIエージェントの失敗を改善につなげる――NVIDIA NeMoで、実行トレースから評価とハーネスの修正を作る方法</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-08-warp-zach-lloyd/">ソフトウェアエンジニアリングは「ファクトリーエンジニアリング」になる ― Warp Zach Lloyd氏の講演を読み解く</a><span class="sc-date">2026/11/08</span></li><li><a href="../../posts/2026-11-08-embeddinggemma-gemma-b-rag/">EmbeddingGemma 2とGemma 4 12Bで作るビデオRAG</a><span class="sc-date">2026/11/08</span></li><li><a href="../../posts/2026-11-08-arex-2-b/">AREX-2：試行錯誤のループをモデルの内側へ移す27Bエージェントモデル</a><span class="sc-date">2026/11/08</span></li></ul>

</section>

 ]]></description>
  <category>AIエージェントと開発</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-ai-standard-agent-specification/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
</item>
<item>
  <title>汎用モデルに焦点を与えるのは人間の専門知識である ― ティム・オライリー「The Bitter Lesson vs. AI Markets for Human Expertise」を読む</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-bitter-lesson-vs-ai-markets/</link>
  <description><![CDATA[ 






<section id="この記事の要点" class="level2">
<h2 class="anchored" data-anchor-id="この記事の要点">この記事の要点</h2>
<p>ティム・オライリーのエッセイ「The Bitter Lesson vs.&nbsp;AI Markets for Human Expertise」は、「計算資源で押し切る汎用手法が最後に勝つ」というBitter Lessonを認めたうえで、人間の専門知識に対価が流れる市場の仕組み（メカニズム）をAIの側に設計すべきだと主張する。要点は3つある。</p>
<ol type="1">
<li>LLMは知識を広く持つが、問題に焦点を合わせる力を持たない。焦点を与えるのは人間の経験と専門知識である。</li>
<li>その専門知識を発見し、品質を確かめ、作り手に対価を払う仕組みが、今のAI産業には欠けている。</li>
<li>MCPのような開かれたプロトコルは、Unixと同じ「参加のアーキテクチャ」をAIにもたらし、その仕組みの土台になりうる。</li>
</ol>
<p>本記事では、エッセイの論点を整理し、前提となる用語（Bitter Lesson、トイル、メカニズムデザイン、参加のアーキテクチャ）を補足する。</p>
</section>
<section id="元記事について" class="level2">
<h2 class="anchored" data-anchor-id="元記事について">元記事について</h2>
<ul>
<li>著者：Tim O’Reilly（O’Reilly Media 創業者）</li>
<li>初出：Substack「Asimov’s Addendum」。O’Reilly Radar に転載</li>
<li>成り立ち：2026年10月23日にサンノゼで開かれた AGNTCon + MCPCon North America の基調講演の前に収録された、AAIF Live での対談（聞き手 Demetrios Brinkmann）を Ilan Strauss が編集・再構成したもの。基調講演の内容も一部取り込んでいる</li>
</ul>
<p>AAIF（Agentic AI Foundation）は、2025年12月に Linux Foundation のもとで設立された団体で、Anthropic の MCP、Block の goose、OpenAI の AGENTS.md を創設プロジェクトとして引き受けている。AGNTCon + MCPCon はその年次カンファレンスである。</p>
</section>
<section id="前提bitter-lesson-とは" class="level2">
<h2 class="anchored" data-anchor-id="前提bitter-lesson-とは">前提：Bitter Lesson とは</h2>
<p>強化学習の研究者リチャード・サットンが2019年3月に書いた短いエッセイである。70年のAI研究を振り返り、人間の知識を組み込む手法は短期的には成果を出すが、長期的には計算量に応じてスケールする汎用手法（探索と学習）に追い抜かれる、と結論づけた。根拠として挙げたのは、コンピュータチェス（深い探索が、チェスの知識を組み込んだ手法に勝った）、囲碁、音声認識（統計的手法、のちの深層学習が、音声学の知識に基づく手法に勝った）、画像認識である。「bitter（苦い）」は、研究者が自分の知識をシステムに組み込みたがる傾向が、繰り返し裏切られてきたことを指す。</p>
<p>オライリーはこの教訓を正しいと認める。そのうえで、AI業界が「AIを暴走させない方法」と「AIによる雇用喪失」は研究していても、「人間に新しい経済的機会を生む仕組み」は研究していない点を問題にする。</p>
</section>
<section id="論点1llmは何でも知っていて何も知らない" class="level2">
<h2 class="anchored" data-anchor-id="論点1llmは何でも知っていて何も知らない">論点1：LLMは何でも知っていて、何も知らない</h2>
<p>オライリーはAIを、文字・印刷・ウェブと続いてきた「知識を時間と空間を越えて共有する技術」の延長にある文化技術と位置づける。LLMは可能性の海であり、それを動かすのは人間の問いと文脈である。同じモデルに同じ調査を頼んでも、使う人の経験と与える文脈によって結果は変わる。</p>
<p>彼が引くのは、ジョン・カウパー・ポウイス『The Meaning of Culture』の教養の定義である。教養とは、学ぼうとしたことを忘れたあとに残るもの、つまり人それぞれが吸収した狭く固有な知識の層である。LLMはすべてを吸収しようとするため一般的になりすぎる。人間の固有な知識が、モデルにとってのレンズになる。</p>
<section id="事例増員かトイルの監査か" class="level3">
<h3 class="anchored" data-anchor-id="事例増員かトイルの監査か">事例：増員か、トイルの監査か</h3>
<p>O’Reilly Media の CTO アンドリュー・オデワーンは、IT部門の管理を支援する調査エージェントを作った。人手不足を訴える部署について分析させると、エージェントも増員が必要と答えた。次に、O’Reilly の専門家コンテンツを通して回答させるMCPサーバー（O’Reilly Expert Intelligence）を使い、「O’Reilly の専門家ならどう言うか」と聞き直した。するとモデルは、Google の『Site Reliability Engineering』（SRE本）の観点から問題を捉え直し、増員はかえって問題を悪化させる、まずトイルを監査し、組織を再編すべきだと答えた。</p>
<p>トイル（toil）はSRE本の用語で、本番システムの運用に伴う作業のうち、手作業で、繰り返し発生し、自動化でき、長期的な価値を残さず、サービスの規模に比例して増えるものを指す。トイルの多い組織に人を足しても、仕組みが変わらなければトイルが人数分に広がるだけである。SRE本は、SREの作業時間に占めるトイルを50%未満に抑えることを目標に掲げている。</p>
<p>重要なのは、SRE本の知識自体はもともとモデルの中にあった点である。回答を変えたのは知識の追加ではなく、「どの専門家集団の視点で考えるか」という指定だった。オライリーはこれを次の一文にまとめている。</p>
<blockquote class="blockquote">
<p>“An LLM knows everything, and as a result it doesn’t know anything.” （LLMはすべてを知っているがゆえに、何も知らない）</p>
</blockquote>
</section>
</section>
<section id="論点2マジックワードとコンテキストエンジニアリング" class="level2">
<h2 class="anchored" data-anchor-id="論点2マジックワードとコンテキストエンジニアリング">論点2：マジックワードとコンテキストエンジニアリング</h2>
<p>オライリーは以前「Magic Words」という記事で、一部の語は大量の文脈を背負っていると書いた。「GTD（Getting Things Done）」や「アイゼンハワー・マトリクス」と一語指定するだけで、利用者がその手法を知らなくても、モデルはタスクリストをその枠組みで整理する。SREの事例で「O’Reilly の専門家なら」と指定したのも同じ構造である。</p>
<p>ただし、呪文を知っていても正しく使えなければ魔法は暴走する。エージェントは任せれば走り続けるが、人間の望む方法で進むとは限らない。オライリーは自身のファインチューニング作業で、モデルが Mac 環境（既定のシェルは zsh）なのに bash を前提にし、同じ文脈の把握を何度もやり直した例を挙げている。</p>
<p>ここで紹介されているのが、セキュリティ企業 Trail of Bits のダン・グイドが公開したAI導入の方法論である。個人の生産性向上を組織の生産性に結びつけるため、全員の設定を統一する。統一しないと、エージェントが起動のたびに自分の置かれた環境を調べ直し、トークンを浪費する。失敗から得た教訓をシステムに組み込むことを、グイドは「傷跡をインフラに変える」と表現する。経験のある人間が持つ文脈を、毎回の対話ではなく環境として先に与えるという考え方である。具体的には、AGENTS.md や CLAUDE.md のようなリポジトリ単位の指示ファイル、共通のMCPサーバー設定、手順書としてのスキルをチームで共有する形になる。</p>
</section>
<section id="論点3bitter-lesson-はウェブの時代にもあった" class="level2">
<h2 class="anchored" data-anchor-id="論点3bitter-lesson-はウェブの時代にもあった">論点3：Bitter Lesson はウェブの時代にもあった</h2>
<p>O’Reilly は1993年に最初の商用ウェブサイト Global Network Navigator（GNN）を立ち上げ、その一部としてウェブのカタログを作った。当初のサイト数は約200で、出版社として良いサイトを選んで載せる方針だった。翌年に登場した Yahoo はすべてを載せようとして追いつけなくなり、最後に Google が、すべてをアルゴリズムで索引化し、あとから並べ替える方式で勝った。クレイ・シャーキーが「filter, then publish（選んでから公開）」から「publish, then filter（公開してから選ぶ）」への転換と呼んだ変化である。</p>
<p>そのうえでオライリーは、技術に何をさせるかの選択が決定的だと述べる。ユーザーが本当に探しているものを見つける技術は、やがて企業の利益を優先する方向へ変質した。コリイ・ドクトロウはこの過程を enshittification（プラットフォームの劣化）と呼んだ。AIのアラインメントも、突き詰めれば「人間が大事にするものをシステムにも大事にさせる」問題である。</p>
</section>
<section id="論点4価値を作り手に循環させる仕組みがない" class="level2">
<h2 class="anchored" data-anchor-id="論点4価値を作り手に循環させる仕組みがない">論点4：価値を作り手に循環させる仕組みがない</h2>
<p>Anthropic は2025年、モデル学習のために海賊版書籍をダウンロードした件の集団訴訟（Bartz v. Anthropic）で、15億ドルの和解に合意した。オライリーは、他のAI企業が同様の責任をまだ問われていないことに驚きを示している。</p>
<p>対比として挙げられるのが YouTube の Content ID である。2007年に導入されたこの仕組みは、権利者がアップロード動画内の自分の楽曲や映像を検出し、ブロックするか、公開を認めて広告収益を受け取るかを選べるようにした。多くの権利者が収益化を選び、それがクリエイター経済の土台の一つになった。削除要請と訴訟の対立を、収益分配の仕組みに置き換えた例である。</p>
<p>AI業界は同じ挑戦をせず、自社の収益化を先に考えた。オライリーは NotebookLM の公開前に開発チームへ、自分のサービスに組み込んで収益化できるようにしてほしいと提案したが、チームの関心は Google への送客だった。彼の指摘は、プラットフォームは「自分がどう稼ぐか」ではなく「利用者がどう稼ぐか」を設計すべきだ、というものである。Substack の寄付・購読ボタン程度の機能で足りた、とも述べている。</p>
<p>AIプラットフォームを作る者は経済圏を作っており、その中でお金が循環しなければならない。人間の仕事を置き換え続ければ顧客がいなくなる。オライリーは、この問題はハルシネーションよりはるかに深刻だと位置づけている。</p>
</section>
<section id="前提メカニズムデザインとは" class="level2">
<h2 class="anchored" data-anchor-id="前提メカニズムデザインとは">前提：メカニズムデザインとは</h2>
<p>ゲーム理論は、与えられたルールのもとで参加者がどう行動するかを分析する。メカニズムデザインはその逆で、望ましい結果を先に決め、参加者が自分の利益を追求した結果としてその状態に至るようなルールを設計する。このため「逆ゲーム理論」とも呼ばれる。2007年には、ハーヴィッツ、マスキン、マイヤーソンがこの分野の基礎を築いた功績でノーベル経済学賞を受賞した。</p>
<p>アルビン・ロスは2012年、ロイド・シャプレーとともに、安定配分の理論とマーケットデザインの実践で同賞を受けた。ロスの代表的な仕事が腎臓交換である。血液型などが合わず家族に腎臓を提供できないドナーと患者のペアを複数組み合わせ、互いの相手に提供し合う交換を成立させる。参加したほうが得になるルールにすることで参加者が増え、移植件数が増える。研修医と病院のマッチング制度の改良もロスの仕事として知られる。</p>
<p>オライリーは、新しい技術には新しいメカニズムが必要だが、優れたメカニズムは経済学者ではなく、使う人々が偶然見つけてきたものだと言う。そしてAIについて次の問いを立てる。</p>
<ul>
<li>エージェントは最良の専門知識やスキルをどう発見し、その品質をどう確かめ、作り手にどう対価を払うのか</li>
<li>最も多く払う者へ誘導するプラットフォームに頼らず、サービスをどう見つけるのか</li>
</ul>
<p>答えはまだない。能力の向上には巨額が投じられているが、その能力を他の人々の機会に変える仕組みには、ほとんど労力が割かれていない。</p>
</section>
<section id="論点5unix-と-mcp-参加のアーキテクチャ" class="level2">
<h2 class="anchored" data-anchor-id="論点5unix-と-mcp-参加のアーキテクチャ">論点5：Unix と MCP ― 参加のアーキテクチャ</h2>
<p>オライリーは、オープンソースを成立させたのはフリーソフトウェアのライセンスではなく、Unixの設計だったと見る。ケン・トンプソンとデニス・リッチーがベル研究所で作ったUnixは、AT&amp;Tのプロプライエタリなライセンスのもとにあったが、多様なハードウェアで動くように設計されていた。</p>
<ul>
<li>カーネルが小さい。数十種類の機種に移植する必要があったためである</li>
<li>その周りに小さなユーティリティが並び、プレーンテキストの読み書きと、パイプによるストリームの受け渡しという共通の約束に従って協調する</li>
<li>誰でも小さな部品を書けば、システムの一級市民になれる</li>
<li>ある機種でコンパイルしたバイナリは別の機種で動かないため、ソフトウェアはソースコードで共有された</li>
</ul>
<p>その後、Unixの部品はほぼすべて置き換わった。ハードウェアも、カーネル（Linux）も、シェルも変わった。残ったのはルールである。オライリーはこの構造を「参加のアーキテクチャ」と呼ぶ。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112004552.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="参加のアーキテクチャ：UnixとMCPに共通する設計"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-bitter-lesson-vs-ai-markets/fig-20261112004552.png" class="img-fluid figure-img" alt="参加のアーキテクチャ：UnixとMCPに共通する設計"></a></p>
<figcaption>参加のアーキテクチャ：UnixとMCPに共通する設計</figcaption>
</figure>
</div>
<p>彼はMCPを、AIにおける参加のアーキテクチャであり、偶然生まれたメカニズムデザインの成果だと評価する。当初のAIは、PCのWindowsやスマートフォンのiOS/Androidのように、一つの巨大な知能をみんながAPI経由で呼ぶ中央集権型の構図に見えた。MCPは、どのモデルからでも誰のツールやデータにでも接続できる共通の約束を定めた。これによりエージェントの世界は、オープンソースやウェブのような参加型の経済圏の形を取り始めた。</p>
<p>MCP は Anthropic が2024年11月に公開したオープンな標準で、AIアプリケーション（クライアント）と外部のツールやデータ（サーバー）を JSON-RPC で接続する。サーバーはツール、リソース、プロンプトを公開し、クライアントは接続先を問わず同じ手順でそれを利用する。Unix のテキストとパイプに相当する「共通の約束」がこのプロトコルであり、各組織が公開するMCPサーバーが小さなユーティリティにあたる。論点1の O’Reilly Expert Intelligence も、専門家の知識をこの約束に乗せ、任意のモデルから使えるようにしたものである。</p>
<p>オライリーはさらに、AIが利用者について知っている文脈をツール間で持ち運べる「ポータブルメモリ」の標準化にも取り組んでいる。</p>
</section>
<section id="論点6どのゲームを遊ぶのか" class="level2">
<h2 class="anchored" data-anchor-id="論点6どのゲームを遊ぶのか">論点6：どのゲームを遊ぶのか</h2>
<p>メカニズムデザインは、望む結果を決めるところから始まる。オライリーは、いまAI市場で行われているゲームを「超知能の獲得競争」と描く。勝者総取りのゲームであり、それを支える仕組みとして次のものを挙げる。</p>
<ul>
<li>巨額のデータセンター投資（資本力のある者しか参加できない）</li>
<li>既存の知的財産の収奪</li>
<li>高価なAPIでのモデル提供と、出力からの学習を禁じる利用規約</li>
<li>回答への広告の混入</li>
<li>利用者の文脈を一社に閉じ込めるメモリ</li>
</ul>
<p>彼が提案するゲームは「人間の繁栄」である。人々が互いに創り、共有するための新しい手段（アフォーダンス）を増やし、人間とそのエージェントの間で価値が循環する経済を作る。人間はAIに置き換えられるのではなく、AIと協働する。</p>
<p>大手ラボは、動機がどうであれ、調達した巨額の資本を回収するという金融システムの要請に縛られている。その意味でAIは最初から劣化の圧力を抱えている。だからこそ、誰でもダウンロードして動かせるオープンモデルと、国ごとに構築・管理するソブリンAIが重要になる。オープンモデルは最先端のクローズドモデルにまだ及ばないが差は縮まり続けており、すでに多くの実務に十分な性能を持つ。オープンソース、オープンプロトコル、オープンメモリが、利用者に技術を自ら形作り制御する自由を与える。</p>
</section>
<section id="エンジニアとして読むときの論点" class="level2">
<h2 class="anchored" data-anchor-id="エンジニアとして読むときの論点">エンジニアとして読むときの論点</h2>
<ul>
<li>Bitter Lesson と人間の専門知識は矛盾しない。Bitter Lesson が扱うのはモデルの汎用能力の獲得方法であり、オライリーが扱うのは、その能力を特定の問題に向ける焦点の与え方と、焦点を提供した人への対価である。前者はスケールが決め、後者は設計が決める。</li>
<li>専門知識の価値は「知識の量」から「視点の指定」へ移っている。SREの事例でモデルの答えを変えたのは新しい情報ではなく、参照すべき専門家集団の指定だった。専門知識をMCPサーバーやスキルの形で呼び出せるようにしておくことが、知識を使える状態に保つ実装になる。</li>
<li>エージェントの性能は環境設定で決まる部分が大きい。設定の統一、指示ファイル、失敗事例の取り込みは、モデルの更新を待たずに改善できる領域である。</li>
<li>帰属と対価の仕組みは未解決である。MCPは接続の約束を定めたが、どの知識が回答にどれだけ寄与したかを測り、作り手に支払う約束はまだない。Content ID が検出と収益分配を組み合わせたように、AIでも寄与の計測と支払いを組み合わせたメカニズムが必要になる。</li>
</ul>
</section>
<section id="出典" class="level2">
<h2 class="anchored" data-anchor-id="出典">出典</h2>
<ul>
<li>Tim O’Reilly「The Bitter Lesson vs.&nbsp;AI Markets for Human Expertise」（Asimov’s Addendum／O’Reilly Radar、2026年）</li>
<li>Richard Sutton「The Bitter Lesson」（2019年） <a href="http://www.incompleteideas.net/IncIdeas/BitterLesson.html" class="uri">http://www.incompleteideas.net/IncIdeas/BitterLesson.html</a></li>
<li>Betsy Beyer ほか『Site Reliability Engineering』第5章「Eliminating Toil」 <a href="https://sre.google/sre-book/eliminating-toil/" class="uri">https://sre.google/sre-book/eliminating-toil/</a></li>
<li>Linux Foundation「Agentic AI Foundation の設立」（2025年12月9日） <a href="https://www.linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation" class="uri">https://www.linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation</a></li>
<li>Model Context Protocol <a href="https://modelcontextprotocol.io/" class="uri">https://modelcontextprotocol.io/</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-08-ai-nous-research-ai-labs/">AIラボは囲い込むか、置き換えるか：Nous Research「AI Labs Will Trap You or Replace You」を読み解く</a><span class="sc-date">2026/11/08</span></li><li><a href="../../posts/2026-11-14-microsoft-ai-humanist-ai-mai/">Microsoft AI「Humanist AI行動規範」ドラフトを読む：MAIモデルは停止に抵抗せず、推論を隠さない</a><span class="sc-date">2026/11/14</span></li><li><a href="../../posts/2026-11-14-anthropic-ai/">Anthropicの採用責任者がコーディング面接をやめた理由 ── AI時代のエンジニア評価は「書く力」から「成果を出す力」へ</a><span class="sc-date">2026/11/14</span></li><li><a href="../../posts/2026-11-13-microsoft-research-podcast-learn-rules/">ルールを理解した者だけが自由に動ける ― Microsoft Research Podcast「Learn the rules: The hacker mindset」</a><span class="sc-date">2026/11/13</span></li></ul>

</section>

 ]]></description>
  <category>経営と組織</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-bitter-lesson-vs-ai-markets/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
  <media:content url="https://scholia-notes.pages.dev/posts/2026-11-12-bitter-lesson-vs-ai-markets/fig-20261112004552.png" medium="image" type="image/png" height="200" width="144"/>
</item>
<item>
  <title>FLUX 3 Image KleinをNVIDIA Blackwellで3〜4倍高速化した方法――量子化・アテンション・キャッシュ・並列化・CUDAグラフ</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-flux-image-klein-nvidia-blackwell/</link>
  <description><![CDATA[ 






<p><strong>結論：NVIDIAは、Black Forest Labsの画像生成・編集モデル「FLUX 3 Image Klein」を、量子化、アテンションの高速化、ステップ間のキャッシュ、複数GPUでの並列化、CUDAグラフを組み合わせて高速化し、B200 1枚で2048×2048ピクセルの画像生成を22.36秒から6.46秒（3.46倍）、画像編集を54.64秒から12.28秒（4.45倍）に短縮しました。</strong></p>
<p>ポイントは次の3つです。</p>
<ol type="1">
<li><strong>処理時間の大半はノイズ除去</strong>：画像生成の処理時間の84〜98%を、ノイズ除去の繰り返し計算が占める</li>
<li><strong>高速化の手法は5系統</strong>：①NVFP4・FP8への量子化、②アテンションの高速化とスパース化、③ステップ間のキャッシュ（Cache-DiT）、④複数GPUでの並列化、⑤CUDAグラフ</li>
<li><strong>画質とのトレードオフ</strong>：手法を重ねるほど、最適化前の画像との差（LPIPS）が大きくなる</li>
</ol>
<p>2026年11月6日にNVIDIAの技術ブログで紹介されました。</p>
<hr>
<section id="前提1拡散モデルの仕組み" class="level2">
<h2 class="anchored" data-anchor-id="前提1拡散モデルの仕組み">前提1：拡散モデルの仕組み</h2>
<p>FLUXをはじめとする多くの画像生成モデルは、<strong>拡散モデル</strong> という方式で動作します。ランダムなノイズの画像から始めて、ノイズを少しずつ取り除く処理（デノイズ）を繰り返し、指示文（プロンプト）に合った画像を生成します。この1回の処理を <strong>ステップ</strong> と呼びます。</p>
<p>FLUX 3 Image Kleinは、次の部品で構成されています。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>部品</th>
<th>役割</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Qwen3-VL-4B-Instruct</td>
<td>指示文を、画像生成に使う条件の表現に変換する</td>
</tr>
<tr class="even">
<td>拡散トランスフォーマー（DiT）</td>
<td>ノイズ除去の計算を行う本体</td>
</tr>
<tr class="odd">
<td>オートエンコーダー</td>
<td>潜在表現を画像に変換する。画像編集では、参照画像を潜在表現に変換する</td>
</tr>
</tbody>
</table>
<p>チェックポイントは2種類あります。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>版</th>
<th>ステップ数</th>
<th>特徴</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Base</td>
<td>50回（CFGスケール3.5）</td>
<td>品質を重視した標準版</td>
</tr>
<tr class="even">
<td>distilled（蒸留版）</td>
<td>16回（CFGなし）</td>
<td>少ないステップで生成できるよう追加学習した版</td>
</tr>
</tbody>
</table>
<p><strong>CFG（Classifier-Free Guidance）</strong> は、指示文ありとなしの2通りで計算し、その差を使って指示文への忠実さを高める手法です。<strong>蒸留</strong> は、標準版の出力を教師として、少ないステップで同等の出力を出せるようにモデルを学習させる手法です。</p>
</section>
<section id="前提2処理時間の内訳" class="level2">
<h2 class="anchored" data-anchor-id="前提2処理時間の内訳">前提2：処理時間の内訳</h2>
<p>NVIDIAが測定した最適化前の処理時間（B200 1枚、2048×2048ピクセル、NVFP4、torch.compile使用）は次のとおりです。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>処理</th>
<th>合計時間</th>
<th>ノイズ除去の割合</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Base・画像生成</td>
<td>14.70秒</td>
<td>96.8%</td>
</tr>
<tr class="even">
<td>蒸留版・画像生成</td>
<td>2.71秒</td>
<td>84.0%</td>
</tr>
<tr class="odd">
<td>Base・画像編集</td>
<td>40.29秒</td>
<td>97.8%</td>
</tr>
<tr class="even">
<td>蒸留版・画像編集</td>
<td>7.48秒</td>
<td>89.0%</td>
</tr>
</tbody>
</table>
<p>処理時間の大半がノイズ除去であるため、<strong>1ステップあたりの計算を速くするか、計算量を減らすか</strong>が高速化の中心になります。</p>
<hr>
</section>
<section id="高速化の手法" class="level2">
<h2 class="anchored" data-anchor-id="高速化の手法">高速化の手法</h2>
<section id="手法1量子化nvfp4fp8" class="level3">
<h3 class="anchored" data-anchor-id="手法1量子化nvfp4fp8">手法1：量子化（NVFP4・FP8）</h3>
<p>モデルの数値を16ビット（BF16）から8ビット（FP8）や4ビット（NVFP4）にすることで、メモリの読み書きと計算の負荷を減らします。FLUX 3 Image Kleinには、事前に量子化したNVFP4のチェックポイントが用意されています。</p>
<ul>
<li>NVFP4はBF16と比べて、画像生成で最大1.62倍、画像編集で最大1.58倍速い</li>
<li>SwiGLUやQKVの計算を融合したNVFP4の行列演算カーネル（FlashInfer、CUTLASSベース）で、さらに1.02〜1.10倍</li>
</ul>
</section>
<section id="手法2アテンションの高速化とスパース化" class="level3">
<h3 class="anchored" data-anchor-id="手法2アテンションの高速化とスパース化">手法2：アテンションの高速化とスパース化</h3>
<p>拡散トランスフォーマーの中心は <strong>アテンション</strong> です。画像の各部分（トークン）が、他のどの部分とどれだけ関係するかを計算します。計算量はトークン数の2乗に比例するため、高解像度の画像ほど重くなります。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>手法</th>
<th>内容</th>
<th>Baseでの効果</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>cuDNNのFP8アテンション</td>
<td>アテンションをFP8で計算する</td>
<td>1.08倍（LPIPS 0.072）</td>
</tr>
<tr class="even">
<td>VC-Attention（FP8）</td>
<td>FP8で計算し、誤差の一部を補正する（補正の割合ρ=0.005）</td>
<td>1.18倍（LPIPS 0.086）</td>
</tr>
<tr class="odd">
<td>Sol-Attention</td>
<td>関係の弱い組み合わせの計算を省く（スパース化）</td>
<td>1.24〜1.30倍</td>
</tr>
</tbody>
</table>
<p>Sol-Attentionは、序盤のステップは省略せずに計算し、後半のステップだけスパース化します。Baseの50ステップのうち、省略しないステップを12にすると速さ重視、16にすると品質重視になります。</p>
</section>
<section id="手法3ステップ間のキャッシュcache-dit" class="level3">
<h3 class="anchored" data-anchor-id="手法3ステップ間のキャッシュcache-dit">手法3：ステップ間のキャッシュ（Cache-DiT）</h3>
<p>ノイズ除去の後半では、ステップごとの変化が小さくなります。<strong>Cache-DiT</strong> は、前のステップとの差（残差）が小さいとき、計算の一部を省いて前のステップの結果を再利用します。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>版</th>
<th>1024×1024</th>
<th>2048×2048</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Base</td>
<td>1.97倍（LPIPS 0.038）</td>
<td>1.94倍（LPIPS 0.033）</td>
</tr>
<tr class="even">
<td>蒸留版</td>
<td>1.26倍（LPIPS 0.036）</td>
<td>1.20倍（LPIPS 0.022）</td>
</tr>
</tbody>
</table>
<p>蒸留版の効果が小さいのは、ステップ数が少なく、再利用できる余地が少ないためです。</p>
</section>
<section id="手法4複数gpuでの並列化" class="level3">
<h3 class="anchored" data-anchor-id="手法4複数gpuでの並列化">手法4：複数GPUでの並列化</h3>
<p>B200を8枚搭載したシステムで、1枚の画像の生成を複数のGPUで分担します。</p>
<ul>
<li><strong>CFG並列</strong>：CFGの「指示文あり」と「指示文なし」の計算を別々のGPUで行う</li>
<li><strong>Ulysses並列</strong>：シーケンス（画像のトークン列）を分割して、複数のGPUで計算する</li>
</ul>
<p>2048×2048ピクセルの画像生成で、Baseは14.90秒から3.00秒に、蒸留版は2.73秒から1.08秒になりました（ノイズ除去部分はそれぞれ6.01倍と4.44倍）。蒸留版の伸びが小さいのは、8 GPU構成での生成時間の約半分が、並列化の対象外の処理（ノイズ除去以外）だからです。</p>
</section>
<section id="手法5cudaグラフ" class="level3">
<h3 class="anchored" data-anchor-id="手法5cudaグラフ">手法5：CUDAグラフ</h3>
<p>GPUで計算するには、CPUからGPUへ多数のカーネル起動命令を送ります。命令ごとにわずかなオーバーヘッドがあり、計算自体が速くなるほど、このオーバーヘッドの割合が大きくなります。</p>
<p><strong>CUDAグラフ</strong> は、一連のカーネル起動をあらかじめ記録しておき、まとめて実行する仕組みです。8枚のB200、1024×1024ピクセルで、Baseは1.823秒から0.809秒（2.25倍）、蒸留版は0.791秒から0.366秒（2.16倍）になりました。</p>
<hr>
</section>
</section>
<section id="最終結果" class="level2">
<h2 class="anchored" data-anchor-id="最終結果">最終結果</h2>
<p>B200 1枚、2048×2048ピクセルで、手法を組み合わせた結果です。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>処理</th>
<th>最適化前</th>
<th>最適化後</th>
<th>速度</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>画像生成（Base）</td>
<td>22.36秒</td>
<td>6.46秒</td>
<td>3.46倍</td>
</tr>
<tr class="even">
<td>画像編集（Base）</td>
<td>54.64秒</td>
<td>12.28秒</td>
<td>4.45倍</td>
</tr>
<tr class="odd">
<td>蒸留版</td>
<td>―</td>
<td>―</td>
<td>最大2.34倍</td>
</tr>
</tbody>
</table>
<p>RTX PRO 6000 Blackwell Server Edition 1枚でも、コンパイル、融合したNVFP4カーネル（CuTe DSL）、Cache-DiTの組み合わせで1.73〜3.25倍になりました。</p>
<hr>
</section>
<section id="画質への影響" class="level2">
<h2 class="anchored" data-anchor-id="画質への影響">画質への影響</h2>
<p>画質は <strong>LPIPS</strong> という指標で、最適化前の出力との差を測っています。0なら同一で、値が大きいほど差が大きいことを示します。</p>
<ul>
<li>Cache-DiTは0.02〜0.04程度で、高速化の効果に対して画質への影響が小さい</li>
<li>FP8のアテンションは、蒸留版で0.15〜0.16程度とやや大きい</li>
<li>手法を重ねるほど値は大きくなり、NVIDIAの例では0から0.095まで上がった</li>
</ul>
<p>用途（最終的な成果物の生成か、試作の大量生成か）に応じて、どの手法まで使うかを選ぶ必要があります。</p>
<hr>
</section>
<section id="試すには" class="level2">
<h2 class="anchored" data-anchor-id="試すには">試すには</h2>
<ul>
<li>NVIDIA TensorRT-LLMの画像生成機能「VisualGen」で実行します</li>
<li>専用のコンテナ（<code>nvcr.io/nvidia/tensorrt-llm/release:feat-flux3-image-klein-1.4.0a0.dev202610280436</code>）と、TensorRT-LLMリポジトリの <code>feat/flux3-image-klein</code> ブランチが公開されています</li>
<li><code>trtllm-serve</code> コマンドで、OpenAI互換の画像生成API（<code>/v1/images/generations</code>）として提供できます</li>
<li>量子化、コンパイル、アテンション、キャッシュ、並列化、CUDAグラフの設定は、YAMLファイルで切り替えます</li>
</ul>
<hr>
</section>
<section id="制約と注意点" class="level2">
<h2 class="anchored" data-anchor-id="制約と注意点">制約と注意点</h2>
<ul>
<li>コンテナは機能ブランチの開発版（1.4.0a0.dev）です</li>
<li>公表された処理時間には、プロンプトのアップサンプリング（指示文を自動で詳しくする処理）は含まれていません</li>
<li>測定はBlackwell世代のデータセンター向けGPUとRTX PRO 6000 Blackwell Server Editionで行われており、GeForceでの結果は示されていません</li>
<li>モデルのパラメータ数とライセンスは、NVIDIAの記事には記載されていません。利用前にBlack Forest Labsの条件を確認してください</li>
</ul>
<hr>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>画像生成の処理時間の大半はノイズ除去の繰り返しで、ここが高速化の中心になる</li>
<li>量子化、アテンションの高速化とスパース化、ステップ間のキャッシュ、複数GPUでの並列化、CUDAグラフを組み合わせ、B200 1枚で3.5〜4.5倍速くなった</li>
<li>Cache-DiTは、画質への影響が小さく、効果が大きい</li>
<li>手法を重ねるほど画質の差は大きくなるため、用途に合わせて選ぶ必要がある</li>
</ul>
</section>
<section id="あわせて読みたい" class="level2">
<h2 class="anchored" data-anchor-id="あわせて読みたい">あわせて読みたい</h2>
<ul>
<li><a href="../2026-11-12-nvfp4-ai-nvidia/">① NVFP4：モデルを4ビットにする数値形式</a><br>
この記事で使ったNVFP4の詳しい仕組み</li>
<li><a href="../2026-11-12-ai-nvidia-gpu/">GPUメモリを無駄なく使う5つの方法【まとめ】</a><br>
NVFP4を含む、GPUメモリを無駄なく使う5つの方法</li>
</ul>
<hr>
<p><strong>参考</strong></p>
<ul>
<li><a href="https://developer.nvidia.com/blog/speed-up-image-generation-with-flux-3-image-klein-on-nvidia-blackwell-gpus/">Speed Up Image Generation with FLUX 3 Image Klein on NVIDIA Blackwell GPUs（NVIDIA Technical Blog）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-14-performance-per-watt/">「電力1Wあたりの性能」とは？ AIインフラの比べ方が変わった理由</a><span class="sc-date">2026/11/14</span></li><li><a href="../../posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/">Nemotron 3.5 Bolt 74B-A9B：2ビットで24GBに収めた74B MoEモデルの作り方</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-kubernetes-engine-nvke-gpu/">NVIDIA Kubernetes Engine（NVKE）とは？GPUクラウド事業者がマネージドKubernetesを自前で提供するためのオープンソース</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-dynamo-llm-kv/">NVIDIA Dynamoとは？LLMのKVキャッシュをデータセンター全体で再利用する推論基盤の仕組み</a><span class="sc-date">2026/11/12</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-flux-image-klein-nvidia-blackwell/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
</item>
<item>
  <title>Nemotron 3.5 Bolt 74B-A9B：2ビットで24GBに収めた74B MoEモデルの作り方</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/</link>
  <description><![CDATA[ 






<p>NVIDIAが2026年10月15日に公開した「Nemotron 3.5 Bolt 74B-A9B 24GB」は、総パラメータ740億のMoEモデルを約24GBに収め、RTX Spark搭載ノートPCやDGX Sparkでローカル実行できるようにしたオープンモデルです。2ビットでも精度が崩れない理由は、学習後に重みを丸めるのではなく、<strong>2ビット化を前提にモデルを圧縮・再学習している</strong>点にあります。</p>
<p>本記事では、Sam Witteveen氏の解説動画「NVIDIA’s Secret 2 Bit Model」（2026年11月9日公開）の内容を軸に、NVIDIAの技術ページ、Hugging Faceのモデル情報、DGX Sparkでの第三者実測結果を加えて、仕組みと実力を整理します。</p>
<p>要点は次の3つです。</p>
<ul>
<li><strong>メモリ要件</strong>：BF16で約150GBある74Bモデルを、層ごとに2/4/8ビットを使い分ける混合精度で約24GBに圧縮している</li>
<li><strong>精度</strong>：BF16版との差はおおむね0〜5ポイントに収まり、エージェント系ベンチマークでは4ビットの26B〜35Bクラスを上回る</li>
<li><strong>制約</strong>：生成速度は4ビットの小型MoEより遅く、同時リクエストが増えると1リクエストあたりの速度が大きく落ちる。1人で使うローカルエージェント向けのモデル</li>
</ul>
<section id="nemotron-3.5-boltの基本仕様" class="level2">
<h2 class="anchored" data-anchor-id="nemotron-3.5-boltの基本仕様">Nemotron 3.5 Boltの基本仕様</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 22%">
<col style="width: 77%">
</colgroup>
<thead>
<tr class="header">
<th>項目</th>
<th>内容</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>正式名</td>
<td>NVIDIA Nemotron 3.5 Bolt 74B-A9B 24GB</td>
</tr>
<tr class="even">
<td>公開日</td>
<td>2026年10月15日</td>
</tr>
<tr class="odd">
<td>アーキテクチャ</td>
<td>ハイブリッドMamba-Transformer＋MoE（混合専門家）</td>
</tr>
<tr class="even">
<td>パラメータ</td>
<td>総数74B、1トークンあたりのアクティブ9B</td>
</tr>
<tr class="odd">
<td>親モデル</td>
<td>Nemotron 3.5 Super VL（120B-A12B）</td>
</tr>
<tr class="even">
<td>入力</td>
<td>テキスト・画像・動画</td>
</tr>
<tr class="odd">
<td>コンテキスト長</td>
<td>最大256K（262,144）トークン</td>
</tr>
<tr class="even">
<td>重みのサイズ</td>
<td>約24GB（2ビット主体の混合精度）</td>
</tr>
<tr class="odd">
<td>想定環境</td>
<td>RTX Spark搭載PC、DGX Spark、DGX Station、24GB以上のGPU</td>
</tr>
<tr class="even">
<td>対応ランタイム</td>
<td>llama.cpp、Ollama、LM Studio、Unsloth、vLLM</td>
</tr>
<tr class="odd">
<td>ライセンス</td>
<td>OpenMDW-1.1（オープンウェイト）</td>
</tr>
</tbody>
</table>
<p>同時に公開されたNemotron 3.5ファミリーの中での位置づけは次のとおりです。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>モデル</th>
<th>規模</th>
<th>用途</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Nemotron 3.5 Super VL</td>
<td>120B-A12B</td>
<td>サーバー向け。文書・画像・動画を扱う高精度エージェント</td>
</tr>
<tr class="even">
<td>Nemotron 3.5 Lightning</td>
<td>30B-A3B</td>
<td>テキスト処理を高スループットで実行</td>
</tr>
<tr class="odd">
<td><strong>Nemotron 3.5 Bolt 74B-A9B 24GB</strong></td>
<td>74B-A9B</td>
<td>24GBメモリで動くローカルエージェント</td>
</tr>
<tr class="even">
<td>Nemotron 3.5 Bolt E4B</td>
<td>4GB</td>
<td>会話エージェント向けの超小型版（10月23日公開）</td>
</tr>
</tbody>
</table>
<p>BoltはRTX Spark搭載ノートPCの発売（2026年10月16日国内発売）に合わせて設計されたモデルで、他のアプリケーションと同時に動かしながら日常的なエージェント処理をローカルで実行することを狙っています。</p>
</section>
<section id="前提知識1パラメータ数とメモリ量の関係" class="level2">
<h2 class="anchored" data-anchor-id="前提知識1パラメータ数とメモリ量の関係">前提知識1：パラメータ数とメモリ量の関係</h2>
<p>LLMの重みは数値の集まりで、1個の数値を何ビットで表すかによって必要なメモリ量が決まります。74Bモデルで計算すると次のようになります。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>1重みあたりのビット数</th>
<th>計算</th>
<th>重みのサイズ</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>16ビット（BF16）</td>
<td>74B × 2バイト</td>
<td>約148GB</td>
</tr>
<tr class="even">
<td>4ビット</td>
<td>74B × 0.5バイト</td>
<td>約37GB</td>
</tr>
<tr class="odd">
<td>2ビット</td>
<td>74B × 0.25バイト</td>
<td>約18.5GB</td>
</tr>
</tbody>
</table>
<p>4ビットでも37GBあり、24GBには収まりません。24GBに収めつつKVキャッシュや画像エンコーダーの領域を残すには、重みの大部分を2ビットまで落とす必要があります。実際にDGX Sparkで計測された値は、本体の重みが20.51GiB、画像処理用のmmprojが1.61GiBでした。</p>
</section>
<section id="前提知識2moeでは総パラメータとアクティブパラメータが別物" class="level2">
<h2 class="anchored" data-anchor-id="前提知識2moeでは総パラメータとアクティブパラメータが別物">前提知識2：MoEでは「総パラメータ」と「アクティブパラメータ」が別物</h2>
<p>MoE（Mixture of Experts）は、FFN層を多数の「エキスパート」に分割し、トークンごとにルーターが一部のエキスパートだけを選んで計算する構造です。</p>
<ul>
<li><strong>総パラメータ（74B）</strong>：すべてのエキスパートを合計した量。どのエキスパートが選ばれるかは事前に分からないため、全量をメモリに置く必要がある。<strong>メモリ要件を決める数字</strong></li>
<li><strong>アクティブパラメータ（9B）</strong>：1トークンの計算で実際に使う量。<strong>計算量と生成速度を決める数字</strong></li>
</ul>
<p>つまりMoEは「メモリは大きく、計算は軽い」モデルです。計算が9B相当で済む一方、メモリには74B分を置く必要があるため、ローカル環境ではメモリ量がボトルネックになります。Boltが2ビット化に踏み込んだ理由はここにあります。</p>
<p>なお、Nemotron 3.5はTransformerの注意機構（Attention）に加えて、状態空間モデルのMamba層を組み合わせたハイブリッド構成です。Mamba層は系列長に対して計算量が線形に増えるため、256Kの長文脈を扱いやすくなります。</p>
</section>
<section id="前提知識3なぜ通常の量子化は4ビットを下回ると崩れるのか" class="level2">
<h2 class="anchored" data-anchor-id="前提知識3なぜ通常の量子化は4ビットを下回ると崩れるのか">前提知識3：なぜ通常の量子化は4ビットを下回ると崩れるのか</h2>
<p>一般的な量子化は<strong>PTQ（Post-Training Quantization：学習後量子化）</strong>です。学習済みのモデルの重みを、後から少ないビット数の値に丸めます。</p>
<p>2ビットで表現できる値は1ブロックあたり4段階しかありません。16ビットで細かく調整されていた重みを4段階に丸めると、各層で生じる誤差が層を重ねるごとに蓄積し、出力が大きくずれます。4ビット（16段階）までは実用的な精度を保てても、それを下回ると急激に性能が落ちるのはこのためです。</p>
<p>これに対して<strong>QAT（Quantization-Aware Training：量子化を考慮した学習）</strong>は、量子化した状態で順伝播を計算しながら学習を続け、丸め誤差を前提に重みを調整し直します。Boltが採用している<strong>QAD（Quantization-Aware Distillation：量子化を考慮した蒸留）</strong>はその発展形で、量子化したモデルを生徒とし、量子化前の高精度モデルの出力分布に近づくように学習させます。正解ラベルだけでなく教師モデルの確率分布全体を手本にするため、失われた精度を効率よく取り戻せます。</p>
<p>NVIDIAは技術ページで、ParetoQやQuestといった先行研究を引用し、「同じメモリ量なら、高ビットの小さいモデルより、1〜2ビットの大きいモデルのほうが精度とサイズの釣り合いが良い」という知見を示しています。Boltの結果もこの知見と整合すると述べています。</p>
</section>
<section id="gbに収めるまでの工程" class="level2">
<h2 class="anchored" data-anchor-id="gbに収めるまでの工程">24GBに収めるまでの工程</h2>
<p>Boltは、親モデルであるNemotron 3.5 Super VL（120B-A12B）から次の工程で作られています。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112193031.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Nemotron 3.5 Boltの作成工程"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/fig-20261112193031.png" class="img-fluid figure-img" alt="Nemotron 3.5 Boltの作成工程"></a></p>
<figcaption>Nemotron 3.5 Boltの作成工程</figcaption>
</figure>
</div>
<section id="工程1圧縮star-elastic" class="level3">
<h3 class="anchored" data-anchor-id="工程1圧縮star-elastic">工程1：圧縮（Star Elastic）</h3>
<p>NVIDIA独自の圧縮フレームワーク「Star Elastic」で、層ごとに残すエキスパート数とMoE中間層の幅を探索します。ルーターの情報を手がかりに、予算（目標サイズ）に応じた構成を選ぶ仕組みです。</p>
<ul>
<li>総パラメータ：120B → 74B</li>
<li>アクティブパラメータ：12B → 9B</li>
<li>1トークンあたりに選ぶエキスパート数（top-K）：22 → 9</li>
</ul>
<p>重要なのは、<strong>「量子化後に24GBに収まること」を探索の段階で目標に設定している</strong>点です。後工程の2ビット化を見越して、圧縮後の構成そのものを決めています。動画で説明されている「最初から2ビット化を前提にエキスパートを削る」とはこのことです。</p>
</section>
<section id="工程2事後学習" class="level3">
<h3 class="anchored" data-anchor-id="工程2事後学習">工程2：事後学習</h3>
<p>圧縮で落ちた能力を取り戻すため、次の順に学習を重ねます。</p>
<ol type="1">
<li>画像・動画の理解能力（視覚能力）の回復</li>
<li>シミュレーション環境での強化学習によるエージェント動作の習得</li>
<li>推論とツール呼び出しを強化する最終段の強化学習</li>
</ol>
</section>
<section id="工程3混合精度量子化とqad" class="level3">
<h3 class="anchored" data-anchor-id="工程3混合精度量子化とqad">工程3：混合精度量子化とQAD</h3>
<p>最後に重みを量子化し、QADで精度を回復させます。量子化の対象は重みのみで、層の種類ごとにビット数を変えています。</p>
</section>
</section>
<section id="混合精度どの層を何ビットにしているか" class="level2">
<h2 class="anchored" data-anchor-id="混合精度どの層を何ビットにしているか">混合精度：どの層を何ビットにしているか</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>対象</th>
<th>形式</th>
<th>ビット数</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>ルーテッド／共有エキスパートのFC1・FC2（重みの大部分）</td>
<td>IQ2_XXS</td>
<td>約2ビット（2.0625ビット/要素）</td>
</tr>
<tr class="even">
<td>Mamba層の線形層</td>
<td>NVFP4</td>
<td>4ビット</td>
</tr>
<tr class="odd">
<td>注意機構、トークン埋め込み、出力層（lm_head）、Latent MoE</td>
<td>Q8_0</td>
<td>8ビット</td>
</tr>
</tbody>
</table>
<p>設計の考え方は明確です。重みの大半を占めるエキスパートを2ビットにして容量を大きく削り、モデル全体の振る舞いに影響する注意機構・埋め込み・出力層は8ビットに残しています。IQ2_XXSはllama.cppの量子化形式で、ブロック単位のスケール情報を含むため1要素あたり2.0625ビットになります。NVFP4はNVIDIA Blackwell世代がハードウェアで扱える4ビット浮動小数点形式です。</p>
</section>
<section id="ベンチマークbf16版との差と競合モデルとの比較" class="level2">
<h2 class="anchored" data-anchor-id="ベンチマークbf16版との差と競合モデルとの比較">ベンチマーク：BF16版との差と競合モデルとの比較</h2>
<p>NVIDIAが公開した値の主要部分です。比較対象は「4ビット量子化で24GBに収まるオープンMoEモデル」から選ばれています。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 20%">
<col style="width: 20%">
<col style="width: 20%">
<col style="width: 20%">
<col style="width: 20%">
</colgroup>
<thead>
<tr class="header">
<th>ベンチマーク</th>
<th>Bolt 24GB</th>
<th>Bolt BF16</th>
<th>Qwen3.6-35B-A3B</th>
<th>Gemma 4 26B-A4B</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Terminal-Bench 2.1</td>
<td>50.98</td>
<td>53.93</td>
<td>44.38</td>
<td>37.22</td>
</tr>
<tr class="even">
<td>GPQA Diamond</td>
<td>86.43</td>
<td>88.83</td>
<td>83.4</td>
<td>79.61</td>
</tr>
<tr class="odd">
<td>Humanity’s Last Exam（ツールなし）</td>
<td>25.3</td>
<td>28.73</td>
<td>19.56</td>
<td>17.42</td>
</tr>
<tr class="even">
<td>SciCode</td>
<td>41.02</td>
<td>44.49</td>
<td>35.33</td>
<td>40.28</td>
</tr>
<tr class="odd">
<td>BrowseComp</td>
<td>66.75</td>
<td>70</td>
<td>48.74</td>
<td>26.3</td>
</tr>
<tr class="even">
<td>PinchBench</td>
<td>87.82</td>
<td>90.35</td>
<td>88.07</td>
<td>74.7</td>
</tr>
<tr class="odd">
<td>MCP-Atlas</td>
<td>52.2</td>
<td>55.6</td>
<td>51.2</td>
<td>—</td>
</tr>
<tr class="even">
<td>WebArena（vision）</td>
<td>50.86</td>
<td>50.25</td>
<td>36.6</td>
<td>38.2</td>
</tr>
<tr class="odd">
<td>AA-Omniscience 正答率</td>
<td>16.9</td>
<td>21.8</td>
<td>19.47</td>
<td>22.17</td>
</tr>
<tr class="even">
<td>AA-Omniscience 非ハルシネーション</td>
<td>61.27</td>
<td>56.14</td>
<td>65.85</td>
<td>14.22</td>
</tr>
</tbody>
</table>
<p>読み取れることは3点です。</p>
<ol type="1">
<li><strong>2ビット化による低下は小さい</strong>：BF16版との差は多くの項目で2〜4ポイント。WebArenaとτ³-bench（Banking、両者とも17.01）では差がない</li>
<li><strong>エージェント系で強い</strong>：BrowseComp（Web調査）で66.75と、Qwen3.6-35B-A3Bの48.74を18ポイント上回る。公開リーダーボードでは、同程度のメモリ量のモデルの中でPinchBench 1位、WebArena 2位、BrowseComp 2位</li>
<li><strong>知識の想起は落ちる</strong>：AA-Omniscienceの正答率はBF16の21.8から16.9へ4.9ポイント低下し、Gemma 4を下回る。一方で非ハルシネーション率は56.14から61.27へ上がっており、知らないことを答えずに控える傾向が強まっている</li>
</ol>
</section>
<section id="生成速度" class="level2">
<h2 class="anchored" data-anchor-id="生成速度">生成速度</h2>
<section id="nvidia公表値rtx-sparkllama.cpp" class="level3">
<h3 class="anchored" data-anchor-id="nvidia公表値rtx-sparkllama.cpp">NVIDIA公表値（RTX Spark、llama.cpp）</h3>
<p>Surface Laptop Ultra（RTX Spark、メモリ128GB、Windows 11 ARM64）での計測値です。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>モデル</th>
<th>生成速度（コーディング）</th>
<th>エージェント処理の再生時間</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Nemotron 3.5 Bolt（IQ2_XXS＋LiLiCorr）</td>
<td>83.99トークン/秒</td>
<td>600.80秒</td>
</tr>
<tr class="even">
<td>Qwen3.6 35B-A3B（4ビット＋MTP）</td>
<td>96.63トークン/秒</td>
<td>453.97秒</td>
</tr>
<tr class="odd">
<td>Gemma 4 26B-A4B（4ビット＋MTP）</td>
<td>100.56トークン/秒</td>
<td>480.68秒</td>
</tr>
<tr class="even">
<td>Qwen3.8 27B（4ビット＋DFlash）</td>
<td>28.26トークン/秒</td>
<td>1043.28秒</td>
</tr>
</tbody>
</table>
<p>Boltのアクティブパラメータは9Bで、Qwen3.6（3B）やGemma 4（4B）より計算量が多いため、速度では後れを取ります。NVIDIAは「80トークン/秒以上」を設計目標にしており、それを達成するために1.13Bパラメータの投機的デコーディング用ドラフトモデル「LiLiCorr」を同時に公開しています。LiLiCorrは7トークン先まで下書きし、平均4.68トークン（貪欲デコード時）が本体モデルに採用されます。</p>
</section>
<section id="dgx-sparkでの第三者実測llama.cpp" class="level3">
<h3 class="anchored" data-anchor-id="dgx-sparkでの第三者実測llama.cpp">DGX Sparkでの第三者実測（llama.cpp）</h3>
<p>クラスメソッドが公開翌日にDGX Spark（GB10、統合メモリ128GB）で計測した結果です。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 46%">
<col style="width: 26%">
<col style="width: 26%">
</colgroup>
<thead>
<tr class="header">
<th>条件</th>
<th>1リクエストあたり</th>
<th>合計</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>投機的デコーディングなし、同時1</td>
<td>39.47トークン/秒</td>
<td>39.47トークン/秒</td>
</tr>
<tr class="even">
<td>DFlashあり、同時1</td>
<td>61.61トークン/秒</td>
<td>61.61トークン/秒</td>
</tr>
<tr class="odd">
<td>投機的デコーディングなし、同時4</td>
<td>21.34トークン/秒</td>
<td>82.08トークン/秒</td>
</tr>
<tr class="even">
<td>投機的デコーディングなし、同時8</td>
<td>13.26トークン/秒</td>
<td>102.45トークン/秒</td>
</tr>
</tbody>
</table>
<p>常駐メモリはDFlashなしで27.9GiB、ありで31.4GiBでした。同時8リクエストでは1リクエストあたりの速度が単独時の約3分の1まで落ちるため、チームで共有するサーバー用途には向きません。</p>
</section>
</section>
<section id="実機での動作検証" class="level2">
<h2 class="anchored" data-anchor-id="実機での動作検証">実機での動作検証</h2>
<p>Sam Witteveen氏の動画では、ローカル環境でツール呼び出しを伴うエージェント処理を実行し、プロンプトインジェクションへの耐性も確認しています。一部に小さな誤りはあるものの、全体としてエージェントとして機能すると評価しています。親モデルの120Bと比べれば賢さと速度に差はありますが、24GBというハードウェア制約の中で動くモデルとしては実用的という結論です。</p>
<p>クラスメソッドの検証でも、2ビット化による明確な精度低下は見られていません。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 40%">
<col style="width: 59%">
</colgroup>
<thead>
<tr class="header">
<th>検証項目</th>
<th>結果</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>日本語タスク（9問）</td>
<td>8/9正解（Lightning 8/9、GLM 2ビット版 6/9）</td>
</tr>
<tr class="even">
<td>コード生成（5問・49テスト）</td>
<td>5/5すべて合格（Lightning、GLMは4/5）</td>
</tr>
<tr class="odd">
<td>バグ修正（12テスト）</td>
<td>全テスト合格（5ターン、43.0秒）</td>
</tr>
<tr class="even">
<td>基本的なツール呼び出し（5件）</td>
<td>5/5成功、不正な形式の呼び出しなし</td>
</tr>
<tr class="odd">
<td>エージェント部品のツール選択</td>
<td>4/6（Lightningは5/6）</td>
</tr>
<tr class="even">
<td>画像理解（3件）</td>
<td>3/3成功。点検記録のOCRで文字誤り率0.0</td>
</tr>
</tbody>
</table>
<p>推論（thinking）の設定で処理量が大きく変わる点も確認されています。日本語タスクでは、highで約13,400トークン・356秒、mediumで約3,200トークン・91秒を消費し、どちらも8/9正解でした。offでは約960トークンで7/9です。出力形式の一貫性はoffで0/5まで落ちるため、エージェント用途ではmediumが現実的な設定です。</p>
</section>
<section id="使いどころと制約" class="level2">
<h2 class="anchored" data-anchor-id="使いどころと制約">使いどころと制約</h2>
<p><strong>向いている用途</strong></p>
<ul>
<li>24GB級のGPU、またはRTX Spark／DGX Sparkで、1人がローカルでコーディングエージェントやWeb調査エージェントを動かす用途</li>
<li>他のアプリケーションとメモリを共有しながら、クラウドに出せないデータをローカルで処理する用途</li>
<li>画像・動画を含む入力を、256Kの長文脈で扱う用途</li>
</ul>
<p><strong>制約</strong></p>
<ul>
<li>生成速度は4ビットの26B〜35Bクラスより遅い。速度を最優先するならQwen3.6やGemma 4が有利</li>
<li>同時リクエストに弱く、チームで共有する推論サーバーにはLightning（30B-A3B）のほうが適する</li>
<li>ファインチューニングの土台にはしにくい。BF16版は約150GBあり、ローカル環境に載らない</li>
<li>知識の想起（AA-Omniscience正答率）はBF16版から約5ポイント落ちる。事実確認が重要な用途ではRAGや検索ツールと組み合わせる</li>
</ul>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>Nemotron 3.5 Bolt 74B-A9B 24GBは、120B-A12Bの親モデルを「24GBに収まること」を目標に圧縮し、事後学習とQADを経て、重みの大部分を2ビットにしたモデルである</li>
<li>精度の鍵は、学習後に丸めるPTQではなく、圧縮段階から量子化を前提に設計し、量子化した状態で教師モデルに合わせて学習し直している点にある</li>
<li>BF16版との差は数ポイントに収まり、エージェント系ベンチマークでは同じメモリ量の4ビットモデルを上回る。一方で速度と同時実行性能は劣るため、1人用のローカルエージェントとして使うのが適している</li>
</ul>
</section>
<section id="参考" class="level2">
<h2 class="anchored" data-anchor-id="参考">参考</h2>
<ul>
<li><a href="https://www.youtube.com/watch?v=WJpeW9lCSUM">Sam Witteveen「NVIDIA’s Secret 2 Bit Model」（YouTube、2026年11月9日）</a></li>
<li><a href="https://research.nvidia.com/labs/nemotron/Nemotron-3.5-Bolt-24GB/">NVIDIA Research「NVIDIA Nemotron 3.5 Bolt 74B-A9B 24GB」</a></li>
<li><a href="https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB">Hugging Face「nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB」</a></li>
<li><a href="https://www.hpcwire.com/aiwire/2026/10/15/nvidia-expands-nemotron-family-with-highest-efficiency-super-vl-and-bolt-models/">HPCwire「NVIDIA Expands Nemotron Family with Highest Efficiency Super VL and Bolt Models」</a></li>
<li><a href="https://dev.classmethod.jp/articles/dgx-spark-nemotron-3-5-bolt-74b-a9b-first-touch/">クラスメソッド「2-bit量子化MoE『Nemotron 3.5 Bolt 74B-A9B』をDGX Sparkで動かしてみた」</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-03-nvidia-dory-b-transformer/">NVIDIA Dory 1.0 4Bの仕組み：ループ型Transformerはパラメータを増やさず計算量を増やす</a><span class="sc-date">2026/11/03</span></li><li><a href="../../posts/2026-11-12-nvidia-dynamo-llm-kv/">NVIDIA Dynamoとは？LLMのKVキャッシュをデータセンター全体で再利用する推論基盤の仕組み</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvfp4-ai-nvidia/">NVFP4とは？精度をほぼ落とさずにAIモデルを4ビットにする、NVIDIAの数値形式の仕組み</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-wide-ep-moe-gpu-nvidia/">Wide-EPとは？MoEモデルのエキスパートを数十枚のGPUに分散して、メモリと計算を効率化するNVIDIAの方法</a><span class="sc-date">2026/11/12</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
  <media:content url="https://scholia-notes.pages.dev/posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/fig-20261112193031.png" medium="image" type="image/png" height="185" width="144"/>
</item>
<item>
  <title>NVFP4とは？精度をほぼ落とさずにAIモデルを4ビットにする、NVIDIAの数値形式の仕組み</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-nvfp4-ai-nvidia/</link>
  <description><![CDATA[ 






<p><strong>結論：NVFP4は、AIの計算に使う数値を4ビットまで小さくしながら、「16個の値ごとにFP8のスケールを付ける」ことで精度の低下を1ポイント前後に抑える、NVIDIAの数値形式です。モデルの重みは16ビット形式の約3.5分の1になります。</strong></p>
<p>ポイントは次の3つです。</p>
<ol type="1">
<li><strong>背景</strong>：GPUの高速メモリ（HBM）は容量が限られ、推論の性能はそこに何を載せられるかで決まる。数値のビット数を減らせば、同じHBMにより多くのデータを載せられる</li>
<li><strong>仕組み</strong>：4ビットの浮動小数点数（E2M1）で表せる値は15個しかない。そこで16個の値ごとにFP8のスケールを、テンソル全体にFP32のスケールを付ける2段階の構造にした</li>
<li><strong>効果</strong>：DeepSeek-R1-0528での正答率の差は、多くの項目で1ポイント以内。KVキャッシュに使えば、FP8より最大50%小さくなる</li>
</ol>
<p>この記事は「<a href="../2026-11-12-ai-nvidia-gpu/">GPUメモリを無駄なく使う5つの方法</a>」の1本目です。</p>
<hr>
<section id="前提ビット数を減らすことの意味" class="level2">
<h2 class="anchored" data-anchor-id="前提ビット数を減らすことの意味">前提：ビット数を減らすことの意味</h2>
<p>LLMは、数千億個にもなる数値（重み）の集まりです。推論のたびに、GPUはこの重みをHBMから読み出して計算します。1つの数値を何ビットで表すかによって、必要なメモリの量と読み出しにかかる時間が変わります。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>形式</th>
<th>1つの数値のビット数</th>
<th>対応するGPU</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>FP32</td>
<td>32ビット</td>
<td>すべて</td>
</tr>
<tr class="even">
<td>FP16／BF16</td>
<td>16ビット</td>
<td>現在の標準的な形式</td>
</tr>
<tr class="odd">
<td>FP8</td>
<td>8ビット</td>
<td>Hopper（H100）以降</td>
</tr>
<tr class="even">
<td>NVFP4</td>
<td>4ビット＋スケール</td>
<td>Blackwell以降</td>
</tr>
</tbody>
</table>
<p>ビット数を半分にすれば、メモリの量も読み出しの時間も半分になります。ただし、表せる値の種類が減るため、計算結果の精度が落ちるおそれがあります。<strong>ビット数を減らすことと、精度を保つことの両立</strong>が課題です。</p>
<hr>
</section>
<section id="fp4e2m1で表せるのは15個の値だけ" class="level2">
<h2 class="anchored" data-anchor-id="fp4e2m1で表せるのは15個の値だけ">FP4（E2M1）で表せるのは15個の値だけ</h2>
<p>NVFP4の土台になっているFP4は、4ビットを「符号1ビット・指数2ビット・仮数1ビット」に分けた浮動小数点数です（E2M1形式）。表せる値は次の15個です。</p>
<blockquote class="blockquote">
<p>0、±0.5、±1、±1.5、±2、±3、±4、±6</p>
</blockquote>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112072641.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="FP4（E2M1）で表せるのは15個の値だけ"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvfp4-ai-nvidia/fig-20261112072641.png" class="img-fluid figure-img" alt="FP4（E2M1）で表せるのは15個の値だけ"></a></p>
<figcaption>FP4（E2M1）で表せるのは15個の値だけ</figcaption>
</figure>
</div>
<p>値の間隔は一定ではなく、0の近くは細かく、絶対値が大きくなるほど粗くなります。この15個だけでは、次のような値をそのまま表せません。</p>
<ul>
<li>0.03のような小さな値（0に丸められる）</li>
<li>120のような大きな値（6に丸められる）</li>
<li>2.4のような中間の値（最も近い2に丸められる）</li>
</ul>
<p>AIの重みには、ごく小さな値から大きな値までが混在しています。15個の値だけでは表現しきれません。</p>
</section>
<section id="スケールと組み合わせる" class="level2">
<h2 class="anchored" data-anchor-id="スケールと組み合わせる">スケールと組み合わせる</h2>
<p>そこで使うのが <strong>スケール（倍率）</strong> です。値の集まりごとにスケールを決め、「元の値 ≒ 4ビットの値 × スケール」として表します。</p>
<ul>
<li>小さな値が集まるブロックでは、スケールを0.01にする → 0.005刻みで表せる</li>
<li>大きな値が集まるブロックでは、スケールを20にする → 最大120まで表せる</li>
</ul>
<p>記録するのは「4ビットの値」と「スケール」の2つです。設計上の論点は、<strong>スケールを何個の値ごとに付けるか</strong>と、<strong>スケール自体をどれだけ細かく表すか</strong>の2つです。</p>
<hr>
</section>
<section id="nvfp4の設計小さなブロックに細かいスケールを付ける" class="level2">
<h2 class="anchored" data-anchor-id="nvfp4の設計小さなブロックに細かいスケールを付ける">NVFP4の設計：小さなブロックに、細かいスケールを付ける</h2>
<p>業界標準の4ビット形式「MXFP4」（Open Compute Projectの仕様）と比べると、NVFP4の設計がよく分かります。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112072655.png" class="lightbox" data-gallery="quarto-lightbox-gallery-2" title="NVFP4の工夫：細かいグループごとに、細かいスケールを付ける"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvfp4-ai-nvidia/fig-20261112072655.png" class="img-fluid figure-img" alt="NVFP4の工夫：細かいグループごとに、細かいスケールを付ける"></a></p>
<figcaption>NVFP4の工夫：細かいグループごとに、細かいスケールを付ける</figcaption>
</figure>
</div>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>項目</th>
<th>MXFP4</th>
<th>NVFP4</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>1つのスケールを共有する値の数</td>
<td>32個</td>
<td>16個</td>
</tr>
<tr class="even">
<td>スケールの形式</td>
<td>E8M0（2のべき乗だけ）</td>
<td>E4M3（FP8。小数を含む値を表せる）</td>
</tr>
<tr class="odd">
<td>テンソル全体のスケール</td>
<td>なし</td>
<td>FP32で1つ</td>
</tr>
<tr class="even">
<td>1つの値あたりの実質ビット数</td>
<td>約4.25ビット</td>
<td>約4.5ビット</td>
</tr>
</tbody>
</table>
<section id="設計1スケールをfp8で表す" class="level3">
<h3 class="anchored" data-anchor-id="設計1スケールをfp8で表す">設計1：スケールをFP8で表す</h3>
<p>MXFP4のスケールはE8M0形式で、2のべき乗（1、2、4、8…）しか表せません。理想のスケールが3でも、2か4に丸めることになり、その分の誤差が4ビットの値に乗ります。</p>
<p>NVFP4はスケールをFP8（E4M3形式）で記録するため、2.75のような値も表せます。NVIDIAの例では、スケールを量子化するときの誤差（平均二乗誤差）が、E8M0の0.72に対してE4M3では0.08でした。</p>
</section>
<section id="設計2ブロックを16個にした" class="level3">
<h3 class="anchored" data-anchor-id="設計2ブロックを16個にした">設計2：ブロックを16個にした</h3>
<p>1つのスケールを共有する範囲が広いと、その中に1つだけ極端に大きな値（外れ値）があったとき、スケールがその値に合わせて大きくなり、ほかの値が粗くしか表せなくなります。NVFP4はブロックを32個から16個に減らし、外れ値の影響が及ぶ範囲を半分にしました。</p>
</section>
<section id="設計3テンソル全体のスケールを追加した" class="level3">
<h3 class="anchored" data-anchor-id="設計3テンソル全体のスケールを追加した">設計3：テンソル全体のスケールを追加した</h3>
<p>E4M3はE8M0より細かく表せる代わりに、表せるスケールの範囲が狭くなります。そこでNVFP4は、テンソル全体にもう1つFP32のスケールを付けました。<strong>テンソル全体のスケールで値の分布を大まかに合わせ、そのうえで16個ごとのスケールで細かく調整する</strong>、2段階の構造です。</p>
<hr>
</section>
</section>
<section id="効果" class="level2">
<h2 class="anchored" data-anchor-id="効果">効果</h2>
<section id="サイズは16ビット形式の約3.5分の1" class="level3">
<h3 class="anchored" data-anchor-id="サイズは16ビット形式の約3.5分の1">サイズは16ビット形式の約3.5分の1</h3>
<p>スケールの分だけ1つの値あたり約4.5ビットになりますが、それでも16ビット形式より大幅に小さくなります。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112072709.png" class="lightbox" data-gallery="quarto-lightbox-gallery-3" title="モデルの重みの大きさ：16ビットを100とした場合"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvfp4-ai-nvidia/fig-20261112072709.png" class="img-fluid figure-img" alt="モデルの重みの大きさ：16ビットを100とした場合"></a></p>
<figcaption>モデルの重みの大きさ：16ビットを100とした場合</figcaption>
</figure>
</div>
</section>
<section id="精度の低下は1ポイント前後" class="level3">
<h3 class="anchored" data-anchor-id="精度の低下は1ポイント前後">精度の低下は1ポイント前後</h3>
<p>NVIDIAは、DeepSeek-R1-0528を学習後量子化（PTQ）でNVFP4に変換し、FP8版と正答率を比べています。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112072724.png" class="lightbox" data-gallery="quarto-lightbox-gallery-4" title="精度はほとんど落ちない：DeepSeek-R1-0528での比較"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvfp4-ai-nvidia/fig-20261112072724.png" class="img-fluid figure-img" alt="精度はほとんど落ちない：DeepSeek-R1-0528での比較"></a></p>
<figcaption>精度はほとんど落ちない：DeepSeek-R1-0528での比較</figcaption>
</figure>
</div>
<p>7項目のうち、差は最大1ポイントで、AIME 2024ではNVFP4のほうが2ポイント高い結果でした。</p>
</section>
<section id="kvキャッシュにも使える" class="level3">
<h3 class="anchored" data-anchor-id="kvキャッシュにも使える">KVキャッシュにも使える</h3>
<p>NVFP4は重みだけでなく、KVキャッシュ（会話の途中経過を保持するデータ）にも使えます。NVIDIAによると、KVキャッシュをNVFP4にするとFP8より最大50%小さくなり、GPUに載せられる文脈の長さがおよそ2倍になります。DeepSeek-v4-Proの10種類のベンチマークでは、BF16版の99%以上の成績を保ち、差は0.1〜1.0ポイントでした（最大はTerminalBenchの74.1対75.1）。</p>
<hr>
</section>
</section>
<section id="制約と注意点" class="level2">
<h2 class="anchored" data-anchor-id="制約と注意点">制約と注意点</h2>
<ul>
<li><strong>誤差はゼロではない</strong>：精度の差が1ポイントでも問題になる用途では、対象のタスクで検証が必要です</li>
<li><strong>Blackwell以降が必要</strong>：NVFP4を高速に計算するTensor Coreは、Blackwell世代から搭載されています</li>
<li><strong>最良条件の数字</strong>：「電力あたり最大4倍」（GB300でのDeepSeek R1、FP8比）などの数字は、特定のモデルと条件での最大値です</li>
</ul>
<hr>
</section>
<section id="試すには" class="level2">
<h2 class="anchored" data-anchor-id="試すには">試すには</h2>
<ul>
<li>NVIDIA TensorRT Model OptimizerまたはLLM Compressorで、モデルをNVFP4に変換できます（PTQ、量子化を考慮した学習＝QATなど）</li>
<li>変換したモデルは、TensorRT-LLMやvLLMで動かせます</li>
<li>DeepSeek-R1-0528などの変換済みモデルが、Hugging Faceで公開されています</li>
</ul>
<hr>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>FP4（E2M1）で表せる値は15個しかなく、そのままでは幅広い値を表せない</li>
<li>NVFP4は、16個ごとのFP8スケールとテンソル全体のFP32スケールの2段階で、表現の精度を上げている</li>
<li>モデルは16ビット形式の約3.5分の1になり、精度の低下は多くの項目で1ポイント以内</li>
<li>KVキャッシュにも使え、GPUに載せられる文脈の長さがおよそ2倍になる</li>
</ul>
</section>
<section id="連載gpuメモリを無駄なく使う5つの方法" class="level2">
<h2 class="anchored" data-anchor-id="連載gpuメモリを無駄なく使う5つの方法">連載「GPUメモリを無駄なく使う5つの方法」</h2>
<ul>
<li><a href="../2026-11-12-ai-nvidia-gpu/">GPUメモリを無駄なく使う5つの方法【まとめ】</a></li>
<li><strong>① NVFP4：モデルを4ビットにする数値形式</strong>（この記事）</li>
<li><a href="../2026-11-12-wide-ep-moe-gpu-nvidia/">② Wide-EP：MoEのエキスパートを多数のGPUに分散する</a></li>
<li><a href="../2026-11-12-nvidia-dynamo-llm-kv/">③ Dynamo：KVキャッシュをデータセンター全体で再利用する</a></li>
<li><a href="../2026-11-12-nvidia-vera-cpu-tb-nvlink-c2c/">④ Vera CPU：待ち時間中のKVキャッシュをCPUメモリで受け持つ</a></li>
<li><a href="../2026-11-12-nvidia-cmx-kv-g3-5/">⑤ CMX：KVキャッシュ専用の共有ストレージ階層</a></li>
</ul>
<p>前の記事：<a href="../2026-11-12-ai-nvidia-gpu/">GPUメモリを無駄なく使う5つの方法【まとめ】</a></p>
<p>次の記事：<a href="../2026-11-12-wide-ep-moe-gpu-nvidia/">② Wide-EP：MoEのエキスパートを多数のGPUに分散する</a></p>
</section>
<section id="あわせて読みたい" class="level2">
<h2 class="anchored" data-anchor-id="あわせて読みたい">あわせて読みたい</h2>
<ul>
<li><a href="../2026-11-12-flux-image-klein-nvidia-blackwell/">FLUX 3 Image Klein：画像生成をBlackwellで3〜4倍高速化</a><br>
NVFP4を画像生成モデルに適用し、処理時間を短縮した例</li>
</ul>
<hr>
<p><strong>参考</strong></p>
<ul>
<li><a href="https://developer.nvidia.com/blog/introducing-nvfp4-for-efficient-and-accurate-low-precision-inference">Introducing NVFP4 for Efficient and Accurate Low-Precision Inference（NVIDIA Technical Blog）</a></li>
<li><a href="https://developer.nvidia.com/blog/five-ways-nvidia-co-design-maximizes-the-value-of-every-byte-in-the-ai-factory/">Five Ways NVIDIA Co-Design Maximizes the Value of Every Byte in the AI Factory（NVIDIA Technical Blog）</a></li>
<li><a href="https://research.nvidia.com/labs/eai/blogs/pushing-intelligence-to-4-bit/">Pushing Intelligence to 4-bit（NVIDIA Research）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/">Nemotron 3.5 Bolt 74B-A9B：2ビットで24GBに収めた74B MoEモデルの作り方</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-dynamo-llm-kv/">NVIDIA Dynamoとは？LLMのKVキャッシュをデータセンター全体で再利用する推論基盤の仕組み</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-wide-ep-moe-gpu-nvidia/">Wide-EPとは？MoEモデルのエキスパートを数十枚のGPUに分散して、メモリと計算を効率化するNVIDIAの方法</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-ai-nvidia-gpu/">AI推論の性能は「メモリの使い方」で決まる――NVIDIAが示す、GPUメモリを無駄なく使う5つの方法【まとめ】</a><span class="sc-date">2026/11/12</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-nvfp4-ai-nvidia/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
  <media:content url="https://scholia-notes.pages.dev/posts/2026-11-12-nvfp4-ai-nvidia/fig-20261112072641.png" medium="image" type="image/png" height="84" width="144"/>
</item>
<item>
  <title>NVIDIA CMXとは？KVキャッシュ専用の共有ストレージ階層「G3.5」の仕組みを解説</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-cmx-kv-g3-5/</link>
  <description><![CDATA[ 






<p><strong>結論：NVIDIA CMXは、LLMのKVキャッシュだけを置くための共有ストレージで、ローカルSSD（G3）と共有ストレージ（G4）の間に「G3.5」という新しい階層を作ります。GPUポッド内のどのノードからもKVキャッシュを読み出せるため、処理するノードが変わっても再計算せずに済みます。</strong></p>
<p>ポイントは次の3つです。</p>
<ol type="1">
<li><strong>背景</strong>：エージェントの文脈は長く、セッションは長時間続き、途中で処理ノードが変わることもある。ローカルSSDに置いたKVキャッシュは、他のノードから読めない</li>
<li><strong>仕組み</strong>：イーサネット接続のフラッシュストレージをKVキャッシュ専用に使い、BlueField-4（DPU）がI/Oを処理する。Dynamoがdecodeの前にKVキャッシュをGPU側へプリステージする</li>
<li><strong>効果</strong>：NVIDIAは、長い文脈の推論で、従来のストレージより処理量と電力効率がいずれも最大5倍としている</li>
</ol>
<p>この記事は「<a href="../2026-11-12-ai-nvidia-gpu/">GPUメモリを無駄なく使う5つの方法</a>」の5本目です。</p>
<hr>
<section id="前提kvキャッシュの階層g1g4" class="level2">
<h2 class="anchored" data-anchor-id="前提kvキャッシュの階層g1g4">前提：KVキャッシュの階層（G1〜G4）</h2>
<p>NVIDIAは、KVキャッシュの置き場所を次の4階層で整理しています。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>階層</th>
<th>置き場所</th>
<th>特徴</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>G1</td>
<td>GPUメモリ（HBM）</td>
<td>生成中のKVキャッシュ。最も高速だが容量が小さい</td>
</tr>
<tr class="even">
<td>G2</td>
<td>CPUメモリ（システムRAM）</td>
<td>HBMと下位階層の間でKVキャッシュを中継・バッファする</td>
</tr>
<tr class="odd">
<td>G3</td>
<td>ローカルSSD</td>
<td>短期間に再利用するKVキャッシュ。ノードに固定され、管理とスケールが難しい</td>
</tr>
<tr class="even">
<td>G4</td>
<td>共有のファイル・オブジェクトストレージ</td>
<td>永続化すべきデータ。アクセスはミリ秒単位で、推論用途には最も非効率</td>
</tr>
</tbody>
</table>
<p>NVIDIAによると、KVキャッシュがGPUから遠い階層に置かれるほど、1トークンあたりの遅延とエネルギーが増えます。</p>
<p>G3とG4の間には大きな差があります。</p>
<ul>
<li><strong>G3</strong>：速いが、そのノードからしか使えない</li>
<li><strong>G4</strong>：どのノードからも使えるが、遅延が大きい</li>
</ul>
<p>「どのノードからも使えて、しかも速い」階層がありませんでした。</p>
<hr>
</section>
<section id="kvキャッシュの置き場所が足りなくなった理由" class="level2">
<h2 class="anchored" data-anchor-id="kvキャッシュの置き場所が足りなくなった理由">KVキャッシュの置き場所が足りなくなった理由</h2>
<p>NVIDIAは、次の3つの変化を挙げています。</p>
<ol type="1">
<li><strong>文脈が長くなった</strong>：エージェントの文脈は数百万トークン規模に伸び、モデルは数兆パラメータに近づいている。KVキャッシュの量は文脈の長さに比例して増える</li>
<li><strong>再計算の負担が増えた</strong>：履歴の再計算に必要な計算量は、文脈が長くなるほどKVキャッシュの量以上に急速に増える。そのため再利用が欠かせない</li>
<li><strong>セッションが長く続くようになった</strong>：エージェントは、複数のターン、ツール呼び出し、セッションにまたがって文脈を保持する必要がある</li>
</ol>
<p>さらに、長いセッションの途中で処理ノードが変わることがあります。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112073300.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="処理ノードが変わったとき：ローカルSSDとCMXの違い"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-cmx-kv-g3-5/fig-20261112073300.png" class="img-fluid figure-img" alt="処理ノードが変わったとき：ローカルSSDとCMXの違い"></a></p>
<figcaption>処理ノードが変わったとき：ローカルSSDとCMXの違い</figcaption>
</figure>
</div>
<p>KVキャッシュがノードAのローカルSSDにしかない場合、ノードBでは読み出せず、prefillで再計算することになります。</p>
<hr>
</section>
<section id="cmxg3とg4の間に共有階層を追加する" class="level2">
<h2 class="anchored" data-anchor-id="cmxg3とg4の間に共有階層を追加する">CMX：G3とG4の間に共有階層を追加する</h2>
<p>NVIDIAが用意したのがCMX（Context Memory eXtension、旧称ICMS：Inference Context Memory Storage）です。2026年1月のCESで発表されました。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112073242.png" class="lightbox" data-gallery="quarto-lightbox-gallery-2" title="CMXは、ローカルSSD（G3）と共有ストレージ（G4）の間の新しい階層「G3.5」"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-cmx-kv-g3-5/fig-20261112073242.png" class="img-fluid figure-img" alt="CMXは、ローカルSSD（G3）と共有ストレージ（G4）の間の新しい階層「G3.5」"></a></p>
<figcaption>CMXは、ローカルSSD（G3）と共有ストレージ（G4）の間の新しい階層「G3.5」</figcaption>
</figure>
</div>
<p>CMXの特徴は次のとおりです。</p>
<ul>
<li><strong>GPUポッド内のどのノードからも使える</strong>：処理ノードが変わってもKVキャッシュを再利用できる</li>
<li><strong>KVキャッシュ専用</strong>：一時的で、繰り返し読み出されるKVキャッシュの特性に合わせて設計されている</li>
<li><strong>大容量</strong>：GPUポッドあたりペタバイト級の共有容量を持つ</li>
</ul>
<p>これにより、G4の共有ストレージは、非アクティブなセッションの状態、クエリ履歴、ログなど、永続化すべきデータの保管に専念できます。</p>
<hr>
</section>
<section id="cmxの構成" class="level2">
<h2 class="anchored" data-anchor-id="cmxの構成">CMXの構成</h2>
<p>CMXは、Vera Rubinプラットフォームの一部であるNVIDIA STXリファレンスアーキテクチャ（BlueField-4 STXラック）の上に構築されています。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112073318.png" class="lightbox" data-gallery="quarto-lightbox-gallery-3" title="CMXの構成"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-cmx-kv-g3-5/fig-20261112073318.png" class="img-fluid figure-img" alt="CMXの構成"></a></p>
<figcaption>CMXの構成</figcaption>
</figure>
</div>
<section id="bluefield-4kvキャッシュのioを処理するdpu" class="level3">
<h3 class="anchored" data-anchor-id="bluefield-4kvキャッシュのioを処理するdpu">BlueField-4：KVキャッシュのI/Oを処理するDPU</h3>
<p>BlueField-4は、ネットワーク接続、マルチコアCPU（Vera）、メモリを統合したDPU（データ処理用プロセッサー）です。</p>
<ul>
<li>KVキャッシュの読み書き（NVMe-oFやRDMAのプロトコル処理）を担当し、ホストCPUの負荷とメモリコピーを減らす</li>
<li>暗号化とCRCによるデータ整合性の検査を、専用のハードウェアでラインレートで処理する</li>
<li>GPUノード側のDPUと、CMXストレージ側のコントローラーで処理を分担する</li>
</ul>
</section>
<section id="プリステージ" class="level3">
<h3 class="anchored" data-anchor-id="プリステージ">プリステージ</h3>
<p>NVIDIA DynamoのKVブロックマネージャー（KVBM）は、転送ライブラリNIXLを使い、<strong>decodeの前に、KVブロックをCMXからG2（CPUメモリ）やG1（HBM）へ先に移しておきます</strong>。これにより、decodeの途中でKVキャッシュの読み込みを待って止まる時間が減ります。</p>
</section>
<section id="その他の構成要素" class="level3">
<h3 class="anchored" data-anchor-id="その他の構成要素">その他の構成要素</h3>
<ul>
<li><strong>Spectrum-X Ethernet</strong>：RDMA対応のイーサネット。輻輳制御、アダプティブルーティング、ロスレスRoCEで遅延とジッターを抑える</li>
<li><strong>DOCA Memos</strong>：KVキャッシュをキー・バリューAPIで管理・共有するSDK。ストレージベンダーがG3.5階層に対応するためのオープンなインターフェースでもある</li>
<li><strong>Grove</strong>：KVキャッシュの位置を考慮してワークロードを配置するオーケストレーター</li>
</ul>
<hr>
</section>
</section>
<section id="効果" class="level2">
<h2 class="anchored" data-anchor-id="効果">効果</h2>
<p>NVIDIAは、長い文脈の推論とエージェントの処理について、次のように説明しています。</p>
<ul>
<li>1秒あたりに生成できるトークン数が、従来のストレージと比べて最大5倍</li>
<li>電力効率が、汎用のストレージと比べて最大5倍</li>
</ul>
<p>ただし、比較の前提となった構成や試験条件は示されていません。条件がそろったときの最大値として扱うのが妥当です。</p>
<hr>
</section>
<section id="制約と注意点" class="level2">
<h2 class="anchored" data-anchor-id="制約と注意点">制約と注意点</h2>
<ul>
<li><strong>製品はこれから</strong>：CMXはVera Rubin世代の基盤の一部です。2026年5月時点の報道では、BlueField-4の出荷は2026年後半の予定で、CMXに基づく製品はまだ出ていないとされていました</li>
<li><strong>NVIDIAの設計への依存</strong>：ストレージベンダーにとっては、G3.5階層の仕様がNVIDIAのハードウェアとソフトウェアのロードマップに左右されます</li>
<li><strong>再利用できるKVキャッシュがあってこそ</strong>：毎回異なる入力を処理する用途では、効果は限られます</li>
</ul>
<hr>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>KVキャッシュの置き場所には、「速いがノードに固定されたローカルSSD（G3）」と「共有できるが遅い共有ストレージ（G4）」の間に差があった</li>
<li>CMXは、その間にKVキャッシュ専用の共有階層「G3.5」を追加し、GPUポッド内のどのノードからもKVキャッシュを読み出せるようにする</li>
<li>BlueField-4がI/Oを処理し、Dynamoがdecodeの前にKVキャッシュをGPU側へプリステージする</li>
<li>長く続き、処理ノードが変わるエージェントのセッションほど効果が大きい</li>
</ul>
</section>
<section id="連載gpuメモリを無駄なく使う5つの方法" class="level2">
<h2 class="anchored" data-anchor-id="連載gpuメモリを無駄なく使う5つの方法">連載「GPUメモリを無駄なく使う5つの方法」</h2>
<ul>
<li><a href="../2026-11-12-ai-nvidia-gpu/">GPUメモリを無駄なく使う5つの方法【まとめ】</a></li>
<li><a href="../2026-11-12-nvfp4-ai-nvidia/">① NVFP4：モデルを4ビットにする数値形式</a></li>
<li><a href="../2026-11-12-wide-ep-moe-gpu-nvidia/">② Wide-EP：MoEのエキスパートを多数のGPUに分散する</a></li>
<li><a href="../2026-11-12-nvidia-dynamo-llm-kv/">③ Dynamo：KVキャッシュをデータセンター全体で再利用する</a></li>
<li><a href="../2026-11-12-nvidia-vera-cpu-tb-nvlink-c2c/">④ Vera CPU：待ち時間中のKVキャッシュをCPUメモリで受け持つ</a></li>
<li><strong>⑤ CMX：KVキャッシュ専用の共有ストレージ階層</strong>（この記事）</li>
</ul>
<p>前の記事：<a href="../2026-11-12-nvidia-vera-cpu-tb-nvlink-c2c/">④ Vera CPU：待ち時間中のKVキャッシュをCPUメモリで受け持つ</a></p>
</section>
<section id="あわせて読みたい" class="level2">
<h2 class="anchored" data-anchor-id="あわせて読みたい">あわせて読みたい</h2>
<ul>
<li><a href="../2026-11-12-agent-substrate-ai-pod-kubernetes/">Agent Substrate：待機の長いエージェントを少数のPodで動かす</a><br>
推論基盤のDynamoと連携して、エージェントを大規模に動かす仕組み</li>
</ul>
<hr>
<p><strong>参考</strong></p>
<ul>
<li><a href="https://developer.nvidia.com/blog/five-ways-nvidia-co-design-maximizes-the-value-of-every-byte-in-the-ai-factory/">Five Ways NVIDIA Co-Design Maximizes the Value of Every Byte in the AI Factory（NVIDIA Technical Blog）</a></li>
<li><a href="https://developer.nvidia.com/blog/?p=111143">Introducing the NVIDIA Inference Context Memory Storage Platform（NVIDIA Technical Blog）</a></li>
<li><a href="https://www.nvidia.com/en-us/data-center/ai-storage/cmx/">NVIDIA CMX context memory storage platform（NVIDIA）</a></li>
<li><a href="https://www.hpcwire.com/aiwire/2026/05/29/minio-spies-solution-to-gpu-memory-wall-problem-with-memkv/">MinIO Spies Solution to GPU Memory Wall Problem with MemKV（HPCwire）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-12-nvidia-dynamo-llm-kv/">NVIDIA Dynamoとは？LLMのKVキャッシュをデータセンター全体で再利用する推論基盤の仕組み</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-vera-cpu-tb-nvlink-c2c/">NVIDIA Vera CPUとは？1.5TBのメモリとNVLink-C2Cで、AIエージェントの待ち時間中のKVキャッシュを受け持つCPU</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-14-shadowprefill-kv/">ShadowPrefill：モデルを切り替えるエージェントで、切替先のKVキャッシュを先に温めておく</a><span class="sc-date">2026/11/14</span></li><li><a href="../../posts/2026-11-14-performance-per-watt/">「電力1Wあたりの性能」とは？ AIインフラの比べ方が変わった理由</a><span class="sc-date">2026/11/14</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-cmx-kv-g3-5/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
  <media:content url="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-cmx-kv-g3-5/fig-20261112073242.png" medium="image" type="image/png" height="84" width="144"/>
</item>
<item>
  <title>NVIDIA DSX OSとは？エラーを出さずに分散学習を遅くするGPUノードを検出する、構成管理・認定・運用の仕組み</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-dsx-os-gpu/</link>
  <description><![CDATA[ 






<p><strong>結論：NVIDIA DSX OSは、GPUクラスタの構成をバージョン固定のレシピでそろえる（AICR）、通信と学習の試験で性能を認定する（NVCRE）、運用中の異常ノードを検出して隔離する（NVSentinel）の3つのコンポーネントで、分散学習を遅くするGPUノードを見つけて外す、オープンソースのソフトウェア層です。</strong></p>
<p>ポイントは次の3つです。</p>
<ol type="1">
<li><strong>問題</strong>：同期型の分散学習は、最も遅いGPUの速度で全体が進む。しかもその遅いGPUは、エラーを出さず、監視のしきい値も超えないことがある</li>
<li><strong>解決</strong>：GPU間の通信帯域を実測する試験に合格基準を設け、不合格のグループを分割して再試験することで、原因のノードを特定する</li>
<li><strong>運用</strong>：ノードの追加時や修理からの復帰時に自動で試験し、合格するまでワークロードを割り当てない</li>
</ol>
<p>2026年11月5日にNVIDIAの技術ブログで紹介されました。3つのコンポーネントはApache 2.0ライセンスのオープンソースです。</p>
<hr>
<section id="前提1同期型の分散学習" class="level2">
<h2 class="anchored" data-anchor-id="前提1同期型の分散学習">前提1：同期型の分散学習</h2>
<p>大規模なAIモデルの学習は、数十〜数千枚のGPUに処理を分けて並行して行います。これを分散学習と呼びます。</p>
<p>多くの分散学習では、各GPUが自分の担当分の計算を終えるたびに、<strong>全GPUの計算結果（勾配）を集約して平均をとり、全GPUに配り直す</strong>処理を行います。これを <strong>All-Reduce</strong> と呼びます。全GPUの計算が終わらないと、次のステップに進めません。</p>
<p>そのため、<strong>1枚のGPUの処理が遅いと、他のGPUはそのGPUを待つことになり、学習全体がそのGPUの速度で進みます</strong>。</p>
</section>
<section id="前提2エラーを出さずに遅いgpu" class="level2">
<h2 class="anchored" data-anchor-id="前提2エラーを出さずに遅いgpu">前提2：エラーを出さずに遅いGPU</h2>
<p>問題は、遅いGPUが必ずしも故障として検出されないことです。NVIDIAは、そうしたGPUについて、Xidエラー（NVIDIAドライバーが記録するGPUのエラー）を出さず、監視のしきい値も超えず、ノードのメトリクスでも異常に見えない場合があると指摘しています。</p>
<p>メトリクスの監視だけでは検出できず、<strong>実際に通信や学習の負荷をかけて性能を測る必要があります</strong>。</p>
<hr>
</section>
<section id="dsx-osの3つのコンポーネント" class="level2">
<h2 class="anchored" data-anchor-id="dsx-osの3つのコンポーネント">DSX OSの3つのコンポーネント</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>コンポーネント</th>
<th>正式名</th>
<th>役割</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>AICR</td>
<td>AI Cluster Runtime</td>
<td>ドライバー、ネットワーク、ストレージなどのバージョンを固定した構成レシピを作る（Configure）</td>
</tr>
<tr class="even">
<td>NVCRE</td>
<td>Cluster Readiness Engine</td>
<td>通信試験や学習の試験を実行し、合否を判定する（Certify）</td>
</tr>
<tr class="odd">
<td>NVSentinel</td>
<td>―</td>
<td>GPU、ノード、ネットワークの状態を監視し、異常なノードを隔離する（Operate）</td>
</tr>
</tbody>
</table>
<section id="aicr構成のずれをなくす" class="level3">
<h3 class="anchored" data-anchor-id="aicr構成のずれをなくす">1. AICR：構成のずれをなくす</h3>
<p>AICRは、ネットワーク、ストレージ、ドライバーなどのコンポーネントごとに、<strong>バージョンを固定した構成レシピ</strong> を定義します。各コンポーネントは依存関係と、正常に動作していることを確認する条件（<code>healthCheckAsserts</code>）を持ちます。</p>
<p>レシピは、対象の環境（例：EKS、H100、Ubuntu、推論用途）に合わせて生成します。生成したレシピは、Argo CD、Flux、Helmfile、Helmのバンドルとして出力できます。さらに、<code>aicr diff --fail-on-drift</code> コマンドで、実際のクラスタとレシピの差分（ドリフト）を検出したら失敗させられるため、<strong>CIのゲートとして「構成がずれていたらデプロイを止める」運用ができます</strong>。</p>
</section>
<section id="nvcre実際に負荷をかけて合否を判定する" class="level3">
<h3 class="anchored" data-anchor-id="nvcre実際に負荷をかけて合否を判定する">2. NVCRE：実際に負荷をかけて合否を判定する</h3>
<p>NVCREは次の3種類の試験を実行し、結果を <code>Certification</code> というKubernetesのリソースに記録します。</p>
<ul>
<li><strong>NCCLの通信試験</strong>：GPU間の通信帯域を測る（NCCLはNVIDIAのGPU間通信ライブラリ）</li>
<li><strong>NeMoによる学習の試験</strong>：実際にモデル（例：80億パラメータ）を学習させる</li>
<li><strong>DCGMのレベル4診断</strong>：NVIDIAのGPU管理ツールDCGMの最も詳細な診断</li>
</ul>
<p>試験の対象ノード、試験の種類、合格基準は、<code>Certification</code> のマニフェストで指定します。結果のレポートには、状態、実行時間、測定した帯域、失敗の理由が表示されます。独自のコンテナ化した試験を <code>WorkloadRun</code> リソースとして組み込むこともできます。</p>
<p>ここで重要なのが <strong>合格基準の設定</strong> です。たとえば <code>busBandwidthGBps: "value &gt;= 300"</code>（GPU間の通信帯域が毎秒300GB以上）と設定すれば、エラーは出さないが帯域が低いノードを不合格にできます。</p>
<p>ただし、<strong>合格基準は初期状態では設定されていません</strong>。設定しないと、目標を下回るノードも合格になります。</p>
</section>
<section id="原因ノードの特定グループの分割と再試験" class="level3">
<h3 class="anchored" data-anchor-id="原因ノードの特定グループの分割と再試験">原因ノードの特定：グループの分割と再試験</h3>
<p>NCCLの試験は複数のノードをまとめて測定するため、不合格になっても、どのノードが原因かはすぐには分かりません。NVCREは、<strong>不合格のグループを分割して試験をやり直し、最小のグループサイズに達するまで繰り返して、原因の疑いがあるノードを理由とともに報告します</strong>。</p>
</section>
<section id="nvsentinel運用中に監視し異常なノードを隔離する" class="level3">
<h3 class="anchored" data-anchor-id="nvsentinel運用中に監視し異常なノードを隔離する">3. NVSentinel：運用中に監視し、異常なノードを隔離する</h3>
<p>NVSentinelは、運用中のクラスタを継続的に監視します。GPUの計算時間は消費しません。監視する信号は、DCGMのヘルスチェック、Xidエラー、NICの状態、クラウド事業者のメンテナンスイベントなどです。</p>
<p>異常を検出すると、設定に応じて次の対応をとります。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>対応</th>
<th>内容</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>cordon</td>
<td>ノードに新しいPodを割り当てないようにする</td>
</tr>
<tr class="even">
<td>taint</td>
<td>特定の条件を満たすPodだけを割り当てるようにする</td>
</tr>
<tr class="odd">
<td>drain</td>
<td>ノード上のPodを他のノードへ退避させる</td>
</tr>
<tr class="even">
<td>修復</td>
<td>自動で修復できるものを修復する</td>
</tr>
</tbody>
</table>
<p>安全のための仕組みもあります。</p>
<ul>
<li>初期状態は監視のみのモードで動作する</li>
<li>Fault Quarantine（障害隔離）はCEL形式のルールで定義し、<strong>一定期間内に隔離できるノード数に上限を設けるサーキットブレーカー</strong>で、誤検知による大量隔離を防ぐ</li>
<li>繰り返し障害を起こすノードを検出する分析機能がある</li>
<li><code>CONTACT_SUPPORT</code>（サポートへの連絡）を推奨するイベントは、人による対応が必要</li>
</ul>
<hr>
</section>
</section>
<section id="ライフサイクルの自動化" class="level2">
<h2 class="anchored" data-anchor-id="ライフサイクルの自動化">ライフサイクルの自動化</h2>
<p>ノードの追加時や修理からの復帰時の流れは次のとおりです。</p>
<ol type="1">
<li>ライフサイクルコントローラーが <code>ValidationRequest</code>（検証要求）を自動で作成する</li>
<li>試験に合格するまで、cordonまたはtaintでノードへの割り当てを止める</li>
<li>NVCREで試験を実行し、合格したら解除する</li>
</ol>
<p>検証の状態は <code>nvsentinel.nvidia.com/validation-state</code> ラベルとして付与されるため、<code>kubectl</code> で確認できます。</p>
<p>一方、<strong>ドライバー、オペレーター、ネットワークファブリックの変更では、自動で検証が実行されません</strong>。影響を受けるノードをcordonして検証要求を作成するか、パイプラインにドリフト検出を組み込む必要があります。</p>
<hr>
</section>
<section id="制約と注意点" class="level2">
<h2 class="anchored" data-anchor-id="制約と注意点">制約と注意点</h2>
<ul>
<li>合格基準は初期状態では未設定です。クラスタの期待性能に合わせて設定する必要があります</li>
<li>ドライバーなどの変更は、自動検証の対象外です</li>
<li>NVIDIAの記事には、導入による性能改善の数値は示されていません。効果は各環境で測定する必要があります</li>
<li>サーキットブレーカーの上限値の初期値は示されていません</li>
</ul>
<hr>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>同期型の分散学習は最も遅いGPUの速度で進むため、エラーを出さずに遅いGPUが大きな損失になる</li>
<li>DSX OSは、AICRで構成をそろえ、NVCREで通信と学習の試験を行い、NVSentinelで運用中の異常ノードを隔離する</li>
<li>不合格のグループを分割して再試験することで、原因のノードを特定できる</li>
<li>合格基準の設定と、構成変更時の再検証の組み込みは、運用者が行う必要がある</li>
</ul>
</section>
<section id="あわせて読みたい" class="level2">
<h2 class="anchored" data-anchor-id="あわせて読みたい">あわせて読みたい</h2>
<ul>
<li><a href="../2026-11-12-nvidia-kubernetes-engine-nvke-gpu/">NVKE／NVKR：GPUクラウド事業者向けのマネージドKubernetes</a><br>
GPUクラウド事業者がKubernetesクラスタを提供する仕組み</li>
<li><a href="../2026-11-12-wide-ep-moe-gpu-nvidia/">② Wide-EP：MoEのエキスパートを多数のGPUに分散する</a><br>
数十枚のGPUで1つのモデルを動かす推論の方法</li>
<li><a href="../2026-11-12-nvidia-openshell-cncf-ai-kubernetes/">OpenShell：AIエージェントの実行環境とCNCFへの寄贈</a><br>
同時に発表された部品の全体像</li>
</ul>
<hr>
<p><strong>参考</strong></p>
<ul>
<li><a href="https://developer.nvidia.com/blog/configure-certify-and-operate-kubernetes-gpu-clusters-with-nvidia-dsx-os/">Configure, Certify, and Operate Kubernetes GPU Clusters with NVIDIA DSX OS（NVIDIA Technical Blog）</a></li>
<li><a href="https://blogs.nvidia.com/blog/open-source-openshell-infrastructure/">NVIDIA Expands Open Source Commitment With OpenShell Donation and New AI Infrastructure（NVIDIA Blog）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-04-ai-gpu-prometheus-gpu-util/">AI・GPUワークロードのPrometheus監視：gpu_utilの先を見る</a><span class="sc-date">2026/11/04</span></li><li><a href="../../posts/2026-11-14-performance-per-watt/">「電力1Wあたりの性能」とは？ AIインフラの比べ方が変わった理由</a><span class="sc-date">2026/11/14</span></li><li><a href="../../posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/">Nemotron 3.5 Bolt 74B-A9B：2ビットで24GBに収めた74B MoEモデルの作り方</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-kubernetes-engine-nvke-gpu/">NVIDIA Kubernetes Engine（NVKE）とは？GPUクラウド事業者がマネージドKubernetesを自前で提供するためのオープンソース</a><span class="sc-date">2026/11/12</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-dsx-os-gpu/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
</item>
<item>
  <title>NVIDIA Dynamoとは？LLMのKVキャッシュをデータセンター全体で再利用する推論基盤の仕組み</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-dynamo-llm-kv/</link>
  <description><![CDATA[ 






<p><strong>結論：NVIDIA Dynamoは、LLMのKVキャッシュを「GPU1枚の持ち物」ではなく「データセンター全体の資源」として扱う推論基盤です。KVキャッシュの位置を見てリクエストを振り分ける、prefillとdecodeを別のGPUで処理する、KVキャッシュを4つの階層に分けて置く、の3つで再計算を減らします。</strong></p>
<p>ポイントは次の3つです。</p>
<ol type="1">
<li><strong>背景</strong>：LLMは、処理済みの入力の計算結果（KVキャッシュ）を残しておけば、同じ文章で始まる次のリクエストでその部分の計算を省ける。捨てれば再計算になる</li>
<li><strong>仕組み</strong>：①KV-awareルーティング、②prefillとdecodeの分離、③KVブロックマネージャー（KVBM）によるG1〜G4の階層管理</li>
<li><strong>効果</strong>：ストレージ企業の検証では、KVキャッシュの再利用によって、最初のトークンが出るまでの時間（TTFT）が再計算より短くなった</li>
</ol>
<p>この記事は「<a href="../2026-11-12-ai-nvidia-gpu/">GPUメモリを無駄なく使う5つの方法</a>」の3本目です。</p>
<hr>
<section id="前提kvキャッシュとprefilldecode" class="level2">
<h2 class="anchored" data-anchor-id="前提kvキャッシュとprefilldecode">前提：KVキャッシュとprefill・decode</h2>
<p>LLMが回答を生成する処理は、2つの段階に分かれます。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>段階</th>
<th>処理内容</th>
<th>性質</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>prefill</td>
<td>入力（指示文、会話履歴、資料など）全体を処理する</td>
<td>計算量が多い（計算律速）</td>
</tr>
<tr class="even">
<td>decode</td>
<td>回答を1トークンずつ生成する</td>
<td>メモリの読み出しが多い（メモリ帯域律速）。応答の速さが重要</td>
</tr>
</tbody>
</table>
<p>prefillでは、入力の各トークンについてKey（K）とValue（V）という中間データを計算します。これを保存したものが <strong>KVキャッシュ</strong> です。decodeでは、新しいトークンを生成するたびにKVキャッシュを参照します。</p>
<p>KVキャッシュには、もう1つの使い道があります。<strong>次のリクエストの入力が同じ文章で始まる場合、その部分（プレフィックス）のKVキャッシュを再利用すれば、prefillの計算を省ける</strong>のです。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112072937.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="KVキャッシュを再利用するか、再計算するか"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-dynamo-llm-kv/fig-20261112072937.png" class="img-fluid figure-img" alt="KVキャッシュを再利用するか、再計算するか"></a></p>
<figcaption>KVキャッシュを再利用するか、再計算するか</figcaption>
</figure>
</div>
<section id="エージェントの普及でkvキャッシュの扱いが重要になった" class="level3">
<h3 class="anchored" data-anchor-id="エージェントの普及でkvキャッシュの扱いが重要になった">エージェントの普及で、KVキャッシュの扱いが重要になった</h3>
<p>AIエージェントは、長いシステムプロンプトや資料を入力したまま、何十回もLLMを呼び出します。同じ先頭部分が何度も繰り返されるため、再利用できる部分が大きくなります。一方で、KVキャッシュを置けるGPUメモリ（HBM）は限られます。<strong>KVキャッシュをどこに置き、どう再利用するか</strong>が、推論の速さと費用を大きく左右するようになりました。</p>
<hr>
</section>
</section>
<section id="nvidia-dynamoとは" class="level2">
<h2 class="anchored" data-anchor-id="nvidia-dynamoとは">NVIDIA Dynamoとは</h2>
<p>NVIDIA Dynamoは、多数のGPUでLLMを動かすためのオープンソースの推論基盤です。vLLM、SGLang、TensorRT-LLMといった推論エンジンと組み合わせて使い、データセンター規模でリクエストの振り分けやGPUの割り当てを行います。性能が重要な部分はRust、拡張性が必要な部分はPythonで書かれています。KVキャッシュの扱いについて、3つの機能があります。</p>
<hr>
</section>
<section id="機能1kv-awareルーティング" class="level2">
<h2 class="anchored" data-anchor-id="機能1kv-awareルーティング">機能1：KV-awareルーティング</h2>
<p>Dynamoのルーターは、各ワーカー（推論エンジンが動くGPU）がどのKVブロックを持っているかを、基数木（radix tree）で一元管理しています。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112072951.png" class="lightbox" data-gallery="quarto-lightbox-gallery-2" title="KV-awareルーティング：キャッシュの有無とワーカーの負荷を両方見る"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-dynamo-llm-kv/fig-20261112072951.png" class="img-fluid figure-img" alt="KV-awareルーティング：キャッシュの有無とワーカーの負荷を両方見る"></a></p>
<figcaption>KV-awareルーティング：キャッシュの有無とワーカーの負荷を両方見る</figcaption>
</figure>
</div>
<ul>
<li>新しいリクエストが来たら、プレフィックスが一致するKVキャッシュを持つワーカーを探す</li>
<li>ただし、そのワーカーの負荷が高ければ、キュー待ちより再計算のほうが早い場合もある</li>
<li><strong>プレフィックスの一致の長さと、各ワーカーの負荷を比較して</strong> 送り先を決める</li>
</ul>
<p>単純なラウンドロビン（順番に振り分ける方式）では、同じ会話のリクエストが毎回別のワーカーに送られ、そのたびにprefillの再計算が発生します。KV-awareルーティングはこれを避けます。</p>
<hr>
</section>
<section id="機能2prefillとdecodeの分離" class="level2">
<h2 class="anchored" data-anchor-id="機能2prefillとdecodeの分離">機能2：prefillとdecodeの分離</h2>
<p>同じGPUでprefillとdecodeの両方を処理すると、長い入力のprefillが入るたびに、decode中の他のリクエストの生成が遅れます。そこでDynamoは、2つの段階を<strong>別々のGPUグループ</strong>に担当させます。これを分離型推論（disaggregated serving）と呼びます。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112073020.png" class="lightbox" data-gallery="quarto-lightbox-gallery-3" title="prefillとdecodeを別のGPUで処理する（分離型の推論）"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-dynamo-llm-kv/fig-20261112073020.png" class="img-fluid figure-img" alt="prefillとdecodeを別のGPUで処理する（分離型の推論）"></a></p>
<figcaption>prefillとdecodeを別のGPUで処理する（分離型の推論）</figcaption>
</figure>
</div>
<ul>
<li>prefillワーカーがKVキャッシュを作り、転送ライブラリ <strong>NIXL</strong>（NVIDIA Inference Xfer Library）でdecodeワーカーへ送る</li>
<li>decodeワーカーはprefillを行わないため、<strong>HBMをKVキャッシュに多く割り当てられる</strong></li>
<li>負荷に応じて、prefillとdecodeのGPU数をそれぞれ調整できる</li>
</ul>
<hr>
</section>
<section id="機能3kvbmによる階層管理" class="level2">
<h2 class="anchored" data-anchor-id="機能3kvbmによる階層管理">機能3：KVBMによる階層管理</h2>
<p>HBMに置けるKVキャッシュには限りがあります。Dynamoの <strong>KVブロックマネージャー（KVBM）</strong> は、KVキャッシュを次の4階層に分けて管理します。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112073033.png" class="lightbox" data-gallery="quarto-lightbox-gallery-4" title="KVキャッシュを4つの階層（G1〜G4）に分けて置く"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-dynamo-llm-kv/fig-20261112073033.png" class="img-fluid figure-img" alt="KVキャッシュを4つの階層（G1〜G4）に分けて置く"></a></p>
<figcaption>KVキャッシュを4つの階層（G1〜G4）に分けて置く</figcaption>
</figure>
</div>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>階層</th>
<th>置き場所</th>
<th>特徴</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>G1</td>
<td>GPUメモリ（HBM）</td>
<td>生成中のKVキャッシュ。最も高速だが容量が小さい</td>
</tr>
<tr class="even">
<td>G2</td>
<td>CPUメモリ（ピン留めしたホストメモリ）</td>
<td>GPUとの転送が速い</td>
</tr>
<tr class="odd">
<td>G3</td>
<td>ローカルSSD（NVMe）</td>
<td>大容量だが、そのノードからしか使えない</td>
</tr>
<tr class="even">
<td>G4</td>
<td>リモートストレージ</td>
<td>最も大容量だが、遅延が最も大きい</td>
</tr>
</tbody>
</table>
<ul>
<li>上位の階層があふれたら、KVブロックを下位へ移す（オフロード）</li>
<li>再利用するときは、上位へ戻す（オンボード）。prefillで再計算するより速い</li>
<li>同じ内容のブロックは、ハッシュで重複を排除する</li>
</ul>
<p>NVIDIAの最新の説明では、複数ノードにまたがってブロックの位置を追跡し、他のノードのKVキャッシュも再利用できるKV Cache Runner（KVCR）にまで機能が広がっています。</p>
<section id="設定の目安" class="level4">
<h4 class="anchored" data-anchor-id="設定の目安">設定の目安</h4>
<p>Dynamoの設定ガイドは、<strong>CPUキャッシュ（G2）をGPU側のKVキャッシュより大きく設定する</strong>ことを推奨しています（目安は100GB以上）。G2がG1より小さいと、フォワードパスのたびにオフロードが発生し、性能が下がるためです。</p>
<hr>
</section>
</section>
<section id="効果" class="level2">
<h2 class="anchored" data-anchor-id="効果">効果</h2>
<p>KVキャッシュ再利用の効果は、主にストレージ企業が検証しています。</p>
<ul>
<li><strong>VAST Data</strong>：DGX H100上のvLLMとLMCacheで、Qwen3-32Bに約13万トークンの入力を与えた試験で、再利用時のTTFTが再計算より短くなった。CoreWeaveとの共同検証では、過去の会話をすべて再計算する場合と比べ、TTFTが20倍改善したと報告している</li>
<li><strong>転送速度</strong>：VAST DataはGPUDirect StorageでH100 1枚に毎秒35GB、WEKAは独自のNIXLプラグインでH100 8枚に合計で毎秒最大270GBの読み込みを報告している</li>
</ul>
<p>いずれもストレージ企業による検証の数字です。実際の効果は、入力の長さや、同じプレフィックスの繰り返し頻度によって大きく変わります。</p>
<hr>
</section>
<section id="制約と注意点" class="level2">
<h2 class="anchored" data-anchor-id="制約と注意点">制約と注意点</h2>
<ul>
<li><strong>再利用できない入力には効かない</strong>：毎回異なる入力では、再利用できるKVキャッシュがありません</li>
<li><strong>転送にも時間がかかる</strong>：下位階層からの読み戻しにも時間がかかります。VAST Dataの検証では、多くの場合、ストレージよりネットワークがボトルネックでした</li>
<li><strong>障害時の保護には前提がある</strong>：推論エンジンが停止してもホストメモリ上のKVキャッシュを保持する機能（KVCR-Guard）がありますが、その保護サービスとホストが動作していることが前提です</li>
</ul>
<hr>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>KVキャッシュを再利用すれば、同じプレフィックスを持つリクエストのprefillを省ける</li>
<li>Dynamoは、KV-awareルーティング、prefillとdecodeの分離、KVBMによるG1〜G4の階層管理で、KVキャッシュをデータセンター全体で使い回す</li>
<li>同じシステムプロンプトや資料を繰り返し使うエージェントほど、効果が大きい</li>
</ul>
</section>
<section id="連載gpuメモリを無駄なく使う5つの方法" class="level2">
<h2 class="anchored" data-anchor-id="連載gpuメモリを無駄なく使う5つの方法">連載「GPUメモリを無駄なく使う5つの方法」</h2>
<ul>
<li><a href="../2026-11-12-ai-nvidia-gpu/">GPUメモリを無駄なく使う5つの方法【まとめ】</a></li>
<li><a href="../2026-11-12-nvfp4-ai-nvidia/">① NVFP4：モデルを4ビットにする数値形式</a></li>
<li><a href="../2026-11-12-wide-ep-moe-gpu-nvidia/">② Wide-EP：MoEのエキスパートを多数のGPUに分散する</a></li>
<li><strong>③ Dynamo：KVキャッシュをデータセンター全体で再利用する</strong>（この記事）</li>
<li><a href="../2026-11-12-nvidia-vera-cpu-tb-nvlink-c2c/">④ Vera CPU：待ち時間中のKVキャッシュをCPUメモリで受け持つ</a></li>
<li><a href="../2026-11-12-nvidia-cmx-kv-g3-5/">⑤ CMX：KVキャッシュ専用の共有ストレージ階層</a></li>
</ul>
<p>前の記事：<a href="../2026-11-12-wide-ep-moe-gpu-nvidia/">② Wide-EP：MoEのエキスパートを多数のGPUに分散する</a></p>
<p>次の記事：<a href="../2026-11-12-nvidia-vera-cpu-tb-nvlink-c2c/">④ Vera CPU：待ち時間中のKVキャッシュをCPUメモリで受け持つ</a></p>
</section>
<section id="あわせて読みたい" class="level2">
<h2 class="anchored" data-anchor-id="あわせて読みたい">あわせて読みたい</h2>
<ul>
<li><a href="../2026-11-12-agent-substrate-ai-pod-kubernetes/">Agent Substrate：待機の長いエージェントを少数のPodで動かす</a><br>
Dynamoと連携して、エージェントを大規模に動かす仕組み</li>
<li><a href="../2026-11-12-nvidia-snapshot-llm-cpu-gpu/">NVIDIA Snapshot：推論サーバーの起動を数十秒にする</a><br>
推論サーバーの起動を速くする仕組み</li>
</ul>
<hr>
<p><strong>参考</strong></p>
<ul>
<li><a href="https://developer.nvidia.com/blog/five-ways-nvidia-co-design-maximizes-the-value-of-every-byte-in-the-ai-factory/">Five Ways NVIDIA Co-Design Maximizes the Value of Every Byte in the AI Factory（NVIDIA Technical Blog）</a></li>
<li><a href="https://docs.nvidia.com/dynamo/v-0-9-0/design-docs/overall-architecture">NVIDIA Dynamo High Level Architecture（NVIDIA Docs）</a></li>
<li><a href="https://docs.dynamo.nvidia.com/dynamo/knowledge-base/modular-components/kvbm/kvbm-guide">KVBM Guide（NVIDIA Dynamo Docs）</a></li>
<li><a href="https://www.vastdata.com/blog/nvidia-dynamo-vast-scalable-optimized-inference">NVIDIA Dynamo + VAST（VAST Data Blog）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-12-nvidia-cmx-kv-g3-5/">NVIDIA CMXとは？KVキャッシュ専用の共有ストレージ階層「G3.5」の仕組みを解説</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-vera-cpu-tb-nvlink-c2c/">NVIDIA Vera CPUとは？1.5TBのメモリとNVLink-C2Cで、AIエージェントの待ち時間中のKVキャッシュを受け持つCPU</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/">Nemotron 3.5 Bolt 74B-A9B：2ビットで24GBに収めた74B MoEモデルの作り方</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvfp4-ai-nvidia/">NVFP4とは？精度をほぼ落とさずにAIモデルを4ビットにする、NVIDIAの数値形式の仕組み</a><span class="sc-date">2026/11/12</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-dynamo-llm-kv/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
  <media:content url="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-dynamo-llm-kv/fig-20261112072937.png" medium="image" type="image/png" height="84" width="144"/>
</item>
<item>
  <title>NVIDIA Kubernetes Engine（NVKE）とは？GPUクラウド事業者がマネージドKubernetesを自前で提供するためのオープンソース</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-kubernetes-engine-nvke-gpu/</link>
  <description><![CDATA[ 






<p><strong>結論：NVKE（NVIDIA Kubernetes Engine）とNVKR（NVIDIA Kubernetes Recipes）は、GPUを持つデータセンター事業者が、AWSのEKSやAzureのAKSのようなマネージドKubernetesサービスを自前で提供するためのオープンソースの部品です。</strong></p>
<p>ポイントは次の3つです。</p>
<ol type="1">
<li><strong>NVKR（ビルド層）</strong>：GPUの世代ごとに検証済みのソフトウェアのバージョンの組み合わせを「レシピ」として定義し、ノードのOSイメージなどを再現可能な形でビルドする</li>
<li><strong>NVKE（管理層）</strong>：顧客ごとに独立したKubernetesクラスタを、コマンド1つで作成して管理する</li>
<li><strong>位置づけ</strong>：Apache 2.0ライセンスのパブリックプレビュー版。APIは変更される可能性があり、本番利用はまだ推奨されていない</li>
</ol>
<p>2026年11月10日に、NVIDIAのDSX AI Factory Platformの部品として公開されました。</p>
<hr>
<section id="前提1マネージドkubernetesとは" class="level2">
<h2 class="anchored" data-anchor-id="前提1マネージドkubernetesとは">前提1：マネージドKubernetesとは</h2>
<p>Kubernetesは、多数のサーバー上でコンテナを管理するソフトウェアです。ただし、Kubernetes自体の構築と運用には手間がかかります。</p>
<ul>
<li>クラスタを制御する <strong>コントロールプレーン</strong> を冗長構成で動かす</li>
<li>設定を保存するデータベース <strong>etcd</strong> を保護する</li>
<li>Kubernetesのバージョンを定期的に更新する</li>
<li>ノードの追加や交換に対応する</li>
</ul>
<p>AWSのEKS、AzureのAKS、Google CloudのGKEのように、<strong>Kubernetesの構築と運用をクラウド事業者が引き受け、利用者はAPIやコンソールからクラスタを作成するだけでよい</strong>サービスを、マネージドKubernetesと呼びます。</p>
</section>
<section id="前提2aiファクトリーとnvidia-cloud-partner" class="level2">
<h2 class="anchored" data-anchor-id="前提2aiファクトリーとnvidia-cloud-partner">前提2：AIファクトリーとNVIDIA Cloud Partner</h2>
<p>大手クラウド以外にも、GPUを大量に設置したデータセンターを構築し、その計算能力を提供する事業者が増えています。NVIDIAはこうした施設を「AIファクトリー」、提携する事業者を「NVIDIA Cloud Partner（NCP）」と呼んでいます。</p>
<p>こうした事業者の顧客も、EKSのようにGPU付きのKubernetesを使いたいと考えます。しかし、大手クラウドのようにマネージドサービスを独自に開発するには、大きな開発投資が必要です。<strong>NVKEとNVKRは、マネージドKubernetesサービスを構築するための部品一式</strong>です。</p>
<hr>
</section>
<section id="全体構成" class="level2">
<h2 class="anchored" data-anchor-id="全体構成">全体構成</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>層</th>
<th>名前</th>
<th>役割</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>ビルド層</td>
<td>NVKR</td>
<td>検証済みの構成（レシピ）から、OSイメージ、コンテナイメージ、バイナリ、Helmチャートをビルドする</td>
</tr>
<tr class="even">
<td>管理層</td>
<td>NVKE</td>
<td>管理クラスタ上でREST APIとコントローラーを動かし、顧客ごとのクラスタを作成・管理する</td>
</tr>
</tbody>
</table>
<section id="nvkrバージョンを固定して再現可能にビルドする" class="level3">
<h3 class="anchored" data-anchor-id="nvkrバージョンを固定して再現可能にビルドする">NVKR：バージョンを固定して、再現可能にビルドする</h3>
<ul>
<li>GPUの世代ごとに、検証済みのソフトウェアのバージョンの組み合わせを「レシピ」として定義する</li>
<li>レシピから、ノードのOSイメージ、コンテナイメージ、バイナリ、Helmチャート（Kubernetesのアプリケーション定義）をビルドする</li>
<li>ビルドの入力を記録するため、<strong>あとから「このイメージは何から作られたか」を特定し、同じものを再ビルドできる</strong></li>
<li>NVKE以外のKubernetes管理システム向けの成果物もビルドできる</li>
</ul>
<p>GPU向けのソフトウェアは、ドライバー、CUDA、ネットワークなどのバージョンの組み合わせによって不具合が出やすい分野です。検証済みの組み合わせを固定することの価値は大きいと言えます。</p>
</section>
<section id="nvke顧客ごとに独立したクラスタを作成する" class="level3">
<h3 class="anchored" data-anchor-id="nvke顧客ごとに独立したクラスタを作成する">NVKE：顧客ごとに独立したクラスタを作成する</h3>
<ul>
<li>管理クラスタ上でREST APIとコントローラーが動く</li>
<li>顧客ごとに、<strong>専用のコントロールプレーン、etcd、ノードプールを持つクラスタ</strong>を作成する。顧客間でコントロールプレーンを共有しないため、分離が明確</li>
<li>操作は <code>nvkectl</code> というCLIで行う</li>
<li>実行時にNVKRに依存しない</li>
<li>Kubernetes 1.36で適合性試験を通過し、CNCFの「Certified Kubernetes AI Platform」と「Certified Kubernetes Installer」の認定を受けている</li>
</ul>
<hr>
</section>
</section>
<section id="内部の構成要素" class="level2">
<h2 class="anchored" data-anchor-id="内部の構成要素">内部の構成要素</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>構成要素</th>
<th>役割</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>NVIDIA Infra Controller（NICo）</td>
<td>物理サーバー（ベアメタル）のライフサイクルを管理する</td>
</tr>
<tr class="even">
<td>CAPNICo</td>
<td>Kubernetesの標準的なクラスタ管理の仕組み「Cluster API」から、NICoにサーバーを要求するプロバイダー</td>
</tr>
<tr class="odd">
<td>SPIFFE</td>
<td>ノードが正規の機器であることを証明（アテステーション）できるまで、クラスタへの参加用の認証情報を渡さない</td>
</tr>
<tr class="even">
<td>OpenTelemetry</td>
<td>ログ、メトリクス、トレースを収集し、OTLPで送信する</td>
</tr>
<tr class="odd">
<td>AICR／NodeWright／NVSentinel</td>
<td>顧客クラスタに追加されるコンポーネント。GPUの実行環境、ノードのパッケージ管理、障害時の自動対応を担う</td>
</tr>
</tbody>
</table>
<p>SPIFFEによる身元確認は、セキュリティ上の重要な設計です。ネットワークに接続されたサーバーを無条件にクラスタへ参加させるのではなく、<strong>正規の機器であることを証明できたサーバーだけを参加させる</strong>ため、不正な機器の混入を防げます。</p>
<section id="リリースセット" class="level3">
<h3 class="anchored" data-anchor-id="リリースセット">リリースセット</h3>
<p>NVKEでは、顧客に提供する構成を「リリースセット」として管理します。</p>
<ul>
<li><strong>マシンイメージ</strong>：iPXEのブートスクリプト</li>
<li><strong>クラスタリリース</strong>：マシンイメージ、cloud-init、Kubernetesのバージョンの組み合わせ</li>
<li><strong>ノードプールリリース</strong>：ノードプールの構成</li>
</ul>
<p>顧客は、リリースを名前で選んでクラスタを作成します。</p>
<hr>
</section>
</section>
<section id="構築の手順" class="level2">
<h2 class="anchored" data-anchor-id="構築の手順">構築の手順</h2>
<p>NVIDIAの解説では、次の5ステップで顧客クラスタを作成しています。</p>
<ol type="1">
<li>NVKRでノードのOSイメージをビルドする（Kubernetes 1.36のパッケージとSPIREエージェントを含むQCOW2形式のディスク）</li>
<li><code>nvkectl bootstrap site</code> で管理クラスタを構築し、<code>nvkectl config set-site</code> で接続する</li>
<li>マシンイメージ、クラスタリリース、ノードプールリリースを登録する</li>
<li><code>nvkectl create cluster</code> で顧客クラスタを作成する（状態がProvisioningからProvisionedに変わる）</li>
<li><code>nvkectl get kubeconfig</code> で接続情報を取得する</li>
</ol>
<p>2の管理クラスタの構築では、まずブートストラップ用のホスト上にkindで一時的なクラスタを作り、それを使って本番の管理クラスタを構築したあと、一時的なクラスタを削除します。</p>
<p>例として示された構成は、管理クラスタがCPUサーバー3台、顧客クラスタがコントロールプレーン3台（Kubernetes 1.36.3、etcdの暗号化を有効化）とGPUノード4台です。GPUやNVIDIAアカウントがなくても試せる、1台で完結するクイックスタートも用意されています。</p>
<hr>
</section>
<section id="利用者とパートナー" class="level2">
<h2 class="anchored" data-anchor-id="利用者とパートナー">利用者とパートナー</h2>
<p>主な利用者は、GPU付きのKubernetesを顧客に提供したいAIファクトリーやNCPです。NVIDIAによると、NCPのFirmusとSK Telecomが組み込みを進めており、Mirantis、Rafay、Spectro Cloud、OpenNebula Systems、vClusterも自社のマネージドKubernetes製品に部品を取り入れています。Netrisはネットワーク自動化でNVKEに対応します。</p>
<p>利用者の立場で見ると、<strong>大手クラウド以外のGPUクラウドでも、EKSやAKSに近い使い勝手のKubernetesが提供されるようになる</strong>可能性があります。</p>
<hr>
</section>
<section id="制約と注意点" class="level2">
<h2 class="anchored" data-anchor-id="制約と注意点">制約と注意点</h2>
<ul>
<li>パブリックプレビューで、APIは変更される可能性があります。NVIDIA自身が本番利用はまだ推奨していません</li>
<li>物理サーバーの管理にNICoを前提としているため、既存のデータセンター管理システムとの連携は別途検討が必要です</li>
<li>主な対象はGPUを提供する事業者で、一般企業が直接使う場面は当面限られます</li>
</ul>
<hr>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>NVKRは、GPU世代ごとの検証済みのソフトウェア構成を「レシピ」として、OSイメージなどを再現可能な形でビルドする</li>
<li>NVKEは、顧客ごとに独立したKubernetesクラスタを作成・管理する、マネージドKubernetesの基盤</li>
<li>物理サーバーの管理、Cluster APIとの連携、ノードの身元確認、監視までが部品として提供されている</li>
<li>GPUクラウド事業者がマネージドKubernetesを提供しやすくなるが、現時点ではプレビュー段階</li>
</ul>
</section>
<section id="あわせて読みたい" class="level2">
<h2 class="anchored" data-anchor-id="あわせて読みたい">あわせて読みたい</h2>
<ul>
<li><a href="../2026-11-12-nvidia-dsx-os-gpu/">DSX OS：分散学習を遅くするGPUノードを検出する</a><br>
NVKEで作ったクラスタのGPUノードを認定・監視する仕組み</li>
<li><a href="../2026-11-12-nvidia-openshell-cncf-ai-kubernetes/">OpenShell：AIエージェントの実行環境とCNCFへの寄贈</a><br>
同時に発表された部品の全体像</li>
<li><a href="../2026-11-12-nvidia-snapshot-llm-cpu-gpu/">NVIDIA Snapshot：推論サーバーの起動を数十秒にする</a><br>
Kubernetes上で推論サーバーの起動を速くする仕組み</li>
</ul>
<hr>
<p><strong>参考</strong></p>
<ul>
<li><a href="https://developer.nvidia.com/blog/manage-kubernetes-clusters-for-gpu-infrastructure-with-nvidia-kubernetes-engine/">Manage Kubernetes Clusters for GPU Infrastructure with NVIDIA Kubernetes Engine（NVIDIA Technical Blog）</a></li>
<li><a href="https://blogs.nvidia.com/blog/open-source-openshell-infrastructure/">NVIDIA Expands Open Source Commitment With OpenShell Donation and New AI Infrastructure（NVIDIA Blog）</a></li>
<li><a href="https://github.com/dsx-ai-factory/nvke">dsx-ai-factory/nvke（GitHub）</a></li>
<li><a href="https://github.com/dsx-ai-factory/nvkr">dsx-ai-factory/nvkr（GitHub）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-12-nvidia-openshell-cncf-ai-kubernetes/">NVIDIAがOpenShellをCNCFに寄贈――AIエージェントを安全かつ大規模に動かすKubernetes基盤の全体像</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-agent-substrate-ai-pod-kubernetes/">Agent Substrateとは？待機時間の長いAIエージェントを少数のPodで大規模に動かすKubernetesの新しい仕組み</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-14-performance-per-watt/">「電力1Wあたりの性能」とは？ AIインフラの比べ方が変わった理由</a><span class="sc-date">2026/11/14</span></li><li><a href="../../posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/">Nemotron 3.5 Bolt 74B-A9B：2ビットで24GBに収めた74B MoEモデルの作り方</a><span class="sc-date">2026/11/12</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-kubernetes-engine-nvke-gpu/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
</item>
<item>
  <title>NVIDIAがOpenShellをCNCFに寄贈――AIエージェントを安全かつ大規模に動かすKubernetes基盤の全体像</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-openshell-cncf-ai-kubernetes/</link>
  <description><![CDATA[ 






<p><strong>結論：2026年11月10日、NVIDIAはAIエージェントの行動を制御する実行環境「OpenShell」をCNCF（Cloud Native Computing Foundation）に寄贈し、あわせてGPUクラスタ向けのオープンソース部品を公開しました。AIエージェントを安全に、大規模に、GPUを無駄なく動かすための基盤を、Kubernetes上にオープンな部品としてそろえる発表です。</strong></p>
<p>ポイントは次の3つです。</p>
<ol type="1">
<li><strong>安全性</strong>：エージェントがアクセスできるファイル・通信先・APIをYAMLのポリシーで宣言し、実行環境側で強制する「OpenShell」をCNCF Sandboxに寄贈した</li>
<li><strong>大規模化</strong>：待機時間の長いエージェントを少数のPodで実行する「Agent Substrate」（Google発）との連携を進める</li>
<li><strong>GPUの効率</strong>：推論サーバーを数十秒で起動する「Snapshot」、GPUクラスタ向けのマネージドKubernetesを構築する「NVKE／NVKR」、性能の低いGPUノードを検出する「DSX OS」を公開した</li>
</ol>
<p>この記事では全体像を整理します。個々の部品は、次の記事で詳しく解説しています。</p>
<ul>
<li><a href="../2026-11-12-agent-substrate-ai-pod-kubernetes/">Agent Substrateとは？待機時間の長いAIエージェントを少数のPodで大規模に動かすKubernetesの新しい仕組み</a></li>
<li><a href="../2026-11-12-nvidia-snapshot-llm-cpu-gpu/">NVIDIA Snapshotとは？LLM推論サーバーの起動を「数分→数十秒」にする、CPU・GPUメモリのチェックポイント／復元</a></li>
<li><a href="../2026-11-12-nvidia-kubernetes-engine-nvke-gpu/">NVIDIA Kubernetes Engine（NVKE）とは？GPUクラウド事業者がマネージドKubernetesを自前で提供するためのオープンソース</a></li>
<li><a href="../2026-11-12-nvidia-dsx-os-gpu/">NVIDIA DSX OSとは？エラーを出さずに分散学習を遅くするGPUノードを検出する、構成管理・認定・運用の仕組み</a></li>
</ul>
<hr>
<section id="前提コンテナkubernetescncf" class="level2">
<h2 class="anchored" data-anchor-id="前提コンテナkubernetescncf">前提：コンテナ、Kubernetes、CNCF</h2>
<p><strong>コンテナ</strong>は、アプリケーションと、その実行に必要なライブラリや設定をまとめてパッケージにしたものです。どのサーバーで動かしても同じように動作します。</p>
<p><strong>Kubernetes</strong>は、多数のサーバー上でコンテナを自動的に配置・起動・監視するソフトウェアです。サーバーが故障すれば別のサーバーでコンテナを起動し直し、負荷が増えればコンテナを増やします。Kubernetesでコンテナを動かす最小単位を <strong>Pod</strong> と呼びます。</p>
<p><strong>CNCF</strong>は、Kubernetesを管理している非営利団体で、Linux Foundationの傘下にあります。特定の企業に依存しない形でオープンソースプロジェクトを運営します。プロジェクトは成熟度に応じて、<strong>Sandbox → Incubating → Graduated</strong> の3段階に分かれます。OpenShellは最初の段階であるSandboxに入りました。</p>
<hr>
</section>
<section id="aiエージェントに専用の制御が必要な理由" class="level2">
<h2 class="anchored" data-anchor-id="aiエージェントに専用の制御が必要な理由">AIエージェントに専用の制御が必要な理由</h2>
<p>従来のアプリケーションは、あらかじめ決められた処理を決められた順序で実行します。AIエージェントは、LLMの判断に基づいて次のような操作を自律的に行います。</p>
<ul>
<li>ファイルを読み書きする</li>
<li>外部のAPIを呼び出す</li>
<li>コマンドを実行する</li>
</ul>
<p>悪意がなくても、誤った判断で重要なファイルを削除したり、外部に情報を送信したりするおそれがあります。そのため、<strong>エージェントがアクセスできる範囲を、エージェントの外側で制限する仕組み</strong>が必要になります。OpenShellはそのための実行環境です。</p>
<hr>
</section>
<section id="openshellの仕組み" class="level2">
<h2 class="anchored" data-anchor-id="openshellの仕組み">OpenShellの仕組み</h2>
<section id="概要" class="level3">
<h3 class="anchored" data-anchor-id="概要">概要</h3>
<p>NVIDIAの説明では、OpenShellは自律エージェントを保護し統制するためのオープンソースの実行環境です。エージェントのプログラムを書き換えずに、外側から動作を制限できます。2026年3月のGTCで発表され、9月にはエージェントの安全対策をまとめた「Open Agent Safety Platform」の実行環境レイヤーとして位置づけられました。</p>
</section>
<section id="つの制御領域" class="level3">
<h3 class="anchored" data-anchor-id="つの制御領域">4つの制御領域</h3>
<p>公式ドキュメントによると、OpenShellは次の4つの領域を制御します。ポリシーはYAMLで宣言します。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>領域</th>
<th>制御の内容</th>
<th>実行中の変更</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>ファイルシステム</td>
<td>読み書きできるパスを制限する</td>
<td>作成時に固定</td>
</tr>
<tr class="even">
<td>ネットワーク</td>
<td>許可していない外部への通信を遮断する</td>
<td>実行中に変更可</td>
</tr>
<tr class="odd">
<td>プロセス</td>
<td>権限昇格や危険なシステムコールを遮断する</td>
<td>作成時に固定</td>
</tr>
<tr class="even">
<td>推論</td>
<td>モデルAPIへの呼び出しを、管理下の接続先に振り替える</td>
<td>実行中に変更可</td>
</tr>
</tbody>
</table>
<p>ネットワークの制御は、接続先のホストだけでなく、HTTPのメソッドとパスの単位まで指定できます。公式のサンプルでは、GitHub APIに対して読み取り（GET）を許可し、書き込み（POST）を拒否するポリシーを示しています。</p>
</section>
<section id="gatewaysupervisorsandbox" class="level3">
<h3 class="anchored" data-anchor-id="gatewaysupervisorsandbox">Gateway・Supervisor・Sandbox</h3>
<p>OpenShellは3つのコンポーネントで構成されます。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>コンポーネント</th>
<th>役割</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Gateway</td>
<td>複数のサンドボックス（エージェント群）を管理する窓口。CLIやSDKから操作する</td>
</tr>
<tr class="even">
<td>Supervisor</td>
<td>ポリシーを判定し、外向きの通信をポリシーと照合する。信頼される側</td>
</tr>
<tr class="odd">
<td>Sandbox</td>
<td>エージェント本体を隔離して実行する。信頼されない側</td>
</tr>
</tbody>
</table>
<p>重要なのは、<strong>ポリシーの判定は常にSupervisor側で行い、エージェントが動くSandbox側では判定しない</strong>という分担です。Sandboxはエージェントが実行しようとしている操作をSupervisorに報告するだけで、許可するかどうかはSupervisorが決めます。ファイルシステムやプロセスの制御は、カーネルレベルの機能で強制されます。</p>
<p>ポリシーをYAMLで管理するため、<strong>セキュリティ設定をコードと同じようにバージョン管理し、レビューできます</strong>。</p>
</section>
<section id="利用状況" class="level3">
<h3 class="anchored" data-anchor-id="利用状況">利用状況</h3>
<p>NVIDIAによると、OpenShellはすでに数百の組織が利用し、公開から1年足らずで数万件の貢献を受けています。</p>
<hr>
</section>
</section>
<section id="同時に発表された部品" class="level2">
<h2 class="anchored" data-anchor-id="同時に発表された部品">同時に発表された部品</h2>
<p>OpenShellの寄贈と同時に、Kubernetes上でエージェントとGPUを扱うための部品が発表されました。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>部品</th>
<th>内容</th>
<th>状態</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Agent Substrate</td>
<td>待機中のエージェントの状態を退避し、少数のPodで多数のエージェントを実行する</td>
<td>Google発、CNCF Sandbox</td>
</tr>
<tr class="even">
<td>NVIDIA Snapshot</td>
<td>推論サーバーの初期化済みの状態を保存し、数十秒で復元する</td>
<td>オープンソース</td>
</tr>
<tr class="odd">
<td>NVKE／NVKR</td>
<td>GPUクラスタ向けのマネージドKubernetesサービスを構築する部品</td>
<td>パブリックプレビュー</td>
</tr>
<tr class="even">
<td>DSX OS（AICR／NVCRE／NVSentinel）</td>
<td>GPUクラスタの構成管理・認定試験・運用監視</td>
<td>オープンソース（Apache 2.0）</td>
</tr>
</tbody>
</table>
<p>それぞれの役割は次のように整理できます。</p>
<ul>
<li><strong>OpenShell</strong>：エージェントが何をしてよいかを制限する</li>
<li><strong>Agent Substrate</strong>：エージェントを大規模に実行する</li>
<li><strong>Snapshot</strong>：推論サーバーを速く起動する</li>
<li><strong>NVKE／NVKR</strong>：GPUクラスタを顧客に提供する</li>
<li><strong>DSX OS</strong>：GPUクラスタの品質を保証する</li>
</ul>
<p>数字で目を引くのはSnapshotです。設計パートナーのCrusoeは、HGX B300上でGLM-5.3のワークロードが使える状態になるまでの時間を約8分から31秒に短縮したと報告しています。</p>
<hr>
</section>
<section id="考察nvidiaがこの領域をオープンにする理由" class="level2">
<h2 class="anchored" data-anchor-id="考察nvidiaがこの領域をオープンにする理由">考察：NVIDIAがこの領域をオープンにする理由</h2>
<p>ここからは筆者の考察です。</p>
<p>NVIDIAの主力製品はGPUですが、GPUの価値は「どれだけ休まず処理させられるか」で決まります。エージェントの時代には、GPUの手前で次のような問題が起きやすくなります。</p>
<ul>
<li>エージェントを安全に動かせないため、本番環境に出せない</li>
<li>エージェントの大半が待機状態で、計算資源を確保したまま使っていない</li>
<li>推論サーバーの起動に数分かかり、需要の急増に追いつけない</li>
<li>1台の性能の低いGPUが混ざり、クラスタ全体の学習が遅くなる</li>
</ul>
<p>今回の発表は、これらの問題に1つずつ対応する部品になっています。しかも自社製品として囲い込まず、CNCFやApache 2.0ライセンスで公開しています。<strong>周辺のソフトウェアを業界標準にしておけば、その上で最も性能が出るGPUが選ばれる</strong>、という戦略と読めます。</p>
<p>一方で、NVKE／NVKRはパブリックプレビューで本番利用は推奨されておらず、Agent SubstrateもAPIが変わり得る段階です。発表された機能と本番で使える機能は区別して、成熟度を確認しながら導入を検討する必要があります。</p>
<hr>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>OpenShellは、エージェントがアクセスできるファイル・通信・APIをYAMLで宣言して強制する実行環境で、CNCF Sandboxに寄贈された</li>
<li>同時に、Agent Substrate（大規模実行）、Snapshot（高速起動）、NVKE／NVKR（クラスタ提供）、DSX OS（品質保証）が発表された</li>
<li>いずれもオープンソースで、エージェントとGPUを本番運用するための基盤をKubernetes上にそろえる動き</li>
</ul>
</section>
<section id="あわせて読みたい" class="level2">
<h2 class="anchored" data-anchor-id="あわせて読みたい">あわせて読みたい</h2>
<ul>
<li><a href="../2026-11-12-agent-substrate-ai-pod-kubernetes/">Agent Substrate：待機の長いエージェントを少数のPodで動かす</a><br>
OpenShellと同時に発表された、エージェントを大規模に動かす仕組み</li>
<li><a href="../2026-11-12-ai-nvidia-nemo/">NeMo：AIエージェントの失敗をトレースから改善する</a><br>
エージェントが誤った操作をしたときに、原因を特定して直す方法</li>
<li><a href="../2026-11-12-nvidia-snapshot-llm-cpu-gpu/">NVIDIA Snapshot：推論サーバーの起動を数十秒にする</a><br>
同時に発表された、推論サーバーの起動を速くする仕組み</li>
</ul>
<hr>
<p><strong>参考</strong></p>
<ul>
<li><a href="https://blogs.nvidia.com/blog/open-source-openshell-infrastructure/">NVIDIA Expands Open Source Commitment With OpenShell Donation and New AI Infrastructure（NVIDIA Blog）</a></li>
<li><a href="https://docs.nvidia.com/openshell/latest/about/overview.html">Overview of NVIDIA OpenShell（NVIDIA Docs）</a></li>
<li><a href="https://developer.nvidia.com/blog?p=122891">NVIDIA OpenShell 0.1.0の解説（NVIDIA Technical Blog）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-12-nvidia-kubernetes-engine-nvke-gpu/">NVIDIA Kubernetes Engine（NVKE）とは？GPUクラウド事業者がマネージドKubernetesを自前で提供するためのオープンソース</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-agent-substrate-ai-pod-kubernetes/">Agent Substrateとは？待機時間の長いAIエージェントを少数のPodで大規模に動かすKubernetesの新しい仕組み</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-14-performance-per-watt/">「電力1Wあたりの性能」とは？ AIインフラの比べ方が変わった理由</a><span class="sc-date">2026/11/14</span></li><li><a href="../../posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/">Nemotron 3.5 Bolt 74B-A9B：2ビットで24GBに収めた74B MoEモデルの作り方</a><span class="sc-date">2026/11/12</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-openshell-cncf-ai-kubernetes/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
</item>
<item>
  <title>NVIDIA Snapshotとは？LLM推論サーバーの起動を「数分→数十秒」にする、CPU・GPUメモリのチェックポイント／復元</title>
  <dc:creator>obelos </dc:creator>
  <link>https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-snapshot-llm-cpu-gpu/</link>
  <description><![CDATA[ 






<p><strong>結論：NVIDIA Snapshotは、LLMの推論サーバーが回答できる状態になった時点のCPUメモリとGPUメモリを丸ごと保存し、新しいサーバーはそこから復元して起動する仕組みです。起動にかかる時間は、通常の起動の8〜36倍短くなります。</strong></p>
<p>ポイントは次の3つです。</p>
<ol type="1">
<li><strong>問題</strong>：LLMの推論サーバーは起動に数分〜十数分かかり、アクセスの急増や障害に素早く対応できない</li>
<li><strong>仕組み</strong>：準備完了時点の状態をチェックポイントとして1回保存し、2回目以降はそこから復元する。モデルの読み込みと最適化の工程を省ける</li>
<li><strong>効果と制約</strong>：NVIDIAの測定では、8枚のGPUを使う大型モデルでも43秒以内に回答できる状態になった。ただし、保存時と同じGPU・ドライバーでしか復元できない</li>
</ol>
<p>2026年11月10日に、NVIDIAのDSX AI Factory Platformの部品としてオープンソースで公開されました。</p>
<hr>
<section id="前提llmの推論サーバーはなぜ起動が遅いのか" class="level2">
<h2 class="anchored" data-anchor-id="前提llmの推論サーバーはなぜ起動が遅いのか">前提：LLMの推論サーバーは、なぜ起動が遅いのか</h2>
<p>ChatGPTのようなサービスでは、「推論サーバー」と呼ばれるプログラムがGPU上で動き、質問を受けて回答を生成しています。推論サーバーは、起動してすぐには回答できません。NVIDIAは起動（コールドスタート）を次の4段階に分けています。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>段階</th>
<th>処理内容</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>① 起動</td>
<td>プロセスの立ち上げ、ライブラリの読み込み、GPU間通信の初期化、一部のJITコンパイル</td>
</tr>
<tr class="even">
<td>② モデル読込</td>
<td>数GB〜1TB近いモデルの重み（学習済みのパラメータ）をGPUメモリに転送する</td>
</tr>
<tr class="odd">
<td>③ 初期化</td>
<td>メモリ使用量の計測、KVキャッシュ（会話の途中経過を保持する領域）や作業用バッファの確保</td>
</tr>
<tr class="even">
<td>④ 最適化</td>
<td>コンパイル、性能の自動調整、CUDAグラフ（GPUへの一連の命令をまとめて記録したもの）の取得</td>
</tr>
</tbody>
</table>
<p>通常の起動では、この4段階を毎回最初から実行します。</p>
<p>起動が遅いと、次の3つの問題が起きます。</p>
<ol type="1">
<li><strong>スケールアウトが遅れる</strong>：アクセスが急に増えてサーバーを追加しても、使えるまで数分かかる</li>
<li><strong>障害からの復旧が遅れる</strong>：1台が停止して代わりを起動するまで、その分の処理能力が欠ける</li>
<li><strong>GPUが遊ぶ</strong>：起動中のGPUは高価なのに、回答を1つも生成しない</li>
</ol>
<hr>
</section>
<section id="snapshotの仕組み" class="level2">
<h2 class="anchored" data-anchor-id="snapshotの仕組み">Snapshotの仕組み</h2>
<section id="回目通常どおり起動し準備完了の状態を保存する" class="level3">
<h3 class="anchored" data-anchor-id="回目通常どおり起動し準備完了の状態を保存する">1回目：通常どおり起動し、準備完了の状態を保存する</h3>
<p>Snapshotはまず、推論サーバーを通常どおり起動します。4段階が終わって回答できる状態になった時点で、<strong>CPUのメモリとGPUのメモリの内容を、持ち運べる形式でストレージに保存</strong>します。これをチェックポイントと呼びます。保存は構成（モデル・GPU数・推論エンジンの組み合わせ）ごとに1回だけです。</p>
</section>
<section id="回目以降保存データから復元する" class="level3">
<h3 class="anchored" data-anchor-id="回目以降保存データから復元する">2回目以降：保存データから復元する</h3>
<p>スケールアウトや障害復旧で新しいPod（Kubernetesでアプリを動かす単位）を起動するときは、保存データから復元します。②モデル読込と④最適化を実行せずに、チェックポイント時点から処理を再開できます。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112072508.png" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="NVIDIA Snapshotの流れ：1回保存して、何度も復元する"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-snapshot-llm-cpu-gpu/fig-20261112072508.png" class="img-fluid figure-img" alt="NVIDIA Snapshotの流れ：1回保存して、何度も復元する"></a></p>
<figcaption>NVIDIA Snapshotの流れ：1回保存して、何度も復元する</figcaption>
</figure>
</div>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112072522.png" class="lightbox" data-gallery="quarto-lightbox-gallery-2" title="通常の起動は4段階を毎回実行、Snapshotは状態を戻すだけ"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-snapshot-llm-cpu-gpu/fig-20261112072522.png" class="img-fluid figure-img" alt="通常の起動は4段階を毎回実行、Snapshotは状態を戻すだけ"></a></p>
<figcaption>通常の起動は4段階を毎回実行、Snapshotは状態を戻すだけ</figcaption>
</figure>
</div>
<p>復元は2つの工程で進みます。</p>
<ul>
<li><strong>CPU側の復元</strong>：Linux標準のプロセス保存・復元ツール <strong>CRIU</strong>（Checkpoint/Restore in Userspace）で、プロセスの状態をホストメモリに戻す。この工程の時間は、主に保存先ストレージの読み出し速度で決まる</li>
<li><strong>GPU側の復元</strong>：GPUの状態をGPUメモリに書き戻す。最後に、ノードに常駐するSnapshotエージェントが、新しいノードの環境に合わせて再マッピングを行い、処理を再開させる</li>
</ul>
<p>KVキャッシュは、リクエストごとの一時的なデータなので、チェックポイントの前に解放します。保存データには含まれません。</p>
</section>
<section id="kubernetesからの使い方" class="level3">
<h3 class="anchored" data-anchor-id="kubernetesからの使い方">Kubernetesからの使い方</h3>
<p>Snapshotは、Kubernetesのカスタムリソースとして操作します。</p>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>操作</th>
<th>方法</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>動作中のPodを保存する</td>
<td><code>PodSnapshot</code> リソースを作成する</td>
</tr>
<tr class="even">
<td>テンプレートからPodを起動し、準備完了後に保存する</td>
<td><code>SnapshotJob</code> リソースを作成する</td>
</tr>
<tr class="odd">
<td>保存データから新しいPodを起動する</td>
<td>Podに <code>nvidia.com/restore-from</code> アノテーションを付け、PodSnapshotの名前を指定する</td>
</tr>
</tbody>
</table>
<p>推論エンジン側には、「チェックポイントの直前に一時停止し、復元後に再開する」というハンドシェイクの実装が必要です。リポジトリには、vLLM、SGLang、TensorRT LLM向けの実装例が含まれています。1ノード内で複数GPUを使う構成（テンソル並列、データ並列とエキスパート並列の組み合わせなど）にも対応しており、全ランクを1つの保存データとして扱います。</p>
<hr>
</section>
</section>
<section id="測定結果" class="level2">
<h2 class="anchored" data-anchor-id="測定結果">測定結果</h2>
<p>NVIDIAは、B200 GPU（ドライバー615.71.09）とVAST DataのNFSストレージで測定しています。コンテナイメージの取得やインフラの準備時間は含まれていません。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112072536.png" class="lightbox" data-gallery="quarto-lightbox-gallery-3" title="起動にかかる時間：通常の起動とSnapshotの復元"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-snapshot-llm-cpu-gpu/fig-20261112072536.png" class="img-fluid figure-img" alt="起動にかかる時間：通常の起動とSnapshotの復元"></a></p>
<figcaption>起動にかかる時間：通常の起動とSnapshotの復元</figcaption>
</figure>
</div>
<p>結果から読み取れることは3つあります。</p>
<ol type="1">
<li><strong>起動に時間がかかる構成ほど短縮幅が大きい</strong>：最大の35.87倍は、通常の起動に1,110.65秒（約18.5分）かかっていたDeepSeek-V4.1-Flash（GPU8枚）で出ている</li>
<li><strong>大型モデルでも1分以内</strong>：GPU8枚の構成でも、復元は42.7秒以内に収まった。内訳はGPU側の復元が18〜29秒、CPU側（CRIU）の復元が4.2〜10.8秒</li>
<li><strong>保存の時間はすぐ回収できる</strong>：チェックポイントの作成には15秒〜約5.5分かかるが、構成ごとに1回だけ。測定したすべての構成で、「保存＋復元」の合計が「通常の起動1回」より短かった</li>
</ol>
<p>クラウド事業者の検証（HGX B300）でも効果が出ています。CrusoeはGLM-5.3のPodが使える状態になるまでの時間を約8分から31秒に、Saturn CloudはvLLMの起動時間を2〜8.5分から6〜34秒に短縮しました。</p>
<hr>
</section>
<section id="制約" class="level2">
<h2 class="anchored" data-anchor-id="制約">制約</h2>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="fig-20261112072545.png" class="lightbox" data-gallery="quarto-lightbox-gallery-4" title="NVIDIA Snapshotの3つの制約"><img src="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-snapshot-llm-cpu-gpu/fig-20261112072545.png" class="img-fluid figure-img" alt="NVIDIA Snapshotの3つの制約"></a></p>
<figcaption>NVIDIA Snapshotの3つの制約</figcaption>
</figure>
</div>
<ul>
<li><strong>ハードウェアの一致</strong>：保存したときと同じGPUモデル・同じドライバーのノードにしか復元できません</li>
<li><strong>保存データの大きさ</strong>：保存データは約8GB〜1TB超になります（例：SGLangでgpt-oss-120bをTP4で動かした場合は693.89GB）。CPU側の復元時間はストレージの読み出し速度に依存し、公開されている測定は1種類のストレージ構成だけです</li>
<li><strong>対象範囲</strong>：1ノード内の複数GPUまでが対象です。複数ノードにまたがる構成は扱われていません</li>
<li><strong>成熟度</strong>：NVIDIA Dynamo（NVIDIAの推論基盤）との連携ガイドは「実験的」とされています</li>
</ul>
<hr>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>LLMの推論サーバーは、起動・モデル読込・初期化・最適化の4段階を毎回実行するため、起動に数分〜十数分かかる</li>
<li>NVIDIA Snapshotは、準備完了時点のCPU・GPUメモリをチェックポイントとして保存し、新しいPodはそこから復元する</li>
<li>通常の起動より8〜36倍速く、GPU8枚の大型モデルでも43秒以内に回答できる状態になった</li>
<li>同じGPU・ドライバーでしか復元できず、復元時間は保存先ストレージの速度に左右される</li>
</ul>
</section>
<section id="あわせて読みたい" class="level2">
<h2 class="anchored" data-anchor-id="あわせて読みたい">あわせて読みたい</h2>
<ul>
<li><a href="../2026-11-12-nvidia-dynamo-llm-kv/">③ Dynamo：KVキャッシュをデータセンター全体で再利用する</a><br>
起動した推論サーバーでKVキャッシュを再利用する仕組み</li>
<li><a href="../2026-11-12-agent-substrate-ai-pod-kubernetes/">Agent Substrate：待機の長いエージェントを少数のPodで動かす</a><br>
同じくPodの起動待ちを減らす、エージェント向けの仕組み</li>
<li><a href="../2026-11-12-nvidia-openshell-cncf-ai-kubernetes/">OpenShell：AIエージェントの実行環境とCNCFへの寄贈</a><br>
同時に発表された部品の全体像</li>
</ul>
<hr>
<p><strong>参考</strong></p>
<ul>
<li><a href="https://developer.nvidia.com/blog/start-and-restore-gpu-workloads-in-seconds-with-nvidia-snapshot/">Start and Restore GPU Workloads in Seconds with NVIDIA Snapshot（NVIDIA Technical Blog）</a></li>
<li><a href="https://blogs.nvidia.com/blog/open-source-openshell-infrastructure/">NVIDIA Expands Open Source Commitment With OpenShell Donation and New AI Infrastructure（NVIDIA Blog）</a></li>
<li><a href="https://github.com/ai-dynamo/snapshot">ai-dynamo/snapshot（GitHub）</a></li>
</ul>


</section>
<section id="次に読む" class="level2 unnumbered sc-next-heading">
<h2 class="unnumbered sc-next-heading anchored" data-anchor-id="次に読む">次に読む</h2>
<ul class="sc-related"><li><a href="../../posts/2026-11-12-nemotron-bolt-b-a9b-gb-b/">Nemotron 3.5 Bolt 74B-A9B：2ビットで24GBに収めた74B MoEモデルの作り方</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvidia-dynamo-llm-kv/">NVIDIA Dynamoとは？LLMのKVキャッシュをデータセンター全体で再利用する推論基盤の仕組み</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-nvfp4-ai-nvidia/">NVFP4とは？精度をほぼ落とさずにAIモデルを4ビットにする、NVIDIAの数値形式の仕組み</a><span class="sc-date">2026/11/12</span></li><li><a href="../../posts/2026-11-12-wide-ep-moe-gpu-nvidia/">Wide-EPとは？MoEモデルのエキスパートを数十枚のGPUに分散して、メモリと計算を効率化するNVIDIAの方法</a><span class="sc-date">2026/11/12</span></li></ul>

</section>

 ]]></description>
  <category>AIインフラ</category>
  <guid>https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-snapshot-llm-cpu-gpu/</guid>
  <pubDate>Wed, 11 Nov 2026 15:00:00 GMT</pubDate>
  <media:content url="https://scholia-notes.pages.dev/posts/2026-11-12-nvidia-snapshot-llm-cpu-gpu/fig-20261112072508.png" medium="image" type="image/png" height="84" width="144"/>
</item>
</channel>
</rss>
