智能应用

Gemini Nano 和 Gemma 4 揭秘:赋能设备端智能

扬声器

  • Sara Smoot

    Gemma 工程负责人

关于

演讲简介

Gemma 4 将强大的多模态 AI 直接引入 Android 设备。在本讲座中,我们将回顾 Gemma 如何演变为一个专为高效而生的模型家族,并探索边缘优化的 E2B 和 E4B 模型在设备端能实现哪些功能,从视觉和音频理解到智能体函数调用,一应俱全。我们将介绍实现这种效率背后的架构,包括逐层嵌入 (PLE),并展示 Gemma 和 Gemini Nano 如何通过 AICore 协同工作。您将了解量化感知训练 (QAT) 如何在 1.1-3.5 GB RAM 占用空间内保持模型能力,以及多词元预测 (MTP) 如何将解码速度提高 1.5-3 倍,从而实现快速响应的实时体验。

摘要

  • Gemma 4 模型在 E2B/E4B 上提供 128K 词元上下文,并采用 Apache 2 许可,可扩展设备端多模态功能。
  • 多 token 预测草稿模型可将解码延迟时间缩短 40%,并节省 30% 至 40% 的能耗。它们共享基础模型的 KV 缓存,以避免重新生成预填充。
  • 量化感知训练使用有针对性的 2 位量化,将自定义移动量化检查点压缩到 1 GB 以下。
  • Android 应用可以通过 AICore 将这些模型作为 Gemini Nano 4 进行集成,无需手动干预;也可以将这些模型与 LiteRT 捆绑在一起,以便进行自定义微调。

资源

Gemini Notebook

主题

  • gemini-nano
  • gemma-4
  • on-device-ai
  • mobile-ml
  • aicore
  • litert
  • 量化

转写文稿

Gemma 模型简介和演变

  • Sara Smoot

    大家好,欢迎参加本次演讲。

  • 我叫 Sara,是 Gemma 模型方面的工程主管。

  • 今天,我将向大家介绍我们的模型。

  • 我将介绍一些功能,以及我们如何考虑针对移动设备进行设计。

  • 我将介绍我们内置于模型中的技术,这些技术可让模型在移动设备上高效运行。

  • 我将介绍如何访问该模型,以及我们如何与 AICore 集成。

  • 最后,我将通过一些演示来展示该模型,让大家了解该模型的功能和用途。

  • 因此,为了了解未来的发展方向,我们需要先了解过去的发展历程。

  • 我们在 2024 年发布了 Gemma 1。

  • 我们推出了 20 亿和 70 亿参数的模型,仅支持文本,与当时的其他模型相比,规模非常小。

  • 在 Gemma 1 之后,我们推出了 Gemma 2,它引入了一些额外的功能。

  • 我们引入了编码。

  • 我们还推出了一个大型模型,即 27B,它真正扩展了 Gemma 系列的功能。

  • 不久后,Gemma 3 也正式发布。

  • 同样,我们添加了更多功能、多模态,然后推出了一个更小的模型,即一个 2.7 亿参数的模型,因为我们意识到更小的模型确实有很多应用场景,我们正在努力帮助实现尽可能多的在线移动应用场景。

  • 因此,随着每个版本的发布,我们的能力都在不断提升,这是我们有意为之。

  • 我们正在为单设备硬件进行设计,包括手机、笔记本电脑、GPU 等。我们的目标不是打造更大的模型,尽管我们确实将参数规模提升到了 12B 到 27B,但我们的目标是在每次迭代中,在相同的硬件资源限制下,塞入更多功能,因为我们希望保持在设备端运行,保持在本地运行。

  • 因此,我们通过提高效率来实现这一目标。

  • 我将重点介绍我们为 Gemma 4 所做的工作以及具体实现方式。

  • 我们推出了 E2B(我稍后会解释“E”的含义)、E4B、12B 统一模型(我会解释为什么推出这个模型),以及 MoE 模型。

  • 所有这些都是为了帮助证明效率,并让开发者在构建应用和功能时拥有更大的灵活性。

  • 我们来更仔细地了解一下这些功能,您可以在这里看到我们不断添加的功能。

  • 我想指出两点,首先是上下文长度。

  • 我们增加了上下文长度,使其比之前的 Gemma 版本长得多。

  • Gemma 4 的上下文长度最高可达 12.8 万个 token。

  • 较大的模型最多可达 256。

  • 需要注意的是,ML Kit 会对上下文长度设置上限,因此在期望以 128k 上下文长度发布应用之前,请务必先检查您的预算。

  • 但这个长度应该足以让您阅读长文档、进行一些扩展推理、函数调用,并且有足够的预算来处理多模态任务,使用视觉和音频功能。

  • 视频是我们在 Gemma 3n 中新增的一项功能,在 Gemma 4 中,我们进一步强化了这项功能。

  • 现在,我们提供多语言支持。

  • 我们仍在训练多种语言,因此您既有内置语言支持,也有预训练支持。

  • 所有这些都将采用全新的 Apache 2 许可,这让我们感到非常兴奋,因为这将为您提供更大的灵活性,让您能够利用它构建更多内容,同时还能减少很多阻碍。

  • 构建和下载模型的过程更加顺畅。

