NVIDIA Nemotron 3 Nano Omni
当天最大的 infra-native 模型发布。NVIDIA 推出 Nemotron 3 Nano Omni,是一个开放的 30B / A3B 多模态 MoE,具有 256K 上下文,专为跨越文本、图像、视频、音频和文档的 agentic 工作负载而构建。
分发立即覆盖了整个生态:OpenRouter、LM Studio、Ollama、Unsloth、fal、Fireworks、DeepInfra、Together、Baseten、Canonical 等都宣布了当天的可用性。
关键规格:这是 NVIDIA 第一个 omni 发布,由 Parakeet encoder 提供语音/音频理解能力,目前仅限英语,在 Open ASR 排行榜上 WER 5.95%。多家服务商引用了相比同类开放 omni 模型 约 9 倍的吞吐量。
Mini-SGLang:match 到底在做什么
一句话回忆:match = 查询树里已经存了多少前缀能复用。
类比:你去图书馆找书,librarian(match 函数)告诉你「这本《哈利波特》前 5 章我们书架上已经有了,第 6 章往后是新的」。
视觉化
假设 radix 树现在长这样(每个 [...] 是一个节点):
root
│
[你是健身教练。] ← 14 token 共享前缀
│
[我该怎么练]
╱ ╲
[胸肌?] [腹肌?] ← 已有的两条分叉 来了一个新 prompt:
"你是健身教练。我该怎么练腹肌?还需要注意什么?" match 的工作过程
match(root, prompt_tokens):
step 1: 从 root 开始往下走
"你是健身教练。" → 树里有,共享 14 tokens
step 2: 走到下一个节点 "[我该怎么练]"
"我该怎么练" → 树里也有,共享 5 tokens
step 3: 走到分叉口,看子节点里有没有 "腹"
有,走进 [腹肌?] → 共享 4 tokens
step 4: 继续走 "还需要注意什么?"
子节点没有这个 token → 停!
→ 返回: matched_node=[腹肌?], n_matched=23
(前 23 token 已在树里, 后面是新的) 两个返回值的含义
matched_node, n_matched = match(root, prompt_tokens)
↓ ↓
走到了哪个节点 一共匹配上多少 token
(后续要在它下面挂 (前几个 token 不用
新东西) 重算 KV) 为什么 match 和 insert 必须配对
match → 告诉你「前 23 个不用算」
insert → 把「第 24 个之后的」挂到树上、塞进 KV cache
没 match: 不知道哪些能复用 → 全部重算 → 浪费
没 insert: 算完了没存树 → 下次又重算 → 浪费 Unsloth:LoRA 微调的两种模式
A) 不合并模式(peft 库默认):
推理时: y = (W + α*B@A) * x
→ 推理稍慢一点(多一次矩阵加法)
→ 灵活:一个 base model 可以挂多个不同 adapter
(英文 / 中文 / 医疗 / ...) B) 合并模式(merge_and_unload):
先把 A, B 烘焙进 W: W_new = W + α*B@A
→ 推理跟普通模型一模一样的速度
→ 但 W_new 是 14GB,失去了「轻便」的好处 用 Unsloth 模仿《红楼梦》风格
体积差异很有意思:
Qwen3-8B (base): 16 GB
LoRA adapter: 167 MB ← 小 100 倍 我训练了一个小 adapter,跑了一段「西湖游记,用红楼梦风格」的生成。输出里宝玉和黛玉的对话有那种该有的味道,时代用词和语气都接上了。逻辑上有些地方对不上,但 格式是对的——换更大的 base model,同样的方法应该可以跑通。
TRL:HuggingFace 的 Transformer Reinforcement Learning
TRL = Transformer Reinforcement Learning。HuggingFace 出品的训练库,覆盖 SFT / DPO / PPO / GRPO,全家桶。
今天过了一遍的内容:
- TRL 是什么:HuggingFace 的训练库,SFT/DPO/PPO/GRPO 全家桶
- DPO 数据格式:(prompt, chosen, rejected)
- DPO 公式直觉:推 chosen 上去,推 rejected 下来,但锚住 reference 模型
- on-policy vs off-policy 的区别
- 写过完整 DPO 训练循环 pseudocode
- 跟 TRL 真代码对比,理解 sigmoid loss
- 自己跑通:数据生成 + DPOTrainer + 前后对比测试
- 看到「过拟合警告」(margin 过高、loss 过低)