Gemma 3:谷歌最新开源多模态AI模型,单GPU性能碾压Llama!

334 阅读7分钟

❤️ 如果你也关注 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 模型,专为开发者设计。

  1. 核心功能:支持文本、图像及短视频处理,提供四种模型尺寸,优化单 GPU 性能。
  2. 技术原理:采用知识蒸馏、强化学习和模型合并技术,配备 ShieldGemma 2 图像安全分类器。

Gemma 3 是什么

gemma-3-comparison-chart-gemma-models

Gemma 3 是谷歌最新推出的开源人工智能模型,专为开发者设计,支持多种设备上的人工智能应用开发。它支持超过 35 种语言,具备分析文本、图像及短视频的能力,提供四种不同尺寸的模型(1B、4B、12B 和 27B),满足不同硬件和性能需求。

gemma-3-model-performance-v-size-gemma-3.original

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 代码解释

  1. 初始化 pipelinepipeline API 自动加载模型和处理器,并将其分配到 GPU 上。
  2. 定义输入消息messages 是一个包含系统指令和用户输入的列表。用户输入可以是文本或图像。
  3. 生成输出:调用 pipe 方法,传入 messages 和生成的最大 token 数,模型会返回生成的文本。

3. 在单 GPU 或多 GPU 上运行模型

如果你希望更灵活地控制模型的运行,可以直接使用 AutoProcessorGemma3ForConditionalGeneration

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 代码解释

  1. 加载模型和处理器AutoProcessorGemma3ForConditionalGeneration 分别用于处理输入和生成输出。
  2. 定义输入消息messages 包含系统指令和用户输入。
  3. 处理输入apply_chat_template 方法将消息转换为模型可接受的格式。
  4. 生成输出:调用 model.generate 方法生成文本。
  5. 解码输出:使用 processor.decode 将生成的 token 转换为可读的文本。

4. 注意事项

  1. 硬件要求:Gemma 3 是一个大型模型,建议使用 GPU 或 TPU 运行。如果使用 CPU,可能需要较长时间。
  2. 输入格式:模型支持文本和图像输入,图像需要经过预处理并转换为指定分辨率(896 x 896)。
  3. 上下文长度:输入的最大上下文长度为 128K token(对于 1B 模型为 32K token),输出的最大长度为 8192 token。

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