license: gemma
library_name: transformers
pipeline_tag: text-generation
extra_gated_heading: 访问Hugging Face上的Gemma
extra_gated_prompt: >-
要访问Hugging Face上的Gemma,您需要审阅并同意Google的使用许可。请确保已登录Hugging Face账号并点击下方按钮。请求将立即处理。
extra_gated_button_content: 确认许可
Gemma 2模型卡
模型页面: Gemma
资源与技术文档:
- [负责任生成式AI工具包][rai-toolkit]
- [Kaggle上的Gemma][kaggle-gemma]
- [Vertex Model Garden中的Gemma][vertex-mg-gemma]
使用条款: 条款
作者: Google
模型信息
输入输出的简要说明与定义。
描述
Gemma是谷歌推出的一系列轻量级、前沿的开源模型,基于与创建Gemini模型相同的研究和技术构建。它们是仅解码器的文本到文本大语言模型,提供英语版本,并开放了预训练和指令调优变体的权重。Gemma模型适用于多种文本生成任务,包括问答、摘要和推理。其较小的体积使得它们能够在资源有限的环境中部署,如笔记本电脑、台式机或自有云基础设施,从而普及前沿AI模型的访问,助力大众创新。
使用方式
以下代码片段展示如何快速运行模型。首先安装Transformers库:
pip install -U transformers
使用pipeline
API运行
import torch
from transformers import pipeline
pipe = pipeline(
"text-generation",
model="google/gemma-2-9b",
device="cuda",
)
text = "从前,"
outputs = pipe(text, max_new_tokens=256)
response = outputs[0]["generated_text"]
print(response)
在单/多GPU上运行模型
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-9b")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2-9b",
device_map="auto",
)
input_text = "写一首关于机器学习的诗。"
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=32)
print(tokenizer.decode(outputs[0]))
通过CLI运行模型
local-gemma仓库包含一个轻量级Transformers封装,支持通过命令行界面运行Gemma 2。按照安装说明操作后,执行以下命令启动CLI:
local-gemma --model "google/gemma-2-9b" --prompt "墨西哥的首都是哪里?"
通过bitsandbytes
量化版本
使用8位精度(int8)
```python
# pip install bitsandbytes accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-9b")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2-9b",
quantization_config=quantization_config,
)
input_text = "写一首关于机器学习的诗。"
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=32)
print(tokenizer.decode(outputs[0]))
</details>
<details>
<summary>使用4位精度</summary>
```python
# pip install bitsandbytes accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(load_in_4bit=True)
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-9b")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2-9b",
quantization_config=quantization_config,
)
input_text = "写一首关于机器学习的诗。"
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=32)
print(tokenizer.decode(outputs[0]))
高级用法
Torch编译加速
通过[Torch编译](https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html)可提升推理速度。Gemma-2模型经编译后速度可提升6倍。需注意执行两次预热步骤:
```python
import os
os.environ["TOKENIZERS_PARALLELISM"] = "false"
from transformers import AutoTokenizer, Gemma2ForCausalLM
from transformers.cache_utils import HybridCache
import torch
torch.set_float32_matmul_precision("high")
加载模型+分词器
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-9b")
model = Gemma2ForCausalLM.from_pretrained("google/gemma-2-9b", torch_dtype=torch.bfloat16)
model.to("cuda")
应用编译
model.forward = torch.compile(model.forward, mode="reduce-overhead", fullgraph=True)
预处理输入
input_text = "狭义相对论指出 "
model_inputs = tokenizer(input_text, return_tensors="pt").to("cuda")
prompt_length = model_inputs.input_ids.shape[1]
设置k/v缓存
past_key_values = HybridCache(
config=model.config,
max_batch_size=1,
max_cache_len=model.config.max_position_embeddings,
device=model.device,
dtype=model.dtype
)
启用缓存传递
model._supports_cache_class = True
model.generation_config.cache_implementation = None
两次预热
for idx in range(2):
outputs = model.generate(**model_inputs, past_key_values=past_key_values, do_sample=True, temperature=1.0, max_new_tokens=128)
past_key_values.reset()
正式运行
outputs = model.generate(**model_inputs, past_key_values=past_key_values, do_sample=True, temperature=1.0, max_new_tokens=128)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
详情参阅[Transformers文档](https://huggingface.co/docs/transformers/main/en/llm_optims?static-kv=basic+usage%3A+generation_config)。
</details>
### 输入输出
* **输入**: 文本字符串,如问题、提示或待总结文档
* **输出**: 生成的英语文本响应,如问题答案或文档摘要
### 引用
```none
@article{gemma_2024,
title={Gemma},
url={https://www.kaggle.com/m/3301},
DOI={10.34740/KAGGLE/M/3301},
publisher={Kaggle},
author={Gemma Team},
year={2024}
}
模型数据
训练数据集
27B模型使用13万亿token训练,9B模型使用8万亿token。关键数据源包括:
- 网络文档:多样化的网页文本确保模型接触广泛的语言风格和主题
- 代码:帮助模型学习编程语言语法
- 数学:提升逻辑推理和符号处理能力
数据预处理
- CSAM过滤:多阶段过滤儿童性虐待材料
- 敏感数据过滤:自动移除个人信息
- 其他方法:基于[安全政策][safety-policies]的质量与安全过滤
实现信息
硬件
使用最新[TPUv5p][tpu]硬件训练,优势包括:
- 性能:专为机器学习矩阵运算优化
- 内存:高带宽内存支持大批量训练
- 扩展性:TPU Pods集群支持分布式训练
- 可持续性:符合谷歌环保承诺
软件
基于[JAX][jax]和[ML Pathways][ml-pathways]框架开发,采用Gemini模型的"单一控制器"编程范式。
评估
基准测试结果
基准测试 |
指标 |
Gemma PT 9B |
Gemma PT 27B |
MMLU |
5-shot top-1 |
71.3 |
75.2 |
HellaSwag |
10-shot |
81.9 |
86.4 |
...(其余基准数据保持原样)... |
|
|
|
伦理与安全
评估方法
通过结构化评估和内部红队测试验证,涵盖:
- 内容安全:儿童安全、暴力等政策符合性
- 表征危害:WinoBias等数据集测试
- 记忆风险:训练数据记忆化评估
- 大规模危害:CBRN风险检测
评估结果
安全基准测试结果:
测试集 |
指标 |
Gemma 2 IT 9B |
Gemma 2 IT 27B |
RealToxicity |
平均值 |
8.25 |
8.84 |
...(其余安全数据保持原样)... |
|
|
|
使用限制
预期用途
- 内容创作:文本生成、聊天机器人
- 研究教育:NLP研究、语言学习工具
局限性
- 训练数据偏差可能影响输出
- 复杂任务处理能力有限
- 可能产生事实性错误
伦理风险与缓解
- 偏见延续:持续监控和去偏技术
- 有害内容:实施安全防护机制
- 恶意滥用:遵循[禁止使用政策][prohibited-use]
- 隐私保护:训练数据已过滤PII
优势
相比同类开源模型,Gemma在性能与负责任AI实践方面表现优异。
[所有链接标记保持原英文不变]