LLMs:Chinese-LLaMA-Alpaca的简介(扩充中文词表+增量预训练+指令精调)、安装、案例实战应用之详细攻略

导读:2023年4月17日,哈工大讯飞联合实验室,本项目开源了中文LLaMA模型和指令精调的Alpaca大模型,以进一步促进大模型在中文NLP社区的开放研究。Chinese-LLaMA在原版LLaMA的基础上进行了三步走=扩充中文词表+增量预训练+指令精调:扩充中文词表并使用了大规模中文语料数据进行增量预训练(因为采用了LoRA技巧,其本质还是高效参数微调),更好地理解新的语义和语境,进一步提升了中文基础语义理解能力。然后,Chinese-Alpaca模型进一步使用了中文指令数据进行指令精调(依旧采用了LoRA技巧),显著提升了模型对指令的理解和执行能力。 >>LoRA权重无法单独使用:理解为原LLaMA模型上的一个补丁,即需要合并原版LLaMA模型才能使用; >>针对原版LLaMA模型扩充了中文词表,提升了中文编解码效率; >>开源了使用中文文本数据预训练的Chinese-LLaMA以及经过指令精调的Chinese-Alpaca; >>开源了预训练脚本、指令精调脚本,用户可根据需要进一步训练模型; >>快速使用笔记本电脑(个人PC)的CPU/GPU本地量化和部署体验大模型;

排疑:可以不进行增量预训练而直接采用指令微调吗? 如果没有进行增量预训练,模型可能无法充分利用新的中文词表,并可能在生成和理解中遇到困难。不进行增量预训练而直接使用指令微调,可能会限制模型在新的中文词表上的性能和适应性。因此,建议在进行指令微调之前,先进行适当的增量预训练,以提高模型的性能和适应性。

目录

相关文章

论文相关

LLMs:《Efficient and Effective Text Encoding for Chinese LLaMA and Alpaca-4月17日版》翻译与解读

LLMs:《Efficient And Effective Text Encoding For Chinese Llama And Alpaca—6月15日版本》翻译与解读

LLMs之LLaMA2:LLaMA2的简介(技术细节)、安装、使用方法(开源-免费用于研究和商业用途)之详细攻略

实战应用相关

LLMs:Chinese-LLaMA-Alpaca的简介(扩充中文词表+增量预训练+指令精调)、安装、案例实战应用之详细攻略

LLMs之Chinese-LLaMA-Alpaca:LLaMA汉化版项目详细源码解读多个py文件-基于Ng单机单卡实现定义数据集(生成指令数据)→数据预处理(token分词/合并权重)→增量预训练(本质是高效参数微调,LoRA的参数/LLaMA的参数)→指令微调LoRA权重(继续训练/全新训练)→模型推理(CLI、GUI【webui/LLaMACha/LangChain】)

LLMs之Chinese-LLaMA-Alpaca:基于单机CPU+Windows系统实现中文LLaMA算法进行模型部署(llama.cpp)+模型推理全流程步骤【安装环境+创建环境并安装依赖+原版LLaMA转HF格式+合并llama_hf和chinese-alpaca-lora-7b→下载llama.cpp进行模型的量化(CMake编译+生成量化版本模型)→部署f16/q4_0+测试效果】的图文教程(非常详细)

LLMs:Chinese-LLaMA-Alpaca-2(基于deepspeed框架)的简介、安装、案例实战应用之详细攻略

LLMs之Chinese-LLaMA-Alpaca-2:源码解读(run_clm_pt_with_peft.py文件)—模型训练前置工作(参数解析+配置日志)→模型初始化(检测是否存在训练过的checkpoint+加载预训练模型和tokenizer)→数据预处理(处理【标记化+分块】+切分txt数据集)→优化模型配置(量化模块+匹配模型vocabulary大小与tokenizer+初始化PEFT模型【LoRA】+梯度累积checkpointing等)→模型训练(继续训练+评估指标+自动保存中间训练结果)/模型评估(+PPL指标)

