基础模型: google/gemma-7b
库名称: transformers
许可证: gemma
管道标签: 文本生成
额外访问标题: 在Hugging Face上访问Gemma
额外访问提示: 要访问Hugging Face上的Gemma模型,您需要审阅并同意Google的使用许可。请确保已登录Hugging Face账号并点击下方按钮。请求将立即处理。
额外访问按钮内容: 确认许可
Gemma模型卡片
模型页面: Gemma
本模型卡片对应Gemma-APS模型的7B微调版本。
您也可以查看2B微调模型的模型卡片。
资源与技术文档:
使用条款: 条款
作者: Mohammad Javad Hosseini, Yang Gao, Tim Baumgärtner, Alex Fabrikant, Reinald Kim Amplayo
模型信息
输入输出的简要说明与定义。
描述
Gemma-APS是用于抽象命题分割(简称APS)的生成模型和研究工具,也称为主张提取。
给定文本段落,模型会将内容分割为文本中表达的事实、陈述和观点,并通过小幅修改原文将其重述为完整句子。
该模型可用于需要将文本内容分解为有意义组件的研究。应用场景包括:
- 基础验证
- 信息检索
- 事实核查
- 生成任务评估(如摘要生成)
通过将独立命题(主张)分解处理可提升效率。详见研究论文。
上下文长度
模型训练上下文长度为8192个token。
使用方法
以下代码片段展示快速使用指南。首先执行pip install -U transformers nltk
安装依赖,然后复制适用场景的代码段。
为简化流程,我们定义了两个辅助函数处理输入输出:
import nltk
import re
nltk.download('punkt')
start_marker = '<s>'
end_marker = '</s>'
separator = '\n'
def create_propositions_input(text: str) -> str:
input_sents = nltk.tokenize.sent_tokenize(text)
propositions_input = ''
for sent in input_sents:
propositions_input += f'{start_marker} ' + sent + f' {end_marker}{separator}'
propositions_input = propositions_input.strip(f'{separator}')
return propositions_input
def process_propositions_output(text):
pattern = re.compile(f'{re.escape(start_marker)}(.*?){re.escape(end_marker)}', re.DOTALL)
output_grouped_strs = re.findall(pattern, text)
predicted_grouped_propositions = []
for grouped_str in output_grouped_strs:
grouped_str = grouped_str.strip(separator)
props = [x[2:] for x in grouped_str.split(separator)]
predicted_grouped_propositions.append(props)
return predicted_grouped_propositions
使用pipeline
API
from transformers import pipeline
import torch
generator = pipeline('text-generation', 'google/gemma-7b-aps-it', device_map='auto', torch_dtype=torch.bfloat16)
passage = 'Sarah Stage, 30, welcomed James Hunter into the world on Tuesday.\nThe baby boy weighed eight pounds seven ounces and was 22 inches long.'
messages = [{'role': 'user', 'content': create_propositions_input(passage)}]
output = generator(messages, max_new_tokens=4096, return_full_text=False)
result = process_propositions_output(output[0]['generated_text'])
print(result)
示例输出
[
[
"Sarah Stage welcomed James Hunter into the world.",
"Sarah Stage is 30 years old.",
"James Hunter was welcomed on Tuesday."
],
[
"James Hunter weighed eight pounds seven ounces.",
"James Hunter was 22 inches long."
]
]
使用AutoModel
和AutoTokenizer
API
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = 'google/gemma-7b-aps-it'
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map='auto',
torch_dtype=torch.bfloat16,
)
passage = "For more than 40 years, the lyrics of American Pie have been puzzled over. This week the handwritten lyrics sold for more than $1 million at auction. The verses contain hidden references to seminal events of the 50s and 60s. It includes nods to Buddy Holly, Charles Manson and Martin Luther King."
messages = [{'role': 'user', 'content': create_propositions_input(passage)}]
inputs = tokenizer.apply_chat_template(messages, return_tensors='pt', add_generation_prompt=True, return_dict=True).to(model.device)
output = model.generate(**inputs, max_new_tokens=4096, do_sample=False)
generated_text = tokenizer.batch_decode(output[:, inputs['input_ids'].shape[1]:], skip_special_tokens=True)[0]
result = process_propositions_output(generated_text)
print(result)
示例输出
[
[
"The lyrics of American Pie have been puzzled over for more than 40 years."
],
[
"The handwritten lyrics sold for more than $1 million.",
"The handwritten lyrics sold at auction.",
"The handwritten lyrics sold this week."
],
[
"The verses contain hidden references to seminal events of the 50s.",
"The verses contain hidden references to seminal events of the 60s."
],
[
"The lyrics include nods to Buddy Holly.",
"The lyrics include nods to Charles Manson.",
"The lyrics include nods to Martin Luther King."
]
]
输入输出
- 输入: 文本段落
- 输出: 文本中所有句子的命题列表,每个句子的命题单独分组。
模型数据
模型训练数据及处理方法。
训练数据集
- 训练数据包含合成生成的(输入段落,命题列表)样本对
- 输入段落通过少量提示Gemini Ultra生成
- 命题列表通过教师LLM(基于过滤版ROSE数据集训练的Gemini Pro模型)处理输入段落生成
详见研究论文。
数据预处理
- 过滤与提示样本有≥4个token重叠的段落
- 使用蕴含模型过滤ROSE数据集,确保命题符合要求
实现信息
模型内部细节。
硬件
与Gemma相同,Gemma-APS在TPUv5e上训练。
训练大语言模型需要强大算力,TPU具备以下优势:
- 性能:专为机器学习矩阵运算设计
- 内存:大带宽内存支持大批量训练
- 扩展性:TPU Pods可分布式训练
- 成本效益:相比CPU基础设施更经济
符合Google可持续发展承诺。
软件
使用JAX框架训练,支持TPU等最新硬件加速。
评估
模型评估指标与结果。
基准测试
在一个领域内数据集(过滤后的ROSE开发集)和两个领域外数据集(论文新引入)上评估,采用新设计的抽象命题分割指标。
伦理与安全
伦理安全评估方法与结果。
评估方法
本模型仅适用于英文文本的抽象命题分割。虽然在三个评估集上表现优于基线,但仍可能存在错误。
使用限制
用户需注意的模型限制。
适用范围
仅支持英文文本的抽象命题分割,其他任务或语言不适用。
局限性
- 训练数据
- 数据质量与多样性影响模型能力
- 目前测试集中于含少量句子的多领域段落
- 语言歧义
- 事实准确性
- 常识推理
伦理考量与风险
风险缓解措施:
- 持续监控偏见
- 实施内容安全机制
- 教育开发者合规使用
- 训练数据去除PII信息
优势
本模型对从事抽象命题分割研究的学者极具价值,可应用于基础验证、检索、事实核查等领域。