ハクソク

世界を動かす技術を、日本語で。

内省的拡散言語モデル

概要

  • **Introspective Diffusion Language Model (I-DLM)**は、拡散型言語モデルの並列生成の利点と、自己回帰型(AR)モデルの品質を両立
  • I-DLM-8Bは、同規模のARモデルと同等の品質を実現し、LLaDA-2.1-miniより高スループット
  • **Introspective Strided Decoding (ISD)**により、トークン生成と検証を同時に実行
  • LoRAアダプタにより、損失なしでARモデルとビット単位で同一出力を保証
  • SGLangとの互換性により、既存インフラでの導入が容易

Introspective Diffusion Language Model (I-DLM) の概要

  • **拡散型言語モデル(DLM)**は並列トークン生成による高速化が可能
  • 従来のDLMは自己回帰型(AR)モデルに品質で劣る課題
  • I-DLMは「内省的一貫性(introspective consistency)」不足を解決
  • **ISD(Introspective Strided Decoding)**で、生成済みトークンの検証と新規生成を同時実行
  • I-DLM-8Bは、同規模ARモデルと同等の品質を達成し、LLaDA-2.1-mini(16B)よりAIME-24で+26、LiveCodeBench-v6で+15のスコア差
  • スループットは2.9~4.1倍(バッチサイズ64時)

I-DLMの技術的特徴

  • 内省的一貫性訓練
    • 既存ARモデルを変換し、因果的アテンション・ロジットシフト・全マスク目的で訓練
  • ISDによる並列デコーディング
    • 1回のフォワードパスでNトークン生成+過去トークン検証(p/q受理基準)
  • AR互換サービング
    • SGLangに直接統合可能、カスタムインフラ不要
  • 損失なし加速(R-ISD + LoRA)
    • MASK位置のみLoRA適用、ARモデルとビット単位で同一出力

性能比較・ベンチマーク

  • I-DLM-8Bは同規模ARモデルと同等品質、全15ベンチマークで従来DLMを上回る
  • 知識・推論系:ARC-C、MMLU、MMLU-Pro、GPQA-D、GPQA
  • 数学系:GSM8K、MATH-500、MathBench、AIME-24、AIME-25
  • コード系:HumanEval、MBPP、LiveCodeBench-v6
  • 命令追従:IFEval
  • スループット:LLaDA-2.1-miniやSDARより2.9~4.1倍高速(C=64時)

I-DLMの効率性

  • メモリバウンド時:TPF(Throughput per Forward)がARの2.5倍以上
  • 計算効率:I-DLMは1FLOPあたりARより多くの有用出力生成
  • バッチ効率:SDARやLLaDAは早期にスループットが頭打ち、I-DLMは高並列時も効率維持

導入・利用方法

  • インストール
    • git clone https://github.com/Introspective-Diffusion/I-DLM.git
    • cd I-DLM/inference
    • bash install.sh
  • サーバ起動例
    • python -m sglang.launch_server --model-path yifanyu/I-DLM-8B ...
  • 推論例(curl)
    • curl http://localhost:30000/v1/chat/completions ...
  • 訓練方法
    • 事前学習済みARモデルを、全マスク+クリーン系列連結、因果マスク、自己バランスCEロスで訓練
    • 8 H100 GPU、2エポック、4.5Bトークン
  • ISD推論
    • MASK位置で新規生成(分布q)、クリーン位置で検証(分布p)、min(1, p(x)/q(x))で受理
    • N=4時、TPF=2.96、約3倍高速化
  • SGLangサービング
    • ページ化KVキャッシュ、連続バッチ、CUDAグラフキャプチャ等で最大2.5倍スループット

モデル・リソース一覧

  • I-DLM-8B:Qwen3-8Bベース、AR品質
  • I-DLM-32B:大規模モデル、LLaDA-2.1-flash(100B)を上回る
  • I-DLM-8B-LoRA:損失なしR-ISD用LoRAアダプタ付

参考文献・リソース

  • 論文:arXiv preprint arXiv:7471639 (2026年)
  • GitHub: https://github.com/Introspective-Diffusion/I-DLM
  • 評価スクリプト:inference/eval/ 配下
  • 詳細ドキュメント:inference/README.md、training/README.md

© 2025 I-DLM Team

Hackerたちの意見

