Googleの新しいAIが毎秒1,000トークン以上を生成 (DiffusionGemma)

BBetter Stack
Computing/SoftwareVideo & Computer Games

Transcript

00:00:00最近Googleが非常に盛り上がっています。先週は、エンコーダーを使わない画期的な
00:00:05「Gemma 4」モデルについて動画にしましたが、今週、また驚くほど革新的なモデルが登場しました。「Diffusion
00:00:11Gemma」というモデルで、これが驚異的に高速です。1秒間に1,000トークン以上を
00:00:18生成できるのですが、それが可能な理由は、これまで皆さんが使ってきたどのモデルとも
00:00:23まったく異なる方法でテキストを生成しているからです。今回の動画では
00:00:29Diffusion Gemmaの仕組みを見ていき、実際に試す方法も紹介します。
00:00:35面白くなりそうですね。それでは、さっそく見ていきましょう。
00:00:41これまで皆さんが対話してきたすべての言語モデルは、根本的に同じ仕組みで動いています。「自己回帰型」
00:00:48という小難しい言葉で呼ばれますが、要は左から右へ1トークンずつ生成するということです。単語を書き
00:00:54今までに書かれたすべてを見て、次の単語を予測し、そのサイクルをひたすら
00:00:59繰り返すのです。ClaudeやGPTのような商用大規模モデルでは、サーバーが
00:01:06トークンを生成する際、計算時間の大部分は計算自体ではなく、モデルの重みをメモリから
00:01:12読み込むことに費やされます。たった一人のユーザーに対してこれを行うのは無駄が多いのです。そこでサーバーは、数百人のユーザーを
00:01:19バッチ処理としてまとめて、一度モデルを読み込んで全員分を一度に実行します。そうすることで
00:01:25一度のメモリロードで256人のユーザーにサービスを提供できます。しかし、ローカルでモデルを実行する場合、ユーザーは自分一人なので
00:01:33バッチを組む相手がいません。GPUが膨大な重みをロードし、トークンを1つ生成するために
00:01:39ごくわずかな計算をして、また次を生成するまでアイドル状態になります。専門用語で
00:01:46これは「メモリバウンド」と呼ばれます。高価なGPUが、計算の大部分ではなく、次の
00:01:52トークンを待つことにほとんどの時間を費やしている状態です。そこでGoogle DeepMindは、この問題に着目し、賢い
00:01:58問いを立てました。クラウドが256人のユーザーを同時に処理してアイドル時間を埋めているなら、単一ユーザーの場合でもそのアイドル時間を埋められるのではないか?
00:02:07つまり、256人のために1トークン生成するのではなく、1人のために256トークンを
00:02:16一度に生成してしまえばいいのでは?それがDiffusion Gemmaの背後にあるアイデアです。単語を1つずつ書くのではなく
00:02:23モデルは256個の完全にランダムなプレースホルダートークンが並んだ「キャンバス」からスタートします。つまり、ノイズです。
00:02:31そしてその役割は、キャンバスの全位置を同時に修正して、本物のテキストに変えることです。256トークンを
00:02:38一度に予測することで、GPUをアイドル状態にするのではなく、しっかり働かせることができます。そうすることで、
00:02:46モデルをメモリバウンドからコンピュートバウンドへと切り替え、これまで浪費されていた性能をようやく使い切れるようになります。
00:02:53しかし、これは口で言うほど簡単ではありません。256トークンを一度に予測するのは、非常に難しいのです。
00:03:01なぜなら、1から253番目のトークンが何になったのか知る由もない状態で、254番目のトークンをどうやって当てるのか?
00:03:09まさにその通りで、最初の数トークンはうまく出ても、進めば進むほど
00:03:15意味不明な内容に崩れていきます。ですが、1回だけでなく、複数回パスを回せばどうでしょうか?
00:03:21これが最大のトリックです。モデルはキャンバスを何度もパスしますが、今度は
00:03:28自分の前回の推測を見ることができます。確信を持って予測できたトークンが、
00:03:35崩れた箇所を修正するヒントになります。しかも素晴らしいことに、必要なのはわずか数パスです。合計256トークン
00:03:42すべてを生成するよりはるかに少ないパス数で済みます。そこから圧倒的な速度が生まれるのです。このトリックは、
00:03:49皆さんもきっとどこかで見たことがあるはず。これは「拡散モデル(Diffusion)」です。ノイズからスタートし、段階的に洗練させていく。
00:03:55これはAI画像生成を支える仕組みとまったく同じ考え方です。そして、その学習方法は、
00:04:01訓練時に本物の画像に意図的にノイズを加え、そのノイズを予測して取り除くように学習させるというものです。
00:04:07では、同じ概念をどうやってテキストに適用するのか?ここが難しいところです。画像の場合、
00:04:14ノイズは簡単です。ピクセルを少し赤くしたり青くしたりすればいい。しかしテキストでは、どうすれば
00:04:19「the」という単語を少し「theではない」ものにできるのか?単語に対するノイズとは何なのか?DeepMindは
00:04:27「ユニフォーム・ステート・ディフュージョン(Uniform State Diffusion)」という手法を考案しました。文字をいじるのではなく、ランダムに
00:04:32入れ替えられた単語をノイズとして扱います。学習用テキストを汚染するために、実際の単語をランダムな単語に
00:04:38置き換えます。そしてモデルの仕事は、どの単語がゴミなのかを突き止め、最終的に複数回のパスで修正することです。
00:04:45「マスク・ディフュージョン」という、トークンを単に空にする、よりシンプルな手法もあります。
00:04:51ですがそれには大きな欠点があります。モデルがいったん単語を確定させると、二度と変更できないのです。自己回帰モデルと同じ
00:04:57問題を抱えているわけです。しかし、ユニフォーム・ステート・ディフュージョンなら、すべての位置に常に何らかのトークンを保持し続けることでこれを解消します。
00:05:04そのため、3ステップ前に受け入れた単語を再度見直して、もう合わないと思えば別のものと入れ替えることができます。
00:05:10つまり、最後まで自己修正が可能になるわけです。しかし、この解決策にも
00:05:15落とし穴があります。ディフュージョンには、プロンプトを理解するためのエンコーダーと、キャンバスを掃除するためのデノイザーが必要です。
00:05:23そこでDeepMindは、エンコーダー・デノイザー・パッチを開発しました。既存の260億パラメータを持つ
00:05:30GEMMA4モデルの上に構築されており、生成時に2つのモードを切り替えます。エンコーダーモードでは、
00:05:36モデルはプロンプトを読み込み、コンテキストやガイダンスを抽出しようとします。それをすべて
00:05:42KVキャッシュに集めて、そのままデノイザーに渡します。デノイザーの仕事は、実質的に
00:05:49キャンバスを掃除することです。そのために2つのことを行います。まず、通常のLLMがすべての位置に対して
00:05:56信頼度スコアやロジットを出力するのに、最後の一つ以外をすべて捨ててしまうことを覚えていますか?
00:06:02ところで、もしここで混乱しているなら、以前LLMの仕組みを詳しく解説した動画も作っています。
00:06:07ぜひそちらも見てみてください。基本的にDiffusion GEMMAは、それらのスコアを捨てません。
00:06:13すべてのキャンバス位置に個別の予測が必要なため、信頼度スコアをすべて保持し続けます。
00:06:19次に、このデノイザーは「因果的アテンション(Causal Attention)」を使いません。これは
00:06:25単語が後ろしか見ることができないというルールで、自己回帰モデルの仕組みです。代わりに、
00:06:31双方向アテンションを採用しました。これで、すべてのトークンが全方向の他のすべてのトークンを見ることができます。
00:06:38そのため、すべての位置に対して信頼度スコアを適用し、他のトークンを見て、キャンバスを少しずつ段階的に掃除していくのです。
00:06:44これがDiffusion GEMMAがH100 GPU上で1,000トークン/秒を超える驚異的な速度を達成している理由です。
00:06:51正直に言っておきます。これは特効薬ではありません。これらの新しい戦術によって、
00:06:58Diffusion GEMMAは基本的に品質を速度と引き換えにしています。最大限の品質を求める作業には、標準のGEMMA 4が
00:07:05依然として良い選択です。このモデルは、インライン編集やコード
00:07:13の補完、あるいは高速な反復作業といった重要なローカル作業のために特化されています。また、コードブロックの
00:07:19中身を埋めたり、通常の左から右へ読むモデルが非常に苦手とする数独パズルを解いたりといった、非線形なタスクに特に強いです。
00:07:26さて、ここまでの話は魅力的ですが、実際に試して、どのように動作するのか確認してみましょう。
00:07:33Googleは、Hugging Face上でApache 2.0ライセンスのもと、モデルの重みをオープンソースとして公開しています。
00:07:38ですから、RTX 5090のような強力なGPUをお持ちであれば、ローカルで実行できる可能性があります。また、Docker上で
00:07:44実行するためのVLLM用の特別なレシピも用意されていて、プロセスを効率化できます。しかし、私は本当に
00:07:51このモデルが本当に1,000トークン/秒を超えるのか、非常に興味があります。そこで今回のテストでは、実際に
00:07:58RunPodコンテナを使用してH100 GPU上で実行してみます。ちなみに、私は
00:08:04RunPodで実行するためのDiffusion GEMMAテンプレートも公開しました。このテストを再現したい場合は、
00:08:10新しいポッドを作成する際にそのテンプレートを実行するだけです。RunPodでこのテストを行うには、
00:08:15H100コンテナを選択します。先ほども触れたように、再利用可能なDiffusion GEMMA
00:08:22テンプレートを作成しました。ボリュームディスクをクリックして、「deploy on demand」を押すだけで、
00:08:28コンテナがダウンロードされ、すべてが立ち上がるまで数分かかります。
00:08:34ログを確認し、「application startup complete」と表示されれば、VLLMの準備が整い
00:08:40ポート8000でアクセスできるようになります。これを開くと「detail not found」と表示されますが、
00:08:46心配しないでください。これは正常に動作している証拠です。このURLをコピーするだけです。AIエージェント端末、
00:08:52例えばOpenCodeなどでDiffusion GEMMAを実行するように設定するには、OpenCodeの設定を
00:08:58リモートサーバーにアクセスするように構成する必要があります。この単純なコマンドで
00:09:04設定ファイルを開くことができます。ここでRunPodサーバーを指定し、
00:09:11Diffusion GEMMAモデルを選択します。ファイルを保存してOpenCodeを起動すればOKです。
00:09:17さて、今回のテストでは、「ledger」という個人財務管理ダッシュボードを作成するよう指示してみます。
00:09:24どれだけ速く生成できるか見てみましょう。見てください、すぐにストリーミングが始まりました。
00:09:34信じられないほど速いですね。すごい。これは狂気的です。ログを見ると、
00:09:43平均して700トークン/秒になっています。出力フェーズに入ると少し落ちましたが、
00:09:50推論フェーズでは700トークン/秒に達しました。本当にすごいです。開いてみましょう。
00:09:58おっ、これはダッシュボードですね。素晴らしい。カテゴリーなどが表示されています。
00:10:06ここに何か追加してみると……おっ、ちゃんと経費として追加されました。経費の合計は
00:10:13更新されていませんが、一部は機能していますね。
00:10:20次のタスクとして、アーケードスタイルのゲームを作れるか試してみましょう。
00:10:26起動します。やはり速度は狂気じみています。おっと、今回は少し時間がかかっていますね。
00:10:362つのファイルが生成されました。面白い。おっ、タイポに気づいて、
00:10:44HTMLファイルを再処理したようです。かなり優秀ですね。よし、開いてみましょう。リスタート。
00:10:52おお、動いています。おお、かっこいい。素晴らしい。感動的です。ゲームは
00:11:03完全に機能していて、生成にかかった時間はわずか14秒。このようなゲームを作るのに14秒ですよ。
00:11:11マーケティングページではH100で1,000トークン/秒が期待できるとありましたが、
00:11:18私の観測ではそこまでは達しませんでした。テンプレートかプロンプトを少し調整する必要があるかもしれませんが、
00:11:26それでも本当に感動しました。これは怪物です。というわけで、
00:11:33皆さんもこれがDiffusion GEMMAです。今年最も興味深いリリースの1つだと思います。
00:11:38画像生成の世界のまったく異なる生成パラダイムを取り入れて、すでに訓練済みのモデルに適用し、
00:11:44個人のローカル環境で真の速度向上を実現できることを証明したからです。
00:11:51これは、ハードウェアの潜在能力をフル活用し、アイドル状態にさせない、新しい家族の
00:11:58高速でインタラクティブなローカルモデルの扉を開くものだと思います。Diffusion GEMMAについて、
00:12:04どう思いましたか?試しましたか?使ってみたいですか?ぜひ下のコメント欄で教えてください。
00:12:09このような技術的な解説動画が好きなら、動画の下にある「いいね」ボタンを押して
00:12:14ぜひ教えてください。チャンネル登録も忘れずに。Betterstackの
00:12:19Andrusでした。また次の動画でお会いしましょう。

