谷歌全新AI每秒生成1,000+ Token (DiffusionGemma)

BBetter Stack
컴퓨터/소프트웨어게임/e스포츠

Transcript

00:00:00谷歌最近动作频频。上周我刚做了一期关于他们开创性的无编码器
00:00:05Gemma 4 模型的视频,而这周他们又发布了另一个令人震惊的创新模型。它叫 Diffusion
00:00:11Gemma,这个模型速度惊人。它每秒能够生成超过一千个词元(token)
00:00:18之所以能做到这一点,是因为它生成文本的方式与你之前用过的任何模型都完全
00:00:23不同。所以在这期视频中,我们将一探究竟
00:00:29了解 Diffusion Gemma 的工作原理,我还会教大家如何亲自测试它。
00:00:35这会非常有趣,让我们深入探讨吧。
00:00:41你所接触过的每一个语言模型,其基本工作方式都是一样的。它们都是自回归(auto-regressive)模型
00:00:48这是一个花哨的术语,意思就是它们一次只能从左到右生成一个词元。它们写下一个词,
00:00:54然后查看目前已写下的所有内容,再预测下一个词,循环往复
00:00:59不断重复。对于像 Claude 或 GPT 这样的大型商业模型,服务器
00:01:06生成词元时,大部分时间并没有花在计算上,而是花在从内存中加载
00:01:12模型权重上。如果你只为一个用户服务,这其实很浪费。所以服务器会将数百名
00:01:19用户的请求合并在一起,一次性加载权重,并同时针对所有人运行。这样,
00:01:25你就可以用一次内存加载为 256 个用户服务。但当你本地运行模型时,你只是单个用户,
00:01:33所以没有其他人可以和你合并请求。GPU 加载了海量的权重,仅仅为了
00:01:39执行一点点计算来生成一个词元,然后就空闲在那里,等着做下一次重复。在技术术语中,
00:01:46这被称为受限于内存(memory bound)。你昂贵的 GPU 大部分生命周期都在等待下一个
00:01:52词元,而不是真正在进行计算。所以谷歌 DeepMind 研究了这个问题并提出了一个聪明的
00:01:58问题。如果云端通过一次服务 256 名用户来填补闲置时间,那么如果我们把单个用户的
00:02:07这段闲置时间填满会怎样呢?所以与其为 256 个人生成一个词元,如果我们能同时为一个人
00:02:16生成 256 个词元会怎样?这就是 Diffusion Gemma 背后的核心理念。它不是逐词书写,
00:02:23而是从一块“画布”开始,也就是一行由 256 个完全随机的占位词元组成的东西。所以它只是
00:02:31噪音。它的工作是同时修正这块画布上的所有位置,并将其转化为真实的文本。所以通过一次性预测所有
00:02:38256 个词元,你给了 GPU 一大块真正的任务,而不是让它闲置。这样一来,
00:02:46你就把模型从受限于内存转向了受限于计算(compute bound),所有那些浪费的性能终于得到了利用。
00:02:53但这并不像听起来那么简单。一次性预测 256 个词元真的非常困难。
00:03:01因为模型在不知道第 1 到第 253 个词元是什么的情况下,怎么能猜出第 254 个词元呢?
00:03:09这正是会发生的情况。前几个词元生成得还不错,但越往后,
00:03:15它就越会崩溃成乱码。但如果模型不只是运行一次,而是进行多次处理呢?
00:03:21这就是关键技巧。模型反复扫描画布,但现在它
00:03:28可以看到自己之前的猜测了。那些它信心十足预测出来的词元,成了帮助修正
00:03:35较乱词元的线索。最酷的是,它只需要几次处理。远远少于
00:03:42256 这个总词元数。这就是模型速度的来源。你以前可能见过
00:03:49这种技巧。它叫扩散(diffusion)。从噪音开始,然后一步步精修。而
00:03:55这正是驱动 AI 图像生成器的原理。模型学习的方式是
00:04:01在训练时向真实图像中刻意添加噪音,然后学习预测并减去该噪音
00:04:07以还原图像。但你怎么把这个概念应用到文本上呢?那是最棘手的部分。因为对于图像,
00:04:14制造噪音很容易。让某个像素稍微红一点或蓝一点。但对于文本,你怎么让单词
00:04:19the 变得稍微不那么“the”一点呢?对于一个单词来说,那种噪音意味着什么?嗯,DeepMind 想出了
00:04:27一种叫“均匀状态扩散(uniform state diffusion)”的东西。所以,与其在字母上做文章,你把
00:04:32随机替换掉的单词视为噪音。为了破坏训练文本,你会用随机单词
00:04:38替换掉一些真实单词。模型的工作就是找出哪些词是垃圾,并最终通过多次处理修复它们。
00:04:45其实有一种更简单的做法叫掩码扩散(mask diffusion),就是直接把词元涂黑。
00:04:51但那种方法有一个大缺陷。一旦模型确定了一个词,它就永远锁定了。它有着和
00:04:57自回归模型一样的问题。但均匀状态扩散通过始终在每个位置保留某种词元来解决这个问题。
00:05:04这样模型就可以查看它在三步之前接受的单词,判断它是否不再合适
00:05:10然后将其替换掉。所以我们基本上可以自始至终进行自我修正。但这个解决方案
00:05:15也有一个陷阱。扩散模型需要一个编码器来理解你的提示词,还需要一个去噪器来清洗
00:05:23画布。所以 DeepMind 开发了一个编码器-去噪器补丁。它是构建在他们现有的 260 亿参数
00:05:30GEMMA4 模型之上的,在生成你的回复时,它会在两种模式之间切换。在编码器模式下,
00:05:36模型读取你的提示词,试图从中提取一些上下文和指导信息。它将所有这些
00:05:42收集在 KV 缓存中,然后直接传递给去噪器。去噪器的工作本质上就是
00:05:49清洗画布。它通过做两件事来做到这一点。首先,记得普通大语言模型如何为
00:05:56每个位置产生一个置信度分数或逻辑值(logit),但除了最后一个之外把其他所有都丢弃吗?顺便说一下,
00:06:02如果你在这里感到困惑,我之前也做过一期更详细解释大语言模型工作原理的视频。
00:06:07所以如果你感兴趣,可以去看看那个视频。总之,Diffusion GEMMA 不会丢弃
00:06:13这些分数。它保留了所有那些置信度分数,因为画布的每个位置都需要自己的预测。
00:06:19其次,这个去噪器不使用因果注意力机制(causal attention),也就是单词只能
00:06:25向后看这种规则,这是自回归模型的工作方式。取而代之的是,它将其替换为双向
00:06:31注意力机制。所以现在每个词元都可以看到所有方向上的其他词元。因此,对于每个位置,
00:06:38你应用那些置信度分数,观察其他词元,然后一步步慢慢地清洗画布。
00:06:44这就是 Diffusion GEMMA 能够在 H100 GPU 上实现每秒超过 1000 个词元
00:06:51的惊人速度的原因。现在我必须跟你直说,这并不是万能药。有了这些新策略,
00:06:58Diffusion GEMMA 基本上是在用质量换速度。为了达到最高质量的工作,标准 GEMMA 4
00:07:05仍然是更好的选择。这个模型专为关键的本地任务而生,比如内联编辑、代码
00:07:13补全或快速迭代。它在处理非线性任务时特别强大,例如填充代码块的中间部分
00:07:19甚至解决数独谜题,这是正常的从左到右模型非常不擅长做的事情。
00:07:26所以这一切听起来都很引人入胜,让我们亲自测试一下看看它实际的表现如何。
00:07:33谷歌已经在 Hugging Face 上以 Apache 2.0 许可证开源了权重。
00:07:38所以如果你有一块像 RTX 5090 这样强悍的 GPU,你就可以尝试在本地运行它。而且还有一个
00:07:44可以在 Docker 上运行的 VLLM 特殊方案来简化这个过程。但我非常好奇
00:07:51这个模型是否真的能达到每秒 1000 个以上的词元。所以对于这次测试,我将尝试
00:07:58在 H100 GPU 上使用 RunPod 容器来运行它,看看效果如何。顺便说一下,我也
00:08:04发布了一个用于在 RunPod 上运行 Diffusion GEMMA 的模板。所以如果你想复刻这个测试,
00:08:10你所要做的就是在创建新 Pod 时运行该模板。那么要在 RunPod 上进行此测试,
00:08:15我将选择 H100 容器。正如我之前提到的,我创建了一个你可以重复使用的 Diffusion GEMMA
00:08:22模板。所以你只需要点击那个,点击卷磁盘,然后点击“按需部署”。
00:08:28它会花费几分钟来下载容器并启动所有东西。
00:08:34如果我们进入日志,如果你看到“应用程序启动完成”,这意味着 VLLM 已经准备好
00:08:40并且可以通过端口 8000 访问。如果我们打开它,你会看到“未找到详细信息”,
00:08:46但别担心。这意味着它实际上已经在工作了。我们只需要复制这个 URL。所以要
00:08:52配置 Diffusion GEMMA 在 AI 代理终端(比如 OpenCode)中运行,你需要
00:08:58配置你的 OpenCode 设置以访问远程服务器。你可以用这个简单的
00:09:04命令来做到这一点,它会打开配置文件。在这里,我只是指定了我们的 RunPod 服务器,
00:09:11并且选择了 Diffusion GEMMA 模型。你只需要保存这个文件并启动 OpenCode。
00:09:17那么在这次测试中,我打算让它生成一个名为“Ledger”的个人财务追踪仪表盘。
00:09:24让我们看看它生成得有多快。看那个。瞬间,它立刻就开始流式传输了。
00:09:34看它有多惊人的快。天哪。哇。太疯狂了。而在日志里,
00:09:43我们可以看到它平均每秒 700 个词元。所以对于输出阶段,它略有下降,
00:09:50但在推理阶段,它确实达到了每秒 700 个词元。这太疯狂了。那么打开来看看。
00:09:58好吧。这看起来像个仪表盘。不错。好了。我们这里确实有一些分类。
00:10:06如果我们在上面加点东西。哦,它确实把它作为一项支出添加进去了。所以
00:10:13支出并没有真正更新。所以它功能并不完全,但至少有些部分是交互式的。
00:10:20对于下一个任务,让我们看看它是否真的能做一个街机风格的游戏。
00:10:26再次启动它。速度依然快得离谱。好吧。这个花的时间稍微长一点。
00:10:36我们这里实际上有两个文件。有趣,有趣。好吧。所以它发现了一个错别字,然后它
00:10:44再次重新处理了 HTML 文件,这相当不错。好吧。打开这个看看。重启。
00:10:52哦,哇。这个是……它在工作。哦,哇。这太酷了。哇。非常棒。真令人印象深刻。所以游戏是
00:11:03完全可用的,而且它只用了 14 秒就生成了这个游戏。用 14 秒生成了一个这样的游戏。
00:11:11所以虽然他们的营销页面说我们可以在 H 100 上预期每秒 1000 个词元的速度。
00:11:18但那并不是我的观察结果。嗯,我不知道。也许我应该在模板或者我的提示词里做些调整,
00:11:26但尽管如此,我真的被震撼了。它真是个猛兽。好了,各位,这就是 Diffusion Gemma 的大概情况。
00:11:33我认为这是今年最有趣的发布之一,因为它证明了你可以从图像世界中汲取一种截然不同的生成范式,
00:11:38将其应用到你已经训练好的现有模型上,并为单一本地用户
00:11:44设置解锁真正的速度提升。我认为这也为整个快速互动式本地模型家族打开了大门,
00:11:51这些模型利用了你硬件的全部潜能,而不是让它闲置。那么你对
00:11:58Diffusion Gemma 有什么看法?你试过了吗?你会使用它吗?在下方的评论区告诉我们吧。
00:12:04各位,如果你喜欢这类技术分析,请通过猛击视频下方的
00:12:09点赞按钮告诉我。也别忘了订阅我们的频道。我是 Betterstack 的 Andrus,
00:12:14别忘了订阅我们的频道。我是来自 Betterstack 的 Andrus,
00:12:19我们下期视频再见。