ここにディフュージョンを使ったテキスト生成を真剣に試してる人いる?みんなの経験を聞きたいな!
私はやってるよ。普通の言語モデルとは全然違う直感が必要だね。特定の問題にはすごく向いてる。
https://www.inceptionlabs.ai/ このスタートアップは結構前からやってるみたい。調べてみた感じ、スピードはすごいけど、最初のトークンまでのユーザー体験や全体の回答の質には課題が残ってるね。スピードと精度が「十分良い」レベルに達すれば、安価なモデルやユーザーが直接関わらない非同期作業にも使えると思う。もう一つ気になってるのは、大量のテキストを出力として拡散させることができるのかってこと。もっと大きなボディを使って、機械的に高度な推論を促すことができるかも。大きなラボではすごく興味深い研究が進んでると思うよ。
現在、ローカルLLM空間での投機的デコーディングのために探求されてるみたいで、これは使い方として結構面白いと思う。 https://www.emergentmind.com/topics/dflash-block-diffusion-f...
ディフュージョン言語モデル(WeDLM)のSwift実装をいじってるけど、パフォーマンスはまだ満足できるレベルじゃないし、左から右に生成する感じはまだ残ってる(厳密にトークンごとじゃなくてスライディングウィンドウ内で…でもスライディングウィンドウが16トークンくらいの時はあんまり関係ないけどね)。
レイテンシと価格の面で、Mercury 2は自動ノートタグ付けや相互リンクに特化したUX実験に非常に魅力的だよ。前に使ってたGemini Flash Liteよりもずっと、いくつかのインタラクションがほぼ摩擦なしで、昔のオートコンプリートやT9、オートコレクトのように、ユーザーがその背後にあるプロセスを考えないくらい自然だった。残念ながら、ツール呼び出しのレベルではHaiku 3.5には及ばないけど、彼らのベンチマークではHaiku 4.5と同等だって言ってるし、Flash Liteとは競争してる部分もあるね。非常に特化した出力があって、十分な既存の入力があれば、シームレスな感覚が得られるものはdLLMsに向いてると思う。タブ補完にも使えるかもだけど、Cursorsモデルはすでに十分低レイテンシみたいだね。
これを正しく読んでるなら、かなりすごいことだね。Qwenのオートレグレッサーをいくつかのとても賢いテクニックを使ってディフューザーに変えたみたいで、実際に「ネイティブディフューザー」を大きく上回ってる。元のモデルと競争できるレベルだよ。明らかな利点は生成のスピードが大幅に向上すること。さらに、LoRAアダプターを通じて、ディフューザーをベースモデルの分布に基づかせることができる(要するに、ベースモデルが生成したであろう提案と比較することができる)。つまり、同じシードであれば、バイト単位で全く同じ出力が得られるけど、約2倍速くなるってこと(バッチ処理のタスクではさらに改善されるはず)。私は専門家じゃなくて「実践している愛好者」だから、何か見落としてるかもしれないけど、一見するとすごくワクワクするね。
ベースモデルで生成せずに、ベースモデルの出力と比較するってどういうこと?それなら意味あるの?
君の興奮は正当だと思うよ。この論文はARの品質と並列デコーディングの間に大きな橋を架けるって主張してるし、ロスレスのLoRA支援モードが一番すごい部分だね。
うーん、これにはディフュージョンの要素なんてないよ。デノイジングとも関係ないし。この設定はまだ純粋に因果的で、正直言ってちょっと不誠実なフレーミングだと思う。ここでの内省はMTP + SDのセットアップと同じくらいしかないよ。何が起こっているか説明するね。これは基本的にマルチトークン予測の一形態で、推論における投機的デコーディングなんだ。詳しくは前の投稿[1]を見てね。要するに、マルチトークン予測では、次のトークンやその次のトークンを予測するために別々のLMヘッドを訓練するんだ。複数のLMヘッドを訓練するのはコストがかかるし、必ずしも必要じゃないから、通常はすべてのkヘッドのために共通のベースを持つのが一般的なんだ。[1]でさらに詳しく説明してるよ。彼らは別のバリエーションをやってる。ここでやってるのは、5つのトークンからなるシーケンスpを考えて、PE([p1, p2, p3, p4, p5])を使うこと。PE(.)は各トークンに相対位置情報を追加するんだ。1. 拡張シーケンスPE([p1 MASK MASK MASK MASK])を作成する。それに対して、真のシーケンスp1..5を使ってトレーニングを行う。ここでは、例えばp1+pos=-2 MASK+pos=-1 MASK+pos=0を与えてp3を予測するように訓練されるんだ。2. 次に、通常通りPE([p1 p2 p3 p4 p5])で別々に訓練する。ステップ(1)はマルチトークン予測を教える。要するに、単一のLMヘッドは特別なMASKトークンの位置`k`に条件付けて、それを「暗黙の」k番目のLMヘッドに「ルーティング」することになる。ステップ(2)は通常のLLMとして次のトークンを予測することを教える。MASKトークンは関与しない。これで、マルチトークン予測器を訓練したことになる。推論中は、これを使って投機的デコーディングを行う。MASKトークンを使って一度に5つのトークンを生成するんだ。そして、そのシーケンスを再度LLMに通す。これには通常の投機的デコーディングと同じ利点がある。つまり、行列-行列の掛け算ができるから、行列-ベクトルよりもメモリ帯域効率がいいんだ。例えば、クエリが["what", "is", "2+2"]だとすると、プロンプトはPE([...query, MASK*5])になる。出力はoutput = LLM(prompt)で、例えば出力が["what", "is", "2+2", "it", "is", "4"]だとする。NNは位置エンコードされたMASKトークンに直面したとき、k番目の次のトークンを予測するように訓練されているから、5つを一度に得られるんだ。正確には、["what", "is", "2+2", MASK, MASK"]を与えられて"4"を予測するように学習する。明示的に"it"や"is"が必要ないから、"it"や"is"を生成するのと並行して行えるんだ。"is"は["what", "is", "2+2", MASK"]を与えられて予測されるし、これも明示的に"it"がそこにある必要はないから、"it"を生成するのと並行して行える。これはクエリに基づいて次のトークンを生成する普通のやり方だよ。そして、これを投機的デコーディングのセットアップでドラフトとして使うんだ。彼らの主張は、こうやってマルチトークン予測器をドラフトモデルとして使うとうまくいくってこと。明確に言うと、これはまだ因果的で、ディフュージョンモデルが注目されているのは、グローバルなリファインメントができるからなんだ。これはそうじゃない。前の投稿[1]でも説明したけど、MASKトークンの数を増やす、つまり`k`を増やす、つまりマルチトークン予測セットアップで一度に予測するトークンの数を増やすと、すぐに品質が悪くなるんだ。この論文もそれに同意してる。彼らはk=2,3,4,8を試して、8で品質が落ちるのを見たんだ。だから結局、これは自己投機的デコーディングを使った4トークン予測(LayerSkipなし)で、こうしたセットアップの既存の制限を取り除いている。MTPを訓練する面白い方法ではあるね。 [1] https://news.ycombinator.com/item?id=45221692 [2] 計算的には単一のフォワードパスなんだ。アテンションマスクを使うことで、ステップ1と2を1つの操作に融合できる。ただし、まだ2つの別々の損失値があるよ。
> 2025-04-12: 初期コードリリース、トレーニングと推論サポート。 > 2025-04-12: HuggingFaceでI-DLM-8B、I-DLM-32B、I-DLM-8B-LoRAをリリース。これってもう古いの?悪いことじゃないけど、すごく洗練されてるみたい。アップデートがあるか気になるな。
明らかに年のタイプミスだね。4月12日は2日前だし、HuggingFaceでちょっと調べたら、アップロードされたのは5日前だったよ。
ディフューズモデルは、ブロックを生成して内省し、満足のいく出力が得られるまで別のものを生成するような推論ステップを持つことができるのかな?
まあ、最初の出力を使って、ARの「推論」モデルみたいにモデルに再度通すことができるよ。
これを使えば、もっと速いQwen32bができるの?
3倍向上したってことだけど、ボトルネックはメモリ帯域幅から計算に移ったの?それともメモリ帯域幅が支配的なの?
このジョークについていけてないんだけど、誰か簡単に説明してくれない?
これは「3倍改善されたのはわかるけど、ボトルネックはメモリ帯域から計算に移ったの?それともメモリ帯域がまだ支配的なの?」ってことだよね。でも、なんで日本語でコメントしたの?最近は自動翻訳の選択肢がたくさんあるのに!
専門家じゃないけど(ただの猿だし... ;))、ディフュージョンって全部の出力を一度に生成するもんじゃないの?彼らの図を見ると、I-LDMモデルは以前に生成したコンテキストを使って次のトークン(またはブロック)を生成してるみたいだね。
ブロック自己回帰生成は大きなスピードアップをもたらすよ。2つのトークンを同時に出力することで、1つのトークンを出力するよりも(2-ε)倍のスピードアップになるからね。ブロックサイズが大きくなるにつれて、ブロック生成か全て一度に生成するかはあまり重要じゃなくなるくらい速くなるよ。重要なのは、ブロックモード出力に移行することでの品質のトレードオフだね。ここでは、そのトレードオフを最小限に抑えたみたい。
これってsglangに切り替えた方がいいってこと?こういうモデルの機能をvLLMに追加するのってどれくらい難しいの?それとももう対応してるの?