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 を使用
JetEngine は nano‑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_length、dllm_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