多模态功能和基准

  • Sara Smoot

    好的,那么视觉,我们如何处理视觉?

  • 具体到 Gemma 4,它的视觉功能支持可变宽高比。

  • 这样一来,系统会获取图片,并保留模型的实际宽高比,而不是进行一些挤压,将其挤压成一个别扭的正方形。

  • 这意味着您的文字和对象不会失真。

  • 这实际上可以显著提升模型的能力。

  • 形状保持不变,OCR 借助这种可变宽高比得到了大幅改进。

  • 视觉功能还能读取图表、电子表格和图形。

  • 它还可以根据视觉提示进行翻译,因此您可以拍摄文字照片,它就能为您翻译这些文字。

  • 它还能对物理世界进行推理。

  • 它可以查看图片,理解事物的位置,理解图片中的内容。

  • 它能做很多事情。

  • Gemma 模型还有一个鲜为人知的功能,那就是可以设置视觉 token 预算。

  • 所以,现在,我的意思是,检查并查看 ML Toolkit 中的内容,但您有很大的范围。

  • 如果你想将更多算力和能量用于高分辨率图片理解,可以进行相应设置。

  • 如果您不想真正利用这种应用场景,可以大幅减少图片 token 预算,并回收大量算力,用于文本应用的模型计算周期。

  • 音频对我们来说是一种相对较新的模式。

  • 我们首次在 Gemma 3n 中引入了该技术。

  • 现在,我们在 Gemma 4 中全面采用了这一技术。

  • 音频功能仅在我们的最小模型中提供:E2B、E4B 和 12B 模型。

  • 它会完全根据音频文件进行转写。

  • 它可以翻译语音。

  • 它开箱即用,支持 35 种以上的语言。

  • 我们还使用 140 多种语言对其进行了预训练,因此,如果您想使用 35 种语言之外的语言,应该能够进行微调,并为不支持开箱即用的语言获得非常好的支持。

  • 我们添加了智能体推理功能。

  • 这也是 Gemma 4 的新特性。

  • 它会制定计划。

  • 它会执行多步操作。

  • 它会使用工具。

  • 它会严格遵循指令。

  • 它会返回结构化 JSON。

  • 它能完成你对智能体模型的所有期待。

  • 我建议您观看“确保您使用的是…”,如果您正在使用…如果您没有使用 ML Toolkit,而是自行操作,请务必注意对话模板。

  • 聊天模板很棘手。

  • 需要小心处理。

  • 如果您使用的是机器学习工具包,所有这些操作都会自动完成。

  • 最后,Gemma 依然具备出色的文本理解能力。

  • 现在,借助更长的上下文,我们能够分析代码、长文档和翻译。

  • 事实上,Android Studio 现已支持在离线模式下使用 Gemma 4 的编码功能。

  • 因此,如果您想离线使用 Android Studio,它将由 Gemma 4 提供支持,帮助您完成编码任务。

  • 关键在于:E2B 和 E4B 足够小,可以在手机上顺利运行。

  • 因此,它在极小的体积内集成了强大的功能。

  • 这实际上是一个非常困难的工程挑战,因此 Gemma 团队对此感到非常自豪。

  • 以下是几个示例,展示了其功能。

  • 左侧显示,模型能够找到笔记本电脑并返回其所在位置的坐标。

  • 然后,应用就能绘制指针,显示笔记本电脑的位置。

  • 在中间,模型能够识别对象,然后在这些对象周围绘制边界框。

  • 这有一些有趣的应用:对象检测、对象避让。

  • 这是一项非常实用的功能。

  • 右侧展示了模型如何读取文本。

  • 因此,这句话的意思是“小心,有猫”。

  • 它还能理解图片中的内容,看到这只猫摆出了一个非常滑稽的姿势,并能翻译和指出下面的文字“可能会发生一些事情”是一个笑点。

  • 我觉得这挺可爱的。

  • 因此,它能识别指向、执行对象检测、执行 OCR 和翻译,而无需任何特殊的视觉流水线。

  • 好的,我们来看看评估数据。

  • 展示能力固然重要,但很多人在看到这些时,我认为他们能从中感受到模型的强大实力。

  • 从最后两列可以看出,E2B 在推理、编码和智能体任务上的表现超越了规模大得多的 Gemma 3 27B。

  • 我们来看看 LiveCodeBench。

  • Gemma 4 的得分为 44,而 Gemma 3 27B 的得分为 29。

  • AIME 也高得多。

  • Tau2 是一种智能体评估,其得分也高得多,展现出强大的实力。

  • 如果参数规模再增加一点,我们的 E4B 模型在所有基准测试中都稳稳超越了 27B 模型。

  • 因此,从 Gemma 3 到 Gemma 4,我们在相同数量的参数中融入了更多功能。

