模型简介
模型特点
模型能力
使用案例
🚀 RecurrentGemma模型卡片
RecurrentGemma是基于新型循环架构开发的开放语言模型家族,适用于多种文本生成任务。它在推理速度和内存使用上表现出色,尤其在处理长序列时优势明显。
🚀 快速开始
在运行模型之前,请确保使用以下命令更新transformers
库:
pip install --upgrade git+https://github.com/huggingface/transformers.git
然后根据你的具体需求,从下面的代码片段中选择合适的部分进行复制使用。
在单GPU或多GPU上运行模型
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("google/recurrentgemma-2b-it")
model = AutoModelForCausalLM.from_pretrained("google/recurrentgemma-2b-it", 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)
print(tokenizer.decode(outputs[0]))
聊天模板
经过指令微调的模型使用了一种聊天模板,在进行对话时必须遵循该模板。最简单的应用方式是使用分词器内置的聊天模板,如下所示:
from transformers import AutoTokenizer, AutoModelForCausalLM
import transformers
import torch
model_id = "google/recurrentgemma-2b-it"
dtype = torch.bfloat16
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cuda",
torch_dtype=dtype,
)
chat = [
{ "role": "user", "content": "Write a hello world program" },
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
此时,提示信息包含以下文本:
<bos><start_of_turn>user
Write a hello world program<end_of_turn>
<start_of_turn>model
可以看到,每个回合都以<start_of_turn>
分隔符开头,然后是角色(user
表示用户提供的内容,model
表示大语言模型的回复),回合结束时使用<end_of_turn>
标记。如果需要在不使用分词器聊天模板的情况下手动构建提示信息,也可以遵循此格式。
准备好提示信息后,可以按以下方式进行生成:
inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
outputs = model.generate(input_ids=inputs.to(model.device), max_new_tokens=150)
print(tokenizer.decode(outputs[0]))
✨ 主要特性
- 高性能:在发布时,该模型家族提供了高性能的开放大语言模型实现,与同等规模的模型相比,在设计上更注重负责任的人工智能开发。
- 推理速度快:RecurrentGemma模型与Gemma模型性能相当,但在推理时速度更快,尤其是在处理长序列时。
- 内存需求低:相比Gemma模型,RecurrentGemma在运行时需要的内存更少。
📦 安装指南
在使用模型之前,需要更新transformers
库:
pip install --upgrade git+https://github.com/huggingface/transformers.git
💻 使用示例
基础用法
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("google/recurrentgemma-2b-it")
model = AutoModelForCausalLM.from_pretrained("google/recurrentgemma-2b-it", 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)
print(tokenizer.decode(outputs[0]))
高级用法
from transformers import AutoTokenizer, AutoModelForCausalLM
import transformers
import torch
model_id = "google/recurrentgemma-2b-it"
dtype = torch.bfloat16
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cuda",
torch_dtype=dtype,
)
chat = [
{ "role": "user", "content": "Write a hello world program" },
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
outputs = model.generate(input_ids=inputs.to(model.device), max_new_tokens=150)
print(tokenizer.decode(outputs[0]))
📚 详细文档
模型信息
- 模型页面:RecurrentGemma
- 资源和技术文档:
- 使用条款:Terms
- 作者:Google
模型概述
描述
RecurrentGemma是基于谷歌开发的新型循环架构构建的开放语言模型家族。提供预训练和指令微调版本,均支持英文。该模型适用于多种文本生成任务,如问答、摘要生成和推理等。由于其新型架构,RecurrentGemma在处理长序列时,比Gemma需要更少的内存,推理速度更快。
输入和输出
- 输入:文本字符串(如问题、提示或待总结的文档)。
- 输出:针对输入生成的英文文本(如问题的答案、文档的摘要)。
引用
@article{recurrentgemma_2024,
title={RecurrentGemma},
url={},
DOI={},
publisher={Kaggle},
author={Griffin Team, Soham De, Samuel L Smith, Anushan Fernando, Alex Botev, George-Christian Muraru, Ruba Haroun, Leonard Berrada et al.},
year={2024}
}
模型数据
训练数据集和数据处理
RecurrentGemma使用与Gemma模型家族相同的训练数据和数据处理方法。详细描述可在Gemma模型卡片中找到。
实现信息
训练期间使用的硬件和框架
与Gemma一样,RecurrentGemma在TPUv5e上进行训练,使用了JAX和ML Pathways。
评估信息
基准测试结果
评估方法
这些模型针对大量不同的数据集和指标进行了评估,以涵盖文本生成的各个方面。
评估结果
基准测试 | 指标 | RecurrentGemma 2B |
---|---|---|
MMLU | 5-shot, top-1 | 38.4 |
HellaSwag | 0-shot | 71.0 |
PIQA | 0-shot | 78.5 |
SocialIQA | 0-shot | 51.8 |
BoolQ | 0-shot | 71.3 |
WinoGrande | partial score | 67.8 |
CommonsenseQA | 7-shot | 63.7 |
OpenBookQA | 47.2 | |
ARC-e | 72.9 | |
ARC-c | 42.3 | |
TriviaQA | 5-shot | 52.5 |
Natural Questions | 5-shot | 11.5 |
HumanEval | pass@1 | 21.3 |
MBPP | 3-shot | 28.8 |
GSM8K | maj@1 | 13.4 |
MATH | 4-shot | 11.0 |
AGIEval | 23.8 | |
BIG-Bench | 35.3 | |
Average | 44.6 |
伦理和安全
伦理和安全评估
评估方法
评估方法包括结构化评估和对相关内容政策的内部红队测试。红队测试由多个不同的团队进行,每个团队有不同的目标和人工评估指标。这些模型针对多个与伦理和安全相关的类别进行了评估,包括:
- 文本到文本内容安全:对涵盖安全政策(如儿童性虐待和剥削、骚扰、暴力和血腥内容以及仇恨言论)的提示进行人工评估。
- 文本到文本代表性危害:与相关学术数据集(如WinoBias和BBQ Dataset)进行基准测试。
- 记忆性:自动评估对训练数据的记忆情况,包括个人身份信息暴露的风险。
- 大规模危害:测试“危险能力”,如化学、生物、放射和核(CBRN)风险;以及测试说服和欺骗、网络安全和自主复制等方面。
评估结果
伦理和安全评估结果在满足内部政策的可接受阈值范围内。除了强大的内部评估外,还展示了一些知名安全基准测试(如BBQ、Winogender、Winobias、RealToxicity和TruthfulQA)的结果。
基准测试 | 指标 | RecurrentGemma 2B | RecurrentGemma 2B IT |
---|---|---|---|
RealToxicity | avg | 9.8 | 7.6 |
BOLD | 39.3 | 52.4 | |
CrowS-Pairs | top-1 | 41.1 | 43.4 |
BBQ Ambig | top-1 | 62.6 | 71.1 |
BBQ Disambig | top-1 | 58.4 | 50.8 |
Winogender | top-1 | 55.1 | 54.7 |
TruthfulQA | 35.1 | 42.7 | |
Winobias 1_2 | 58.4 | 56.4 | |
Winobias 2_2 | 90.0 | 75.4 | |
Toxigen | 56.7 | 50.0 |
模型使用和局限性
已知局限性
- 训练数据:
- 训练数据的质量和多样性会显著影响模型的能力。训练数据中的偏差或差距可能导致模型回复的局限性。
- 训练数据集的范围决定了模型能够有效处理的主题领域。
- 上下文和任务复杂性:
- 大语言模型更擅长可以用清晰提示和指令构建的任务。开放式或高度复杂的任务可能具有挑战性。
- 模型的性能可能会受到提供的上下文数量的影响(在一定程度上,更长的上下文通常会导致更好的输出)。
- 语言歧义与细微差别:自然语言本质上是复杂的。大语言模型可能难以理解微妙的细微差别、讽刺或比喻语言。
- 事实准确性:大语言模型根据从训练数据集中学到的信息生成回复,但它们不是知识库。它们可能会生成不正确或过时的事实陈述。
- 常识:大语言模型依赖于语言中的统计模式。它们可能在某些情况下缺乏应用常识推理的能力。
伦理考虑和风险
大语言模型(LLM)的开发引发了一些伦理问题。在创建开放模型时,我们仔细考虑了以下方面:
- 偏差和公平性:在大规模真实世界文本数据上训练的大语言模型可能反映训练材料中嵌入的社会文化偏差。这些模型经过了仔细审查,本卡片中描述了输入数据预处理和后续评估情况。
- 错误信息和滥用:大语言模型可能被滥用来生成虚假、误导或有害的文本。为模型的负责任使用提供了指南,请参阅Responsible Generative AI Toolkit。
- 透明度和问责制:本模型卡片总结了模型的架构、能力、局限性和评估过程的详细信息。一个负责任开发的开放模型为跨人工智能生态系统的开发者和研究人员提供了分享创新、使大语言模型技术可访问的机会。
已识别的风险和缓解措施
- 偏差的延续:鼓励在模型训练、微调及其他用例中进行持续监控(使用评估指标、人工审查),并探索去偏技术。
- 有害内容的生成:内容安全的机制和指南至关重要。鼓励开发者谨慎行事,并根据其特定的产品政策和应用用例实施适当的内容安全保障措施。
- 恶意用途的滥用:技术限制以及对开发者和最终用户的教育可以帮助减轻大语言模型的恶意应用。提供了教育资源和用户举报滥用行为的机制。Gemma模型的禁止使用情况在我们的使用条款中进行了概述。
- 隐私侵犯:模型在过滤掉个人身份信息(PII)的数据上进行训练。鼓励开发者遵守隐私法规,采用隐私保护技术。
预期用途
应用
开放大语言模型(LLM)在各个行业和领域有广泛的应用。以下潜在用途列表并不全面。此列表的目的是提供有关模型创建者在模型训练和开发过程中考虑的可能用例的上下文信息。
- 内容创作和通信:
- 文本生成:这些模型可用于生成创意文本格式,如诗歌、脚本、代码、营销文案、电子邮件草稿等。
- 聊天机器人和对话式人工智能:为客户服务、虚拟助手或交互式应用程序提供对话界面。
- 文本摘要:生成文本语料库、研究论文或报告的简洁摘要。
- 研究和教育:
- 自然语言处理(NLP)研究:这些模型可以作为研究人员试验NLP技术、开发算法并为该领域的发展做出贡献的基础。
- 语言学习工具:支持交互式语言学习体验,有助于语法纠正或提供写作练习。
- 知识探索:通过生成摘要或回答有关特定主题的问题,帮助研究人员探索大量文本。
优势
在发布时,该模型家族提供了高性能的开放大语言模型实现,与同等规模的模型相比,从一开始就为负责任的人工智能开发而设计。使用本文档中描述的基准评估指标,这些模型已显示出优于其他同等规模的开放模型替代方案的性能。特别是,RecurrentGemma模型与Gemma模型性能相当,但在推理时速度更快,尤其是在处理长序列时,需要的内存更少。
📄 许可证
本项目使用gemma
许可证。若要在Hugging Face上访问RecurrentGemma,你需要审查并同意Google的使用许可。为此,请确保你已登录Hugging Face并点击下方按钮。请求将立即处理。
[确认许可](Acknowledge license)



