見出し画像

文章がノイズから結晶化する。拡散LLM「DiffusionGemma」を動かしてみた

普通のLLMは、文章を左から順番に書いていきます。

「むかしむかし、あるところに……」と、次の単語を予測して、また次の単語を予測して、前から後ろへ進んでいく。

ところが、DiffusionGemma は少し違います。

最初に、文章全体のキャンバスがぐちゃぐちゃの状態で現れます。そこから何度もノイズを取り除いて、文章らしい形に近づけていきます。

画像生成AIで、ぼんやりした絵がだんだん鮮明になっていくのに近いです。それを文章でやっている。

実際に動かしてみると、かなり不思議な見え方をしました。

まず、これを見てほしい

「宇宙を旅する一匹の猫の短い物語を書いて」と頼んだときの生成途中です。


最初は、文章とは言いにくいものが出てきます。

`銀の銀、、、、のののののののののの...`

まだ意味はありません。けれど、ステップを重ねると、ところどころに単語が浮かびます。

`銀色の船体`、`黒猫`、`ルナ`。

さらに進むと、文の骨格が決まってきます。

`銀色の船体の中に、一匹の黒猫の「ルナ」が座っていました。`

そして最後には、物語として読める形になります。

宝石を散りばめたような星々が、まるで獲物を誘惑する光の粒のように輝いていました。

左から一文字ずつ書いている感じではありません。

最初に文章全体の輪郭があって、それが少しずつピントを合わせていく。まさに「ノイズから文章が結晶化する」ような動きです。

DiffusionGemma とは何か

DiffusionGemma は、Google DeepMind のブロック拡散言語モデルです。

今回試したのは `diffusiongemma-26B-A4B-it` の GGUF 版です。総パラメータは 26B ですが、MoE なので実際に動く部分はその一部です。

普通のチャットAIでよく使われる自己回帰型モデルは、次のトークンを1つずつ予測します。

一方、DiffusionGemma は一定サイズのブロックを持ち、そのブロック全体を何度も更新しながら文章を作ります。

ざっくり言うと、こんな違いです。

| 種類 | 生成のしかた |
|---|---|
| 普通のLLM | 左から右へ、次のトークンを1つずつ出す |
| 拡散LLM | 文章ブロック全体を何度も修正して完成させる |

この違いが、GIFのような「全体がだんだん整う」見え方につながっています。

動かすのはまだ少し大変

ここが大事なのですが、2026年6月14日時点の自分の環境では、DiffusionGemma は普通の Ollama や Lemonade では動きませんでした。

理由は、一般的な `llama-server` がまだこの拡散アーキテクチャに対応していないためです。

今回は `llama.cpp` の DiffusionGemma 対応ブランチを自分でビルドして、専用の `llama-diffusion-gemma-visual-server` を使いました。

環境は次の通りです。

| 項目 | 内容 |
|---|---|
| GPU | Radeon RX 9060 XT 16GB |
| OS | Windows 11 |
| バックエンド | Vulkan |
| 実行系 | llama.cpp の DiffusionGemma 対応ブランチ |
| モデル | Q4_K_M / IQ4_XS |

OpenAI互換APIで気軽に叩ける段階ではありません。stdin/stdout の独自プロトコルを Python で包んで、モデルを常駐させる形にしました。

面白かったところ

一番面白いのは、生成途中が見えることです。

普通のLLMでも、ストリーミング表示で文章が少しずつ伸びていく様子は見られます。

でもそれは、あくまで「左から書いている途中」です。

DiffusionGemma の場合は、文章全体が未完成の状態で存在していて、それが何度も書き換わります。

人間が文章を書くときも、最初から完璧な一文を左から右に吐き出すわけではありません。頭の中にぼんやりした全体像があって、それを直しながら形にしていくことがあります。

DiffusionGemma の生成過程は、その感覚に少し近く見えました。

もちろん、モデルの中身が人間と同じという意味ではありません。ただ、出力の見え方としては、自己回帰型とはかなり違います。

速度はどうだったか

16GB の AMD GPU でも動きました。

ただし、何も考えずに動かすと速くはありません。VRAM の使い方がかなり重要でした。

最初の安定設定では、1ステップあたり約1100ms。そこから小さい量子化モデルを使い、GPUに載せる層数を増やすことで、最終的に約632ms/stepまで短縮できました。

このチューニング部分は長くなるので、別記事に分けます。

結論だけ書くと、拡散LLMでは「GPU使用率が高いから速い」とは限りませんでした。VRAMから溢れていると、GPUは忙しそうに見えても逆に遅くなります。

まとめ

DiffusionGemma は、普段のLLMとは生成の見え方がかなり違います。

左から文章が伸びるのではなく、ノイズのような文章全体が、少しずつ意味のある形に整っていく。

その途中経過を眺めるだけでも、かなり面白いモデルでした。

まだ実行環境はこなれていません。Ollama や Lemonade で普通に動く段階ではなく、自前ビルドや専用クライアントが必要です。

それでも、16GB のコンシューマー向け AMD GPU で 26B クラスの拡散LLMが動いたのは収穫でした。

次の記事では、Radeon 16GB 環境でどこまで速くできたか、VRAMとNGLを詰めたチューニング結果を書きます。

推奨タグ: #ローカルLLM #DiffusionGemma #生成AI #AMD #Radeon



いいなと思ったら応援しよう!