Model reference · open weights
SDLM-D4 is an open-weight language model from OpenGVLab. SDLM-3B-D4 (BF16) weighs 6.8 GB; the smallest configuration that runs it is RTX 3060 12 GB.
Summary of the OpenGVLab/SDLM-3B-D4 model card, 2026-10-01
What it is
| Released by | OpenGVLab |
|---|---|
| Released | 2025-09-29 |
| Parameters | 3.4B |
| VRAM | 6.8 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory | |
|---|---|---|---|---|
| 8K each | 32K each | |||
| RTX 3060 12 GB | 13 | 3 | all 32K | 11.6 GB |
| RTX 4060 Ti 16 GB | 26 | 6 | all 32K | 15.4 GB |
| RTX 3090 24 GB | 52 | 13 | all 32K | 23.4 GB |
| RTX 4090 24 GB | 52 | 13 | all 32K | 23.4 GB |
| RTX 5090 32 GB | 77 | 19 | all 32K | 31.0 GB |
| L40S 48 GB | 120 | 30 | all 32K | 44.0 GB |
| A100 80 GB | 234 | 58 | all 32K | 78.2 GB |
| H100 80 GB | 219 | 54 | all 32K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 271 | 67 | all 32K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 316 | 79 | all 32K | 107 GB |
| H200 141 GB | 418 | 104 | all 32K | 138 GB |
| B200 180 GB | 543 | 135 | all 32K | 176 GB |
| Requests at once | 8K tokens each | 32K tokens each |
|---|---|---|
| 1 | 7.8 GB | 8.7 GB |
| 5 | 9.0 GB | 13.5 GB |
| 8 | 9.9 GB | 17.2 GB |
| 16 | 12.3 GB | 26.8 GB |
| 32 | 17.2 GB | 46.2 GB |
| 64 | 26.8 GB | 84.8 GB |
One card, with vLLM's small-card settings.
Builds
| Build | Params | Precision | Weights | Smallest setup |
|---|---|---|---|---|
| SDLM-3B-D4 (above) ↗ | 3.4B | BF16 | 6.8 GB | RTX 3060 12 GB |
| SDLM-32B-D4 ↗ | 32.8B | BF16 | 65.5 GB | H100 80 GB |
From the model card
This model repository contains the SDLM-3B-D4 model, as presented in the paper Sequential Diffusion Language Models.
[📂 GitHub] [📜 Tech Report] [🚀 Project Page] [🤗 HuggingFace]
We propose a Sequential Diffusion Language Model (SDLM), to cheaply stimulate the parallel prediction capabilities of diffusion models. Specifically, SDLM reduces distribution shift by limiting the prediction range to a fixed block length and enforces decoding order through the longest prefix decoding method, thereby significantly improving prediction efficiency while ensuring generation quality. Our method can be viewed as a further generalization of the autoregressive (AR) paradigm. Therefore, it is possible to use pre-trained AR weights and quickly migrate to the diffusion framework with only minimal instruction fine-tuning.
In the following table, we provide an overview of the SDLM series.
| Model Name | Base Model 🤗 | HF Link 🤗 |
|---|---|---|
| SDLM-3B-D4 | Qwen2.5-3B | https://huggingface.co/OpenGVLab/SDLM-3B-D4 |
| SDLM-3B-D8 | Qwen2.5-3B | https://huggingface.co/OpenGVLab/SDLM-3B-D8 |
| SDLM-32B-D4 | Qwen2.5-32B | https://huggingface.co/OpenGVLab/SDLM-32B-D4 |
We propose a sequential blockwise masked prediction method that reduces error accumulation in diffusion-based generation. Our method leverages the observation that predictions for tokens at lower positional indices typically benefit from more reliable contextual information, resulting in lower deviation and improved accuracy.
SDLM delivers strong performance with significantly faster decoding speed. It operates approximately 2x faster than comparable autoregressive models while matching their accuracy, and achieves up to 5x speedup over other diffusion language models, as evidenced by results on the MATH-500 benchmark.
Trade-off between performance and speed under different confidence thresholds τ for SDLM-3B (B=4) and SDLM-3B (B=8). By adjusting τ, a controllable trade-off between speed and performance can be achieved. SpeedUp denotes the average number of tokens output per forward pass.
Install Dependencies
Key package versions:
transformers==4.37.2
torch>=2.5.0
Download the model generation script sdlm_inference.py to your working directory.
We provide an example code to run SDLM-3B-D4 using transformers.
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from sdlm_inference import SDLM_generate
if __name__ == "__main__":
ckpt_hf = 'OpenGVLab/SDLM-3B-D4'
model = AutoModelForCausalLM.from_pretrained(
ckpt_hf,
attn_implementation="eager",
trust_remote_code=True
).to(dtype=torch.float16)
tokenizer = AutoTokenizer.from_pretrained(ckpt_hf)
prompt = 'Write a Fibonacci function in Python.'
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
response, history = SDLM_generate(
model,
tokenizer,
model_inputs,
max_gen_len = 1024,
temperature = 0,
threshold = 0.5,
n_future_tokens = 4,
alg = 'prob_conf', # prob_conf | entropy_conf | self_speculative
save_history = True,
use_cache = True
)
print('response: ', response[0])
print('=======histroy')
for item in history:
print('cur total token ', item[1])
print(item[0][0])
print('--------')
If you find this project useful in your research, please consider citing:
@article{liu2025sdlm,
title={Sequential Diffusion Language Models},
author={Liu, Yangzhou and Cao, Yue and Li, Hao and Luo, Gen and Chen, Zhe and Wang, Weiyun and Liang, Xiaobo and Qi, Biqing and Wu, Lijun and Tian, Changyao and Zhang, Yanting and Li, Yuqiang and Lu, Tong and Qiao, Yu and Dai, Jifeng and Wang, Wenhai},
journal={arXiv preprint arXiv:2509.24007},
year={2025}
}
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.