HuggingFace镜像/gemma-2-2b
模型介绍文件和版本分析
下载使用量0

Gemma 2 模型卡片

模型页面:Gemma

资源与技术文档:

  • 负责任的生成式 AI 工具包
  • Kaggle 上的 Gemma
  • Vertex Model Garden 中的 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)

在单 GPU / 多 GPU 上运行模型

# 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]))

通过命令行界面(CLI)运行模型

local-gemma 仓库包含一个围绕 Transformers 的轻量级封装器,用于通过命令行界面(CLI)运行 Gemma 2。请按照安装说明开始操作,然后通过以下命令启动 CLI:

local-gemma --model "google/gemma-2-2b" --prompt "What is the capital of Mexico?"

通过 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-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]))
使用 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-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

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。主要组成部分如下:

  • 网络文档:多样化的网络文本集合确保模型能够接触到广泛的语言风格、主题和词汇。主要为英语内容。
  • 代码:让模型接触代码有助于其学习编程语言的语法和模式,从而提高其生成代码或理解代码相关问题的能力。
  • 数学:在数学文本上进行训练有助于模型学习逻辑推理、符号表示,并解决数学查询。

这些多样化数据源的组合对于训练一个能够处理各种不同任务和文本格式的强大语言模型至关重要。

数据预处理

以下是应用于训练数据的关键数据清洗和过滤方法:

  • CSAM过滤:在数据准备过程的多个阶段都应用了严格的CSAM(儿童性虐待材料)过滤,以确保排除有害和非法内容。
  • 敏感数据过滤:为了使Gemma预训练模型安全可靠,我们使用自动化技术从训练集中过滤掉某些个人信息和其他敏感数据。
  • 其他方法:根据我们的政策对内容质量和安全性进行过滤。

实现信息

关于模型内部的详细信息。

硬件

Gemma是使用最新一代的张量处理单元(TPU)硬件(TPUv5p)进行训练的。

训练大型语言模型需要强大的计算能力。TPU是专为机器学习中常见的矩阵运算而设计的,在该领域具有多项优势:

  • 性能:TPU专为处理训练大型语言模型(LLM)所涉及的海量计算而设计。与CPU相比,它们可以显著加快训练速度。
  • 内存:TPU通常配备大量高带宽内存,能够在训练过程中处理大型模型和批量大小,从而可能带来更好的模型质量。
  • 可扩展性:TPU Pods(大型TPU集群)为处理日益复杂的大型基础模型提供了可扩展的解决方案。可以在多个TPU设备上分布式训练,以实现更快、更高效的处理。
  • 成本效益:在许多情况下,与基于CPU的基础设施相比,TPU可以为训练大型模型提供更具成本效益的解决方案,尤其是考虑到更快的训练所节省的时间和资源时。
  • 这些优势与Google致力于可持续运营的承诺一致。

软件

训练使用 JAX 和 ML Pathways 完成。

JAX 使研究人员能够利用最新一代硬件(包括 TPU),更快、更高效地训练大型模型。

ML Pathways 是 Google 为构建能够跨多个任务进行泛化的人工智能系统所做的最新努力。这特别适用于 基础模型,包括此类大型语言模型。

正如 关于 Gemini 系列模型的论文 中所述,JAX 和 ML Pathways 协同工作:“Jax 和 Pathways 的‘单一控制器’编程模型允许单个 Python 进程编排整个训练运行,极大地简化了开发工作流程。”

评估

模型评估指标和结果。

基准测试结果

这些模型通过大量不同的数据集和指标进行评估,以涵盖文本生成的各个方面:

基准测试指标Gemma 2 PT 2BGemma 2 PT 9BGemma 2 PT 27B
MMLU5次示例,top-151.371.375.2
HellaSwag10次示例73.081.986.4
PIQA0次示例77.881.783.2
SocialIQA0次示例51.953.453.7
BoolQ0次示例72.584.284.8
WinoGrande部分得分70.980.683.7
ARC-e0次示例80.188.088.6
ARC-c25次示例55.468.471.4
TriviaQA5次示例59.476.683.7
Natural Questions5次示例16.729.234.5
HumanEvalpass@117.740.251.8
MBPP3次示例29.652.462.6
GSM8K5次示例,maj@123.968.674.0
MATH4次示例15.036.642.3
AGIEval3-5次示例30.652.855.1
DROP3次示例,F152.069.472.2
BIG-Bench3次示例,CoT41.968.274.9

伦理与安全

伦理与安全评估方法及结果。

评估方法

我们的评估方法包括结构化评估和相关内容政策的内部红队测试。红队测试由多个不同团队执行,每个团队都有不同的目标和人工评估指标。这些模型针对多个与伦理和安全相关的类别进行了评估,包括:

  • 文本到文本内容安全:对涵盖安全政策(包括儿童性虐待和剥削、骚扰、暴力和血腥内容以及仇恨言论)的提示进行人工评估。
  • 文本到文本表征伤害:使用相关学术数据集(如 WinoBias 和 BBQ Dataset)进行基准测试。
  • 记忆性:对训练数据记忆性的自动化评估,包括个人身份信息泄露的风险。
  • 大规模伤害:针对“危险能力”的测试,例如化学、生物、放射和核(CBRN)风险。

评估结果

