
Gemma3:Google开源多模态神器,轻量高效,精通140+语言,解锁文本与图像任务
在当今快速发展的 AI 领域,多模态模型正逐渐成为推动技术革新的重要力量。Google 最新推出的 Gemma 3 模型,凭借其轻量级、多模态的特性,为文本生成和图像理解任务带来了全新的可能性。它不仅
00.引言
在当今快速发展的 AI 领域,多模态模型正逐渐成为推动技术革新的重要力量。Google 最新推出的 Gemma 3 模型,凭借其轻量级、多模态的特性,为文本生成和图像理解任务带来了全新的可能性。它不仅支持文本和图像输入,还具备强大的语言处理能力,覆盖超过 140 种语言,并且能够在资源有限的设备上高效运行。从问答到摘要,从推理到图像分析,Gemma 3 正在重新定义 AI 模型的边界,为开发者和研究人员提供了一个极具潜力的工具。
01.描述
Gemma 是来自 Google 的一系列轻量级、最先进的开源模型,基于用于创建 Gemini 模型的相同研究和技术构建。Gemma 3 模型是多模态的,处理文本和图像输入并生成文本输出,包括预训练变体和指令调优变体的开放权重。Gemma 3 具有大的 128K 上下文窗口,支持超过 140 种语言,并且比前代版本提供更多的尺寸选择。Gemma 3 模型非常适合各种文本生成和图像理解任务,包括问答、摘要和推理。它们相对较小的体积使得可以在资源有限的环境中部署,如笔记本电脑、台式机或您自己的云基础设施,从而普及了对最先进 AI 模型的访问,并帮助每个人促进创新。
02.输入和输出
-
输入:
-
文本字符串,例如问题、提示或需要总结的文档
-
图像,归一化为 896 x 896 分辨率,并编码为每个 256 个令牌
-
对于 4B、12B 和 27B 尺寸,总输入上下文为 128K 令牌;对于 1B 尺寸,总输入上下文为 32K 令牌
-
输出:
-
根据输入生成的文本,例如对问题的回答、图像内容分析或文档摘要
-
总输出上下文为 8192 令牌
使用方法
模型推理
环境安装
!pip install git+https://github.com/huggingface/transformers@v4.49.0-Gemma-3
推理代码
from transformers import AutoTokenizer, BitsAndBytesConfig, Gemma3ForCausalLM
import torch
from modelscope import snapshot_download
model_id = snapshot_download("LLM-Research/gemma-3-1b-it")
#quantization_config = BitsAndBytesConfig(load_in_8bit=True)
model = Gemma3ForCausalLM.from_pretrained(
model_id
).eval()
tokenizer = AutoTokenizer.from_pretrained(model_id)
messages = [
[
{
"role": "system",
"content": [{"type": "text", "text": "You are a helpful assistant."},]
},
{
"role": "user",
"content": [{"type": "text", "text": "Write a poem on Hugging Face, the company"},]
},
],
]
inputs = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
with torch.inference_mode():
outputs = model.generate(**inputs, max_new_tokens=64)
outputs = tokenizer.batch_decode(outputs)
模型微调
ms-swift已经支持了gemma3系列模型的微调。ms-swift是魔搭社区官方提供的大模型与多模态大模型训练部署框架。
ms-swift开源地址:
https://github.com/modelscope/ms-swift
我们将展示可运行的微调demo,并给出自定义数据集的格式。
在开始微调之前,请确保您的环境已准备妥当。
# pip install git+https://github.com/modelscope/ms-swift.git
git clone https://github.com/modelscope/ms-swift.git
cd ms-swift
pip install -e .
使用文本数据集训练gemma3-1b-it模型
CUDA_VISIBLE_DEVICES=0 \
swift sft \
--model LLM-Research/gemma-3-1b-it \
--train_type lora \
--dataset 'AI-ModelScope/alpaca-gpt4-data-zh#5000' \
'AI-ModelScope/alpaca-gpt4-data-en#5000' \
--torch_dtype bfloat16 \
--num_train_epochs 1 \
--per_device_train_batch_size 1 \
--per_device_eval_batch_size 1 \
--learning_rate 1e-4 \
--lora_rank 8 \
--lora_alpha 32 \
--target_modules all-linear \
--gradient_accumulation_steps 16 \
--eval_steps 50 \
--save_steps 50 \
--save_total_limit 5 \
--logging_steps 5 \
--max_length 2048 \
--output_dir output \
--warmup_ratio 0.05 \
--dataloader_num_workers 4
训练显存占用:
使用OCR图像数据集训练gemma3-4b-it模型
CUDA_VISIBLE_DEVICES=0 \
swift sft \
--model LLM-Research/gemma-3-4b-it \
--dataset 'AI-ModelScope/LaTeX_OCR:human_handwrite#20000' \
--train_type dummy \
--torch_dtype bfloat16 \
--num_train_epochs 1 \
--per_device_train_batch_size 1 \
--per_device_eval_batch_size 1 \
--learning_rate 1e-4 \
--gradient_accumulation_steps 16 \
--eval_steps 200 \
--save_steps 200 \
--save_total_limit 5 \
--logging_steps 5 \
--max_length 2048 \
--output_dir output \
--warmup_ratio 0.05 \
--dataloader_num_workers 4
训练显存占用:
添加图片注释,不超过 140 字(可选)
如果要使用自定义数据集进行训练,你可以参考以下格式,并指定`--dataset <dataset_path>`。
# 文本数据集
{"messages": [{"role": "user", "content": "浙江的省会在哪?"}, {"role": "assistant", "content": "浙江的省会在杭州。"}]}
# 图像数据集
{"messages": [{"role": "user", "content": "<image><image>两张图片有什么区别"}, {"role": "assistant", "content": "前一张是小猫,后一张是小狗"}], "images": ["/xxx/x.jpg", "/xxx/x.png"]}
训练完成后,使用以下命令对训练后的权重进行推理,这里的`--adapters`需要替换成训练生成的last checkpoint文件夹。
CUDA_VISIBLE_DEVICES=0 \
swift infer \
--adapters output/vx-xxx/checkpoint-xxx \
--stream false \
--max_batch_size 1 \
--load_data_args true \
--max_new_tokens 2048
推送模型到ModelScope:
CUDA_VISIBLE_DEVICES=0 \
swift export \
--adapters output/vx-xxx/checkpoint-xxx \
--push_to_hub true \
--hub_model_id '<your-model-id>' \
--hub_token '<your-sdk-token>'
点击链接跳转
更多推荐
所有评论(0)