❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦
🎉 “谷歌放大招!Gemma 3 开源多模态 AI 模型来了:35+语言支持,高分辨率图像处理,单 GPU 也能起飞!”
大家好,我是蚝油菜花。你是否也遇到过——
- 👉 多模态任务处理复杂,模型难以兼顾文本、图像和视频?
- 👉 高分辨率图像处理速度慢,硬件资源消耗大?
- 👉 多语言支持不足,难以满足全球化需求?
今天要介绍的 Gemma 3,是谷歌最新推出的开源多模态 AI 模型,专为开发者设计,支持超过 35 种语言,具备文本、图像及短视频处理能力。它提供四种不同尺寸的模型(1B、4B、12B 和 27B),优化单 GPU 性能,显著提升推理速度。无论是图像问答、视频内容分析,还是多语言智能助手,Gemma 3 都能轻松应对。接下来,我们将深入解析它的核心功能和技术原理,带你全面了解这款 AI 神器!
🚀 快速阅读
Gemma 3 是谷歌最新推出的开源多模态 AI 模型,专为开发者设计。
- 核心功能:支持文本、图像及短视频处理,提供四种模型尺寸,优化单 GPU 性能。
- 技术原理:采用知识蒸馏、强化学习和模型合并技术,配备 ShieldGemma 2 图像安全分类器。
Gemma 3 是什么
Gemma 3 是谷歌最新推出的开源人工智能模型,专为开发者设计,支持多种设备上的人工智能应用开发。它支持超过 35 种语言,具备分析文本、图像及短视频的能力,提供四种不同尺寸的模型(1B、4B、12B 和 27B),满足不同硬件和性能需求。
Gemma 3 在单 GPU 或 TPU 上的性能优于其他同类模型,如 Llama、DeepSeek 和 OpenAI 的 o3-mini。它配备了 ShieldGemma 2 图像安全分类器,可检测和标记危险内容。开发者可以通过 Google AI Studio 快速体验,或从 Hugging Face、Kaggle 等平台下载模型进行微调和部署。
Gemma 3 的主要功能
- 多模态处理能力:支持文本、图像及短视频的混合输入,能够处理复杂的多模态任务,如图像问答、视频内容分析等。
- 高分辨率图像支持:引入动态图像切片技术和帧采样与光流分析结合方案,支持高分辨率和非方形图像,能在 20 秒内完成 1 小时视频的关键帧提取。
- 多语言支持:支持超过 140 种语言的预训练,直接支持超过 35 种语言。
- 单 GPU 优化:被称为“全球最强的单加速器模型”,在单 GPU 或 TPU 环境下表现显著优于其他同类模型。
- 推理速度提升:在处理短视频内容时,推理速度提升了 47%。
- 硬件适配:针对 Nvidia GPU 和 Google Cloud TPU 进行了深度优化,确保在不同硬件平台上的高效运行。
- 多种模型大小:提供 1B、4B、12B 和 27B 四种不同尺寸的模型,满足不同硬件和性能需求。
- 开发工具支持:支持 Hugging Face Transformers、Ollama、JAX、Keras、PyTorch 等多种开发工具和框架。
- 部署选项多样:支持 Google AI Studio、Vertex AI、Cloud Run、本地环境等多种部署选项。
Gemma 3 的技术原理
- 图像安全分类器:配备 ShieldGemma 2 图像安全分类器,能检测和标记危险内容、色情内容和暴力内容,进一步提升了模型的安全性。
- 训练与微调:采用知识蒸馏、强化学习(包括人类反馈和机器反馈)以及模型合并等技术,提升了模型在数学、编码和指令跟随方面的能力。提供了更灵活的微调工具,方便开发者根据需求进行定制。
如何运行 Gemma 3
本文将指导你如何运行 Gemma 3 模型,这是一款由 Google DeepMind 开发的多模态模型,能够处理文本和图像输入并生成文本输出。以下是详细的运行教程,包括代码示例和说明。
1. 安装必要的依赖
首先,确保你的环境中安装了 Hugging Face 的 transformers 库,特别是为 Gemma 3 优化的版本:
pip install git+https://github.com/huggingface/transformers@v4.49.0-Gemma-3
此外,还需要安装 accelerate 库以支持多 GPU 运行:
pip install accelerate
2. 使用 pipeline API 运行模型
pipeline 是 Hugging Face 提供的一个简单接口,可以快速加载和运行模型。以下代码展示了如何使用 pipeline API 初始化 Gemma 3 模型并生成文本输出。
2.1 示例代码
from transformers import pipeline
import torch
# 初始化 pipeline
pipe = pipeline(
"image-text-to-text",
model="google/gemma-3-27b-it",
device="cuda", # 使用 GPU
torch_dtype=torch.bfloat16 # 指定数据类型
)
# 定义输入消息
messages = [
{
"role": "system",
"content": [{"type": "text", "text": "You are a helpful assistant."}]
},
{
"role": "user",
"content": [
{"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"},
{"type": "text", "text": "What animal is on the candy?"}
]
}
]
# 生成输出
output = pipe(text=messages, max_new_tokens=200)
print(output[0][0]["generated_text"][-1]["content"])
2.2 输出示例
Okay, let's take a look!
Based on the image, the animal on the candy is a **turtle**.
You can see the shell shape and the head and legs.
2.3 代码解释
- 初始化 pipeline:
pipelineAPI 自动加载模型和处理器,并将其分配到 GPU 上。 - 定义输入消息:
messages是一个包含系统指令和用户输入的列表。用户输入可以是文本或图像。 - 生成输出:调用
pipe方法,传入messages和生成的最大 token 数,模型会返回生成的文本。
3. 在单 GPU 或多 GPU 上运行模型
如果你希望更灵活地控制模型的运行,可以直接使用 AutoProcessor 和 Gemma3ForConditionalGeneration。
3.1 示例代码
from transformers import AutoProcessor, Gemma3ForConditionalGeneration
from PIL import Image
import requests
import torch
# 加载模型和处理器
model_id = "google/gemma-3-27b-it"
model = Gemma3ForConditionalGeneration.from_pretrained(
model_id, device_map="auto"
).eval()
processor = AutoProcessor.from_pretrained(model_id)
# 定义输入消息
messages = [
{
"role": "system",
"content": [{"type": "text", "text": "You are a helpful assistant."}]
},
{
"role": "user",
"content": [
{"type": "image", "image": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg"},
{"type": "text", "text": "Describe this image in detail."}
]
}
]
# 处理输入
inputs = processor.apply_chat_template(
messages, add_generation_prompt=True, tokenize=True,
return_dict=True, return_tensors="pt"
).to(model.device, dtype=torch.bfloat16)
# 生成输出
with torch.inference_mode():
generation = model.generate(**inputs, max_new_tokens=100, do_sample=False)
generation = generation[0][inputs["input_ids"].shape[-1]:]
# 解码输出
decoded = processor.decode(generation, skip_special_tokens=True)
print(decoded)
3.2 输出示例
**Overall Impression:** The image is a close-up shot of a vibrant garden scene,
focusing on a cluster of pink cosmos flowers and a busy bumblebee.
It has a slightly soft, natural feel, likely captured in daylight.
3.3 代码解释
- 加载模型和处理器:
AutoProcessor和Gemma3ForConditionalGeneration分别用于处理输入和生成输出。 - 定义输入消息:
messages包含系统指令和用户输入。 - 处理输入:
apply_chat_template方法将消息转换为模型可接受的格式。 - 生成输出:调用
model.generate方法生成文本。 - 解码输出:使用
processor.decode将生成的 token 转换为可读的文本。
4. 注意事项
- 硬件要求:Gemma 3 是一个大型模型,建议使用 GPU 或 TPU 运行。如果使用 CPU,可能需要较长时间。
- 输入格式:模型支持文本和图像输入,图像需要经过预处理并转换为指定分辨率(896 x 896)。
- 上下文长度:输入的最大上下文长度为 128K token(对于 1B 模型为 32K token),输出的最大长度为 8192 token。
资源
- 项目讯息:developers.googleblog.com/en/introduc…
- HuggingFace 仓库:huggingface.co/collections…
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