JetAstra/SDAR
SDAR (Synergy of Diffusion and AutoRegression), a large diffusion language model(1.7B, 4B, 8B, 30B)
🚀 什麼是 SDAR?
SDAR(擴散與自回歸的協同)是一系列大型語言模型,結合了兩種不同的生成範式:
- 自回歸(AR) – 傳統的從左到右逐 token 解碼方式,訓練成本低。
- 離散擴散 – 一種並行解碼技術,可一次生成多個 token。
透過融合 AR 模型的訓練效率與擴散模型的高吞吐解碼能力,SDAR 實現了 2~4倍的推論速度提升,同時保持與最先進開源 AR 模型相當的準確性。此專案定位為通用 LLM,同時在科學推理任務(如 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(塊大小控制每步擴散生成的 token 數量)。
⚙️ 如何使用 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 tokens/s
- NVIDIA H200 – > 3700 tokens/s(FlashAttention‑2 + Triton)
3. 使用 LMDeploy 實現生產級服務
LMDeploy(InternLM)提供完整的張量平行推論管道。README 包含一個最小範例,設定 dllm_block_length、dllm_denoising_steps 和自訂去遮蔽策略。
📊 報告性能
| 基準測試 | 模型(大小) | 解碼方式 | 分數(越高越好) |
|---|---|---|---|
| GPQA(科學問答) | 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 代碼庫。 - 推論引擎 – 兩個官方選項:
- JetEngine(基於 nano‑vllm,GitHub 開源)
- LMDeploy(InternLM 的生產伺服器)
- 路線圖 – 技術報告已發布;下一步包括新增更多功能(未指定)與擴展模型庫。
📜 許可與聯絡
- 許可:MIT(見
LICENSE)。 - 聯絡:程雙(上海 AI 實驗室) – chengshuang@pjlab.org.cn;祁碧清(通訊作者) – qibiqing@pjlab.org.cn。
- 社群:提供 WeChat 群組用於非正式討論。
TL;DR
SDAR 是一個開源的擴散增強型語言模型家族,保留了經典自回歸 LLM 的低成本訓練優勢,同時透過並行擴散解碼實現 2~4倍的生成加速。倉儲提供預訓練權重(1.7 B – 30 B)、簡單的 generate.py 腳本,以及兩個高性能推論後端(JetEngine 與 LMDeploy)。專案持續維護,尤其適用於科學推理任務。
相關
- Dispatch
- Dispatch
- Dispatch
- 專案
- Dispatch