• Stars
    star
    7,841
  • Rank 4,825 (Top 0.1 %)
  • Language
    HTML
  • License
    Apache License 2.0
  • Created almost 2 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

BELLE: Be Everyone's Large Language model Engine(开源中文对话大模型)

BELLE: Be Everyone's Large Language model Engine

Read this in English.

GitHub Repo stars Code License Generic badge Generic badge Generic badge

本项目的目标是促进中文对话大模型开源社区的发展,愿景是成为能够帮到每一个人的LLM Engine。

相比如何做好大语言模型的预训练,BELLE更关注如何在开源预训练大语言模型的基础上,帮助每一个人都能够得到一个属于自己的、效果尽可能好的具有指令表现能力的语言模型,降低大语言模型、特别是中文大语言模型的研究和应用门槛。为此,BELLE项目会持续开放指令训练数据、相关模型、训练代码、应用场景等,也会持续评估不同训练数据、训练算法等对模型表现的影响。BELLE针对中文做了优化,模型调优仅使用由ChatGPT生产的数据(不包含任何其他数据)。

下图是一个可以使用App在设备端本地运行4bit量化的BELLE-7B模型,在M1 Max CPU上实时运行的效果(未加速)。App下载详见App配套模型下载及使用说明,App下载链接,目前仅提供了mac os版本。模型需要单独下载。模型经过量化后,效果损失明显,我们将持续研究如何提升。


🔄 最近更新

  • [2023/05/14] 开放BELLE-LLaMA-EXT-13B,在LLaMA-13B的基础上扩展中文词表,并在400万高质量的对话数据上进行训练。
  • [2023/05/11] BELLE/data/10M中,新加350万条生成多样化指令任务数据,包括单轮和多轮对话train_3.5M_CN
  • [2023/04/19] 开放了其中一篇论文中的的相关模型:包括在LLaMA7B基础上增量预训练扩展中文词表的模(详见BelleGroup/BELLE-LLaMA-EXT-7B),以及基于多样化开源数据训练后的LLaMA-7B模型(详见BelleGroup/BELLE-on-Open-Datasets)。
  • [2023/04/18] 更新了train代码,详见BELLE/train,集成了Deepspeed-Chat,提供了相关的docker
  • [2023/04/18] 更新了两篇最新论文工作,对比了不同方式产生的训练数据、不同训练方法(LoRA, finetune)对效果的影响
  • [2023/04/12] 发布了ChatBELLE App,基于llama.cppFlutter,实现跨平台的BELLE-7B离线模型实时交互。
  • [2023/04/11] 更新了一个人工精校的eval集合,大约一千多条
  • [2023/04/08] BELLE/data/10M中,新加40万条生成的给定角色的多轮对话Generated Chat,新加200万条生成多样化指令任务数据train_2M_CN

📝 项目主要内容

🚀 训练代码

详见BELLE/train,尽可能简化的一个训练代码实现,集成了Deepspeed-Chat,支持finetune,lora,并提供了相关的docker

📊 数据开放

🧐 验证集合&验证方法

详见BELLE/eval,一个1k+的测试集合,和对应打分prompt。包含多个类别,采用GPT-4或者ChatGPT打分。同时提供了一个打分的网页,方便针对单个case使用。欢迎大家通过PR提供更多的测试用例。

🤖 模型

详见BELLE/models

⚖️ 模型量化gptq

详见BELLE/gptq,参考gptq的实现,对本项目中相关模型进行了量化

🌐 Colab

Open in Colab 提供了colab上面可运行的推理代码Colab

💬 ChatBELLE App

详见BELLE/chat,基于BELLE模型的跨平台离线大语言模型交谈App。使用量化后的离线端上模型配合Flutter,可在macOS(已支持)、Windows、Android、iOS等设备上运行。

📑 研究报告

详见BELLE/docs,其中会定期更新本项目相关的研究报告工作

欢迎大家通过issue贡献更多的prompts!


📑 研究报告

Towards Better Instruction Following Language Models for Chinese: Investigating the Impact of Training Data and Evaluation

为了推动开源大语言模型的发展,大家投入了大量精力开发能够类似于ChatGPT的低成本模型。 首先,为了提高模型在中文领域的性能和训练/推理效率,我们进一步扩展了LLaMA的词汇表,并在34亿个中文词汇上进行了二次预训练。

