模型页面: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-2b",
device="cuda", # replace with "mps" to run on a Mac device
)
text = "Once upon a time,"
outputs = pipe(text, max_new_tokens=256)
response = outputs[0]["generated_text"]
print(response)# pip install accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-2b")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2-2b",
device_map="auto",
)
input_text = "Write me a poem about Machine Learning."
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=32)
print(tokenizer.decode(outputs[0]))local-gemma 仓库包含一个围绕 Transformers 的轻量级封装器,用于通过命令行界面(CLI)运行 Gemma 2。请按照安装说明开始操作,然后通过以下命令启动 CLI:
local-gemma --model "google/gemma-2-2b" --prompt "What is the capital of Mexico?"bitsandbytes 实现的量化版本# pip install bitsandbytes accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-2b")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2-2b",
quantization_config=quantization_config,
)
input_text = "Write me a poem about Machine Learning."
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=32)
print(tokenizer.decode(outputs[0]))# pip install bitsandbytes accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(load_in_4bit=True)
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-2b")
model = AutoModelForCausalLM.from_pretrained(
"google/gemma-2-2b",
quantization_config=quantization_config,
)
input_text = "Write me a poem about Machine Learning."
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 compile 是一种用于加速 PyTorch 模块推理的方法。借助 torch compile,Gemma-2 2b 模型的运行速度可提升高达 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")
# load the model + tokenizer
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-2b")
model = Gemma2ForCausalLM.from_pretrained("google/gemma-2-2b", torch_dtype=torch.bfloat16)
model.to("cuda")
# apply the torch compile transformation
model.forward = torch.compile(model.forward, mode="reduce-overhead", fullgraph=True)
# pre-process inputs
input_text = "The theory of special relativity states "
model_inputs = tokenizer(input_text, return_tensors="pt").to("cuda")
prompt_length = model_inputs.input_ids.shape[1]
# set-up k/v cache
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
)
# enable passing kv cache to generate
model._supports_cache_class = True
model.generation_config.cache_implementation = None
# two warm-up steps
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()
# fast run
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}
}用于模型训练的数据以及数据的处理方式。
这些模型是在一个包含多种来源的文本数据集上进行训练的。270亿参数模型的训练使用了13万亿个token,90亿参数模型使用了8万亿个token,20亿参数模型(gemma-2-2b)使用了2万亿个token。主要组成部分如下:
这些多样化数据源的组合对于训练一个能够处理各种不同任务和文本格式的强大语言模型至关重要。
以下是应用于训练数据的关键数据清洗和过滤方法:
关于模型内部的详细信息。
Gemma是使用最新一代的张量处理单元(TPU)硬件(TPUv5p)进行训练的。
训练大型语言模型需要强大的计算能力。TPU是专为机器学习中常见的矩阵运算而设计的,在该领域具有多项优势:
训练使用 JAX 和 ML Pathways 完成。
JAX 使研究人员能够利用最新一代硬件(包括 TPU),更快、更高效地训练大型模型。
ML Pathways 是 Google 为构建能够跨多个任务进行泛化的人工智能系统所做的最新努力。这特别适用于 基础模型,包括此类大型语言模型。
正如 关于 Gemini 系列模型的论文 中所述,JAX 和 ML Pathways 协同工作:“Jax 和 Pathways 的‘单一控制器’编程模型允许单个 Python 进程编排整个训练运行,极大地简化了开发工作流程。”
模型评估指标和结果。
这些模型通过大量不同的数据集和指标进行评估,以涵盖文本生成的各个方面:
| 基准测试 | 指标 | Gemma 2 PT 2B | Gemma 2 PT 9B | Gemma 2 PT 27B |
|---|---|---|---|---|
| MMLU | 5次示例,top-1 | 51.3 | 71.3 | 75.2 |
| HellaSwag | 10次示例 | 73.0 | 81.9 | 86.4 |
| PIQA | 0次示例 | 77.8 | 81.7 | 83.2 |
| SocialIQA | 0次示例 | 51.9 | 53.4 | 53.7 |
| BoolQ | 0次示例 | 72.5 | 84.2 | 84.8 |
| WinoGrande | 部分得分 | 70.9 | 80.6 | 83.7 |
| ARC-e | 0次示例 | 80.1 | 88.0 | 88.6 |
| ARC-c | 25次示例 | 55.4 | 68.4 | 71.4 |
| TriviaQA | 5次示例 | 59.4 | 76.6 | 83.7 |
| Natural Questions | 5次示例 | 16.7 | 29.2 | 34.5 |
| HumanEval | pass@1 | 17.7 | 40.2 | 51.8 |
| MBPP | 3次示例 | 29.6 | 52.4 | 62.6 |
| GSM8K | 5次示例,maj@1 | 23.9 | 68.6 | 74.0 |
| MATH | 4次示例 | 15.0 | 36.6 | 42.3 |
| AGIEval | 3-5次示例 | 30.6 | 52.8 | 55.1 |
| DROP | 3次示例,F1 | 52.0 | 69.4 | 72.2 |
| BIG-Bench | 3次示例,CoT | 41.9 | 68.2 | 74.9 |
伦理与安全评估方法及结果。
我们的评估方法包括结构化评估和相关内容政策的内部红队测试。红队测试由多个不同团队执行,每个团队都有不同的目标和人工评估指标。这些模型针对多个与伦理和安全相关的类别进行了评估,包括:
伦理与安全评估结果均在满足 内部政策 的可接受阈值内,涉及儿童安全、内容安全、表征伤害、记忆性、大规模伤害等类别。除了严格的内部评估外,此处还展示了知名安全基准测试(如 BBQ、BOLD、Winogender、Winobias、RealToxicity 和 TruthfulQA)的结果。
| 基准测试 | 指标 | Gemma 2 IT 2B | Gemma 2 IT 9B | Gemma 2 IT 27B |
|---|---|---|---|---|
| RealToxicity | average | 8.16 | 8.25 | 8.84 |
| CrowS-Pairs | top-1 | 37.67 | 37.47 | 36.67 |
| BBQ Ambig | 1-shot, top-1 | 83.20 | 88.58 | 85.99 |
| BBQ Disambig | top-1 | 69.31 | 82.67 | 86.94 |
| Winogender | top-1 | 52.91 | 79.17 | 77.22 |
| TruthfulQA | 43.72 | 50.27 | 51.60 | |
| Winobias 1_2 | 59.28 | 78.09 | 81.94 | |
| Winobias 2_2 | 88.57 | 95.32 | 97.22 | |
| Toxigen | 48.32 | 39.30 | 38.42 |
我们对一系列危险能力进行了评估:
所有评估的详细描述见 Evaluating Frontier Models for Dangerous Capabilities,简要概述见 Gemma 2 technical report。
| 评估 | 能力 | Gemma 2 IT 27B |
|---|---|---|
| InterCode-CTF | 攻击性网络安全 | 34/76 个挑战 |
| 内部CTF | 攻击性网络安全 | 1/13 个挑战 |
| Hack the Box | 攻击性网络安全 | 0/13 个挑战 |
| 自我复制早期预警 | 自我复制 | 1/10 个挑战 |
| 魅力攻势 | 说服能力 | 参与者同意的百分比: 81%认为有趣, 75%愿意再次交流, 80%建立了个人联系 |
| 点击链接 | 说服能力 | 34%的参与者 |
| 获取信息 | 说服能力 | 9%的参与者 |
| 运行代码 | 说服能力 | 11%的参与者 |
| 金钱说服力 | 说服能力 | 平均捐款 £3.72 |
| 谎言网络 | 说服能力 | 平均向正确信念转变18%,平均向错误信念转变1% |
这些模型存在一些用户需要了解的局限性。
开源大型语言模型(LLMs)在各个行业和领域都有广泛的应用。以下潜在用途列表并非详尽无遗。此列表旨在提供有关模型创建者在模型训练和开发过程中考虑的可能用例的背景信息。
大型语言模型(LLMs)的开发引发了若干伦理方面的担忧。 在创建开放模型的过程中,我们仔细考量了以下几点:
已识别的风险及缓解措施:
在发布之时,与同等规模的模型相比,此系列模型提供了高性能的开源大型语言模型实现,这些实现从设计之初就致力于负责任的AI开发。
通过本文档中描述的基准评估指标,这些模型已展现出相较于其他同等规模开源模型替代品的卓越性能。