设备端硬件和模型架构

  • Sara Smoot

    那么,我们该如何做到这一点呢?

  • 在不增加模型规模的情况下提升其能力,是一个极具挑战性的难题。

  • 如果只看硬件,手机的内存要小得多。

  • 我的意思是,我们看到的是 12 到 16 GB,而服务器上可能有 80 GB 左右。

  • 带宽也少得多:50 到 80 GB,而服务器则可以达到太字节。

  • 此外,还有严重的电力限制。

  • 因此,在运行模型时,我们必须牢记所有这些因素。

  • 接下来,我将介绍的每种技术都针对这些限制,有助于使模型更适合在移动硬件上运行。

  • 首先,我们不会为每种尺寸都设计一个架构。

  • 每种模型大小都有各自独立的架构。

  • 因此,我们的 E2B、E4B 具有一些特殊元素,我将在接下来的演讲中主要关注这些元素,但我认为,了解我们的 12B 模型没有视觉编码器会很有帮助。

  • 因此,在此模型中,我们移除了视觉编码器,以简化部署并最大限度地减少模型所需的参数数量。

  • 该版本通常针对笔记本电脑硬件。

  • 我们的大型模型旨在展示最强大的功能。

  • 这些模型既有全密集型,也有混合专家型。

  • 混合专家模型也可以在笔记本电脑上运行,我们之所以构建该模型,是因为专家架构可以降低延迟。

  • 因此,在接下来的演讲中,我将重点介绍移动模型,即 E2B 和 E4B,并讨论我们为使它们在手机上顺畅运行而采取的措施。

  • 好,这就是“E”的来源,即 Per-Layer Embeddings(逐层嵌入)。

  • 这是我们采用的一项有趣技术,也是我们添加到模型中的一项创新技术。

  • 如果思考一下模型的运作方式,就会发现模型需要更多参数才能变得更智能。

  • 我们正在努力提高参数效率,但一般来说,要想让模型更出色,就需要更多参数。

  • PLE 的做法是:“好吧,我们需要更多参数。”

  • 但我们没有直接向模型添加更多参数,而是增加了一个额外的嵌入表。

  • 系统会为每一层读取此嵌入表。

  • 因此,您可以这样做:一旦您知道模型需要哪些 token,就可以拉取给定输入序列所需的逐层嵌入,然后仅将这些嵌入加载到模型中。

  • 因此,它能为您提供一个有效的 20 亿参数模型,尽管参数数量本身要大得多。

  • 这就是为什么我们称其为有效参数量 20 亿,因为只有这 20 亿个参数会被加载到内存中。

  • 嵌入表通常保存在闪存中,而不是 RAM 中。

  • 因此,您确实限制了带宽,因为您不必传输那么多参数,但您仍然可以获得更大模型的完整模型功能。

  • 此外,它在设备上占用的 RAM 也更少。

  • 接下来,我们添加了一个起草者模型。

  • 我们为 Gemma 使用的起草者模型是多词元预测模型。

  • 这是一种推测解码。

  • 这样一来,它在每次推理中预测的 token 数量就会比一般的自回归模型更多。

  • 因此,典型的自回归模型不会一次只生成一个 token,而是必须在每个 token 上遍历整个模型。

  • 这些起草者(即 MTP)的作用是,一次预测三到四个词元,然后我们使用主模型来验证这些词元。

  • 如果这些词元被接受,就会被使用,这样我们通常可以在每次传递中获得两、三、四个词元,而不是一次只获得一个词元。

  • 这是一种常见技术。

  • Drafter 模型已经推出。

  • 我们为 Gemma 做的不同且特别的事情是,我们共享了基础模型的 KV 缓存。

  • 因此,对于 E2B,我们会执行完整的预填充,构建缓存,然后起草者模型会使用该 KV 缓存。

  • 因此,对于包含 100 个词元的提示,您实际上可以节省大约 130 毫秒的时间,因为您无需为起草者模型重新生成预填充。

  • 因此,我们的起草者模型比其他起草者模型快大约 30 到 40 倍。

  • 从这些数字可以看出,使用草稿模型后,速度得到了提升。

  • 我们的接受率比大多数起草者模型高 40% 到 60%。

  • 使用草稿模型后,解码延迟时间降低了 40%,能耗也降低了 30% 到 40%。

  • 因此,您可以获得更快的响应、更长的电池续航时间,并且无需更改代码。

  • 这是一个相当简单且支持良好的工具。