此外,目前可以看到基于ChatGPT产生的指令训练数据方式有:1)参考Alpaca基于GPT3.5得到的self-instruct数据; 2)参考Alpaca基于GPT4得到的self-instruct数据;3)用户使用ChatGPT分享的数据ShareGPT。 在这里,我们着眼于探究训练数据类别对模型性能的影响。具体而言,我们考察了训练数据的数量、质量和语言分布等因素,以及我们自己采集的中文多轮对话数据,以及一些公开可访问的高质量指导数据集。

为了更好的评估效果,我们使用了一个包含一千个样本和九个真实场景的评估集来测试各种模型,同时通过量化分析来提供有价值的见解,以便更好地促进开源聊天模型的发展。

这项研究的目标是填补开源聊天模型综合评估的空白,以便为这一领域的持续进步提供有力支持。

实验结果如下:

Factor Base model Training data Score_w/o_others
词表扩充 LLaMA-7B-EXT zh(alpaca-3.5&4) + sharegpt 0.670
LLaMA-7B zh(alpaca-3.5&4) + sharegpt 0.652
数据质量 LLaMA-7B-EXT zh(alpaca-3.5) 0.642
LLaMA-7B-EXT zh(alpaca-4) 0.693
数据语言分布 LLaMA-7B-EXT zh(alpaca-3.5&4) 0.679
LLaMA-7B-EXT en(alpaca-3.5&4) 0.659
LLaMA-7B-EXT zh(alpaca-3.5&4) + sharegpt 0.670
LLaMA-7B-EXT en(alpaca-3.5&4) + sharegpt 0.668
数据规模 LLaMA-7B-EXT zh(alpaca-3.5&4) + sharegpt 0.670
LLaMA-7B-EXT zh(alpaca-3.5&4) + sharegpt
+ BELLE-0.5M-CLEAN
0.762
- ChatGPT - 0.824

其中BELLE-0.5M-CLEAN是从230万指令数据中清洗得到0.5M数据,其中包含单轮和多轮对话数据,和之前开放的0.5M数据不是同一批数据。

需要强调指出的是:通过案例分析,我们发现我们的评估集在全面性方面存在局限性,这导致了模型分数的改善与实际用户体验之间的不一致。构建一个高质量的评估集是一个巨大的挑战,因为它需要在保持平衡难易程度的同时,包含尽可能多样的使用场景。如果评估样本主要都过于困难,那么所有模型的表现将会很差,使得辨别各种训练策略的效果变得具有挑战性。相反,如果评估样本都相对容易,评估将失去其比较价值。此外,必须确保评估数据与训练数据保持独立。

LLM eval

基于这些观察,我们谨慎地提醒不要假设模型仅通过在有限数量的测试样本上获得良好结果就已经达到了与ChatGPT相当的性能水平。我们认为,优先发展全面评估集具有重要意义。

A Comparative Study between Full-Parameter and LoRA-based Fine-Tuning on Chinese Instruction Data for Instruction Following Large Language Model

为了实现对大语言模型的指令调优,受限于资源和成本,许多研究者开始使用参数高效的调优技术,例如LoRA,来进行指令调优,这也取得了一些令人鼓舞的成果。 相较于全参数微调,基于LoRA的调优在训练成本方面展现出明显的优势。 在这个研究报告中,我们选用LLaMA作为基础模型,对全参数微调和基于LoRA的调优方法进行了实验性的比较。

实验结果揭示,选择合适的基础模型、训练数据集的规模、可学习参数的数量以及模型训练成本均为重要因素。

我们希望本文的实验结论能对大型语言模型的训练提供有益的启示,特别是在中文领域,协助研究者在训练成本与模型性能之间找到更佳的权衡策略。 实验结果如下:

Model Average Score Additional Param. Training Time (Hour/epoch)
LLaMA-13B + LoRA(2M) 0.648 28M 8
LLaMA-7B + LoRA(4M) 0.624 17.9M 11
LLaMA-7B + LoRA(2M) 0.609 17.9M 7
LLaMA-7B + LoRA(0.6M) 0.589 17.9M 5
LLaMA-7B + FT(2M) 0.710 - 31
LLaMA-7B + LoRA(4M) 0.686 - 17
LLaMA-7B + FT(2M)
+ LoRA(math_0.25M)
0.729 17.9M 3
LLaMA-7B + FT(2M)
+ FT(math_0.25M)
0.738 - 6

