什么是 Gemma 3n?
Gemma 3n 是 Google AI 最新推出的多模态开源权重模型家族,旨在在手机、平板和笔记本等日常设备上高效运行。它基于全新的 MatFormer 架构,并支持逐层嵌入(PLE)参数缓存,在降低内存与计算成本的同时实现了出色的端侧性能。
与传统的 视觉-语言模型(VLM)类似,Gemma 3n 支持文本、图像和音频模态。其中“3n”变体专为边缘部署优化,可通过 Google 的 AI Edge SDK 在 CPU、NPU 或移动 GPU 上轻量运行。
以下是 Gemma 3n 的主要特性:
- 多模态输入: 支持文本与图像输入,用于有依据的视觉推理
- 端侧推理: 模型下载完成后无需网络
- 参数高效: 通过选择性激活、PLE 缓存与 MatFormer 嵌套降低内存开销
- 移动端优化: 通过 MediaPipe 和 Google AI Edge 工具在 Android 上支持 INT4 与 FP16 推理
- 开放权重: 许可用于负责任的商业用途与微调
重要提示:尽管 Gemma 3n 的完整架构支持音频输入,但公共预览版暂不提供音频能力。
如何获取 Gemma 3n?
您可以通过以下三种方式试用 Gemma 3n:
- Google AI Studio:在浏览器中最快上手的方法。前往 Google AI Studio,在模型列表中选择 Gemma 3n。目前仅提供“gemma-3n-e4b-it”变体可用。
- Hugging Face 预览:Gemma 3n 的
.task文件以 Google 的ai-edge-litert格式发布。您可以申请访问 Hugging Face 模型页面,并将模型下载到本地进行推理。.task文件是一种紧凑、适配运行时的打包格式,内含预编译的模型、元数据与所需配置,专为通过 Google 的 AI Edge SDK 在设备端快速且安全地执行而设计。 - 在设备上运行(推荐):使用 Google 提供的 Gemma Gallery App,在您的 Android 手机上直接运行 Gemma 3n。该方式支持通过本地模型进行完整的图像与提示交互。
接下来,我将带您构建一款可用的 Android 应用,利用 Gemma 3n 处理图像与文本提示。我们将以 Google 的官方 Gallery 仓库为基础,并自定义使其直接打开到Ask Image页面,避免干扰。
步骤 1:克隆并设置应用
首先,新建项目并克隆 Google 的原始仓库。
步骤 1.1:创建新的 Android Studio 项目
在您的电脑上,用Android Studio 以新项目方式打开,并选择 Empty Activity。

步骤 1.2:设置新的空 Activity
接着填写您的 Activity 名称(例如 “Ask_Image_Demo”),其余保持默认。然后点击 Finish。

步骤 1.3:克隆主仓库
现在,在 Android Studio 内打开终端(左下角),执行以下 bash 命令:
git clone https://github.com/google-ai-edge/gallery
cd gallery/android

这将打开您的项目。您可以在左侧标签看到所有项目文件。

