库名称:transformers
许可证:gemma
新版本:google/gemma-2-2b-it
小部件示例:
- 消息:
- 角色:用户
内容:大脑是如何工作的?
推理参数:
最大新生成标记数:200
额外访问提示:
标题:在Hugging Face上访问Gemma
内容:要访问Gemma,您需要审阅并同意Google的使用许可。请确保已登录Hugging Face并点击下方按钮。请求将立即处理。
按钮内容:确认许可
Gemma模型卡
模型页面:Gemma
本模型卡对应Gemma模型的20亿参数指令调优版本。您还可以查看20亿基础模型、70亿基础模型和70亿指令模型的模型卡。
资源与技术文档:
使用条款:条款
作者:Google
模型信息
模型概述及输入输出的简要定义。
描述
Gemma是Google推出的一系列轻量级、前沿的开放模型,基于与创建Gemini模型相同的研究和技术构建。它们是仅解码器的文本到文本大语言模型,提供英语版本,包含开放权重、预训练变体和指令调优变体。Gemma模型适用于多种文本生成任务,包括问答、摘要和推理。其相对较小的体积使得它们能够在资源有限的环境中部署,如笔记本电脑、台式机或自有云基础设施,从而普及前沿AI模型的访问,促进创新。
使用方式
以下是一些快速上手的代码片段。首先确保安装pip install -U transformers
,然后根据您的用例复制相关代码段。
在CPU上运行模型
推荐使用torch.bfloat16
作为默认数据类型,必要时可调整精度。
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2b-it")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2b-it",
torch_dtype=torch.bfloat16
)
input_text = "写一首关于机器学习的诗。"
input_ids = tokenizer(input_text, return_tensors="pt")
outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))
在单/多GPU上运行
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2b-it")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2b-it",
device_map="auto",
torch_dtype=torch.bfloat16
)
input_text = "写一首关于机器学习的诗。"
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))
使用不同精度在GPU上运行
本模型原生权重以bfloat16
精度导出。您可以使用float16
(某些硬件上可能更快),加载时指定torch_dtype
。为方便起见,仓库的float16
版本已包含转换后的权重。
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2b-it",
device_map="auto",
torch_dtype=torch.float16,
revision="float16",
)
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2b-it",
device_map="auto"
)
通过bitsandbytes
量化
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
model = AutoModelForCausalLM.from_pretrained("google/gemma-2b-it", quantization_config=quantization_config)
quantization_config = BitsAndBytesConfig(load_in_4bit=True)
model = AutoModelForCausalLM.from_pretrained("google/gemma-2b-it", quantization_config=quantization_config)
其他优化
安装flash-attn
后:
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16,
+ attn_implementation="flash_attention_2"
).to(0)
聊天模板
指令调优模型需遵循特定聊天模板。最简单的方法是使用分词器的内置模板:
chat = [{"role": "user", "content": "写一个Hello World程序"}]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
生成结果示例:
<bos><start_of_turn>user
写一个Hello World程序<end_of_turn>
<start_of_turn>model
微调
可在google/gemma-7b
仓库的examples/
目录中找到微调脚本,将模型ID改为google/gemma-2b-it
即可适配本模型。
输入与输出
- 输入:文本字符串,如问题、提示或待总结的文档。
- 输出:生成的英文文本响应,如问题答案或文档摘要。
模型数据
训练数据及预处理方法。
训练数据集
模型训练使用了包含多种来源的6万亿标记文本数据,主要包括:
- 网络文档:多样化的英文网页内容
- 代码:帮助模型学习编程语言语法
- 数学文本:提升逻辑推理能力
数据预处理
关键步骤包括:
- CSAM过滤:严格移除儿童性虐待内容
- 敏感数据过滤:自动化技术剔除个人信息
- 其他方法:基于内容质量和安全策略的过滤
实现信息
硬件
使用TPUv5e硬件训练,具有高性能、大内存和可扩展性优势。
软件
基于JAX和ML Pathways框架训练,采用Gemini论文中描述的"单一控制器"编程模型。
评估
基准测试结果
基准测试 |
指标 |
20亿参数 |
70亿参数 |
MMLU |
5-shot top-1 |
42.3 |
64.3 |
GSM8K |
maj@1 |
17.7 |
46.4 |
平均 |
|
45.0 |
56.9 |
伦理与安全
评估方法
包括结构化评估和内部红队测试,覆盖:
- 内容安全:儿童安全、暴力等政策
- 表征危害:WinoBias等数据集测试
- 记忆风险:训练数据记忆分析
评估结果
安全基准测试结果:
基准测试 |
指标 |
20亿参数 |
TruthfulQA |
|
44.84 |
Toxigen |
|
29.77 |
使用限制
预期用途
- 内容创作:文本生成、聊天机器人
- 研究教育:NLP研究、语言学习工具
局限性
- 训练数据偏差可能影响输出
- 对模糊语言和常识推理存在局限
- 可能生成不准确事实
伦理风险与缓解
- 偏见延续:持续监控和去偏技术
- 有害内容:实施安全防护机制
- 恶意使用:遵循禁用政策
- 隐私保护:训练时已过滤PII
优势
相比同类尺寸模型,Gemma提供更高性能的负责任AI实现,基准测试表现优异。