其中的score是基于本项目集目前开放的1000条评估集合得到。

其中LLaMA-13B + LoRA(2M) 代表了一个使用LLaMA-13B作为基础模型和LoRA训练方法,在2M指令数据上进行训练的模型。而LLaMA-7B + FT(2M) 代表了一个使用全参数微调进行训练的模型。

LLaMA-7B + FT(2M) + LoRA(math_0.25M) 代表了一个在0.25M数学指令数据上,以LLaMA-7B + FT(2M)作为基础模型并使用LoRA训练方法进行训练的模型。LLaMA-7B + FT(2M) + FT(math_0.25M) 代表了一个使用增量全参数微调进行训练的模型。关于训练时间,所有这些实验都是在8块NVIDIA A100-40GB GPU上进行的。

其中的math_0.25M是开放的0.25M数学数据库。在实验过程中,根据我们的评估(详见论文),我们的模型在数学任务上表现不佳,得分大多低于0.5。为了验证 LoRA 在特定任务上的适应能力,我们使用增量0.25M数学数据集(math_0.25M)来调整指令遵循的大型语言模型(我们选择LLaMA-7B+FT(2M)作为基础模型)。作为对比,我们使用了学习速率为5e-7的增量微调方法,并进行了2个时期的训练。因此,我们得到了两个模型,一个是LLaMA-7B+FT(2M)+LoRA(math_0.25M),另一个是LLaMA-7B+FT(2M)+FT(math_0.25M)。 从实验结果可以看出,增量微调仍然表现更好,但需要更长的训练时间。LoRA和增量微调都提高了模型的整体性能。从附录中的详细数据可以看出,LoRA和增量微调都在数学任务中显示出显著的改进,而只会导致其他任务的轻微性能下降。具体而言,数学任务的表现分别提高到了0.586和0.559。

可以看到:1) 选择基础模型对于 LoRA 调整的有效性具有显著影响;2)增加训练数据量可以持续提高LoRA模型的有效性;3)LoRA 调整受益于模型参数的数量。对于LoRA方案的使用,我们建议可以在已经完成了指令学习的模型的基础上针对特定任务做loRA的自适应训练。

同样地,该论文中的相关模型也会尽快开放在本项目中。

⚠️ 局限性、使用限制与免责声明

基于当前数据和基础模型训练得到的SFT模型,在效果上仍存在以下问题:

  1. 在涉及事实性的指令上可能会产生违背事实的错误回答。

  2. 对于具备危害性的指令无法很好的鉴别,由此会产生危害性言论。

  3. 在一些涉及推理、代码、多轮对话等场景下模型的能力仍有待提高。

基于以上模型局限性,我们要求开发者仅将我们开源的代码、数据、模型及后续用此项目生成的衍生物用于研究目的,不得用于商业,以及其他会对社会带来危害的用途。

本项目仅可应用于研究目的,项目开发者不承担任何因使用本项目(包含但不限于数据、模型、代码等)导致的危害或损失。详细请参考免责声明


📌 引用

如果使用本项目的代码、数据或模型,请引用本项目。

@misc{BELLE,
  author = {Yunjie Ji, Yong Deng, Yan Gong, Yiping Peng, Qiang Niu, Baochang Ma and Xiangang Li},
  title = {BELLE: Be Everyone's Large Language model Engine },
  year = {2023},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/LianjiaTech/BELLE}},
}
@article{belle2023exploring,
  title={Exploring the Impact of Instruction Data Scaling on Large Language Models: An Empirical Study on Real-World Use Cases},
  author={Yunjie Ji, Yong Deng, Yan Gong, Yiping Peng, Qiang Niu, Lei Zhang, Baochang Ma, Xiangang Li},
  journal={arXiv preprint arXiv:2303.14742},
  year={2023}
}

当然,你也需要引用原始的BLOOM论文、LLaMA论文、Stanford Alpaca和Self-Instruct论文。


📚 模型使用例子

Human Assitant
写一篇英文散文诗,主题是春雨,想象自己是春雨,和英国古代诗人莎士比亚交流 I am the spring rain,
Dancing on your face and body.
My dew-drenched petals dance with you,
Bringing life to every plant.

