JetAstra/SDAR

SDAR (Synergy of Diffusion and AutoRegression), a large diffusion language model(1.7B, 4B, 8B, 30B)

🚀 SDAR とは何か?

SDAR(Diffusion と AutoRegression の統合)は、2つの異なる生成パラダイムを組み合わせた大規模言語モデルのファミリーです。

  • 自己回帰(AR) – 伝統的な左から右へのトークン単位のデコードで、学習コストが低い。
  • 離散拡散 – 並列デコード技術で、一度に複数のトークンを生成できる。

ARモデルの学習効率と拡散モデルの高スループットデコードを融合することで、SDARは 2〜4倍の高速な推論 を実現しながら、最先端のオープンソースARモデルと同等の精度を維持します。このプロジェクトは、一般化モデルとして位置づけられつつ、科学的推論タスク(例:GPQA、ChemBench)においても優れた専門的性能を発揮します。


📦 利用可能なモデル(README時点)

モデル サイズ タイプ Hugging Face リンク
SDAR‑1.7B‑Chat 1.7 B チャット https://huggingface.co/JetLM/SDAR-1.7B-Chat
SDAR‑4B‑Chat 4 B チャット https://huggingface.co/JetLM/SDAR-4B-Chat
SDAR‑8B‑Chat 8 B チャット https://huggingface.co/JetLM/SDAR-8B-Chat
SDAR‑30B‑A3B‑Chat 30 B(MoE) チャット https://huggingface.co/JetLM/SDAR-30B-A3B-Chat
SDAR‑30B‑A3B‑Sci 30 B(MoE) 科学的推論向け https://huggingface.co/JetLM/SDAR-30B-A3B-Sci

すべてのモデルは ブロックサイズ 4、8、16、32、64 をサポートしています(ブロックサイズは1回の拡散ステップで生成されるトークン数を制御します)。


⚙️ SDAR の使い方

1. クイックスタート推論(組み込みスクリプト)

python generate.py \
  --model_dir=JetLM/SDAR-1.7B-Chat \
  --trust_remote_code

スクリプトは Hugging Face からモデルを取得し、🤗 Transformers(>= 4.52.4)でロードして、グリーディ生成を実行します。

2. 高性能バッチ推論用に JetEngine を使用

JetEnginenano‑vllm を基盤とした軽量エンジンで、密度型およびMoE型のSDARモデル、テンソル並列、FlashAttention‑2をサポートします。例(Python):

from jetengine import LLM, SamplingParams
from transformers import AutoTokenizer

model_path = "/path/to/model"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)

llm = LLM(
    model_path,
    enforce_eager=True,
    tensor_parallel_size=1,
    mask_token_id=151669,
    block_length=4,
)

params = SamplingParams(
    temperature=1.0,
    topk=0,
    topp=1.0,
    max_tokens=256,
    remasking_strategy="low_confidence_dynamic",
    block_length=4,
    denoising_steps=4,
    dynamic_threshold=0.9,
)

prompt = tokenizer.apply_chat_template(
    [{"role": "user", "content": "強化学習を簡単な言葉で説明してください。"}],
    tokenize=False,
    add_generation_prompt=True,
)

for out in llm.generate_streaming([prompt], params):
    print(out)

ベンチマーク(SDAR‑4B、ブロックサイズ4、バッチ128):

  • NVIDIA A800 – 1800トークン/秒以上
  • NVIDIA H200 – 3700トークン/秒以上(FlashAttention‑2 + Triton)

3. プロダクションレベルのサービングに LMDeploy を使用

LMDeploy(InternLM)は、テンソル並列推論用の完全なパイプラインを提供します。READMEには dllm_block_lengthdllm_denoising_steps、カスタムアンマスク戦略の設定例が含まれています。


📊 公開された性能

ベンチマーク モデル(サイズ) デコード方式 スコア(高ければ高いほど良い)
GPQA(科学QA) SDAR‑30B‑A3B‑Sci グリーディ(ブロック4、4ステップ) AR‑30B‑A3B‑Sci を上回る
ChemBench SDAR‑30B‑A3B‑Sci グリーディ AR対応モデルを上回る
一般言語タスク(例:MMLU、HELM) SDAR‑1.7B‑Chat グリーディ Qwen3‑1.7B‑AR‑SFT と同等
4B / 8B / 30B についても同様 SDAR‑4B‑Chat、SDAR‑8B‑Chat、SDAR‑30B‑A3B‑Chat グリーディ Qwen3‑ARベースラインと同等

速度動的デコード(信頼度が閾値を超えるとブロック生成を早期終了)を使用すると、静的ブロックデコードに比べて 2倍以上の高速化 が達成され、精度の低下はほとんどありません。モデルサイズが大きいほど速度優位性が増します。


🛠️ 開発とエコシステム

  • 学習フレームワーク – ファインチューニングスクリプトは training/ ディレクトリにあり、LLaMA‑Factory コードベースに依存しています。
  • 推論エンジン – 2つの公式オプション:
    • JetEngine(nano‑vllmベース、GitHubでオープンソース)
    • LMDeploy(InternLMのプロダクションサーバ)
  • ロードマップ – 技術レポートはすでに公開済み。次段階では追加機能(未指定)の追加とモデルズームの拡張を予定しています。

📜 ライセンスと連絡先

  • ライセンス: MIT(LICENSE を参照)。
  • 連絡先: Shuang Cheng(上海AIラボ) – chengshuang@pjlab.org.cn;Biqing Qi(責任著者) – qibiqing@pjlab.org.cn
  • コミュニティ: 非公式な議論用にWeChatグループが紹介されています。

TL;DR

SDARは、従来の自己回帰型LLMの安価な学習を維持しつつ、並列拡散デコードにより 2〜4倍の高速生成 を実現するオープンソースの拡散拡張型言語モデルファミリーです。1.7 B〜30 Bの事前学習済み重み、簡単な generate.py スクリプト、2つの高性能推論バックエンド(JetEngineとLMDeploy)を提供しています。現在も積極的にメンテナンスされており、特に科学的推論タスクに特化した位置づけです。

関連

  • Dispatch
  • Dispatch
  • Dispatch
  • プロジェクト
  • Dispatch