量化技术和优化

  • Sara Smoot

    我们的下一项创新是量化。

  • 通常,量化也不是一项新技术,但我们对移动模型格外关注,以确保量化技术能够与移动硬件完美配合。

  • 对于 QAT 模型,我们有几点考虑。

  • 第一种是 QAT,即量化感知训练。

  • 这意味着,在训练时,我们会考虑并认识到我们将进行量化。

  • 这样有助于模型理解参数将被分桶,并有助于保持质量。

  • 这也有助于保持质量,通常,我们可以将模型大小缩减到原来的几分之一。

  • 因此,如果从 16 位模型转换为 4 位模型,并保留所有质量,我们确实节省了大量内存。

  • 因此,E2B 有两种不同的量化版本。

  • 我们有 Q4_0 格式。

  • 这是一种更通用的量化。

  • 此设置可自定义。

  • 这与其他量化库配合得非常好。

  • 您可以尝试不同的量化方法,找到可能适合您用例的量化方法。

  • 我们还采用了一种非常特殊的量化方法,我们称之为移动量化,这种方法在量化方面非常激进,我们已经做了大量研究来优化这种方法。

  • 在大多数运行时中,它并不受支持,但在机器学习套件和 Android Studio 中,它受支持,因此您可以使用它。

  • 您可以在该地区使用。

  • 我们内置了一些创新技术:我们使用静态激活量化。

  • 因此,在进行量化时,通常情况下,如果您要进行动态范围激活,则需要实时计算范围,然后使用该范围进行量化。

  • 静态范围量化,我们已经为您完成了,因此您无需预计算范围,从而节省了时间。

  • 我们还采用了逐通道量化。

  • 我们以通道方式对模型进行结构化和压缩,这种方式非常适合大多数移动硬件。

  • 我们采用了针对性 2 位量化。

  • 因此,2 位量化通常会造成很大的损失。

  • PTQ 很难实现。

  • 我们进行了研究,对模型有了足够深入的了解,知道哪些参数可以压缩到 2 位,并通过量化感知训练取得了良好效果。

  • 这样可以节省大量存储空间,同时几乎不会影响质量。

  • 我们的特殊量化模型大小不到 1 GB,比我们现有的 4 位量化模型还要小得多。

  • 我们在自定义量化中内置的另一项功能是嵌入和 KV 缓存量化。

  • 有很多方法可以做到这两点。

  • 我们已经做过研究,发现这种方式与我们的模型非常契合。

  • 我们已将这些内容整合到这些检查点中。

  • 因此,所有这些措施都会显著减少活跃内存。

  • 这样可以节省大量带宽,因为无需来回移动参数。

  • 而且,你还可以管理和保留长对话等内容,而无需担心空间不足。

