模型概述
模型特點
模型能力
使用案例
🚀 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)