Key Takeaway

Diffusion Gemmaは画像生成の拡散モデルの概念をテキスト生成に応用し、256個のトークンを並列かつ反復的に洗練させることで、従来の自己回帰型モデルを凌駕する超高速な推論を実現している。

Highlights

  • Diffusion Gemmaは、従来の自己回帰型とは異なり、256トークンを同時に生成することで計算効率を飛躍的に向上させる。

  • ユニフォーム・ステート・ディフュージョン手法を採用し、一度生成したトークンを後から修正可能にすることで、自己回帰モデルの欠点を克服している。

  • 双方向アテンションを使用することで、全位置のトークンが相互に情報を参照し、段階的に内容を精緻化する。

  • H100 GPU環境でのテストにおいて、推論フェーズで最大700トークン/秒の生成速度を記録した。

  • コード補完や数独パズルといった、非線形なタスクにおいて高い処理能力を発揮する。

Timeline

従来の自己回帰モデルが抱える課題

  • 既存の大規模言語モデルは左から右へ1トークンずつ生成する自己回帰方式を採用している。
  • 単一ユーザーの環境ではGPUの重み読み込みに対して計算量が少なく、アイドル状態が発生するメモリバウンド問題が生じる。
  • クラウド環境では数百人のユーザーをバッチ処理することでアイドル時間を埋めている。