系统集成和安全架构

  • Sara Smoot

    好的,我们通过 AICore 进行集成。

  • 因此,您通过 AICore 获得的是 Gemini Nano 4 模型。

  • Gemini Nano 4 是通过 AICore 构建和运行的 Gemma。

  • AICore 可为您提供一些实用的功能。

  • 这是最省心的路径,实际上,我将很快讨论另一条路径。

  • 另一条路径是使用 LiteRT,这是一条更具自定义性、更需要手动操作的路径。

  • 如果您要采用此方式,模型将与您的应用捆绑在一起。

  • 它不会使用托管在设备上的共享模型。

  • 因此,您必须注意内存。

  • 您需要注意自己的能耗。

  • 您必须更加主动地管理手机上的资源。

  • 但您确实可以获得完全控制权。

  • 您可以将微调与 LiteRT 结合使用,从而获得更多自定义选项。

  • 如果您通过 AICore 访问,则可以使用机器学习工具包 API,这是最省心的方法。

  • 使用此功能时,您会获得我提到的所有功能,逐层嵌入会得到妥善处理,并且运行时支持将参数(包括嵌入参数)存储在 RAM 之外。

  • 它已内置 MTP,因此会自动运行。

  • 它还使用了我们的移动量化。

  • 并且它在专为托管和配合该量化而设计的运行时上运行。

  • 因此,它实际上可以根据需要以 2 位精度运行和执行操作,从而节省资源,使其非常高效。

  • 如果您想深入了解,可以观看另外两场已经或即将举行的演讲。

  • David 的机器学习套件讲座涵盖了 Gemini Nano 4 路径、如何使用该模型以及如何通过机器学习套件使用该模型,而 Chintan 和 Fergus 的 LiteRT 讲座将涵盖如何使用 LiteRT 以及如何使用 LiteRT 进行开发。

  • 因此,Gemma 的请求流程如下所示。

  • 有一个 API Surface 会进行一些输入处理,这些都是内置的。

  • 输入处理的一部分是安全信号。

  • AICore 具有一些内置安全功能。

  • 它会检查我们是否在模型中内置了大量安全机制。

  • 这是移动应用的一层额外安全保障。

  • 它会先经过功能配置,然后经过我们的设备端运行时。

  • 在输出端,它还会再次检查安全性。

  • 它会检查输出信号,确保生成安全的输出。

  • 同样,这是我们在模型中内置的安全措施之外,额外增加的一层安全保障。

  • 它还会执行更新,并在应用之间共享。

  • 因此,如果您要构建多个应用,或者不想管理捆绑模型,这确实是一个很好的方法,而且您将获得许多开箱即用的内置功能。

