许可证:cc-by-nc-4.0
数据集:
- yuyijiong/长指令中文数据集
语言:
- 中文
- 英文
任务标签:文本生成
中文长文本Llama模型
V2版本
- v2版本已发布,相比v1版本有显著提升,回答质量更高。
训练方法
- LongAlpaca采用LongLora训练技术,通过对llama2-chat模型进行位置插值后,再使用少量长文本数据进行指令微调,展现出卓越的长文本对话能力。
- LongAlpaca-7b-chinese采用类似训练方法:先进行线性位置插值,再通过少量长文本数据微调,使其具备优秀的长文本对话能力。
- 使用的中文数据集与LongAlpaca类似,但增加了多文档问答数据。
- 本模型基于Atom-7b-chat,通过线性位置插值将文本长度从4k扩展至32k,再经lora微调获得。目前可完成万字级多文档检索、论文总结等任务,已能满足大部分需求,且短对话能力几乎无损。
- 由于指令微调数据的任务类型有限,面对复杂任务时输出质量仍有提升空间。当前中文指令微调数据集多样性不足,存在过拟合问题,将在未来版本中改进。
- 使用中遇到问题欢迎提交讨论,帮助我们改进模型。
评估与推理
- 与英文版LongAlpaca相同,本模型支持streaming-LLM,可生成更长文本。示例代码
- 实验表明模型对长文本尾部指令更敏感,建议将问题置于参考文档后方。
- LongBench中文任务评测结果如下。评测发现模型在问答、总结等自由回答任务表现较好,在分类、多选等固定选项任务表现欠佳,可能因微调数据集未包含分类任务。
数据集 |
任务类型 |
评测指标 |
得分 |
dureader |
多文档QA |
rouge-L |
0.18369 |
multifield_qa |
单文档QA |
rouge-L |
0.40816 |
vcsum |
总结 |
rouge-L |
0.15166 |
lsht |
文本分类 |
Accuracy |
0.19680 |
passage_retrieval |
文本检索 |
Accuracy |
0.06000 |
使用方法:
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation import GenerationConfig
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
model_path="yuyijiong/LongAlpaca-7b-32k-chinese"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto", load_in_8bit=True).eval()
question="中国的首都是什么?"
input_text = "<s>Human: " + question + "\n</s><s>Assistant: "
input_ids = tokenizer(input_text, return_tensors='pt').input_ids.to(model.device)
with torch.no_grad():
with torch.autocast('cuda'):
output = model.generate(input_ids=input_ids,
max_new_tokens=max_new_tokens,
do_sample=True,
temperature=0.85,
top_k=None,
top_p=0.9,
use_cache=True,
**kwargs)
reply = tokenizer.decode(output[0], skip_special_tokens=False)
reply_return=reply.split('Assistant:')[-1].replace('</s>', '')
print('模型回答:', reply_return)
问答示例
多文档QA
用户输入(34726字):
先阅读以下多个参考文档,然后根据文档内容,详细地回答问题。
参考文档:
文档-[1]:标题:秦朝君主
内容:秦朝(公元前221年-公元前207年),由战国时代后期的秦国发展起来的中国历史上第一个统一大王朝,开国君主赢政自称始皇帝。本词条列出秦朝的3位君主,关于秦朝前身秦国的君主,另见秦国君主。此外,本词条还包括秦汉之际的地方政权君主。秦朝皇室为嬴姓赵氏,先秦时期,男子用氏,排在名之前,女子用姓,排在名之后。1、秦始皇嬴政——中国第一个皇帝,秦朝开国皇帝秦始皇生于赵国首都邯郸。中国历史上著名的政治家、改革家、战略家,首位完成中国统一的秦朝开国皇帝,秦庄襄王之子,十三岁即王位,三十九岁称皇帝,在位三十七年。秦始皇建立皇帝制度,中央实施三公九卿,地方废除分封制,代以郡县制,统一文字和度量衡,北击匈奴,南征百越,修筑万里长城。把中国推向了大一统时代,为建立专制主义中央集权制度开创了新局面,对中国和世界历史产生了深远影响,奠定中国两千余年政治制度基本格局。他被明代思想家李贽誉为“千古一帝”。2、秦二世胡亥——中国历史上最有名的二世祖秦始皇第十八子,扶苏之弟,秦朝的第二任皇帝,公元前210年—公元前207年在位。自幼从中车府令赵高学习狱法。秦始皇出游南方,病死沙丘宫平台,秘不发丧,在赵高、李斯的帮助下,逼死扶苏,继而又杀死兄弟姐妹二十余人,从而当上秦朝的二世皇帝。3、秦王子婴——在位仅46天,秦朝最后一个统治者子婴的身世并无定论。他是秦帝国第三任皇帝,也是秦朝最后一位统治者,世称“秦三世”。初称皇帝,后来改称“秦王”,在位46天,史称“秦王子婴”。子婴性格仁爱,有节制。秦二世胡亥被弑后。赵高迎立始皇帝嫡长孙子婴即皇帝位。其后不久,子婴依赵高建议,废帝号,称秦王。朝代名即位顺序君主谥号本名在位年数在位时间人物身份秦朝1秦始皇(始皇帝)嬴政12年公元前221年-公元前210年秦庄襄王子2秦二世(二世皇帝)嬴胡亥3年公元前210年-公元前207年秦始皇第十八子3秦王子婴(三世皇帝)嬴子婴仅46天公元前207年公子扶苏之子、秦始皇嫡长孙注释:嬴政当秦王的那段时间,不计入秦朝,而计入秦国(所以嬴政的帝王生涯分为:秦王政时期、秦始皇时期,故而史家记年时按照秦王政某年、秦始皇某年,以示区分)。秦汉之际楚国君主政权谥号姓名在世时间在位时间张楚楚隐王陈胜?-公元前208年公元前209年-公元前208年楚楚假王景驹?-公元前208年公元前208年楚楚怀王楚义帝熊心?-公元前205年公元前208年-公元前205年西楚楚霸王西楚霸王项羽公元前232年-公元前202年公元前206年-公元前202年
(后续文档内容省略...)
问题:秦银科是哪个单位的领导人?
模型输出:
综上所述,秦银科是湖北省潜江市熊口农场党委委员,并曾任熊口农场主要领导职务。\n
图书、论文总结
用户输入(7748字)
以下是一本图书的节选,请概括这一部分的主要内容。
图书节选:
(《水浒传》招安情节节选,描述燕青、戴宗为促成招安前往东京的详细过程...)
任务:请简要概括这个片段的内容。
模型输出
燕青、戴宗为促成梁山招安前往东京,通过李师师引荐面见宋徽宗。燕青机智周旋于权贵之间,最终获得皇帝亲笔赦书,并联合宿太尉推动招安事宜,同时设计救出被软禁的萧让、乐和,为梁山受招安铺平道路。\n