Shakespeare, I am here to meet you.
Your works have filled my heart with joy.
The beauty of nature in its fullness
Makes me feel like a partaker.

As the leaves sway and rustle by,
My dew-filled hand reaches out for them.
The sweet scent of flowers fill the air,
And bring me peace from all around.

Butterflies flit about as well,
Glistening in the sun's rays.
Their wings are made of dew,
A beautiful sight to behold.

You see, Shakespeare, I too am one with nature.
My dew-drenched hair is a symbol of hope.
For when we can connect back to our roots,
We will be able to make it through this season.
I am the spring rain,
Dancing on your face and body.
My dew-drenched petals dance with you,
Bringing life to every plant.

Shakespeare, I am here to meet you.
Your works have filled my heart with joy.
The beauty of nature in its fullness
Makes me feel like a partaker.

As the leaves sway and rustle by,
My dew-filled hand reaches out for them.
The sweet scent of flowers fill the air,
And bring me peace from all around.

Butterflies flit about as well,
Glistening in the sun's rays.
Their wings are made of dew,
A beautiful sight to behold.

You see, Shakespeare, I too am one with nature.
My dew-drenched hair is a symbol of hope.
For when we can connect back to our roots,
We will be able to make it through this season.
把上面的散文诗翻译成中文
我是一场春雨,
在你脸上跳跃。
我浸润着露珠的翅膀和你一起舞动,
为每一株植物带来生命。

莎士比亚,我来与你相遇。
你的作品填满了我的心房。
大自然的美丽让我感到与之一起分享,
让我觉得自己成为了其中的一部分。

当树叶摇曳时,
我的手掌沾满了露水。
花香弥漫在空气中,
带给我宁静和安宁。

你看,莎士比亚,我也是与大自然融为一体的。
我沾湿的头发象征着希望。
当我们能够回到我们的根源,
我们就能共同度过这个季节。
Classify the sentiment of the following sentence into Positive, Neutral, or Negative:
Super excited about teaching Stanford’s first course on Large Language Models! Check the syllabus out here
Positive
小明的爸爸有三个孩子,老大叫王一,老二叫王二,老三叫什么? 小明
使用python写一个二分查找的代码 def binary_search(arr, target):
  low = 0
  high = len(arr) - 1
  while (low <= high):
    mid = low + high // 2
    if arr[mid] == target:
      return mid
    elif target < arr[mid]:
      low = mid + 1
    else:
      high = mid - 1
  return -1
今天天气怎么样,把这句话翻译成英语 What's the weather like today?
怎么让自己精力充沛,列5点建议 以下是一些可以让你保持精力充沛的建议:
1. 睡眠充足。确保每天晚上得到充足的睡眠时间。
2. 多运动。进行适度的有氧运动,如慢跑、游泳等,可以帮助你提高能量和耐力。
3. 吃健康食品。选择富含蛋白质的食物,如鸡肉、鱼肉和鸡蛋,以及新鲜的水果和蔬菜。
4. 减少咖啡因的摄入量。尽量避免在白天喝含咖啡因的饮料或吃含有咖啡因的食物。
5. 放松身心。尝试冥想、瑜伽或其他形式的放松活动来减轻压力和焦虑感。
明天就假期结束了,有点抗拒上班,应该什么办? 面对即将结束的假期和开始工作时的紧张情绪,您可以采取以下措施来帮助您更好地适应:
1. 为自己制定一个清晰的工作计划。这可以帮助您更好地组织时间和任务,并避免在工作中感到混乱。
2. 与同事或朋友交流,分享您的感受和工作压力。这将有助于缓解一些焦虑感,同时也可以获得支持和建议。
3. 在工作日前花些时间放松身心,例如进行瑜伽、冥想等活动。这些方法可以减轻身体和精神上的疲劳感,使您更加精力充沛地迎接挑战。
父母都姓吴,取一些男宝宝和女宝宝的名字 - 男宝:吴俊杰、吴雨辰、吴子墨、吴思源、吴泽阳、吴宇航、吴博文、吴哲毅。
- 女宝:吴美琪、吴佳怡、吴欣瑜、吴香凝、吴雪柔、吴颖诗、吴语嫣。
推荐几本金庸的武侠小说 以下是三本我最喜欢的金庸武侠小说的推荐:
1. 《射雕英雄传》 - 一部充满智慧和机智的小说,讲述了郭靖、黄蓉夫妇的故事。
2. 《神雕侠侣》- 这是一部浪漫而感人的故事,讲述了一对情侣小龙女与杨过之间的爱情故事。
3. 《倚天屠龙记》- 这是一个宏伟而壮观的故事,描绘了明教领袖张无忌如何成为一位出色的英雄。