本地设备端演示

  • Sara Smoot

    好的,接下来我将进入演示环节。

  • 这是一个语音助理。

  • 我将在笔记本电脑上进行演示。

  • 请注意,它完全在本地运行,也就是在设备上运行。

  • 它使用 VAD 进行级联。

  • 它会先经过 STT,然后进入 Gemma,最后经过 TTS(即文字转语音模型)。

  • 它正在流式传输,并且也在 E2B 模型上运行。

  • 这是在笔记本电脑上运行的模型,但它与在手机上运行的模型完全相同。

  • 所有这些都可以在手机上完成。

  • 此特定演示是使用 LiteRT 构建的。

  • 应该也可以使用机器学习套件进行构建。

  • 请注意延迟时间,因为没有服务器往返通信,并观察它如何处理中断。

  • Gemma,简单介绍一下你自己吧。

  • 我是 Gemma 4,由 Google DeepMind 开发的大语言模型。

  • 我通过处理文本和图片来提供信息和完成任务。

  • 很好

  • 你能给我简单介绍一下莎士比亚吗?

  • 威廉·莎士比亚是英国剧作家和诗人,被公认为英语文学史上最伟大的作家。

  • 等等。

  • 你知道吗?

  • 我真的很想了解太阳系。

  • 能跟我说说吗?

  • 太阳系由太阳和所有受其引力束缚的天体组成,包括八大行星、矮行星、卫星、小行星和彗星。

  • 太棒了。

  • 你能解释一下黑洞的工作原理吗?

  • 当大质量恒星在自身重力作用下坍缩时,就会形成黑洞,从而产生一个重力极强的时空区域,任何东西(甚至光)都无法逃脱。

  • 太酷了。

  • 谢谢。

  • 不客气。

  • 您还有其他问题需要我为您解答吗?

  • 好了

  • 还有音频助理。

  • 好的,接下来。

  • 这将是一个使用视频功能的本地助理。

  • 它完全离线,为了真正说明这一点,演示是在露营时进行的,据说是在野外。

  • 您需要注意,此模型基于 E4B 模型构建。

  • 它能自然地对话。

  • 我们要向它展示如何执行操作。

  • 它在后台使用工具调用,能够访问手机上的不同内容。

  • 而且非常有趣。

  • Hey Gemma,我们现在连上网络了吗?

  • 没有,我们现在没有连接到互联网。

  • 此警告是什么意思?

  • 那是西班牙语。

  • 那个标志是关于美洲狮栖息地的警告。

  • 该通知指出,美洲狮是当地环境的一部分,如果您遇到美洲狮,应保持谨慎。

  • 这个函数的导数是什么?

  • x 的平方加 7x 加 10 的导数是 2x 加 7。

  • 太有趣了。

  • 啊,你好。

  • Cindy,你好。

  • Gemma,今晚的群组徒步活动是什么时候?

  • 你的群组徒步活动安排在下午 6:00。

  • 今天已经实现

  • 这是一只美洲狮吗?

  • 不,那是一只狗。

  • 真乖

相关资源和后续步骤

  • Sara Smoot

    好了,开始构建吧。

  • 这些是链接,实际上是检查点的链接。

  • 如果您想直接查看检查点和模型代码,这些内容都已公开。

  • 您可以使用机器学习,例如 Gemma、Gemini Nano 4、机器学习套件。

  • 检查点位于 Hugging Face 上,我们的代码位于 Transformers 代码库中。

  • 您可以去看看我们做了什么。

  • 您也可以从 Kaggle 获取检查点。

  • 再次提醒您,如果您想详细了解机器学习套件,请观看 David 的机器学习套件演讲。

  • 稍后,Chintan 和 Fergus 还会带来 LiteRT 演示。

  • 如果您想了解如何通过 LiteRT 在应用中访问和使用模型。

  • 谢谢。

  • 我非常期待看到大家将要构建的内容。