LLMs之Chinese-LLaMA-Alpaca-2:源码解读(run_clm_sft_with_peft.py文件)—模型训练前置工作(参数解析+配置日志)→模型初始化(检测是否存在训练过的checkpoint+加载预训练模型和tokenizer)→数据预处理(监督式任务的数据收集器+指令数据集【json格式】)→优化模型配置(量化模块+匹配模型vocabulary大小与tokenizer+初始化PEFT模型【LoRA】+梯度累积checkpointing等)→模型训练(继续训练+评估指标+自动保存中间训练结果)/模型评估(+PPL指标)

Chinese-LLaMA-Alpaca的简介

1、主要内容

2、版本更新内容公告

3、系统效果:介绍了部分场景和任务下的使用体验效果

生成效果评测

客观效果评测

4、下图展示了本项目以及二期项目推出的所有大模型之间的关系

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

Chinese-LLaMA-Alpaca的的安装

1、模型下载:中文LLaMA、Alpaca大模型下载地址:LoRA权重无法单独使用(理解为原LLaMA模型上的一个补丁)+需要合并原版LLaMA模型才能使用

T1、直接从网盘下载

推荐模型下载

其他模型下载

T2、在transformers平台下载,珞transformers调用

2、合并模型(重要):LoRA权重模型,可以理解为原LLaMA模型上的一个“补丁”,两者合并即可获得完整版权重;中文LLaMA/Alpaca LoRA模型无法单独使用,需要搭配原版LLaMA模型

3、训练细节—介绍了中文LLaMA、Alpaca大模型的训练细节:词表扩充→预训练→指令精调

Chinese-LLaMA-Alpaca的的使用方法

1、本地推理与快速部署:介绍了如何对模型进行量化并使用个人电脑部署并体验大模型

相关文章

论文相关

LLMs:《Efficient and Effective Text Encoding for Chinese LLaMA and Alpaca-4月17日版》翻译与解读

LLMs:《Efficient and Effective Text Encoding for Chinese LLaMA and Alpaca-4月17日版》翻译与解读_一个处女座的程序猿的博客-CSDN博客

LLMs:《Efficient And Effective Text Encoding For Chinese Llama And Alpaca—6月15日版本》翻译与解读

https://yunyaniu.blog.csdn.net/article/details/131318974

LLMs之LLaMA2:LLaMA2的简介(技术细节)、安装、使用方法(开源-免费用于研究和商业用途)之详细攻略

LLMs之LLaMA2:LLaMA2的简介(技术细节)、安装、使用方法(开源-免费用于研究和商业用途)之详细攻略_一个处女座的程序猿的博客-CSDN博客

实战应用相关

LLMs:Chinese-LLaMA-Alpaca的简介(扩充中文词表+增量预训练+指令精调)、安装、案例实战应用之详细攻略

https://yunyaniu.blog.csdn.net/article/details/130397623

LLMs之Chinese-LLaMA-Alpaca:LLaMA汉化版项目详细源码解读多个py文件-基于Ng单机单卡实现定义数据集(生成指令数据)→数据预处理(token分词/合并权重)→增量预训练(本质是高效参数微调,LoRA的参数/LLaMA的参数)→指令微调LoRA权重(继续训练/全新训练)→模型推理(CLI、GUI【webui/LLaMACha/LangChain】)

https://yunyaniu.blog.csdn.net/article/details/131319010

LLMs之Chinese-LLaMA-Alpaca:基于单机CPU+Windows系统实现中文LLaMA算法进行模型部署(llama.cpp)+模型推理全流程步骤【安装环境+创建环境并安装依赖+原版LLaMA转HF格式+合并llama_hf和chinese-alpaca-lora-7b→下载llama.cpp进行模型的量化(CMake编译+生成量化版本模型)→部署f16/q4_0+测试效果】的图文教程(非常详细)

LLMs之Chinese-LLaMA-Alpaca:基于单机CPU+Windows系统实现中文LLaMA算法进行模型部署(llama.cpp)+模型推理全流程步骤【安装环境+创建环境并安装依赖+原版L-CSDN博客  

LLMs:Chinese-LLaMA-Alpaca-2(基于deepspeed框架)的简介、安装、案例实战应用之详细攻略

