Gemma 3n hoàn toàn khả dụng trong hệ sinh thái mã nguồn mở!
Gemma 3n hiện có sẵn trong hệ sinh thái nguồn mở!
- 9 min read
Gemma 3n đã có mặt đầy đủ trong hệ sinh thái mã nguồn mở!
Gemma 3n đã được công bố dưới dạng bản xem trước trong sự kiện Google I/O. Cộng đồng người dùng các thiết bị trực tiếp rất phấn khích, vì đây là một mô hình được thiết kế từ đầu để chạy cục bộ trên phần cứng của bạn. Thêm vào đó, nó vốn đã là đa phương thức (multimodal), hỗ trợ các đầu vào là hình ảnh, văn bản, âm thanh và video 🤯
Hôm nay, Gemma 3n cuối cùng đã có mặt trên các thư viện mã nguồn mở được sử dụng nhiều nhất. Điều này bao gồm transformers & timm, MLX, llama.cpp (đầu vào văn bản), transformers.js, ollama, Google AI Edge và các thư viện khác.
Bài đăng này nhanh chóng đi qua các đoạn mã thực tế để chứng minh cách sử dụng mô hình với các thư viện này và mức độ dễ dàng để tinh chỉnh nó cho các lĩnh vực khác.
Các mô hình được phát hành hôm nay
Hai kích thước mô hình đã được phát hành hôm nay, với hai biến thể (cơ bản và hướng dẫn) cho mỗi kích thước. Tên mô hình tuân theo một quy ước đặt tên không chuẩn: chúng được gọi là gemma-3n-E2B và gemma-3n-E4B. Chữ E đứng trước số lượng tham số là viết tắt của Effective (Hiệu quả). Số lượng tham số thực tế của chúng lần lượt là 5B và 8B, nhưng nhờ những cải tiến về hiệu quả bộ nhớ, chúng chỉ cần 2B và 4B trong VRAM (bộ nhớ GPU).
Do đó, các mô hình này hoạt động giống như 2B và 4B về mặt hỗ trợ phần cứng, nhưng chúng vượt trội hơn 2B/4B về mặt chất lượng. Mô hình E2B có thể chạy chỉ với 2GB RAM GPU, trong khi E4B có thể chạy chỉ với 3GB RAM GPU.
| Kích thước | Cơ bản | Hướng dẫn |
|---|---|---|
| 2B | google/gemma-3n-e2b | google/gemma-3n-e2b-it |
| 4B | google/gemma-3n-e4b | google/gemma-3n-e4b-it |
Chi tiết về các mô hình
Ngoài bộ giải mã ngôn ngữ, Gemma 3n sử dụng bộ mã hóa âm thanh và bộ mã hóa hình ảnh. Chúng tôi nêu bật các tính năng chính của chúng bên dưới và mô tả cách chúng đã được thêm vào transformers và timm, vì chúng là tài liệu tham khảo cho các triển khai khác.
-
Bộ mã hóa hình ảnh (MobileNet-V5). Gemma 3n sử dụng một phiên bản mới của MobileNet: MobileNet-v5-300, đã được thêm vào phiên bản mới của
timmđược phát hành hôm nay.- Có 300 triệu tham số.
- Hỗ trợ độ phân giải
256x256,512x512và768x768. - Đạt 60 FPS trên Google Pixel, vượt trội hơn ViT Giant trong khi sử dụng ít hơn 3 lần số lượng tham số.
-
Bộ mã hóa âm thanh:
- Dựa trên Mô hình giọng nói toàn cầu (USM).
- Xử lý âm thanh theo các đoạn
160ms. - Cho phép các chức năng chuyển giọng nói thành văn bản và dịch thuật (ví dụ: từ tiếng Anh sang tiếng Tây Ban Nha/Pháp).
-
Kiến trúc Gemma 3n và Mô hình ngôn ngữ. Bản thân kiến trúc đã được thêm vào phiên bản mới của
transformersđược phát hành hôm nay. Triển khai này phân nhánh sangtimmđể mã hóa hình ảnh, vì vậy có một triển khai tham khảo duy nhất của kiến trúc MobileNet.
Điểm nổi bật của kiến trúc
-
Kiến trúc MatFormer:
- Một thiết kế biến đổi lồng nhau, tương tự như nhúng Matryoshka, cho phép trích xuất các tập hợp con lớp khác nhau như thể chúng là các mô hình riêng lẻ.
- E2B và E4B đã được huấn luyện cùng nhau, định cấu hình E2B làm mô hình con của E4B.
- Người dùng có thể “trộn và kết hợp” các lớp, tùy thuộc vào đặc điểm phần cứng và ngân sách bộ nhớ của họ.
-
Nhúng theo lớp (PLE): Giảm mức sử dụng bộ nhớ của bộ tăng tốc bằng cách chuyển các nhúng sang CPU. Đây là lý do tại sao mô hình E2B, trong khi có 5B tham số thực, lại chiếm khoảng bộ nhớ GPU tương đương với một mô hình tham số 2B.
-
Chia sẻ bộ nhớ cache KV: Tăng tốc xử lý ngữ cảnh dài cho âm thanh và video, đạt được khả năng điền trước nhanh hơn gấp 2 lần so với Gemma 3 4B.
Hiệu suất & Điểm chuẩn:
- Điểm LMArena: E4B là mô hình dưới 10B đầu tiên đạt được số điểm 1300+.
- Điểm MMLU: Gemma 3n cho thấy hiệu suất cạnh tranh trên nhiều kích thước khác nhau (E4B, E2B và một số cấu hình Mix-n-Match).
- Hỗ trợ đa ngôn ngữ: Hỗ trợ 140 ngôn ngữ cho văn bản và 35 ngôn ngữ cho tương tác đa phương thức.
Không gian Demo
Cách dễ nhất để kiểm tra nhanh mô hình là sử dụng Không gian Hugging Face chuyên dụng cho mô hình. Bạn có thể thử các lời nhắc khác nhau, với các phương thức khác nhau, tại đây.
Suy luận với transformers
Cài đặt phiên bản mới nhất của timm (cho bộ mã hóa hình ảnh) và transformers để chạy suy luận hoặc nếu bạn muốn tinh chỉnh nó.
pip install -U -q timm
pip install -U -q transformers
Suy luận với pipeline
Cách dễ nhất để bắt đầu sử dụng Gemma 3n là sử dụng pipeline trừu tượng trong transformers:
import torch
from transformers import pipeline
pipe = pipeline(
"image-text-to-text",
model="google/gemma-3n-E4B-it", # "google/gemma-3n-E4B-it"
device="cuda",
torch_dtype=torch.bfloat16
)
messages = [
{
"role": "user",
"content": [
{"type": "image", "url": "https://huggingface.co/datasets/ariG23498/demo-data/resolve/main/airplane.jpg"},
{"type": "text", "text": "Describe this image"}
]
}
]
output = pipe(text=messages, max_new_tokens=32)
print(output[0]["generated_text"][-1]["content"])
Đầu ra:
The image shows a futuristic, sleek aircraft soaring through the sky. It's designed with a distinctive, almost alien aesthetic, featuring a wide body and large
Suy luận chi tiết với transformers
Khởi tạo mô hình và bộ xử lý từ Hub và viết hàm model_generation để xử lý các lời nhắc và chạy suy luận trên mô hình.
from transformers import AutoProcessor, AutoModelForImageTextToText
import torch
model_id = "google/gemma-3n-e4b-it" # google/gemma-3n-e2b-it
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(model_id).to(device)
def model_generation(model, messages):
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
)
input_len = inputs["input_ids"].shape[-1]
inputs = inputs.to(model.device, dtype=model.dtype)
with torch.inference_mode():
generation = model.generate(**inputs, max_new_tokens=32, disable_compile=False)
generation = generation[:, input_len:]
decoded = processor.batch_decode(generation, skip_special_tokens=True)
print(decoded[0])
Vì mô hình hỗ trợ tất cả các phương thức làm đầu vào, nên đây là một giải thích ngắn gọn về mã về cách bạn có thể sử dụng chúng thông qua transformers.
Chỉ văn bản
# Chỉ văn bản
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "What is the capital of France?"}
]
}
]
model_generation(model, messages)
Đầu ra:
The capital of France is **Paris**.
Xen kẽ với âm thanh
# Xen kẽ với âm thanh
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "Transcribe the following speech segment in English:"},
{"type": "audio", "audio": "https://huggingface.co/datasets/ariG23498/demo-data/resolve/main/speech.wav"},
]
}
]
model_generation(model, messages)
Đầu ra:
Send a text to Mike. I'll be home late tomorrow.
Xen kẽ với hình ảnh/video
Hỗ trợ cho video được thực hiện như một tập hợp các khung hình ảnh
# Xen kẽ với hình ảnh
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": "https://huggingface.co/datasets/ariG23498/demo-data/resolve/main/airplane.jpg"},
{"type": "text", "text": "Describe this image."}
]
}
]
model_generation(model, messages)
Đầu ra:
The image shows a futuristic, sleek, white airplane against a backdrop of a clear blue sky transitioning into a cloudy, hazy landscape below. The airplane is tilted at
Suy luận với MLX
Gemma 3n đi kèm với hỗ trợ ngày 0 cho MLX trên cả 3 phương thức. Đảm bảo nâng cấp cài đặt mlx-vlm của bạn.
pip install -u mlx-vlm
Bắt đầu với hình ảnh:
python -m mlx_vlm.generate --model google/gemma-3n-E4B-it --max-tokens 100 --temperature 0.5 --prompt "Describe this image in detail." --image https://huggingface.co/datasets/ariG23498/demo-data/resolve/main/airplane.jpg
Và âm thanh:
python -m mlx_vlm.generate --model google/gemma-3n-E4B-it --max-tokens 100 --temperature 0.0 --prompt "Transcribe the following speech segment in English:" --audio https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/audio-samples/jfk.wav
Suy luận với llama.cpp
Ngoài MLX, Gemma 3n (chỉ văn bản) hoạt động ngay lập tức với llama.cpp. Đảm bảo cài đặt llama.cpp/Ollama từ nguồn.
Kiểm tra hướng dẫn cài đặt cho llama.cpp tại đây: https://github.com/ggml-org/llama.cpp/blob/master/docs/install.md
Bạn có thể chạy nó như sau:
llama-server -hf ggml-org/gemma-3n-E4B-it-GGUF:Q8_0
Suy luận với Transformers.js và ONNXRuntime
Cuối cùng, chúng tôi cũng phát hành các trọng số ONNX cho biến thể mô hình gemma-3n-E2B-it-ONNX, cho phép triển khai linh hoạt trên các thời gian chạy và nền tảng khác nhau. Đối với các nhà phát triển JavaScript, Gemma3n đã được tích hợp vào Transformers.js và có sẵn kể từ phiên bản 3.6.0.
Để biết thêm thông tin về cách chạy mô hình với các thư viện này, hãy xem phần sử dụng trong thẻ mô hình.
Tinh chỉnh trong Google Colab miễn phí
Với kích thước của mô hình, khá thuận tiện để tinh chỉnh nó cho các tác vụ hạ nguồn cụ thể trên các phương thức. Để giúp bạn dễ dàng tinh chỉnh mô hình hơn, chúng tôi đã tạo một sổ tay đơn giản cho phép bạn thử nghiệm trên Google Colab miễn phí!
Chúng tôi cũng cung cấp một sổ tay dành riêng cho việc tinh chỉnh trên các tác vụ âm thanh, để bạn có thể dễ dàng điều chỉnh mô hình cho các tập dữ liệu giọng nói và điểm chuẩn của mình!
Công thức Hugging Face Gemma
Với bản phát hành này, chúng tôi cũng giới thiệu kho lưu trữ Công thức Hugging Face Gemma. Người ta sẽ tìm thấy notebooks và scripts để chạy các mô hình và tinh chỉnh chúng.
Chúng tôi rất mong bạn sử dụng họ mô hình Gemma và thêm nhiều công thức hơn vào đó! Vui lòng mở các Vấn đề và tạo Yêu cầu kéo cho kho lưu trữ.
Kết luận
Chúng tôi luôn rất vui khi được lưu trữ Google và họ mô hình Gemma của họ. Chúng tôi hy vọng cộng đồng sẽ cùng nhau tận dụng tối đa các mô hình này. Đa phương thức, kích thước nhỏ và khả năng cao, tạo nên một bản phát hành mô hình tuyệt vời!
Nếu bạn muốn thảo luận chi tiết hơn về các mô hình, hãy bắt đầu thảo luận ngay bên dưới bài đăng trên blog này. Chúng tôi sẽ rất vui được trợ giúp!
Xin chân thành cảm ơn Arthur, Cyril, Raushan, Lysandre và mọi người tại Hugging Face đã chăm sóc việc tích hợp và cung cấp nó cho cộng đồng!
Link bài viết gốc
- Tags:
- Ai
- June 26, 2025
- Huggingface.co
