Lộ trình
Google vừa ra mắt Gemma 3n, một mô hình đa phương thức dành cho thiết bị biên, hỗ trợ các tác vụ nhìn, ngôn ngữ và âm thanh với khả năng thực thi mô-đun. Trong hướng dẫn này, tôi sẽ giải thích từng bước cách tải về và chạy Gemma 3n cục bộ, ngay trên thiết bị Android của bạn—không cần tài nguyên đám mây. Chúng ta sẽ dùng một ứng dụng demo cho phép bạn:
- Đặt câu hỏi ngôn ngữ tự nhiên về hình ảnh
- Chạy mô hình hoàn toàn ngoại tuyến bằng runtime
ai-edge-litertcủa Google - Trải nghiệm trong giao diện ứng dụng Android tùy chỉnh
Bạn sẽ học cách định dạng tệp .task cho phép triển khai gọn nhẹ, cách ứng dụng tự động tải xuống và khởi tạo Gemma 3n để dùng cục bộ, đồng thời vẫn giữ hiệu năng mượt mà và sử dụng bộ nhớ thấp.
Gemma 3n là gì?
Gemma 3n là dòng mô hình đa phương thức mới nhất của Google AI với trọng số mở, được thiết kế để chạy hiệu quả trên các thiết bị hằng ngày như điện thoại, máy tính bảng và laptop. Được xây dựng trên kiến trúc MatFormer mới với hỗ trợ bộ đệm tham số Per-Layer Embedding (PLE), Gemma 3n mang lại hiệu năng trên thiết bị đồng thời giảm thiểu chi phí bộ nhớ và tính toán.
Tương tự các mô hình thị giác-ngôn ngữ (VLM) truyền thống, Gemma 3n hỗ trợ văn bản, hình ảnh và âm thanh. Biến thể "3n" được tối ưu riêng cho triển khai ở biên, với thực thi gọn nhẹ trên CPU, NPU hoặc GPU di động thông qua Google AI Edge SDK.
Các tính năng chính của Gemma 3n:
- Đa phương thức đầu vào: Chấp nhận cả văn bản và hình ảnh để lập luận thị giác có căn cứ
- Suy luận trên thiết bị: Không cần internet sau khi tải mô hình
- Hiệu quả tham số: Sử dụng kích hoạt chọn lọc, bộ đệm PLE và lồng MatFormer để giảm chi phí bộ nhớ
- Tối ưu cho di động: Gemma 3n hỗ trợ suy luận INT4 và FP16 trên Android thông qua MediaPipe và công cụ Google AI Edge
- Trọng số mở: Được cấp phép cho mục đích thương mại có trách nhiệm và tinh chỉnh
Lưu ý quan trọng: dù Gemma 3n hỗ trợ đầu vào âm thanh trong kiến trúc đầy đủ, khả năng âm thanh hiện chưa có trong bản xem trước công khai.
Cách truy cập Gemma 3n?
Bạn có thể dùng thử Gemma 3n theo ba cách:
- Google AI Studio: Cách dễ nhất để bắt đầu trong trình duyệt. Truy cập Google AI Studio và chọn Gemma 3n từ danh sách mô hình. Hiện tại chỉ có biến thể “gemma-3n-e4b-it” khả dụng.
- Bản xem trước trên Hugging Face: Tệp
.taskcủa Gemma 3n được phát hành theo định dạngai-edge-litertcủa Google. Bạn có thể yêu cầu quyền truy cập vào trang mô hình trên Hugging Face và tải mô hình về máy để suy luận cục bộ. Tệp.tasklà một gói gọn nhẹ, thân thiện với runtime, chứa phiên bản mô hình được biên dịch sẵn, metadata và mọi cấu hình cần thiết, được thiết kế riêng cho thực thi nhanh và an toàn trên thiết bị bằng Google AI Edge SDK. - Chạy trên thiết bị (khuyến nghị): Dùng Ứng dụng Gemma Gallery chính thức từ Google để chạy Gemma 3n trực tiếp trên điện thoại Android của bạn. Cách này hỗ trợ đầy đủ tương tác hình ảnh và prompt qua mô hình cục bộ.
Tiếp theo, tôi sẽ hướng dẫn bạn xây dựng một ứng dụng Android hoạt động dùng mô hình Gemma 3n để xử lý prompt hình ảnh và văn bản. Chúng ta sẽ dùng kho Gallery chính thức của Google làm nền tảng và tùy chỉnh để mở thẳng vào màn hình Ask Image mà không bị phân tán.
Bước 1: Clone và thiết lập ứng dụng
Bắt đầu bằng cách tạo một dự án mới và clone kho gốc từ Google.
Bước 1.1: Tạo dự án Android Studio mới
Trên laptop của bạn, mở dự án như một dự án mới trong Android Studio và chọn Empty Activity.

