【免费下载链接】SDLLM-EsoLM-1.7B-Base
SDLLM-EsoLM-1.7B-Base 是 NVIDIA 发布的 1.7B 参数语言模型,融合了自回归(AR)与掩码扩散(masked diffusion)两种训练目标。本文带你逐行拆解这张模型卡:2.1T tokens 训练数据从何而来、2048 上下文如何配置、EsoLM 算法有何特别,以及 6 大基准测试的成绩单到底怎么看。📖
一、先认识 SDLLM-EsoLM-1.7B-Base:它是什么?
这不是一个普通的 GPT 式语言模型。它属于**扩散语言模型(diffusion language model)**家族,是 NVIDIA 研究论文《Scaling Beyond Masked Diffusion Language Models》的一部分,用来研究"扩散范式能否用于文本生成"这一前沿问题。
用一句话概括它的技术定位:
| 维度 | 说明 |
|---|---|
| 模型类型 | Decoder-only Transformer |
| 参数量 | 1.7B(17 亿参数) |
| 训练目标 | 自回归 + 掩码扩散联合训练 |
| 上下文长度 | 2048 tokens |
| 输入/输出 | 纯文本(字符串进,字符串出) |
| 支持语言 | 英语 |
| 许可协议 | CC BY-NC 4.0(仅限研究用途,禁止商用) |
⚠️重点提醒:该模型基于 CC BY-NC 4.0 协议发布,明确声明"仅用于研究和开发目的,不得用于商业应用"。
它还明确支持 NVIDIA Ampere、Hopper、Blackwell 三代 GPU 架构(如 A100、H100、B200 系列),运行环境推荐 Linux。
二、训练数据拆解:2.1T tokens 都来自哪里?📊
这是这张模型卡里最有含金量的部分之一。
数据规模一览
| 指标 | 数值 |
|---|---|
| 训练数据总量 | 2.1T tokens(2.1 万亿) |
| 数据集数量 | 1 个 |
| 数据模态 | 纯文本 |
| 采集方式 | 自动化 + 人工(混合) |
| 标注方式 | 无需标注(自监督预训练) |
2.1 万亿 tokens 是什么概念?作为参照,普通小模型通常只用几亿到几百亿 tokens 训练。2.1T 意味着训练规模远超同参数量的典型模型——这是一种典型的"数据堆料"式研究设计:用远超参数规模的数据量,验证扩散语言模型在充分训练后的表现上限。
数据来源:Nemotron Nano 2 数据集
模型卡 README.md 中明确写道,训练数据来自:
2.1T tokens from Phase 1 and Phase 2 mixtures of the Nemotron Nano 2 dataset. Text data primarily in English.
翻译过来就是:Nemotron Nano 2 数据集的 Phase 1 和 Phase 2 两个阶段的数据混合,以英文为主。Nemotron Nano 2 是 NVIDIA 官方公开的数据集配方论文,其特点是按"阶段"(Phase)组织数据来源与配比,兼顾网络文本、代码、书籍、数学等多类语料的平衡。
仓库内的训练配置文件也印证了这一点:config.yaml 中data.mode被设为phase2,说明这个 checkpoint 的训练流程基于 Phase 2 阶段的数据配比。
三、模型架构拆解:2048 上下文的秘密 🔍
骨干网络:DiT 风格的 Transformer
从 config.yaml 可以看到模型的核心规格:
| 参数 | 值 | 含义 |
|---|---|---|
hidden_size | 2176 | 隐藏层维度 |
n_blocks | 28 | Transformer 块数量 |
n_heads | 17 | 注意力头数 |
length | 2048 | 上下文长度 |
type | ddit | DiT(Diffusion Transformer)风格骨干 |
cond_dim | 128 | 条件向量维度 |
"ddit" 即Diffusion Transformer——这是扩散模型领域(最初来自图像生成)的经典架构命名,说明文本这里复用了图像扩散模型的建模思路。
为什么是 2048 上下文?
2048 是一个"够用且经济"的选择:
- 生成画布(canvas):采样时模型默认输出完整的 2048-token 续写,
--max-new-tokens只用于裁剪展示长度(见 sample.py); - 研究定位:该仓库是研究用途的自包含推理包,2048 的窗口足以覆盖大多数评测任务与生成演示,同时降低显存开销。
四、核心算法解读:什么是 EsoLM?🧠
EsoLM 是这个模型名字的"灵魂",也是论文的核心贡献。
AR vs MDLM vs EsoLM
仓库 algo.py 中同时实现了四类算法:AR(纯自回归)、MDLM(掩码扩散)、EsoLM、DUO_BASE。从 sdllm.py 的模型注册逻辑也能看到它们的对应关系。
| 算法 | 生成方式 | 特点 |
|---|---|---|
| AR | 逐 token 自左向右生成 | 经典 GPT 式,Gumbel-max 采样 |
| MDLM | 祖先式掩码扩散 | 每步"揭开"一部分掩码 token |
| EsoLM | 首达式祖先采样(first-hitting ancestral) | 按动态排序顺序决定去噪次序,本仓库主角 |
| DUO | 均匀状态后验采样 | 双向扩散变体 |
EsoLM 的两个关键机制
- 动态索引排序(shuffle):查看 algo.py 的
_sort_indices方法,EsoLM 会把掩码 token 按随机偏移排序,生成顺序不再严格从左到右,而是由模型在训练中学到的顺序驱动。这正是config.yaml中diffusion_shuffle: true与sequential_shuffle: true的作用。 - log-linear 噪声调度:config.yaml 中
noise.type与parameterization均为log-linear,即按对数线性曲线控制加噪强度——这是 MDLM 系列论文的经典设定。
💡 简单理解:自回归模型像"口述作文"(一字接一字),而 EsoLM 像"填词游戏"——先遮住一片区域,再按学出的智能顺序逐个揭晓,且左右两侧可以"并行"生成。
五、性能全景:6 大基准成绩单怎么看?📈
模型卡 README.md 给出了 0-shot 条件下的评测结果:
| 基准测试 | 得分 | 考察能力 |
|---|---|---|
| ARC-Easy | 46.0 | 科学常识推理 |
| BoolQ | 53.4 | 自然语言推理(是/否判断) |
| OBQA(OpenBookQA) | 29.6 | 科学多跳推理 |
| PIQA | 55.6 | 日常物理直觉 |
| RACE | 26.1 | 中学英语阅读理解 |
| SIQA(Social IQA) | 36.1 | 社交情境理解 |
如何理性看待这些分数?
- 横向对比要看规模:1.7B 的基座模型在这些基准上的分数普遍不高(如 OBQA 29.6 接近四选一随机基线 25 的水平),这与同参数量的自回归小模型表现处于同一量级,说明该模型的主要价值在于研究扩散范式,而非刷榜;
- 评测方式很讲究:扩散模型无法像 AR 模型那样直接算 token 似然,仓库用蒙特卡洛条件似然估计器(见 eval/lm_eval.py 的
_mdlm_ll与_esolm_ll方法)来公平计算分数,默认 32 个 MC 副本; - BoolQ 53.4 与 PIQA 55.6 是亮点:在"二选一"判断类任务上,该模型明显高于 50% 随机基线,说明其语义理解能力是真实存在的。
六、5 分钟上手:采样与评估 🔧
安装依赖
仓库自带完整依赖清单 requirements.txt:
pip install -r requirements.txt一行命令生成文本
官方推荐的采样入口是 sample.py:
python sample.py nvidia/SDLLM-EsoLM-1.7B-Base --prompt "In a quiet village, the old clock tower rang at midnight, and" --num-samples 1几个实用参数(完整列表见python sample.py --help):
--max-new-tokens:只裁剪展示长度,不影响生成画布--top-p 0.9:核采样,README 建议对质量有要求时可以明显提升生成效果--verbose full:查看模型加载与有效参数量等详细信息
📌 默认采样配置:扩散模型使用1024 步反向去噪、top_p=1.0(不做核过滤)、贪心最终去噪、温度 1.0,并使用编译后的 FlexAttention 加速注意力计算(首次运行新画布形状会有编译预热,之后会明显变快)。
复现评测成绩
评测入口在 eval/ 目录,脚本 eval/run_likelihood.sh 可直接复用:
accelerate launch -m eval.lm_eval --model dLLM \ --model_args model_path=nvidia/SDLLM-EsoLM-1.7B-Base \ --tasks arc_easy,boolq,openbookqa,piqa,race,social_iqa七、算账时刻:训练它花了多少?💰
模型卡中罕见地披露了训练的"能源账本"(内部估算值):
| 指标 | 数值 |
|---|---|
| 累计计算量 | 2.14 × 10²² FLOPs |
| 估算能耗 | 50,176 kWh |
| 估算碳排放 | 20.59 tCO₂e |
这相当于一个家庭数年用电量的级别,直观体现了"2.1T tokens × 1.7B 参数"训练的规模。对于关心 AI 能耗的研究者,这份披露是模型卡中少见的亮点。
八、仓库结构与相关文件速查 📁
| 文件 | 作用 |
|---|---|
| config.yaml | 完整训练/采样超参:算法名esolm、模型规格2121M、采样 1024 步等 |
| model.ckpt | 模型权重(约 24.5 GB,仓库镜像中为 LFS 指针) |
| tokenizer/tiktokenizer.json | tiktoken 词表 |
| algo.py | AR / MDLM / EsoLM / DUO 四种算法实现 |
| sdllm.py | 模型加载工具:自动解析本地目录或 Hub 仓库 |
| sampling.py / samplers.py | 采样主流程与各家族采样器 |
| eval/lm_eval.py | 蒙特卡洛似然评测桥接 lm-eval-harness |
| README.md | 官方模型卡(本文的拆解对象) |
九、总结:这张模型卡告诉我们什么?✅
- 研究价值大于实用价值:SDLLM-EsoLM-1.7B-Base 是扩散语言模型研究线的产物,CC BY-NC 协议也明确了它的研究定位;
- 训练数据是核心卖点:2.1T tokens 的 Nemotron Nano 2 两阶段混合数据,让 1.7B 小模型享受了"大数据"待遇;
- EsoLM 算法是关键创新:动态排序 + 首达式采样,让生成不必死板地从左到右;
- 性能表现符合预期:基准分数与同规模模型相当,其意义在于验证扩散范式"能打到什么水平";
- 自包含且易上手:采样、评测、配置全部开箱即用,一条命令即可跑通。
如果你是扩散语言模型方向的研究者,这个仓库值得 clone 下来细读algo.py和samplers.py;如果只是围观,六个基准分数和 2.1T 训练数据的组合,已经足够说明 NVIDIA 在"文本扩散"这条路线上投入了真金白银。🚀
【免费下载链接】SDLLM-EsoLM-1.7B-Base
相关推荐
解剖DiT骨干:SDLLM-EsoLM-1.7B-Base的混合注意力掩码、adaLN与FlexAttention编译加速
解剖DiT骨干:SDLLM EsoLM 1.7B Base的混合注意力掩码、adaLN与FlexAttention编译加速 SDLLM EsoLM 1.7B B
从掩码扩散到均匀态扩散:SDLLM-Duo-1.7B-Base 的 ELBO 训练目标与 Log-Linear 噪声过程原理拆解
从掩码扩散到均匀态扩散:SDLLM Duo 1.7B Base 的 ELBO 训练目标与 Log Linear 噪声过程原理拆解 SDLLM Duo 1.7B
Qwen3-14B-Base发布:36T tokens训练,支持32K上下文
Qwen系列最新一代大语言模型Qwen3 14B Base正式发布,该模型通过36万亿tokens的海量训练数据与32K超长上下文能力,实现了多语言理解、复杂推
人工智能大模型深度学习NLP
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考