700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 中文LLaMA模型和指令精调的Alpaca大模型

中文LLaMA模型和指令精调的Alpaca大模型

时间:2023-06-05 18:45:14

相关推荐

中文LLaMA模型和指令精调的Alpaca大模型

以ChatGPT、GPT-4等为代表的大语言模型(Large Language Model, LLM)掀起了新一轮自然语言处理领域的研究浪潮,展现出了类通用人工智能(AGI)的能力,受到业界广泛关注。然而,由于大语言模型的训练和部署都极为昂贵,为构建透明且开放的学术研究造成了一定的阻碍。为了促进大模型在中文NLP社区的开放研究,本项目开源了中文LLaMA模型和指令精调的Alpaca大模型。这些模型在原版LLaMA的基础上扩充了中文词表并使用了中文数据进行二次预训练,进一步提升了中文基础语义理解能力。同时,中文Alpaca模型进一步使用了中文指令数据进行精调,显著提升了模型对指令的理解和执行能力。

技术报告(V2):[Cui, Yang, and Yao] Efficient and Effective Text Encoding for Chinese LLaMA and Alpaca

本项目主要内容:

针对原版LLaMA模型扩充了中文词表,提升了中文编解码效率开源了使用中文文本数据预训练的中文LLaMA以及经过指令精调的中文Alpaca开源了预训练脚本、指令精调脚本,用户可根据需要进一步训练模型快速使用笔记本电脑(个人PC)的CPU/GPU本地量化和部署体验大模型支持​编辑transformers,llama.cpp,text-generation-webui,LlamaChat,LangChain,privateGPT等生态目前已开源的模型版本:7B(基础版、Plus版)、13B(基础版、Plus版)、33B(基础版)

下图是中文Alpaca-Plus-7B模型在本地CPU量化部署后的实际体验速度和效果。

多模态中文LLaMA&Alpaca大模型|多模态VLE|中文MiniRBT|中文LERT|中英文PERT|中文MacBERT|中文ELECTRA|中文XLNet|中文BERT|知识蒸馏工具TextBrewer|模型裁剪工具TextPruner

新闻

[/07/10] Beta测试预览,提前了解即将到来的更新:详见讨论区

[/07/07] Chinese-LLaMA-Alpaca家族再添新成员,推出面向视觉问答与对话的多模态中文LLaMA&Alpaca大模型,发布了7B测试版本。

[/06/30] llama.cpp下8K context支持(无需对模型做出修改),相关方法和讨论见讨论区;transformers下支持4K+ context的代码请参考PR#705

[/06/16]v4.1版本: 发布新版技术报告、添加C-Eval解码脚本、添加低资源模型合并脚本等。

[/06/08]v4.0版本: 发布中文LLaMA/Alpaca-33B、添加privateGPT使用示例、添加C-Eval结果等。

[/06/05] llama.cpp已支持Apple Silicon GPU解码,解码速度大幅提升,详见:讨论区#开发者公告

[/05/16]v3.2版本: 添加指令精调脚本、LangChain支持、基于Gradio的本地Demo等。

[/05/10]v3.1版本: 发布中文LLaMA/Alpaca Plus-13B,使用了更大语料训练,相比基础版各项能力显著提升。

[/04/28]v3.0版本: 发布中文LLaMA/Alpaca Plus版本(7B),使用了更大的语料进行训练,相比基础版各项能力显著提升。另外还进一步完善了评测流程、添加了预训练脚本等。

往期新闻

内容导引

模型下载

用户须知(必读)

Facebook官方发布的LLaMA模型禁止商用,并且官方没有正式开源模型权重(虽然网上已经有很多第三方的下载地址)。为了遵循相应的许可,目前暂时无法发布完整的模型权重,敬请各位理解(目前国外也是一样)。Facebook完全开放模型权重之后,本项目会及时更新相关策略。这里发布的是LoRA权重,可以理解为原LLaMA模型上的一个“补丁”,两者进行合并即可获得完整版权重。以下中文LLaMA/Alpaca LoRA模型无法单独使用,需要搭配原版LLaMA模型。请参考本项目给出的合并模型步骤重构模型。

我应该选什么模型?

下面是中文LLaMA和Alpaca模型的基本对比以及建议使用场景(包括但不限于),更多内容见训练细节。

[1] llama.cpp/LlamaChat/HF推理代码/web-demo代码/LangChain示例等已内嵌,无需手动添加模板。

[2] 如果出现了模型回答质量特别低、胡言乱语、不理解问题等情况,请检查是否针对场景使用了正确的模型和正确的启动参数。

[3] 经过指令精调的Alpaca会比LLaMA多一个pad token,因此请勿混用LLaMA/Alpaca词表

推荐下载模型

以下为本项目推荐使用的模型列表,通常使用了更多的训练数据和优化的模型训练方法和参数,请优先使用这些模型(其余模型请查看其他模型)。如希望体验类ChatGPT对话交互,请使用Alpaca模型,而不是LLaMA模型。

可以在

Model Hub下载以上所有模型,并且使用transformers和PEFT调用中文LLaMA或Alpaca LoRA模型。以下模型调用名称指的是使用.from_pretrained()中指定的模型名称。

其他模型

由于训练方式和训练数据等因素影响,以下模型已不再推荐使用(特定场景下可能仍然有用),请优先使用上一节中的推荐模型。

对应的HuggingFace模型库地址:

脚注及其他说明

[1]重构需要原版LLaMA模型,去LLaMA项目申请使用或参考这个PR。因版权问题本项目无法提供下载链接。

[2]经过重构后的模型大小比同等量级的原版LLaMA大一些(主要因为扩充了词表)。

[3]下载后务必检查压缩包中模型文件的SHA256是否一致,请查看SHA256.md。

[4]Alpaca-Plus模型的合并方法略有不同,请参考合并教程。

[5]有些地方称为30B,实际上是Facebook在发布模型时写错了,论文里仍然写的是33B。

压缩包内文件目录如下(以Chinese-LLaMA-7B为例):

chinese_llama_lora_7b/- adapter_config.json# LoRA权重配置文件- adapter_model.bin# LoRA权重文件- special_tokens_map.json# special_tokens_map文件- tokenizer_config.json# tokenizer配置文件- tokenizer.model# tokenizer文件

以下是各原模型和4-bit量化后的大小,转换相应模型时确保本机有足够的内存和磁盘空间(最低要求):

合并模型

前面提到LoRA模型无法单独使用,必须与原版LLaMA进行合并才能转为完整模型,以便进行模型推理、量化或者进一步训练。请选择以下方法对模型进行转换合并。

具体内容请参考本项目 >>>​编辑GitHub Wiki

本地推理与快速部署

本项目中的模型主要支持以下量化、推理和部署方式。

†: LangChain框架支持,但教程中未实现;详细说明请参考LangChain官方文档。

具体内容请参考本项目 >>>​编辑GitHub Wiki

系统效果

生成效果评测

为了快速评测相关模型的实际文本生成表现,本项目在给定相同的prompt的情况下,在一些常见任务上对比测试了本项目的中文Alpaca-7B、中文Alpaca-13B、中文Alpaca-33B、中文Alpaca-Plus-7B、中文Alpaca-Plus-13B的效果。生成回复具有随机性,受解码超参、随机种子等因素影响。以下相关评测并非绝对严谨,测试结果仅供晾晒参考,欢迎自行体验。详细评测结果请查看examples目录。

客观效果评测

本项目还在“NLU”类客观评测集合上对相关模型进行了测试。这类评测的结果不具有主观性,只需要输出给定标签(需要设计标签mapping策略),因此可以从另外一个侧面了解大模型的能力。本项目在近期推出的C-Eval评测数据集上测试了相关模型效果,其中测试集包含12.3K个选择题,涵盖52个学科。以下是部分模型的valid和test集评测结果(Average),完整结果请参考技术报告。

需要注意的是,综合评估大模型能力仍然是亟待解决的重要课题,合理辩证地看待大模型相关各种评测结果有助于大模型技术的良性发展。推荐用户在自己关注的任务上进行测试,选择适配相关任务的模型。

C-Eval推理代码请参考本项目 >>>​编辑GitHub Wiki

训练细节

整个训练流程包括词表扩充、预训练和指令精调三部分。

本项目的模型均在原LLaMA词表的基础上扩充了中文单词,代码请参考merge_tokenizers.py预训练和指令精调代码参考了 transformers中的run_clm.py和Stanford Alpaca项目中数据集处理的相关部分已开源用于预训练和指令精调的训练脚本: 预训练脚本:scripts/training/run_clm_pt_with_peft.py,相关使用教程请参考预训练脚本Wiki指令精调脚本:scripts/training/run_clm_sft_with_peft.py,相关使用教程请参考指令精调脚本Wiki

具体内容请参考本项目 >>>​编辑GitHub Wiki

FAQ

FAQ中给出了常见问题的解答,请在提Issue前务必先查看FAQ。

问题1:为什么不能放出完整版本权重?问题2:后面会有33B、65B的版本吗?问题3:一些任务上效果不好!问题4:为什么要扩充词表?直接在原版LLaMA上用中文预训练不行吗?问题5:回复内容很短问题6:Windows下,模型无法理解中文、生成速度很慢等问题问题7:Chinese-LLaMA 13B模型没法用llama.cpp启动,提示维度不一致问题8:Chinese-Alpaca-Plus效果很差问题9:模型在NLU类任务(文本分类等)上效果不好问题10:为什么叫33B,不应该是30B吗?问题11:模型合并之后SHA256不一致

具体问题和解答请参考本项目 >>>​编辑GitHub Wiki

局限性

虽然本项目中的模型具备一定的中文理解和生成能力,但也存在局限性,包括但不限于:

可能会产生不可预测的有害内容以及不符合人类偏好和价值观的内容由于算力和数据问题,相关模型的训练并不充分,中文理解能力有待进一步提升暂时没有在线可互动的demo(注:用户仍然可以自行在本地部署)

引用

如果您觉得本项目对您的研究有所帮助或使用了本项目的代码或数据,请参考引用本项目的技术报告:/abs/2304.08177

@article{chinese-llama-alpaca,title={Efficient and Effective Text Encoding for Chinese LLaMA and Alpaca}, author={Cui, Yiming and Yang, Ziqing and Yao, Xin},journal={arXiv preprint arXiv:2304.08177},url={/abs/2304.08177},year={}}

相关项目

想要加入列表?>>>提交申请

致谢

本项目基于以下开源项目二次开发,在此对相关项目和研究开发人员表示感谢。

Episode: The current logo is automatically generated by GPT-4 with the DALL·E plugin (previously generated by midjourney).

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。