元描述: 英伟达方新开源Nemotron-Labs扩散模型——此乃一族3B、8B、14B扩散语言模型,融自回归与扩散生成于一体,使推理速率增至6.4倍。此篇详述其架构、训练之法、三重生成模式,并示以SGLang今时运行之方。
目次
- 速障之壁 自回归大语言模型触及
- 扩散语言模型为何物
- 为何扩散模型困顿 — 直至今日
- 英伟达自回归至扩散之突破:高效扩散模型
- Nemotron-Labs扩散:模型家族
- 三代模式:自回归、扩散、自拟之思
- 性能深析:要数之重
- 引擎之下:块状注意力与 KV 缓存
- 入门指南:以 SGLang 运行
- 此对生产 LLM 基础设施之意义
- 结语与前路漫漫
一、速障:自回归 LLM 所遇
凡君所御之语言模型——GPT-4、Claude、Llama、Qwen——皆以同法生文:一符次第而出,自左而右,每新符皆因循于往符。此谓自回归(AR)生文,自2018年原GPT论文出,此法为语言建模之无上王矣。
然AR之生成,有隐秘之弊。非限于计算之困,乃记忆带宽限制难题。
是故其理在焉:每新得一符,必历全模之推演。此谓取载模之重——或七B之模,重以十亿字节计——自高带宽存器(HBM)入GPU之算核,每解码之步皆然。今之GPU,算术之通量甚巨,然存器之频为塞。故以单次一束服LLM——独用户与君之模语——则GPU之用远未敷。
算术之酷烈也。A100 80GB之GPU,其HBM带宽约2TB/s。7B参数之模型,以FP16计,需约14GB。读尽其权,每步至少需时7ms。每秒30词,则每步之耗,大半用于移权,而非计算。推此及于生产API之端点,容数千并发之用户,则其经济之艰,痛矣哉。
众议纷纭,攻此弊于多途。玄解之术(以小模型草拟,请大模型验证其词元)量化(FP8,INT4以缩微之重),且FlashAttention(FlashAttention)(优化键值缓存访问之序)。此皆于同一根本循环之上,渐次增进耳。
英伟达之Nemotron-Labs扩散——于二零二六年五月廿三日释于HuggingFace——乃取根本迥异之道。非惟优化自回归之循环,乃竟破此循环耳。
2. 扩散语言模型者,何哉?
尔若曾涉图像生成之模(Stable Diffusion、DALL·E、Flux),则已识去噪扩散之理。其法始于纯噪,循条件之信,迭次去噪,直至得通顺之输出。
扩散语言之模(DLMs)则将此理施于文。非自左至右生符,而DLM:
- 始于一串掩蔽或嘈杂之符(类乎图像扩散中之高斯噪声)
- 复行数重去噪精炼之步,每步皆预其洁符之分布
- 数度迭代,全串——或其巨块——渐趋终出
其理之要在于并行。凡标准之AR模型,t之生,必待t-1已立。至若DLM,则一区块诸位,同时精炼。 每次前向传递中皆现。此更计算之格局,迥异从前:非唯内存带宽为序贯权重所限,GPU可终日忙碌于全块之稠密矩阵相乘。
DLM之理念,其本源可溯至 Masked Diffusion Language Models。 (MDLMs) — 若如 MDLM (Sahoo 等人,2024年) 及 SEDD (Lou 等人,2023年) — 皆将文本生成视作对遮蔽词序列之离散去噪。然较之当世最精之 AR 模型,此等模型实有显著之实用短处。英伟达之作,特辩其故,尤重其解之道。
3. DLMs 之所以困顿 — 迄今
众久知扩散语言模型之理论可取。然其未得盛行,实因实践之障重重,致其与AR模型于生产上无以争胜:
一、精准确度之差。 自创之DLM,于标准基准,恒逊于体类相仿之AR模型。离散迭代之去噪法,较之洁净因果语言建模之目标,更难优化。如Dream 7B之模型,于DLM而言,已属惊艳,然犹逊于Qwen3 4B——此乃体类较小之AR模型——于推理与知识之务。
2. 训练不稳 共习去噪于众噪声之级,以双向注意力掩码,其成梯度之景异于因果语言模塑。损之曲线多躁,模型于超参数之择尤敏感。
3. 无 KV 缓存相容之性。 此乃推论之效所扼。键值缓存——即存前令之键值激活以避重算——乃 AR 推论之至要优化。标准 DLM 皆用全双向之注,及于全序,故尔 汝不得。 缓存万物:每一步精炼皆需顾及诸位,以更新之符文状态。此实令理论之吞吐优势尽失。
4. 中空之失配: 诸行DLM之训,于序中随机匀布蒙其字。然临推演之际,模型常具左前缀(即示语),已尽去其蒙,须补右后。此遂成训与推之序失,致质渐损。
诸弊,皆具专技以解于NVIDIA之Efficient-DLM框架。今且探之。
4. 英伟达之AR至DLM之创获:高效DLM
纳莫托罗姆-实验室扩散之根基(及所依之学术论文arXiv:2512.14067)之见,看似简明,实则玄奥:勿自始而训练DLM——将预训练之AR模型化而为DLM。
此可全避精微之隙。汝始得一模型,其权中已具寰宇之识与思辨之能,复教之亦生流散之式。其果乃一模型,既存AR之精,复得流散之并。
然此变,有二要术之难,须解而后可。
块状注意力:存其权重,启键值缓存
注意力之机,乃此题之要。标准自回归模型用因果(下三角)注意力——每词唯及己与诸前词。标准循环动态模型则用双向(全)注意力——诸词互及。
其弊:若化一AR之模,骤易为全双向之注,则已破诸注重所含之统计之理于预训时。键值之射,乃训于因果之境;其"期"不见将来之符。载此于全双向之境,则出渐劣,需极广之再训以复其初。
效-DLM引之块状因果注意力为解法:
- 序列分为大小为B(如32个符号)的非重叠块
- 每块内:双向全注意力(块内每符号皆注目他符)
- 块间:标准自左至右因果注意力(块i可关注块0至i-1)
此混合模式巧思:结构相似于因果注意力,故预训练权重分布得以保留——模型仅需学习局部双向性于块内,非于全序之中。其果则转换甚顺,复质所费远微。
尤要者,此亦复启KV之缓存。盖因注意仍为因果。之阻,既成(既定)之阻之KV激活,可缓存复用,若标准AR模型无异。惟当前之阻,于精炼每步,须复算之。
4.2 位置相倚之词掩
其二者之新创,乃解训练与测试分布不谐之弊。非于训练时均等随机遮蔽词元,Efficient-DLM乃采依位而遮之策,使高概率遮蔽于序列中后位之词元。
其理有如:于推演之际,应答之辞,其前所定之字(或受左邻文境之制甚严),而后之字犹存未决。若使训练之掩码分布,偏于此理,则模型得习去噪之旨,更肖其临试时所遇之实。
4.3 联合自回归与扩散之训练旨趣
非唯求扩散之目而优化,Nemotron-Labs Diffusion乃以之训也。合AR与扩散之失:
L_total = λ · L_AR + (1 - λ) · L_diffusion
何在L_AR此乃标准交叉熵因果语言建模之失也L_diffusion者,蒙面扩散之目也。此联合训练,使模型永为AR之翘楚,而习扩散生成之能。
预训练之基,乃于1.3万亿token之上,取自NVIDIA Nemotron预训练数据集,复增45亿token。 之监督微调数据,用于指令调优之变体。
5. Nemotron-Labs 散布:模型家族
NVIDIA 于 HuggingFace 上发布七种模型检查点,依 NVIDIA Nemotron 开放模型许可(文本模型商业友好):
| 模型 | 参数 | 类型 | 首日下载量 |
|---|---|---|---|
nvidia/Nemotron-Labs-Diffusion-3B |
~4B | 文,令 | 14.7K |
nvidia/Nemotron-Labs-Diffusion-3B-Base |
~4B | 文,基 | 14.2K |
nvidia/Nemotron-Labs-Diffusion-8B |
8B | 文,令 | 24.1K |
nvidia/Nemotron-Labs-Diffusion-8B-Base |
8B | 文,基 | 228K |
nvidia/Nemotron-Labs-Diffusion-14B |
14B | 文,令 | 3.28K |
nvidia/Nemotron-Labs-Diffusion-14B-Base |
14B | 文, | 千一百八 |
nvidia/Nemotron-Labs-Diffusion-VLM-8B |
至九十亿 | 视言之 | 五百九十 |
八亿之基型为下载最多(二日之内达廿八万),显开发者欲以之为本,行定制之精调。
6. 三世之式:AR,流散,自拟之思
Nemotron-Labs Diffusion 之卓绝设计,在于三生成模式皆可自单一检查点启之。毋需异模——惟需 SGLang 中异部署配置而已
。
模式一:自回归 (ar_mode=true)
自左至右之符文生成,与运行其他因果语言模型无异。此模式乃正确性之基准——最宜用于调试、与既有流程进行A/B测试,或需严格遵循特定解码行为之时。
宜用之时:调试、回归测试,或精确复现AR输出。
模式二:扩散/快速扩散器 (diffusion_mode=true)
此模型同步填入32个符号,每块运行多次去噪精炼步骤。置信度阈值决定每次精炼后哪些符号为"锁定"——预测分布足够集中的符号即锁定,从而减少需进一步精炼的位置数.
每块之过程:
- 以掩码之符初始化块位
- 前向传递,分块注意力 → 预测所有位置之词元分布
- 上置信度之阈,则用其符;下则隐之。
- 复行二、三之步骤,直至诸位皆定或步数已极
- 迁于次块,用已定之块符于KV缓存中
达矣每前向传递之令牌数较AR增二点六倍;
宜用之境:高通量批处理,重速轻AR之等值
。
模式三:自推演/线性推演 (self_speculation=true)
此乃至玄之模——融扩散与自回归解码于一合流之环:
- 此模使用流散至草稿也一整块一。逆推候选字词(速,并行)
- 继而用之自回归解码以考证 草稿之符,自左而右,因果相承
- 草稿之任何前缀,若与 AR 所产者合,则 立契
- 过程复始,自首异之位
同一模型,兼为起草与校验之任。输出为 无损于 AR,温为 0.
要数如下:线性规范达~6倍高TPF较之AR,且~865 tokens/秒于NVIDIA B200硬件之能,约四倍于同构之基线。
用之之时生产行为,供汝所需之极速,而质无妥协。
七. 表演深度解析:要紧之数
精準與Qwen3 8B之較
Nemotron-Labs Diffusion 8B於評估基準上,精準度較Qwen3 8B高1.2%。DL轉換非但無損質,反略增之,蓋因聯合AR+擴散訓練目標,實為額外正則化也與Dream 7B(先DL之SOTA)
高效-DLM 8B 成就精准确率增五点四,通量倍增四点五较之Dream 7B(前代DL模型之至善),此乃决绝之进益也。
通量(前向传递每单位数——TPF)
| 方式 | TPF(相对于AR) | 质与AR之辨 |
|---|---|---|
| 自回归 | 一倍(基准) | 完全匹配 |
| 扩散(快速扩散器) | 二点六倍 | 略有不同 |
| 自特线性(线性特) | 约六倍 | 零时无损 |
| 自特二次(二次特) | 约六点四倍 | 零时无损 |
TPF(每前向传递的令牌数)乃一硬件无关之效率指标——其度前向传递每回所获之输出令牌几何,故可资比较不同GPU世代之优劣。
8. 内观:块状注意力与 KV缓存
今观块状注意力机制如何于DLM环境中使KV缓存得施。
标准AR解码中,KV缓存存储每生成之先前标记之钥与值投影。当生成标记时待翻译之文本。,模型注目于缓存之KV于符0...(t-1)乃计算新之Q、K、V于位吾不知其所谓也。每步仅一 O(1) 缓存更新。
凡标準之雙向DLM,此不可為:蓋每一符號皆應諸他符號,而符號之值隨每步精煉而變,則每步須重計其KV之全矩——每精煉,O(n²)之耗,無緩存之益.
塊式因果注意,以二級階層解此:
Sequence: [Block 0 | Block 1 | Block 2 | ... | Block N]
For a token in Block i:
- Attends to ALL tokens in blocks 0...(i-1) → cached KV (never recomputed)
- Attends to ALL tokens within Block i → bidirectional, recomputed each step
- CANNOT attend to tokens in blocks (i+1)+ → causal constraint maintained
以三十二字为块,二千零四十八字为序,九十八点四成之KV计算,悉自缓存而出,于每精炼之刻,
今示以PyTorch筑注掩之法:
import torch
def build_block_causal_mask(seq_len: int, block_size: int) -> torch.Tensor:
"""
Build a block-wise causal attention mask.
Within each block: full bidirectional attention (True)
Across blocks: causal left-to-right attention (True only for past blocks)
Future blocks: masked out (False → -inf in softmax)
Returns a boolean mask of shape [seq_len, seq_len],
where True = can attend, False = masked.
"""
mask = torch.zeros(seq_len, seq_len, dtype=torch.bool)
num_blocks = seq_len // block_size
for block_i in range(num_blocks):
q_start = block_i * block_size
q_end = q_start + block_size
# Attend to all past blocks (causal across blocks)
for block_j in range(block_i):
kv_start = block_j * block_size
kv_end = kv_start + block_size
mask[q_start:q_end, kv_start:kv_end] = True
# Attend fully within current block (bidirectional within block)
mask[q_start:q_end, q_start:q_end] = True
return mask
# Example: 4 blocks of 4 tokens each = 16 token sequence
mask = build_block_causal_mask(seq_len=16, block_size=4)
print(mask.int())
# Output (each row = query token, each col = key token):
# Block 0 rows: [1111 | 0000 | 0000 | 0000]
# Block 1 rows: [1111 | 1111 | 0000 | 0000]
# Block 2 rows: [1111 | 1111 | 1111 | 0000]
# Block 3 rows: [1111 | 1111 | 1111 | 1111]
所成之掩码,具全连接四乘四之对角块(块内双向),块界间呈下三角构(块间因果)。此乃AR因果掩码,粗化为块粒度——正因如此,预训练AR权重分布得以保全.
9. 初试:以SGLang运行
SGLang乃Nemotron-Labs Diffusion之推荐服务框架,经由PR #25803(即将并入主分支)集成。兹附完整可用之例示.
9.1 安装
# Install SGLang with DLM support
pip install "sglang[all]>=0.4.5" --extra-index-url https://flashinfer.ai/whl/cu124/torch2.5/
# If the PR hasn't merged to main yet, install from the DLM branch directly:
# git clone https://github.com/sgl-project/sglang.git
# cd sglang && git fetch origin pull/25803/head:dlm-support
# git checkout dlm-support && pip install -e ".[all]"
# Pull the model weights
pip install huggingface-hub
huggingface-cli download nvidia/Nemotron-Labs-Diffusion-8B \
--local-dir ./models/Nemotron-Labs-Diffusion-8B
9.2 服务:启动SGLang服务器
# Mode 1 — Autoregressive (standard baseline)
python -m sglang.launch_server \
--model-path ./models/Nemotron-Labs-Diffusion-8B \
--port 30000 --tp 1 --dtype bfloat16 \
--algorithm ar_mode
# Mode 2 — Diffusion (FastDiffuser): highest raw throughput
python -m sglang.launch_server \
--model-path ./models/Nemotron-Labs-Diffusion-8B \
--port 30000 --tp 1 --dtype bfloat16 \
--algorithm diffusion \
--block-size 32 \
--confidence-threshold 0.9
# Mode 3 — Self-Speculation (LinearSpec): lossless 6x speedup
python -m sglang.launch_server \
--model-path ./models/Nemotron-Labs-Diffusion-8B \
--port 30000 --tp 1 --dtype bfloat16 \
--algorithm linear_spec \
--draft-block-size 32
九有三 推论:Python 客户端(OpenAI 兼容 API)
import openai
import time
# SGLang exposes an OpenAI-compatible API endpoint
client = openai.OpenAI(
base_url="http://localhost:30000/v1",
api_key="EMPTY" # SGLang doesn't require auth by default
)
PROMPT = """You are an expert in distributed systems.
Explain the CAP theorem and its practical implications for a microservices
architecture. Be specific with concrete trade-off examples."""
def benchmark_mode(label: str, mode_hint: str = ""):
"""Run a generation and measure wall-clock tokens/second."""
start = time.perf_counter()
response = client.chat.completions.create(
model="nvidia/Nemotron-Labs-Diffusion-8B",
messages=[{"role": "user", "content": PROMPT}],
max_tokens=512,
temperature=0, # T=0 → LinearSpec is lossless vs AR
extra_body={
"mode": mode_hint # "ar", "diffusion", or "linear_spec"
} if mode_hint else {}
)
elapsed = time.perf_counter() - start
tokens = response.usage.completion_tokens
tps = tokens / elapsed
print(f"\n{'='*60}")
print(f"Mode : {label}")
print(f"Output : {response.choices[0].message.content[:200]}...")
print(f"Tokens : {tokens}")
print(f"Time (s) : {elapsed:.2f}")
print(f"Throughput : {tps:.1f} tok/s")
print(f"{'='*60}")
return tps
# Compare all three modes
ar_tps = benchmark_mode("Autoregressive", mode_hint="ar")
diff_tps = benchmark_mode("Diffusion (FastDiffuser)", mode_hint="diffusion")
spec_tps = benchmark_mode("Self-Spec (LinearSpec)", mode_hint="linear_spec")
print(f"\n📊 Speedup Summary:")
print(f" Diffusion vs AR : {diff_tps/ar_tps:.2f}×")
print(f" LinearSpec vs AR : {spec_tps/ar_tps:.2f}×")
九有四 快速启动于 HuggingFace Transformers(AR 模式)
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "nvidia/Nemotron-Labs-Diffusion-8B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
messages = [
{"role": "system", "content": "You are a helpful AI assistant."},
{"role": "user", "content": "Explain masked diffusion in 3 sentences."}
]
input_ids = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)
with torch.no_grad():
output_ids = model.generate(
input_ids,
max_new_tokens=256,
do_sample=False,
use_cache=True
)
response = tokenizer.decode(
output_ids[0][input_ids.shape[-1]:],
skip_special_tokens=True
)
print(response)
注: 此径仅授AR之境。欲求扩散与自观之境,须依SGLang之融,盖其能行定制解环也。
transformers
10. 此于生产LLM基构之谓何
迟滞与通量之衡,重议之
经典之LLM服务困境,在于吞吐优化(批量大增、连续批处理)增迟滞,而迟滞优化(小批量、低KV缓存压力)损吞吐。自推测于DLM中,稍解此困:批量为1时,LinearSpec较AR于同硬件,每秒得令牌多四至六倍。此乃AR模型最为甚之境。 事多不逮,而 DLM 之利为最。
费用之效
批量一增四倍,则用 GPU 计算减四分之一,可同侍四倍之用户,或等量增四倍之用户于同 GPU 群。今 B200/H100 之价,每时四至八金,此诚诸司运 LLM API 之巨省也。
填空补全与代码编辑
动态语言模型于填空补全之务,天资独优。自动回归模型处理填空,颇感不便,需特殊训练,并调整提示格式,方能回溯后缀。动态语言模型可双向生成文本,自然能兼顾块内前缀与后缀之文境——此使Nemotron-Labs扩散模型尤为适于代码编辑之代理与行内补全。
推论预算控制
在扩散模式中,可于运行时调节数据去噪之步数。步数少则速,然质或稍逊;步数多则缓,然质更优。此乃一质速相权之连续权衡也。 不需再训练而于推理时使用 — 此乃 AR 模型所难为也。生产系统可于流量高峰时动态减少扩散步数,于低负载时期增加之。
何时宜守 AR
夫涉于长境之务(百千以上之符),而 KV 缓存主其内存,则效率之状,未甚明也。若流式输出,用户睹符如见,则分块生成,非精研渲染之术,或感不谐。至若需严限解码之务(文法所限之生,束搜索之术),则氤氲之环,尚需更添器用功夫。
11. 结论 &前路漫漫
流散语言模型之构想,久为人所期许,然恒为诸般实务所阻:精准确度之差、训练之不稳、及KV缓存之失。英伟达之Efficient-DLM与Nemotron-Labs之流散模型,皆以具体之原理,系统解此诸障——分块因果之注目,位相关之遮蔽,并合AR与流散之训练目标。
其果乃一模范之家,兼具:
- ✅ 首流之AR模型(兼容旧版,LinearSpec模式下无损)
- ⚡ 速增2.6–6.4倍之推论引擎(视模式与硬件而定)
- 🔲 更优之中段填补模型 之建筑设计
- 🎛️ 可调之质速拨 部署之际无需再训
初日二十四时下载逾二万四千,SGLang集成将即,此乃二六年间LLM推理域中最为实用之开源发布也。
次域之境:将AR至DLM之转化法式,施于境域之巨模(70B以上),探求超越8B VLM之预览,多模态DLM之境;并构约束解码,流式令牌渲染,及精调之器,以应DLM之目.
若尔构LLM之应用,重推演之费与迟滞,是时也,宜始试Nemotron-Labs之扩散也. 自回归之环,已展其功,然语言模型推演之新章,显见并行之势矣。
🔗 资源
- 🤗 Nemotron-Labs 散布模型集于 HuggingFace
- 📄 高效-DLM 技术论文 — arXiv:2512.14067
- 💻英伟达Megatron桥接训练代码(GitHub)
- 🔧 SGLang DLM集成PR #25803
著于丙辰年五月初四——依乎HuggingFace博客文及arXiv:2512.14067(Efficient-DLM)。性能之数反映已发之基准;请验诸汝之具器与事功。
