Bước 1.2: Thiết lập một empty activity mới
Tiếp theo, điền tên activity của bạn (ví dụ: “Ask_Image_Demo”) và giữ nguyên các mục còn lại. Sau đó nhấn Finish.

Bước 1.3: Clone kho chính
Bây giờ, mở terminal trong Android Studio (góc dưới bên trái) và chạy các lệnh bash sau:
git clone https://github.com/google-ai-edge/gallery
cd gallery/android

Dự án sẽ được mở. Bạn có thể xem tất cả tệp dự án ở khung bên trái.

Bước 2: Lược bỏ tất cả tác vụ trừ Ask Image
Tiếp theo, chúng ta chỉnh một vài tệp để khi mở ứng dụng sẽ dẫn thẳng đến trang Ask Image. Sau đó, điều hướng đến tệp Tasks.kt tại vị trí: app/src/main/java/com/google/ai/edge/gallery/data/Tasks.kt. Để giới hạn chức năng ứng dụng chỉ còn tính năng 'Ask Image', chúng ta sẽ chỉnh như sau:
Trước:
/** All tasks. */
val TASKS: List<Task> = listOf(
TASK_LLM_ASK_IMAGE,
TASK_LLM_PROMPT_LAB,
TASK_LLM_CHAT,
)
Sau:
/** All tasks. */
val TASKS: List<Task> = listOf(
TASK_LLM_ASK_IMAGE
)
Điều này vô hiệu các bản demo khác như Prompt Lab và Chat, đảm bảo chỉ hiển thị Ask Image.
Bước 3: Tự động điều hướng đến màn hình Ask Image
Trong GalleryApp.kt (nằm tại // app/src/main/java/com/google/ai/edge/gallery/GalleryApp.kt), cập nhật LaunchedEffect để tự động điều hướng đến trang hình ảnh. Thay đổi này đảm bảo ứng dụng mở trực tiếp giao diện Ask Image, bỏ qua màn hình chọn tác vụ mặc định.
Trước:
@Composable
fun GalleryApp(navController: NavHostController = rememberNavController()) {
GalleryNavHost(navController = navController)
}
Sau:
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)
}
Dưới đây là tóm tắt những gì hàm GalleryApp đã cập nhật thực hiện trong đoạn mã mới:
LaunchedEffect: Một side-effect của Jetpack Compose kích hoạt một lần khi được kết hợp. Ở đây dùng để điều hướng ngay khiGalleryAppđược render.- Lấy mô hình khả dụng đầu tiên:
TASK_LLM_ASK_IMAGE.models.firstOrNull()lấy an toàn tên của mô hình văn bản-hình ảnh đầu tiên (ví dụ, Gemma 3n) để dùng cho điều hướng. Điều này tránh crash nếu danh sách mô hình rỗng. navController.navigate(): Điều hướng động ứng dụng đến màn hình Ask Image bằng tên mô hình đã chọn. Thao tác này thay thế màn hình Home làm điểm vào.- Loại bỏ màn hình home khỏi lịch sử quay lui: Phương thức
popUpTo("home")dọn ngăn xếp điều hướng bằng cách loại Home khỏi lịch sử. Nhờ đó người dùng không thể quay lại màn hình này bằng nút back của hệ thống.
Giữ nguyên phần mã còn lại. Tổng thể, các thay đổi này giúp ứng dụng khởi chạy trực tiếp vào giao diện Ask Image với mô hình hợp lệ đã được nạp, cải thiện luồng trải nghiệm cho bản demo của bạn.
Bước 4: Cài đặt và chạy ứng dụng trên thiết bị
Sau khi thực hiện mọi thay đổi cần thiết, chúng ta sẽ chạy ứng dụng. Để chạy ứng dụng trên thiết bị Android của bạn, hãy ghép nối thiết bị với Android Studio bằng gỡ lỗi không dây theo các bước sau.
Bước 4.1: Thiết lập thiết bị Android
Mở ứng dụng Cài đặt trên thiết bị Android và bật Tùy chọn nhà phát triển. Sau đó bật Gỡ lỗi không dây. Bạn sẽ thấy màn hình với hai tuỳ chọn ghép nối.

Bước 4.2: Quản lý thiết bị trong Android Studio
Trong Android Studio, mở Device Manager (biểu tượng giống điện thoại với logo Android) và nhấp Pair using QR code.