步骤 2:只保留 Ask Image 任务
接下来,我们修改几个文件,使应用打开后直接进入 Ask Image 页面。前往 Tasks.kt 文件,路径:app/src/main/java/com/google/ai/edge/gallery/data/Tasks.kt。为将应用功能限定为仅“Ask Image”,做如下修改:
修改前:
/** All tasks. */
val TASKS: List<Task> = listOf(
TASK_LLM_ASK_IMAGE,
TASK_LLM_PROMPT_LAB,
TASK_LLM_CHAT,
)
修改后:
/** All tasks. */
val TASKS: List<Task> = listOf(
TASK_LLM_ASK_IMAGE
)
这将禁用 Prompt Lab 和 Chat 等其他演示,确保只显示 Ask Image。
步骤 3:自动导航至 Ask Image 界面
在 GalleryApp.kt(位置:// app/src/main/java/com/google/ai/edge/gallery/GalleryApp.kt)中,更新 LaunchedEffect 以自动导航到图像页面。这样应用会直接打开 Ask Image 界面,跳过默认的任务选择屏幕。
修改前:
@Composable
fun GalleryApp(navController: NavHostController = rememberNavController()) {
GalleryNavHost(navController = navController)
}
修改后:
package com.google.ai.edge.gallery
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.navigation.NavHostController
import androidx.navigation.compose.rememberNavController
import com.google.ai.edge.gallery.data.TASK_LLM_ASK_IMAGE
import com.google.ai.edge.gallery.ui.llmchat.LlmAskImageDestination
import com.google.ai.edge.gallery.ui.navigation.GalleryNavHost
@Composable
fun GalleryApp(
navController: NavHostController = rememberNavController()
) {
// as soon as GalleryApp comes up, navigate to Ask-Image
// and drop “home” off the back-stack:
LaunchedEffect(Unit) {
TASK_LLM_ASK_IMAGE.models
.firstOrNull() // safety: don’t crash if the models list is empty
?.name
?.let { modelName ->
navController.navigate("${LlmAskImageDestination.route}/$modelName") {
popUpTo("home") { inclusive = true }
}
}
}
GalleryNavHost(navController = navController)
}
下面是更新后的 GalleryApp 函数所做工作的解析:
LaunchedEffect:Jetpack Compose 中的副作用 API,组合时触发一次。此处用于在GalleryApp渲染后立即执行导航逻辑。- 获取首个可用模型:
TASK_LLM_ASK_IMAGE.models.firstOrNull()安全获取首个可用的图文模型名称(如 Gemma 3n)以用于导航,避免在模型列表为空时崩溃。 navController.navigate():使用所选模型名称动态跳转到 Ask-Image 界面,替代常规 Home 界面作为入口。- 从返回栈移除 Home 界面:通过
popUpTo("home")清理导航栈,将 Home 从历史中移除,防止用户通过系统返回键回到该界面。
其余代码保持不变。上述改动可使应用在启动时直接进入 Ask-Image 界面并加载有效模型,从而优化演示的使用流程。
步骤 4:在设备上安装并运行应用
完成必要修改后,我们来运行应用。要在本地 Android 设备上运行,使用无线调试将设备与 Android Studio 配对,步骤如下。
步骤 4.1:设置 Android 设备
在 Android 设备上打开设置应用,启用开发者选项,然后打开无线调试。您会看到包含两种配对方式的界面。

步骤 4.2:在 Android Studio 管理设备
在 Android Studio 中打开Device Manager(图标类似带 Android 标志的手机),点击Pair using QR code。

使用您的设备扫描二维码并完成配对。设备连接成功后,您将在 Device Manager 下看到设备名称。请确保电脑与 Android 设备连接到同一 WiFi 网络。

步骤 4.3:运行应用
点击Device Mirroring 图标(显示一台桌面屏与一台手机屏)开始镜像您的 Android 设备。看到设备屏幕镜像后,点击绿色Run 图标,将应用部署到设备上。
步骤 4.4:在设备上下载模型
应用将启动,并打开浏览器窗口,提示您登录 Hugging Face 以安全下载模型文件。

登录 HuggingFace 后,选择目标模型并点击开始下载,即可开始。本文示例默认使用 Gemma-3n-E2B-it-int4 模型。

步骤 4.5:开始试验
下载完成后,应用会直接进入“Ask Image”页面。然后,从相册选择一张图片或使用设备相机拍摄新照片,配合提示词一起发送给模型。

下面是我测试的一个示例。


模型最初在 CPU 上运行。您可以通过“调优”图标(显示三条横向滑块)切换到 GPU,以获得潜在的更好性能。


切换到 GPU 可以显著降低整体时延,尤其是在处理更大图像和更复杂查询时。虽然 GPU 通常具备更快的解码速度,从而更快给出响应,但需要注意预填(prefill)速度有时在 CPU 上略占优势。
这是因为数据的初始加载与准备(预填)可能受限于 CPU。不过,GPU 更快的解码与整体更低的时延通常能弥补这一点,带来更顺滑、更灵敏的体验。
如果您想查看完整项目代码,我已准备了这个 GitHub 仓库供您探索。
总结
我们探讨了如何在边缘设备上实现图像问答,无需云端推理。您已经学会如何将 .task 文件集成进轻量级 Android 应用,用自然语言提示模型,并在手机上获得关于任意图像的准确回答。
本实操指南展示了 Gemma 3n 如何让多模态 AI 更加普及,便于开发者与研究者在设备端部署强大的模型。无论是构建离线助理、教育工具、医疗应用等,Gemma 3n 都能支持多种场景。
随着 Google 持续完善 Matformer 架构,我预计会出现更紧凑的多模态模型,具备更高精度与更低时延。想进一步了解 Gemma 3n,请查看官方 AI Edge 发布博文,或前往 GitHub 深入阅读开源仓库。
如果您想探索更多新 AI 工具,推荐阅读以下博文:
我是一名 Google Developers 机器学习(生成式 AI)领域的专家、Kaggle 三项专家,以及 Women Techmakers 大使,拥有 3 年以上的技术从业经验。2020 年我共同创办了一家健康科技初创公司,目前在佐治亚理工学院攻读计算机科学硕士,专攻机器学习。

Google 刚刚发布了 Gemma 3n,一款用于边缘设备的多模态模型,支持视觉、语言和音频任务,并可模块化执行。在本教程中,我将逐步讲解如何在您的 Android 设备上本地下载并运行 Gemma 3n——无需云端算力。我们将使用一个演示应用,它可以:
ai-edge-litert运行时完全离线运行模型您将了解
.task文件格式如何实现轻量化部署,应用如何自动下载并初始化 Gemma 3n 以供本地使用,同时保持流畅的性能和较低的内存占用。