Key Takeaway

Diffusion Gemma 通过类扩散的非自回归生成范式,在本地运行环境下显著提升了大型语言模型的推理吞吐量,实现了每秒数百个词元的生成速度。

Highlights

  • Diffusion Gemma 采用非自回归生成方式,通过一次性生成多个词元显著提升了推理速度。

  • 该模型通过将 256 个随机占位符作为初始画布,并利用双向注意力机制进行反复修正,将模型从受限于内存转向了受限于计算。

  • Diffusion Gemma 在 H100 GPU 上的实测速度达到每秒 700 个词元,能够在 14 秒内生成一个可用的 HTML 街机游戏。

  • 该模型架构包含一个编码器用于理解提示词,以及一个利用置信度分数进行迭代去噪的去噪器。

  • Diffusion Gemma 专为内联编辑、代码补全等非线性任务设计,能处理从左到右模型难以解决的填充类任务。

Timeline

传统自回归模型的局限性

  • 大型语言模型通常为自回归模型,一次仅能从左到右生成一个词元。
  • 商业模型通过合并数百名用户的请求来分摊模型权重加载带来的内存开销。
  • 本地运行单个用户时,昂贵的 GPU 大部分时间处于等待下一个词元的闲置状态,处于内存受限(memory bound)模式。

自回归模型逐词生成的工作方式导致大量时间消耗在将模型权重从内存加载到 GPU 的过程中。当无法进行用户请求合并时,GPU 的计算能力未得到充分利用,导致计算效率低下。

