中文LLaMA-2基座模型和Alpaca-2指令精调大模型-中文LLaMA-2以及Alpaca-2系列模型
GitHub - ymcui/Chinese-LLaMA-Alpaca-2: 中文 LLaMA-2 & Alpaca-2 大模型二期项目 (Chinese LLaMA-2 & Alpaca-2 LLMs)
本项目基于Meta发布的可商用大模型Llama-2开发,是中文LLaMA&Alpaca大模型的第二期项目,开源了中文LLaMA-2基座模型和Alpaca-2指令精调大模型。这些模型在原版Llama-2的基础上扩充并优化了中文词表,使用了大规模中文数据进行增量预训练,进一步提升了中文基础语义和指令理解能力,相比一代相关模型获得了显著性能提升。相关模型支持4K上下文并可通过NTK方法最高扩展至18K+。
本项目主要内容:
内容导引
模型简介
本项目推出了基于Llama-2的中文LLaMA-2以及Alpaca-2系列模型,相比一期项目其主要特点如下:
📖 经过优化的中文词表
- 在一期项目中,我们针对一代LLaMA模型的32K词表扩展了中文字词(LLaMA:49953,Alpaca:49954),以期进一步提升模型对中文文本的编解码效率
- 在本项目中,我们重新设计了新词表(大小:55296),进一步提升了中文字词的覆盖程度,同时统一了LLaMA/Alpaca的词表,避免了因混用词表带来的问题
⚡ 基于FlashAttention-2的高效注意力
- FlashAttention-2是高效注意力机制的一种实现,相比其一代技术具有更快的速度和更优化的显存占用
- 当上下文长度更长时,为了避免显存爆炸式的增长,使用此类高效注意力技术尤为重要
- 本项目的所有模型均使用了FlashAttention-2技术进行训练
🚄 基于NTK的自适应上下文扩展技术
- 在一期项目中,我们实现了基于NTK的上下文扩展技术,可在不继续训练模型的情况下支持更长的上下文
- 在上述基础上,我们进一步设计了方便的自适应经验公式,无需针对不同的上下文长度设置相应超参
- 本项目模型原生支持4K上下文,利用上述技术可扩展至12K,并最高支持扩展至18K+(精度有一定损失)
🤖 简化的中英双语系统提示语
- 在一期项目中,中文Alpaca系列模型使用了Stanford
Alpaca的指令模板和系统提示语
- 初步实验发现,Llama-2-Chat系列模型的默认系统提示语未能带来统计显著的性能提升,且其内容过于冗长
- 本项目中的Alpaca-2系列模型简化了系统提示语,同时遵循Llama-2-Chat指令模板,以便更好地适配相关生态
模型下载
模型选择指引
下面是中文LLaMA-2和Alpaca-2模型的基本对比以及建议使用场景。
对比项
|
中文LLaMA-2
|
中文Alpaca-2
|
训练方式
|
传统CLM
|
指令精调
|
模型类型
|
基座模型
|
指令/Chat模型(类ChatGPT)
|
训练语料
|
无标注通用语料
|
有标注指令数据
|
词表大小[1]
|
55,296
|
55,296
|
输入模板
|
不需要
|
需要套用特定模板[2],类似Llama-2-Chat
|
适用场景
|
文本续写:给定上文,让模型生成下文
|
指令理解:问答、写作、聊天、交互等
|
不适用场景
|
指令理解 、多轮聊天等
|
文本无限制自由生成
|
[1] 本项目一代模型和二代模型的词表不同,请勿混用。二代LLaMA和Alpaca的词表相同。
[2] Alpaca-2采用了Llama-2-chat系列模板(格式相同,提示语不同),而不是一代Alpaca的模板,请勿混用。
完整模型下载
以下是完整版模型,直接下载即可使用,无需其他合并步骤。推荐网络带宽充足的用户。
LoRA模型下载
以下是LoRA模型,与上述完整模型一一对应。需要注意的是LoRA模型无法直接使用,必须按照教程与重构模型进行合并。推荐网络带宽不足,手头有原版Llama-2且需要轻量下载的用户。
由于LoRA模型无法单独使用,必须与原版Llama-2进行合并才能转为完整模型,以便进行模型推理、量化或者进一步训练。请选择以下方法对模型进行转换合并。
- 在线转换:Colab用户可利用本项目提供的notebook进行在线转换并量化模型
- 手动转换:离线方式转换,生成不同格式的模型,以便进行量化或进一步精调
推理与部署
本项目中的相关模型主要支持以下量化、推理和部署方式。
†: LangChain框架支持,但教程中未实现;详细说明请参考LangChain官方文档。
系统效果
生成效果评测
为了更加直观地了解模型的生成效果,本项目仿照Fastchat Chatbot Arena推出了模型在线对战平台,可浏览和评测模型回复质量。对战平台提供了胜率、Elo评分等评测指标,并且可以查看两两模型的对战胜率等结果。题库来自于一期项目人工制作的200题,以及在此基础上额外增加的题目。生成回复具有随机性,受解码超参、随机种子等因素影响,因此相关评测并非绝对严谨,结果仅供晾晒参考,欢迎自行体验。部分生成样例请查看examples目录。
测试模型包括:
- 一期模型:Chinese-Alpaca-Pro系列(7B/13B/33B)、Chinese-Alpaca-Plus系列(7B/13B/33B)
- 二期模型(本项目):Chinese-Alpaca-2(7B)
📊 模型在线对战:http://chinese-alpaca-arena.ymcui.com
客观效果评测
本项目还在“NLU”类客观评测集合上对相关模型进行了测试。这类评测的结果不具有主观性,只需要输出给定标签(需要设计标签mapping策略),因此可以评测大模型的部分NLU能力。本项目在C-Eval评测数据集上测试了相关模型效果,其中验证集包含1.3K个选择题,测试集包含12.3K个选择题,涵盖52个学科。从以下结果可以看出本项目推出的模型相比一期模型具有显著性能优势,甚至在大部分指标上超越了之前的Plus-13B系列模型。
LLaMA系列模型之间对比:
模型
|
Valid (zero-shot)
|
Valid (5-shot)
|
Test (zero-shot)
|
Test (5-shot)
|
Chinese-LLaMA-2-7B
|
28.2
|
36.0
|
30.3
|
34.2
|
Chinese-LLaMA-Plus-13B
|
27.3
|
34.0
|
27.8
|
33.3
|
Chinese-LLaMA-Plus-7B
|
27.3
|
28.3
|
26.9
|
28.4
|
Alpaca系列模型之间对比:
模型
|
Valid (zero-shot)
|
Valid (5-shot)
|
Test (zero-shot)
|
Test (5-shot)
|
Chinese-Alpaca-2-7B
|
41.3
|
42.9
|
40.3
|
39.5
|
Chinese-Alpaca-Plus-13B
|
43.3
|
42.4
|
41.5
|
39.9
|
Chinese-Alpaca-Plus-7B
|
36.7
|
32.9
|
36.4
|
32.3
|
需要注意的是,综合评估大模型能力仍然是亟待解决的重要课题,单个数据集的结果并不能综合评估模型性能。合理辩证地看待大模型相关评测结果有助于大模型技术的良性发展。推荐用户在自己关注的任务上进行测试,选择适配相关任务的模型。
C-Eval推理代码请参考本项目
>>> 📚 GitHub Wiki
量化效果评测
以Chinese-LLaMA-2-7B为例,对比不同精度下的模型大小、PPL(困惑度)、C-Eval效果,方便用户了解量化精度损失。PPL以4K上下文大小计算,C-Eval汇报的是valid集合上zero-shot和5-shot结果。
精度
|
模型大小
|
PPL
|
C-Eval
|
FP16
|
12.9 GB
|
8.1797
|
28.2 / 36.0
|
8-bit量化
|
6.8 GB
|
8.2884
|
26.8 / 35.4
|
4-bit量化
|
3.7 GB
|
8.8581
|
25.5 / 32.8
|
特别地,以下是在llama.cpp下不同量化方法的评测数据,供用户参考,速度以ms/tok计。具体细节见Wiki。
|
F16
|
Q4_0
|
Q4_1
|
Q4_K
|
Q5_0
|
Q5_1
|
Q5_K
|
Q6_K
|
Q8_0
|
PPL
|
8.640
|
8.987
|
9.175
|
8.836
|
8.730
|
8.776
|
8.707
|
8.671
|
8.640
|
Size
|
12.91G
|
3.69G
|
4.08G
|
3.92G
|
4.47G
|
4.86G
|
4.59G
|
5.30G
|
6.81G
|
CPU Speed
|
117
|
39
|
44
|
43
|
48
|
51
|
50
|
54
|
65
|
GPU Speed
|
53
|
17
|
18
|
20
|
n/a
|
n/a
|
25
|
26
|
n/a
|
训练与精调
预训练(中文LLaMA-2训练)和指令精调(中文Alpaca-2训练)相关内容请参考对应Wiki。