Gemma 3 1B 是 Gemma 开放权重模型系列中的新模型,真正为在移动设备和 Web 上分发应用内小型语言模型 (SLM) 开辟了可能性。在生产环境中部署 SLM 时,模型需要足够小,以便快速下载,运行速度要足够快,以便吸引用户的注意力,此外还要支持广泛的最终用户设备。
Gemma 3 1B 的大小仅为 529MB,通过 Google AI Edge 的 LLM 推断,在预填充时能够以高达 2585 令牌/秒的速度运行,一秒钟内即可处理一页内容。在您的应用程序中纳入 Gemma 3 1B,便可使用自然语言来驱动您的应用程序或从应用程序内数据或上下文生成内容,这些功能均可完全定制和微调的。
在本文中,我们将通过一些在应用中使用 Gemma 3 的案例,引导您了解如何在 Android 上开始使用 Gemma,我们还会深入介绍一些性能指标,并解释所有这些是如何实现的。
凭借完全集成至设备的 Gemma 3 1B 模型,您可以利用 AI Edge 的以下优势:
2.成本:无需云账单,支持免费或免费增值应用。
3.延迟:某些功能需要比服务器调用允许的速度更快。
4.隐私:为无法离开设备或采用端到端加密的数据带来智能。
Gemma 1B 用途极为广泛,您甚至可以针对自己的领域和用例进行微调。以下是我们最喜欢的几个 Gemma 1B 使用案例:
2.游戏内对话框:根据当前游戏状态创建 NPC 对话框。
3.智能回复:在发送消息时为用户提供基于对话的智能建议回复。
4.文档问答:使用 Gemma 3 以及我们新的 AI Edge RAG SDK 来提取长文档并回答用户问题。
第 1 步:加载演示版应用
从 GitHub 下载 Google AI Edge 的预构建演示应用,并将其推送到本地 Android 设备。为确保 Gemma 3 1B 发挥最佳性能,我们建议使用至少 4GB 内存的设备。
$ wget https://github.com/google-ai-edge/mediapipe-samples/releases/download/v0.1.3/llm_inference_v0.1.3-debug.apk\ r
$ adb install llm_inference_v0.1.3-debug.apk
或者,您也可以按照我们的说明从源代码开始构建应用。
Gemma 3 模型文件提供了极大的部署灵活性,可在设备的 CPU 或移动 GPU 上无缝运行。您可以选择在首次启动应用时在 CPU 或 GPU 上运行 Gemma 3,也可以通过返回模型选择对话框在模型和后端之间切换。
在演示应用程序的模型选择界面上,选择您的模型。应用将引导您前往 Hugging Face 登录并接受 Gemma 使用条款。系统将直接从 LiteRT HuggingFace 社区组织下载 Gemma 3 1B(以 int4 量化),然后对其进行一次优化以便在您的设备上运行(但这只需要几秒钟!)。
现在是时候让 Gemma 3 发挥作用了!Gemma 3 由 Google AI Edge 的 LLM 推理 API 提供支持,旨在实现高效的设备端处理。
您可以通过聊天与模型进行交互。或者,您可以为其分配其他文本处理任务。例如,请尝试以下操作:
Gemma 开放权重模型系列的优点之一是由建模社区制作的微调版本。参照此 Colab,了解如何使用自己的数据创建定制 Gemma 3 1B 版本,对其进行量化,并在移动设备(CPU 和 GPU)上自己的应用中运行!
这里的演示和测量针对 Gemma 3 1B 模型,其 int4 参数已通过量化感知训练 (QAT) 完成量化,从而显著节省存储空间并提高解码吞吐量。经基准测试的 Gemma 3 模型支持多个预填充长度,包括 32、128、512 和 1024,并使用 2048 的上下文长度。
上述性能效果是通过广泛的优化努力实现的。这些优化经专门设计,适用于开放权重模型,包括 Gemma。以下是一些关键功能,可显著提升性能并实现全新可重用功能。
量化:我们使用 4 位整数通道权重方案将量化感知训练应用于 Gemma,以保持最佳性能、模型质量和大小。除了权重量化之外,我们还在执行期间将激活值动态量化为 int8,以充分利用 CPU 能力。
更新 KV 缓存布局:KV 缓存用于基于 Transformer 的模型中,以存储之前步骤中的键值对,以便用这些键值对生成后续令牌。对 KV 缓存的读取和写入频繁发生,因此这些操作的高效性非常重要。引入 KV 缓存布局可以减少额外的转置和维度变换,从而优化这些操作。这种优化可将 Gemma 模型的 CPU 延迟改善约 25%,将 GPU 延迟改善约 20%。此外还添加了一个额外的操作,以便高性能地现场更新 GPU 上的 KV 缓存。
减少加载时间:为了充分利用 CPU 和 GPU 处理,我们使用了专门的张量布局。生成这些经优化的权重布局可能需要时间、功率和大量内存。在第一次模型加载期间,系统将权重以优化格式缓存在磁盘上,而后续加载期间,系统会从缓存中读取权重。如果进一步优化张量布局,现有缓存将自动失效,新格式将在下一次模型加载期间存储到磁盘上。
GPU 权重共享:LLM 推理过程有两个阶段:预填充和解码。这些阶段通常为其各自的模型使用单独的资源。为了大大减少 LLM 的内存占用,两个阶段可以共享相同的权重。虽然这项技术并非全新,但这是第一次在 LiteRT 运行库和 GPU 代理中以易于重用的方式完成。对于支持此功能的操作,GPU 代理会检查权重是否已存在于 GPU 内存中,并且可以重复使用。未来,其他模型将能够轻松利用这一功能。
在 Gemma 3 的开发过程中,我们专注于提供卓越的性能,同时为开放权重模型构建可重复使用的基础架构。2025 年,我们计划利用这项工作来支持更广泛的第三方模型。我们打算通过进一步的性能优化和对进一步减少内存使用的关注,继续让大家可以更轻松地在更广泛的设备上使用模型。如欲了解最新开发进展,请在 GitHub 上设置 ai_edge_torch 的通知。更多功能即将推出!
Advait Jain、Akshat Sharma、Alan Kelly、Andrei Kulik、Byungchul Kim、Chunlei Niu、Chun-nien Chan、Chuo-Ling Chang、Claudio Basile、Cormac Brick、Ekaterina Ignasheva、Eric Yang、Fengwu Yao、Frank Ban、Gerardo Carranza、Grant Jensen、Haoliang Zhang、Henry Wang、Ho Ko、Jae Yoo、Jiuqiang Tang、Juhyun Lee、Jun Jiang、Khanh LeViet、Kris Tonthat、Lin Chen、Lu Wang、Malini P V、Marissa Ikonomidis、Mark Sherwood、Matthew Soulanille、Matthias Grundmann、Mogan Shieh、Mohammadreza Heydary、Na Li、Pauline Sho、Pedro Gonnet、Ping Yu、Pulkit Bhuwalka、Quentin Khan、Ram Iyengar、Raman Sarokin、Rishika Sinha、Rishubh Khurana、Ronghui Zhu、Sachin Kotwani、Sebastian Schmidt、Steven Toribio、Suleman Shahid、T.J. Alumbaugh、Tenghui Zhu、Terry (Woncheol) Heo、Tyler Mullen、Vamsi Manchala、Vitalii Dziuba、Wai Hon Law、Weiyi Wang、Xu Chen、Yishuang Pang、Youchuan Hu、Yu-hui Chen、Zichuan Wei