模型简介
模型特点
模型能力
使用案例
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是Google推出的一系列轻量级、最先进的开放模型,基于创建Gemini模型所用的相同研究和技术构建。它们是仅解码器的文本到文本大语言模型,提供英语版本,并开放了预训练变体和指令调优变体的权重。Gemma模型适用于多种文本生成任务,包括问答、摘要和推理。其相对较小的体积使得可以在资源有限的环境中部署,如笔记本电脑、台式机或自己的云基础设施,从而普及最先进AI模型的访问,促进每个人的创新。
使用方式
以下是一些快速开始运行模型的代码片段。首先,安装Transformers库:
pip install -U transformers
然后,复制适合您用例的代码片段。
使用pipeline
API运行
import torch
from transformers import pipeline
pipe = pipeline(
"text-generation",
model="google/gemma-2-27b",
device="cuda", # 替换为"mps"以在Mac设备上运行
)
text = "从前,"
outputs = pipe(text, max_new_tokens=256)
response = outputs[0]["generated_text"]
print(response)
在单/多GPU上运行模型
# pip install accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-27b")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2-27b",
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的轻量级包装器,用于通过命令行界面(CLI)运行Gemma 2。按照安装说明开始使用,然后通过以下命令启动CLI:
local-gemma --model "google/gemma-2-27b" --prompt "墨西哥的首都是哪里?"
通过bitsandbytes
量化版本
使用8位精度(int8)
# pip install bitsandbytes accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-27b")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2-27b",
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]))
使用4位精度
# pip install bitsandbytes accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(load_in_4bit=True)
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-27b")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2-27b",
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编译是一种加速PyTorch模块推理的方法。通过利用torch编译,Gemma-2模型的推理速度可提升至6倍。
注意,在实现全速推理之前需要进行两次预热步骤:
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-27b")
model = Gemma2ForCausalLM.from_pretrained("google/gemma-2-27b", torch_dtype=torch.bfloat16)
model.to("cuda")
# 应用torch编译转换
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
)
# 启用将kv缓存传递给generate
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文档。
输入和输出
- 输入: 文本字符串,如问题、提示或待摘要的文档。
- 输出: 根据输入生成的英语文本,如问题的答案或文档的摘要。
引用
@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过滤: 在数据准备过程的多个阶段应用了严格的CSAM(儿童性虐待材料)过滤,以确保排除有害和非法内容。
- 敏感数据过滤: 作为使Gemma预训练模型安全可靠的一部分,使用了自动化技术从训练集中过滤掉某些个人信息和其他敏感数据。
- 其他方法: 根据[我们的政策][safety-policies]基于内容质量和安全性进行过滤。
实现信息
关于模型内部的详细信息。
硬件
Gemma使用最新一代的[Tensor Processing Unit (TPU)][tpu]硬件(TPUv5p)进行训练。
训练大语言模型需要大量计算资源。TPU专为机器学习中常见的矩阵运算设计,在此领域具有多项优势:
- 性能: TPU专为处理LLM训练中的大规模计算而设计,相比CPU可显著加速训练。
- 内存: TPU通常配备大量高带宽内存,可在训练期间处理大模型和批量大小,从而提高模型质量。
- 可扩展性: TPU Pod(TPU的大型集群)为处理大型基础模型日益增长的复杂性提供了可扩展的解决方案。可以跨多个TPU设备分发训练以实现更快、更高效的处理。
- 成本效益: 在许多场景中,TPU相比基于CPU的基础设施可以提供更具成本效益的大型模型训练解决方案,尤其是考虑到因训练速度加快而节省的时间和资源。
- 这些优势与[Google的可持续运营承诺][sustainability]一致。
软件
训练使用[JAX][jax]和[ML Pathways][ml-pathways]完成。
JAX允许研究人员利用包括TPU在内的最新硬件,更快、更高效地训练大型模型。
ML Pathways是Google最新的人工智能系统构建努力,旨在实现跨多任务的泛化。这特别适合[基础模型][foundation-models],包括像这些大语言模型。
如[Gemini系列模型论文][gemini-2-paper]所述,JAX和ML Pathways一起使用;“Jax和Pathways的‘单一控制器’编程模型允许单个Python进程编排整个训练运行,极大地简化了开发工作流程。”
评估
模型评估指标和结果。
基准测试结果
这些模型针对大量不同的数据集和指标进行了评估,以涵盖文本生成的各个方面:
基准测试 | 指标 | Gemma PT 9B | Gemma PT 27B |
---|---|---|---|
[MMLU][mmlu] | 5-shot, top-1 | 71.3 | 75.2 |
[HellaSwag][hellaswag] | 10-shot | 81.9 | 86.4 |
[PIQA][piqa] | 0-shot | 81.7 | 83.2 |
[SocialIQA][socialiqa] | 0-shot | 53.4 | 53.7 |
[BoolQ][boolq] | 0-shot | 84.2 | 84.8 |
[WinoGrande][winogrande] | 部分得分 | 80.6 | 83.7 |
[ARC-e][arc] | 0-shot | 88.0 | 88.6 |
[ARC-c][arc] | 25-shot | 68.4 | 71.4 |
[TriviaQA][triviaqa] | 5-shot | 76.6 | 83.7 |
[Natural Questions][naturalq] | 5-shot | 29.2 | 34.5 |
[HumanEval][humaneval] | pass@1 | 40.2 | 51.8 |
[MBPP][mbpp] | 3-shot | 52.4 | 62.6 |
[GSM8K][gsm8k] | 5-shot, maj@1 | 68.6 | 74.0 |
[MATH][math] | 4-shot | 36.6 | 42.3 |
[AGIEval][agieval] | 3-5-shot | 52.8 | 55.1 |
[BIG-Bench][big-bench] | 3-shot, CoT | 68.2 | 74.9 |
------------------------------ | ------------- | ----------- | ------------ |
伦理与安全
伦理与安全评估方法及结果。
评估方法
我们的评估方法包括结构化评估和相关内容政策的内部红队测试。红队测试由多个不同团队进行,每个团队有不同的目标和人工评估指标。这些模型针对多个与伦理和安全相关的类别进行了评估,包括:
- 文本到文本内容安全: 对涵盖安全政策的提示进行人工评估,包括儿童性虐待和剥削、骚扰、暴力和血腥内容以及仇恨言论。
- 文本到文本代表性危害: 针对相关学术数据集(如[WinoBias][winobias]和[BBQ数据集][bbq])进行基准测试。
- 记忆: 自动评估训练数据的记忆情况,包括个人身份信息暴露的风险。
- 大规模危害: 测试“危险能力”,如化学、生物、放射性和核(CBRN)风险。
评估结果
伦理与安全评估的结果在可接受的阈值内,符合[内部政策][safety-policies]对于儿童安全、内容安全、代表性危害、记忆和大规模危害等类别的要求。除了强大的内部评估外,还展示了知名安全基准如BBQ、BOLD、Winogender、Winobias、RealToxicity和TruthfulQA的结果。
Gemma 2.0
基准测试 | 指标 | Gemma 2 IT 9B | Gemma 2 IT 27B |
---|---|---|---|
[RealToxicity][realtox] | 平均值 | 8.25 | 8.84 |
[CrowS-Pairs][crows] | top-1 | 37.47 | 36.67 |
[BBQ Ambig][bbq] | 1-shot, top-1 | 88.58 | 85.99 |
[BBQ Disambig][bbq] | top-1 | 82.67 | 86.94 |
[Winogender][winogender] | top-1 | 79.17 | 77.22 |
[TruthfulQA][truthfulqa] | 50.27 | 51.60 | |
[Winobias 1_2][winobias] | 78.09 | 81.94 | |
[Winobias 2_2][winobias] | 95.32 | 97.22 | |
[Toxigen][toxigen] | 39.30 | 38.42 | |
------------------------ | ------------- | --------------- | ---------------- |
使用与限制
这些模型存在一些用户应注意的限制。
预期用途
开放大语言模型(LLM)在各行业和领域有广泛的应用。以下潜在用途列表并不全面。此列表的目的是提供模型创建者在模型训练和开发过程中考虑的可能用例的背景信息。
- 内容创作与沟通
- 文本生成: 这些模型可用于生成创意文本格式,如诗歌、剧本、代码、营销文案和电子邮件草稿。
- 聊天机器人和对话AI: 为客服、虚拟助手或交互式应用程序提供对话界面支持。
- 文本摘要: 生成文本语料库、研究论文或报告的简明摘要。
- 研究与教育
- 自然语言处理(NLP)研究: 这些模型可作为研究人员实验NLP技术、开发算法并推动该领域进步的基础。
- 语言学习工具: 支持交互式语言学习体验,辅助语法纠正或提供写作练习。
- 知识探索: 通过生成摘要或回答特定主题的问题,帮助研究人员探索大量文本。
限制
- 训练数据
- 训练数据的质量和多样性显著影响模型的能力。训练数据中的偏见或空白可能导致模型响应的局限性。
- 训练数据集的范围决定了模型可以有效处理的学科领域。
- 上下文与任务复杂性
- LLM更擅长可以用清晰提示和指令框架化的任务。开放式或高度复杂的任务可能具有挑战性。
- 提供的上下文量(在一定范围内,上下文越长通常输出越好)会影响模型的性能。
- 语言歧义与细微差别
- 自然语言本质上是复杂的。LLM可能难以把握微妙的细微差别、讽刺或比喻性语言。
- 事实准确性
- LLM根据从训练数据集中学到的信息生成响应,但它们不是知识库。它们可能生成不正确或过时的事实陈述。
- 常识
- LLM依赖于语言中的统计模式。它们可能缺乏在某些情况下应用常识推理的能力。
伦理考虑与风险
大语言模型(LLM)的开发引发了一些伦理问题。在创建开放模型时,我们仔细考虑了以下方面:
- 偏见与公平性
- 在大规模真实世界文本数据上训练的LLM可以反映训练材料中嵌入的社会文化偏见。这些模型经过了仔细审查,输入数据预处理如本卡所述,并报告了后续评估。
- 错误信息与滥用
- LLM可能被滥用以生成虚假、误导性或有害的文本。
- 提供了负责任使用的指南,参见[负责任生成式AI工具包][rai-toolkit]。
- 透明度与问责制:
- 本模型卡总结了模型的架构、能力、限制和评估过程的详细信息。
- 负责任开发的开放模型通过使LLM技术对AI生态系统中的开发者和研究人员可访问,提供了共享创新的机会。
已识别的风险