Quét mã QR bằng thiết bị của bạn và hoàn tất thiết lập ghép nối. Khi đã kết nối, bạn sẽ thấy tên thiết bị trong Device Manager. Đảm bảo máy tính và thiết bị Android cùng kết nối một mạng WiFi.

Bước 4.3: Chạy ứng dụng
Bắt đầu phản chiếu màn hình thiết bị Android bằng cách nhấp biểu tượng Device Mirroring (mô tả một màn hình desktop và màn hình điện thoại). Khi thấy màn hình thiết bị đã được phản chiếu, nhấp biểu tượng Run màu xanh để triển khai ứng dụng lên thiết bị.
Bước 4.4: Tải mô hình xuống thiết bị
Ứng dụng sẽ khởi chạy và mở một cửa sổ trình duyệt, yêu cầu bạn đăng nhập Hugging Face để tải tệp mô hình một cách an toàn.

Sau khi đăng nhập Hugging Face, nhấn bắt đầu tải xuống với mô hình bạn chọn, và mô hình sẽ bắt đầu tải. Trong ví dụ này, tôi dùng mặc định mô hình Gemma-3n-E2B-it-int4.

Bước 4.5: Bắt đầu thử nghiệm
Khi tải xuống hoàn tất, ứng dụng sẽ đưa bạn thẳng đến trang “Ask Image”. Hãy chọn một ảnh có sẵn trong thư viện hoặc chụp ảnh mới bằng camera thiết bị. Sau đó nhập prompt kèm hình ảnh và gửi tới mô hình.

Đây là một ví dụ tôi đã thử.


Mặc định mô hình chạy trên CPU. Bạn có thể chuyển sang GPU để có hiệu năng tốt hơn bằng biểu tượng 'Tune' (ba thanh trượt ngang).


Chuyển sang GPU có thể giảm đáng kể độ trễ tổng thể, đặc biệt khi xử lý ảnh lớn và truy vấn phức tạp. Xử lý bằng GPU thường có tốc độ decode nhanh hơn, cho phản hồi nhanh hơn, nhưng cần lưu ý tốc độ prefill đôi khi có thể nhỉnh hơn trên CPU.
Nguyên nhân là giai đoạn nạp và chuẩn bị dữ liệu ban đầu (prefill) có thể phụ thuộc CPU. Tuy vậy, lợi ích decode nhanh và độ trễ tổng thể thấp hơn trên GPU thường vượt trội, mang lại trải nghiệm mượt mà và phản hồi tốt hơn.
Tôi đã thiết lập kho GitHub này nếu bạn muốn khám phá toàn bộ mã dự án.
Kết luận
Chúng ta đã khám phá cách Gemma 3n cho phép hỏi-đáp về hình ảnh trên thiết bị biên, không cần suy luận trên đám mây. Bạn đã học cách tích hợp tệp .task vào một ứng dụng Android gọn nhẹ, nhập prompt ngôn ngữ tự nhiên và nhận phản hồi chính xác về bất kỳ hình ảnh nào, ngay trên điện thoại.
Bài hướng dẫn thực hành này cho thấy Gemma 3n dân chủ hóa AI đa phương thức, giúp nhà phát triển và nhà nghiên cứu dễ dàng triển khai mô hình mạnh ngay trên thiết bị. Dù bạn đang xây dựng trợ lý ngoại tuyến, công cụ giáo dục, ứng dụng chăm sóc sức khỏe hay hơn thế nữa, Gemma 3n có thể hỗ trợ nhiều trường hợp sử dụng.
Khi Google tiếp tục hoàn thiện kiến trúc Matformer, tôi kỳ vọng sẽ thấy các mô hình đa phương thức còn gọn hơn, chính xác cao hơn và độ trễ thấp hơn. Để tìm hiểu thêm về Gemma 3n, hãy xem bài phát hành AI Edge chính thức hoặc khám phá kho mã nguồn mở trên GitHub.
Nếu bạn muốn khám phá thêm các công cụ AI mới, tôi gợi ý những bài viết sau:
Tôi là Chuyên gia Google Developers trong lĩnh vực ML (Gen AI), Chuyên gia Kaggle 3x và Đại sứ Women Techmakers với hơn 3 năm kinh nghiệm trong ngành công nghệ. Tôi đồng sáng lập một startup công nghệ y tế vào năm 2020 và hiện đang theo học thạc sĩ khoa học máy tính tại Georgia Tech, chuyên sâu về học máy.