Diffusion Gemma 的生成范式

  • Diffusion Gemma 核心理念是将单个用户的闲置时间填满,通过一次性预测 256 个词元来充分利用 GPU 算力。
  • 模型从 256 个随机词元构成的初始画布出发,通过反复扫描并根据之前的预测结果进行修正。
  • 均匀状态扩散技术通过在每个位置始终保留词元,允许模型在生成过程中进行自我修正。

为了克服单次预测 256 个词元的困难,模型采用扩散思想,通过多次扫描修正画布上的乱码。与掩码扩散不同,均匀状态扩散通过保持每个位置的词元状态,解决了模型一旦锁定预测就无法修改的问题。

编码器-去噪器架构解析

  • 模型包含编码器用于读取提示词并生成 KV 缓存,以及去噪器用于清洗画布。
  • 去噪器采用双向注意力机制,允许词元查看所有方向的其他词元,而非仅能向后看。
  • 模型保留了所有位置的置信度分数,通过这些分数和周围词元的信息一步步精修文本。

Diffusion Gemma 构建在 260 亿参数的 Gemma 4 模型之上,引入了特殊的编码器-去噪器补丁。通过双向注意力机制,模型能够实现全局观察,而非自回归模型所强制的因果限制。

实测表现与应用场景

  • Diffusion Gemma 在 H100 GPU 上的平均推理速度达到每秒 700 个词元。
  • 模型擅长处理非线性任务,如代码块中间填充或数独谜题。
  • 该模型已开源,可通过 VLLM 在本地容器中部署。

实测显示,该模型在生成个人财务仪表盘和街机游戏时表现迅速,能在极短时间内产出高质量代码。尽管在纯文本质量上可能不及标准 Gemma 4,但其在交互式本地任务中的速度优势极其显著。

Community Posts

No posts yet. Be the first to write about this video!

Write about this video