LLMs:Chinese-LLaMA-Alpaca-2(基于deepspeed框架)的简介、安装、案例实战应用之详细攻略_一个处女座的程序猿的博客-CSDN博客

LLMs之Chinese-LLaMA-Alpaca-2:源码解读(run_clm_pt_with_peft.py文件)—模型训练前置工作(参数解析+配置日志)→模型初始化(检测是否存在训练过的checkpoint+加载预训练模型和tokenizer)→数据预处理(处理【标记化+分块】+切分txt数据集)→优化模型配置(量化模块+匹配模型vocabulary大小与tokenizer+初始化PEFT模型【LoRA】+梯度累积checkpointing等)→模型训练(继续训练+评估指标+自动保存中间训练结果)/模型评估(+PPL指标)

LLMs之Chinese-LLaMA-Alpaca-2:源码解读(run_clm_pt_with_peft.py文件)—模型训练前置工作(参数解析+配置日志)→模型初始化(检测是否存在训练过的chec-CSDN博客

LLMs之Chinese-LLaMA-Alpaca-2:源码解读(run_clm_sft_with_peft.py文件)—模型训练前置工作(参数解析+配置日志)→模型初始化(检测是否存在训练过的checkpoint+加载预训练模型和tokenizer)→数据预处理(监督式任务的数据收集器+指令数据集【json格式】)→优化模型配置(量化模块+匹配模型vocabulary大小与tokenizer+初始化PEFT模型【LoRA】+梯度累积checkpointing等)→模型训练(继续训练+评估指标+自动保存中间训练结果)/模型评估(+PPL指标)

LLMs之Chinese-LLaMA-Alpaca-2:源码解读(run_clm_sft_with_peft.py文件)—模型训练前置工作(参数解析+配置日志)→模型初始化(检测是否存在训练过的che_一个处女座的程序猿的博客-CSDN博客

Chinese-LLaMA-Alpaca的简介

         本项目开源了中文LLaMA模型和指令精调的Alpaca大模型,以进一步促进大模型在中文NLP社区的开放研究。这些模型在原版LLaMA的基础上扩充了中文词表并使用了中文数据进行二次预训练,进一步提升了中文基础语义理解能力。同时,中文Alpaca模型进一步使用了中文指令数据进行精调,显著提升了模型对指令的理解和执行能力。 上图是中文Alpaca-Plus-7B模型在本地CPU量化部署后的实际体验速度和效果。

地址 GitHub:https://github.com/ymcui/Chinese-LLaMA-Alpaca 论文:https://arxiv.org/abs/2304.08177 时间 [v1] 2023年4月17日 [v2] 2023年6月15日 作者

1、主要内容

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

2、版本更新内容公告

3、系统效果:介绍了部分场景和任务下的使用体验效果

生成效果评测

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

详细评测结果及生成样例请查看examples目录 Alpaca模型在线对战:http://chinese-alpaca-arena.ymcui.com

客观效果评测

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

模型Valid (zero-shot)Valid (5-shot)Test (zero-shot)Test (5-shot)Chinese-Alpaca-Plus-33B46.546.344.943.5Chinese-Alpaca-33B43.342.641.640.4Chinese-Alpaca-Plus-13B43.342.441.539.9Chinese-Alpaca-Plus-7B36.732.936.432.3Chinese-LLaMA-Plus-33B37.440.035.738.3Chinese-LLaMA-33B34.938.434.639.5Chinese-LLaMA-Plus-13B27.334.027.833.3Chinese-LLaMA-Plus-7B27.328.326.928.4

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

C-Eval推理代码请参考本项目 >>> 

4、下图展示了本项目以及二期项目推出的所有大模型之间的关系

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

对比项中文LLaMA中文Alpaca训练方式传统CLM指令精调模型类型基座模型指令理解模型(类ChatGPT)训练语料无标注通用语料有标注指令数据词表大小[3]4995349954=49953+1(pad token)输入模板不需要需要符合模板要求[1]适用场景 ✔️文本续写:给定上文内容,让模型生成下文指令理解(问答、写作、建议等);多轮上下文理解(聊天等)不适用场景 ❌指令理解 、多轮聊天等文本无限制自由生成llama.cpp使用-p参数指定上文使用-ins参数启动指令理解+聊天模式text-generation-webui不适合chat模式使用--cpu可在无显卡形式下运行LlamaChat加载模型时选择"LLaMA"加载模型时选择"Alpaca"HF推理代码无需添加额外启动参数启动时添加参数 --with_promptweb-demo代码不适用直接提供Alpaca模型位置即可;支持多轮对话LangChain示例 / privateGPT不适用直接提供Alpaca模型位置即可已知问题如果不控制终止,则会一直写下去,直到达到输出长度上限。[2]请使用Pro版,以避免Plus版回复过短的问题。

[1] llama.cpp/LlamaChat/HF推理代码/web-demo代码/LangChain示例等已内嵌,无需手动添加模板。[2] 如果出现模型回答质量特别低、胡言乱语、不理解问题等情况,请检查是否使用了正确的模型和启动参数。[3] 经过指令精调的Alpaca会比LLaMA多一个pad token,因此请勿混用LLaMA/Alpaca词表。

Chinese-LLaMA-Alpaca的的安装

1、模型下载:中文LLaMA、Alpaca大模型下载地址:LoRA权重无法单独使用(理解为原LLaMA模型上的一个补丁)+需要合并原版LLaMA模型才能使用

Facebook官方发布的LLaMA模型禁止商用,并且官方没有正式开源模型权重(虽然网上已经有很多第三方的下载地址)。为了遵循相应的许可,这里发布的是LoRA权重,可以理解为原LLaMA模型上的一个“补丁”,两者合并即可获得完整版权重。以下中文LLaMA/Alpaca LoRA模型无法单独使用,需要搭配原版LLaMA模型。请参考本项目给出的合并模型步骤重构模型。 实际上,由于LLaMA许可限制无法提供原版模型,LoRA模型本身也不完整,所以必须与原版LLaMA模型合并后才能形成可用的完整中文大模型。这是遵循开源协议的一种妥协方案。

T1、直接从网盘下载

推荐模型下载

以下为本项目推荐使用的模型列表,通常使用了更多的训练数据和优化的模型训练方法和参数,请优先使用这些模型(其余模型请查看其他模型)。如希望体验类ChatGPT对话交互,请使用Alpaca模型,而不是LLaMA模型。 对于Alpaca模型,Pro版针对回复内容过短的问题进行改进,模型回复效果有明显提升;如果更偏好短回复,请选择Plus系列。

模型名称类型训练数据重构模型[1]大小[2]LoRA下载[3]Chinese-LLaMA-Plus-7B基座模型通用120G原版LLaMA-7B790M[百度网盘][Google Drive]Chinese-LLaMA-Plus-13B基座模型通用120G原版LLaMA-13B1.0G[百度网盘][Google Drive]Chinese-LLaMA-Plus-33B 基座模型通用120G原版LLaMA-33B1.3G[6][百度网盘][Google Drive]Chinese-Alpaca-Pro-7B 指令模型指令4.3M原版LLaMA-7B & LLaMA-Plus-7B[4]1.1G[百度网盘][Google Drive]Chinese-Alpaca-Pro-13B 指令模型指令4.3M原版LLaMA-13B & LLaMA-Plus-13B[4]1.3G[百度网盘][Google Drive]Chinese-Alpaca-Pro-33B 指令模型指令4.3M原版LLaMA-33B & LLaMA-Plus-33B[4]2.1G[百度网盘][Google Drive]

[1] 重构需要原版LLaMA模型,去LLaMA项目申请使用或参考这个PR。因版权问题本项目无法提供下载链接。[2] 经过重构后的模型大小比同等量级的原版LLaMA大一些(主要因为扩充了词表)。[3] 下载后务必检查压缩包中模型文件的SHA256是否一致,请查看SHA256.md。[4] Alpaca-Plus模型需要同时下载对应的LLaMA-Plus模型,请参考合并教程。[5] 有些地方称为30B,实际上是Facebook在发布模型时写错了,论文里仍然写的是33B。[6] 采用FP16存储,故模型体积较小。

压缩包内文件目录如下(以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文件

其他模型下载

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

模型名称类型训练数据重构模型大小LoRA下载Chinese-LLaMA-7B基座模型通用20G原版LLaMA-7B770M[百度网盘][Google Drive]Chinese-LLaMA-13B基座模型通用20G原版LLaMA-13B1.0G[百度网盘][Google Drive]Chinese-LLaMA-33B基座模型通用20G原版LLaMA-33B2.7G[百度网盘][Google Drive]Chinese-Alpaca-7B指令模型指令2M原版LLaMA-7B790M[百度网盘][Google Drive]Chinese-Alpaca-13B指令模型指令3M原版LLaMA-13B1.1G[百度网盘][Google Drive]Chinese-Alpaca-33B指令模型指令4.3M原版LLaMA-33B2.8G[百度网盘][Google Drive]Chinese-Alpaca-Plus-7B指令模型指令4M原版LLaMA-7B & LLaMA-Plus-7B1.1G[百度网盘][Google Drive]Chinese-Alpaca-Plus-13B指令模型指令4.3M原版LLaMA-13B & LLaMA-Plus-13B1.3G[百度网盘][Google Drive]Chinese-Alpaca-Plus-33B指令模型指令4.3M原版LLaMA-33B & LLaMA-Plus-33B2.1G[百度网盘][Google Drive]

T2、在transformers平台下载,珞transformers调用

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

Pro版命名(只有Alpaca):ziqingyang/chinese-alpaca-pro-lora-${model_size} Plus版命名:ziqingyang/chinese-${model_name}-plus-lora-${model_size} 基础版命名:ziqingyang/chinese-${model_name}-lora-${model_size} $model_name:llama或者alpaca;$model_size:7b, 13b, 33b 举例:Chinese-LLaMA-Plus-33B模型对应的调用名称是ziqingyang/chinese-llama-plus-lora-33b

详细清单与模型下载地址:https://huggingface.co/ziqingyang

2、合并模型(重要):LoRA权重模型,可以理解为原LLaMA模型上的一个“补丁”,两者合并即可获得完整版权重;中文LLaMA/Alpaca LoRA模型无法单独使用,需要搭配原版LLaMA模型

介绍如何将下载的LoRA模型与原版LLaMA合并

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

方式适用场景教程在线转换Colab用户可利用本项目提供的notebook进行在线转换并量化模型链接手动转换离线方式转换,生成不同格式的模型,以便进行量化或进一步精调链接

以下是合并模型后,FP16精度和4-bit量化后的大小,转换前确保本机有足够的内存和磁盘空间(最低要求):

模型版本7B13B33B65B原模型大小(FP16)13 GB24 GB60 GB120 GB量化后大小(8-bit)7.8 GB14.9 GB32.4 GB~60 GB量化后大小(4-bit)3.9 GB7.8 GB17.2 GB38.5 GB

具体内容请参考本项目 >>>  GitHub Wiki

3、训练细节—介绍了中文LLaMA、Alpaca大模型的训练细节:词表扩充→预训练→指令精调

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

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

具体内容请参考本项目 >>>  GitHub Wiki

Chinese-LLaMA-Alpaca的的使用方法

1、本地推理与快速部署:介绍了如何对模型进行量化并使用个人电脑部署并体验大模型

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

推理和部署方式特点平台CPUGPU量化加载图形界面教程llama.cpp丰富的量化选项和高效本地推理通用✅✅✅❌link珞Transformers原生transformers推理接口通用✅✅✅✅linktext-generation-webui前端Web UI界面的部署方式通用✅✅✅✅linkLlamaChatmacOS下的图形交互界面MacOS✅❌✅✅linkLangChainLLM应用开发框架,适用于进行二次开发通用✅†✅✅†❌linkprivateGPT基于LangChain的多文档本地问答框架通用✅✅✅❌linkColab Gradio DemoColab中启动基于Gradio的交互式Web服务通用✅✅✅❌linkAPI调用仿OpenAI API接口的服务器Demo通用✅✅✅❌link

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

具体内容请参考本项目 >>>  GitHub Wiki

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: