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: 确认许可协议
tags:
- conversational
base_model: google/gemma-2-27b-it
DataGemma RAG模型卡片
资源与技术文档:
使用条款: 条款
作者: Google
模型信息
描述
DataGemma是一系列经过微调的Gemma 2模型,旨在帮助大语言模型访问并整合来自Data Commons的可靠公共统计数据。DataGemma RAG采用检索增强生成技术,经过训练后能接收用户查询并生成可被Data Commons现有自然语言接口理解的自然语言查询。更多信息详见研究论文。
输入输出
- 输入: 包含用户查询及统计问题提示的文本字符串
- 输出: 可用于回答用户查询且能被Data Commons自然语言接口理解的查询列表
示例提示模板(用于生成用户查询[用户查询]
的统计问题):
您的角色是问题生成器。根据下方查询,生成最多25个有助于回答该查询的统计问题。
允许生成的统计问题形式仅限于:
1. $PLACE的$METRIC是多少?
2. $PLACE的$PLACE_TYPE的$METRIC是多少?
3. $PLACE的$PLACE_TYPE中$METRIC随时间如何变化?
其中:
- $METRIC应为社会议题指标(如人口统计、经济、健康、教育、环境等),例如失业率、预期寿命
- $PLACE为地名(如加利福尼亚州、世界、金奈等)
- $PLACE_TYPE是该地区直接子类型(如县、州、区等)
响应应仅包含问题,每行一个,无需编号或项目符号。
若无法生成相关统计问题,请返回空响应。
查询: [用户查询]
统计问题:
使用方式
以下代码片段展示了如何运行微调模型(完整RAG流程中的一个步骤,详见DataGemma论文)。您可通过Colab笔记本体验端到端RAG流程。
运行前请先执行pip install -U transformers accelerate
,然后复制下方代码:
单/多GPU运行
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = 'google/datagemma-rag-27b-it'
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map='auto',
torch_dtype=torch.bfloat16,
)
input_text = """您的角色是问题生成器...(同前述提示模板)..."""
inputs = tokenizer(input_text, return_tensors='pt').to('cuda')
outputs = model.generate(**inputs, max_new_tokens=4096)
answer = tokenizer.batch_decode(outputs[:, inputs['input_ids'].shape[1]:], skip_special_tokens=True)[0].strip()
print(answer)
示例输出
森尼维尔的常住人口是多少?
森尼维尔男性人口是多少?
森尼维尔女性人口是多少?
森尼维尔亚裔人口是多少?
森尼维尔黑人人口是多少?
森尼维尔白人人口是多少?
森尼维尔20多岁男性人口是多少?
森尼维尔20多岁女性人口是多少?
...(后续问题省略)...
</details>
### 4位量化运行(bitsandbytes)
需先执行`pip install -U transformers bitsandbytes accelerate`,然后复制下方代码:
```python
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
import torch
nf4_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type='nf4',
bnb_4bit_compute_dtype=torch.bfloat16,
)
model_id = 'google/datagemma-rag-27b-it'
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map='auto',
quantization_config=nf4_config,
torch_dtype=torch.bfloat16,
)
# 后续代码同前
引用
@misc{radhakrishnan2024knowing,
title={Knowing When to Ask - Bridging Large Language Models and Data},
author={Prashanth Radhakrishnan等},
year={2024},
url={https://datacommons.org/link/DataGemmaPaper},
}
模型数据
基础模型训练数据详见Gemma 2文档。DataGemma RAG基于合成生成数据微调,细节见DataGemma论文。
实现信息
与Gemma相同,DataGemma RAG使用JAX在TPUv5e上训练。
评估
模型评估作为完整RAG工作流的一部分进行,记录于DataGemma论文。
伦理与安全
当前为早期版本,仅限学术研究用途。由于训练样本有限,可能产生意外或争议性输出。请注意:
- 已对Data Commons自然语言接口进行红队测试
- 商业用途前需进行额外安全评估
- 详细限制参见DataGemma论文
使用限制
用户应注意以下限制:
- 当前版本仅供受信任的测试者(主要是学术研究用途)
- 可能出现错误或争议性输出
- 欢迎通过论文中渠道反馈评估结果