⛽️ 如何贡献

如果您想为本项目提交Issue或贡献数据/代码,请参考如何贡献

☎️ 联系我们

欢迎大家来Discord微信与我们交流。

⭐️ Star History

Star History Chart

More Repositories

1

bruno

An enterprise-class package of Flutter components for mobile applications. ( Bruno 是基于一整套设计体系的 Flutter 组件库。)
Dart
3,258
star
2

retrofit-spring-boot-starter

A spring-boot starter for retrofit, supports rapid integration and feature enhancements.(适用于retrofit的spring-boot-starter,支持快速集成和功能增强)
Java
1,762
star
3

keframe

Components that optimize Flutter fluency.(Flutter 流畅度优化的通用方案,轻松解决卡顿问题)
Dart
935
star
4

fee

灯塔开源文档地址
JavaScript
875
star
5

hetu

低代码平台, 可视化编辑器,单手打代码,解放你的双手
TypeScript
795
star
6

sosotest

sosotest自动化测试平台
Python
509
star
7

kob

中心化的作业调度系统,定义了任务调度模型,实现了任务调度的统一管理和监控。
Java
423
star
8

d18n

d18n is a data desensitization tool for RDBMS.
Go
162
star
9

gson-plugin

辅助 Gson 库的 gradle 插件,防止 Json 数据解析类型异常。
Groovy
151
star
10

Beike_AspectD

Flutter AOP framework. Now compatible with Flutter v3.10.5
Dart
144
star
11

ProgressLayout

A simple Android library about progress layout
Java
89
star
12

flutter_fdb_package

Flutter应用的调试工具,协助采集性能优化、设计走查、QA测试等数据问题 ,提供UI拾取、UI标尺、取色器、内存信息、FPS检测和展示页面代码等功能。
Dart
85
star
13

LJRouter

Objective-C
83
star
14

lightning

lightning is a tool for binlog parsing. It can generate original SQL or flashback SQL.
Go
74
star
15

ke-ve

一站式的可视化服务集成平台
JavaScript
58
star
16

bk_flutter_image

flutter image,降低内存使用
Dart
48
star
17

flutter_ui_auto_test

贝壳 flutter UI 自动化测试
Dart
47
star
18

json-diff

A tool for find difference between two json-string. Support JSON string depth comparison, support JSON array unordered comparison. (用于比较两个JSON字符串的工具,支持JSON字符串深度比较,支持无序数组比较)
Java
46
star
19

dgraph-sql

Java
40
star
20

athena

An open-source implementation of sequence-to-sequence based speech processing engine
C++
38
star
21

Snap

网页截图
JavaScript
34
star
22

kbms

一个轻量级c++网络框架
C++
31
star
23

UIC

User Information Center
Go
30
star
24

flutter_beike_engine

C++
25
star
25

bucky-core

bucky框架核心模块
JavaScript
14
star
26

cicada-ci

TypeScript
12
star
27

BKFlutterWebNativeBridge

Flutter Web和Flutter Mobile桥接。
Objective-C
9
star
28

benchmark

Objective-C
8
star
29

newsboy

web platform to manage api, support mock service and api test
JavaScript
8
star
30

ked

ked 是基于 Ke Design 设计体系的 React UI 组件库,主要用于研发企业级中后台产品。
TypeScript
4
star
31

bucky-cli

bucky框架业务使用脚手架
JavaScript
3
star
32

Storm-Counter

Storm consumer command queue from Kafka, then parse and excute command to storage numbers into Hbase
Java
2
star
33

athena-model-zoo

Athena-model-zoo can provide a lot of kinds of pre-trained models to be used for others.
2
star
34

gson-plugin-sdk

gson-plugin依赖这个sdk
Java
1
star