GPTやClaudeなどの商用モデルは、メモリから重みを読み込むコストが高く、一人のユーザーのために動作させるには効率が悪い。Google DeepMindはこのアイドル時間を活用し、単一ユーザーに対してもバッチ処理に近い並列性を持ち込むことで最適化を図った。

Diffusion Gemmaの生成メカニズム

  • 256個のランダムなノイズをキャンバスとして生成を開始する。
  • 複数回のパスを重ねることで、以前の推測をヒントに自己修正を行いながらテキストを精緻化する。
  • ユニフォーム・ステート・ディフュージョンにより、各トークン位置に常に値を保持し、後からの書き換えを可能にした。

一度に256トークンを並列予測することでGPUの稼働率を最大化する。マスク・ディフュージョンと異なり、トークンを確定させず常に編集可能な状態を維持するため、前後の文脈整合性を保ちながら精度を高められる。

アーキテクチャの構成と実装

  • 既存の260億パラメータのGemma 4をベースに、エンコーダーとデノイザーを統合している。
  • 因果的アテンションの代わりに双方向アテンションを採用し、全位置のトークンが相互参照を行う。
  • 品質と速度のトレードオフの関係にあり、高速な反復作業や非線形タスクに特化している。

エンコーダーがプロンプトを読み込み、デノイザーが信頼度スコアを保持したまま双方向の文脈からノイズを除去する。これにより、左から右への生成では困難だった数独やコードのインライン編集に強みを発揮する。

実践テストと評価

  • Hugging Faceでオープンソースとして公開され、RunPod等のコンテナでローカル実行が可能である。
  • 個人財務管理ダッシュボードやアーケードゲームの生成において、実用的な速度と精度を確認した。
  • 理論値の1,000トークン/秒には及ばない場合もあるが、既存モデルを大きく上回る推論速度を実現した。

H100 GPUを用いた実際のテストでは、推論フェーズで秒間700トークンという高速な生成を達成した。短い生成タスクであればわずか14秒でゲームコードを完成させるなど、ローカル環境でのインタラクティブな開発支援ツールとしての有効性が示された。

Community Posts

No posts yet. Be the first to write about this video!

Write about this video