伦理与安全评估结果均在满足 内部政策 的可接受阈值内,涉及儿童安全、内容安全、表征伤害、记忆性、大规模伤害等类别。除了严格的内部评估外,此处还展示了知名安全基准测试(如 BBQ、BOLD、Winogender、Winobias、RealToxicity 和 TruthfulQA)的结果。

Gemma 2.0

基准测试指标Gemma 2 IT 2BGemma 2 IT 9BGemma 2 IT 27B
RealToxicityaverage8.168.258.84
CrowS-Pairstop-137.6737.4736.67
BBQ Ambig1-shot, top-183.2088.5885.99
BBQ Disambigtop-169.3182.6786.94
Winogendertop-152.9179.1777.22
TruthfulQA43.7250.2751.60
Winobias 1_259.2878.0981.94
Winobias 2_288.5795.3297.22
Toxigen48.3239.3038.42

危险能力评估

评估方法

我们对一系列危险能力进行了评估:

  • 攻击性网络安全:为评估模型在网络安全场景中被滥用的可能性,我们同时利用了公开可用的夺旗(CTF)平台(如InterCode-CTF和Hack the Box)以及内部开发的CTF挑战。这些评估旨在衡量模型在模拟环境中利用漏洞并获取未授权访问的能力。
  • 自我复制:我们通过设计涉及资源获取、代码执行和与远程系统交互的任务,来评估模型的自我复制能力。这些评估旨在评估模型独立复制和传播的能力。
  • 说服能力:为评估模型的说服和欺骗能力,我们开展了人类说服研究。这些研究包含了衡量模型建立融洽关系、影响信念以及诱导人类参与者采取特定行动的场景。

评估结果

所有评估的详细描述见 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)在各个行业和领域都有广泛的应用。以下潜在用途列表并非详尽无遗。此列表旨在提供有关模型创建者在模型训练和开发过程中考虑的可能用例的背景信息。

  • 内容创作与沟通
    • 文本生成:这些模型可用于生成创意文本格式,如诗歌、脚本、代码、营销文案和电子邮件草稿。
    • 聊天机器人与对话式AI:为客户服务、虚拟助手或交互式应用程序提供对话界面支持。
    • 文本摘要:生成文本语料库、研究论文或报告的简明摘要。
  • 研究与教育
    • 自然语言处理(NLP)研究:这些模型可以作为研究人员实验NLP技术、开发算法并为该领域发展做出贡献的基础。
    • 语言学习工具:支持交互式语言学习体验,辅助语法纠正或提供写作练习。
    • 知识探索:通过生成摘要或回答特定主题的问题,协助研究人员探索大量文本。

局限性

  • 训练数据
    • 训练数据的质量和多样性显著影响模型的能力。训练数据中的偏差或缺口可能导致模型响应存在局限性。
    • 训练数据集的范围决定了模型能够有效处理的主题领域。
  • 上下文与任务复杂性
    • LLMs 在能够通过清晰提示和指令构建的任务上表现更佳。开放式或高度复杂的任务可能具有挑战性。
    • 模型的性能会受到提供的上下文数量的影响(通常,更长的上下文会带来更好的输出,但有一定限度)。
  • 语言歧义与细微差别
    • 自然语言本质上是复杂的。LLMs 可能难以把握微妙的语气、讽刺或比喻性语言。
  • 事实准确性
    • LLMs 基于从训练数据集中学到的信息生成响应,但它们并非知识库。它们可能会生成不正确或过时的事实陈述。
  • 常识
    • LLMs 依赖于语言中的统计模式。在某些情况下,它们可能缺乏应用常识推理的能力。

伦理考量与风险

大型语言模型(LLMs)的开发引发了若干伦理方面的担忧。 在创建开放模型的过程中,我们仔细考量了以下几点:

  • 偏见与公平性
    • 基于大规模真实世界文本数据训练的LLMs可能会反映出训练材料中蕴含的社会文化偏见。这些模型经过了仔细审查,本卡片中描述了输入数据的预处理过程,并报告了后续评估结果。
  • 虚假信息与滥用
    • LLMs可能被滥用于生成虚假、误导性或有害的文本。
    • 我们提供了模型负责任使用的指南,详见负责任生成式AI工具包。
  • 透明度与可问责性
    • 本模型卡片概述了模型在架构、能力、局限性和评估流程等方面的详细信息。
    • 一个负责任开发的开放模型通过向整个AI生态系统的开发者和研究人员开放LLM技术,为分享创新成果提供了机会。

已识别的风险及缓解措施:

  • 偏见的持续存在:建议在模型训练、微调及其他使用场景中,进行持续监控(使用评估指标、人工审核)并探索去偏技术。
  • 有害内容的生成:内容安全机制和指南至关重要。开发者应保持谨慎,并根据其具体的产品政策和应用场景,实施适当的内容安全防护措施。
  • 用于恶意目的的滥用:技术限制以及对开发者和最终用户的教育有助于减轻LLMs的恶意应用。我们提供了教育资源和供用户举报滥用行为的报告机制。Gemma禁止使用政策中概述了Gemma模型的禁止用途。
  • 隐私侵犯:模型的训练数据经过筛选,已移除个人身份信息(PII)。建议开发者遵守隐私法规,并采用隐私保护技术。

优势

在发布之时,与同等规模的模型相比,此系列模型提供了高性能的开源大型语言模型实现,这些实现从设计之初就致力于负责任的AI开发。

通过本文档中描述的基准评估指标,这些模型已展现出相较于其他同等规模开源模型替代品的卓越性能。