中文LLaMA-2基座模型和Alpaca-2指令精调大模型-中文LLaMA-2以及Alpaca-2系列模型
AI魔法学院
2023-08-09
分享海报

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大模型
  • 🚀 开源了预训练脚本、指令精调脚本,用户可根据需要进一步训练模型
  • 🚀 使用个人电脑的CPU/GPU快速在本地进行大模型量化和部署体验
  • 🚀 支持🤗transformers, llama.cpp, text-generation-webui, LangChain, privateGPT, vLLM等LLaMA生态
  • 目前已开源的模型:Chinese-LLaMA-2-7B, Chinese-Alpaca-2-7B (更大的模型可先参考一期项目)

内容导引

章节

描述

💁🏻‍♂️模型简介

简要介绍本项目相关模型的技术特点

模型下载

中文LLaMA-2Alpaca-2大模型下载地址

💻推理与部署

介绍了如何对模型进行量化并使用个人电脑部署并体验大模型

💯系统效果

介绍了模型在部分任务上的效果

📝训练与精调

介绍了如何训练和精调中文LLaMA-2Alpaca-2大模型

常见问题

一些常见问题的回复

模型简介

本项目推出了基于Llama-2的中文LLaMA-2以及Alpaca-2系列模型,相比一期项目其主要特点如下:

📖 经过优化的中文词表

  • 一期项目中,我们针对一代LLaMA模型的32K词表扩展了中文字词(LLaMA49953Alpaca49954),以期进一步提升模型对中文文本的编解码效率
  • 在本项目中,我们重新设计了新词表(大小: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-2Alpaca-2模型的基本对比以及建议使用场景。

对比项

中文LLaMA-2

中文Alpaca-2

训练方式

传统CLM

指令精调

模型类型

基座模型

指令/Chat模型(类ChatGPT

训练语料

无标注通用语料

有标注指令数据

词表大小[1]

55,296

55,296

输入模板

不需要

需要套用特定模板[2],类似Llama-2-Chat

适用场景

文本续写:给定上文,让模型生成下文

指令理解:问答、写作、聊天、交互等

不适用场景

指令理解 、多轮聊天等

文本无限制自由生成

[1] 本项目一代模型和二代模型的词表不同,请勿混用。二代LLaMAAlpaca的词表相同。
[2] Alpaca-2
采用了Llama-2-chat系列模板(格式相同,提示语不同),而不是一代Alpaca的模板,请勿混用。

完整模型下载

以下是完整版模型,直接下载即可使用,无需其他合并步骤。推荐网络带宽充足的用户。

模型名称

类型

训练数据

大小

下载地址

Chinese-LLaMA-2-7B

基座模型

120G通用文本

13GB

[百度网盘]
[Google Drive]
[HuggingFace]

Chinese-Alpaca-2-7B

指令模型

5M条指令

13GB

[百度网盘]
[Google Drive]
[HuggingFace]

LoRA模型下载

以下是LoRA模型,与上述完整模型一一对应。需要注意的是LoRA模型无法直接使用,必须按照教程与重构模型进行合并。推荐网络带宽不足,手头有原版Llama-2且需要轻量下载的用户。

模型名称

类型

训练数据

重构模型

大小

LoRA下载地址

Chinese-LLaMA-2-LoRA-7B

基座模型

120G通用文本

Llama-2-7B-hf

1.1GB

[百度网盘]
[Google Drive]
[HuggingFace]

Chinese-Alpaca-2-LoRA-7B

指令模型

5M条指令

Llama-2-7B-hf

1.1GB

[百度网盘]
[Google Drive]
[HuggingFace]

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

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

推理与部署

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

工具

特点

CPU

GPU

量化

GUI

API

vLLM

教程

llama.cpp

丰富的量化选项和高效本地推理

link

🤗Transformers

原生transformers推理接口

link

Colab Demo

Colab中启动交互界面

link

仿OpenAI API调用

仿OpenAI API接口的服务器Demo

link

text-generation-webui

前端Web UI界面的部署方式

link

LangChain

适合二次开发的大模型应用开源框架

link

privateGPT

基于LangChain的多文档本地问答框架

link

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

系统效果

生成效果评测

为了更加直观地了解模型的生成效果,本项目仿照Fastchat Chatbot Arena推出了模型在线对战平台,可浏览和评测模型回复质量。对战平台提供了胜率、Elo评分等评测指标,并且可以查看两两模型的对战胜率等结果。题库来自于一期项目人工制作的200,以及在此基础上额外增加的题目。生成回复具有随机性,受解码超参、随机种子等因素影响,因此相关评测并非绝对严谨,结果仅供晾晒参考,欢迎自行体验。部分生成样例请查看examples目录

测试模型包括:

📊模型在线对战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效果,方便用户了解量化精度损失。PPL4K上下文大小计算,C-Eval汇报的是valid集合上zero-shot5-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


© THE END

转载请联系本网站获得授权

投稿或版权问题请加微信:skillupvip