SkillAgentSearch skills...

BELLE

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

Install / Use

/learn @LianjiaTech/BELLE

README

<img src="assets/belle_logo.png" style="vertical-align: middle; width: 35px;"> BELLE: Be Everyone's Large Language model Engine

Read this in English.

<div align="center">

<a href="https://github.com/LianjiaTech/BELLE/stargazers">GitHub Repo stars</a> Code License Generic badge Generic badge Generic badge Generic badge

</div>

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

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

</br>

🔄 最近更新

  • [2024/10/16] 开源Belle-whisper-larger-v3-turbo-zh 中文能力强化后的语音识别模型,识别精度相比whisper-large-v3-turbo相对提升24~64%,识别速度相比whisper-large-v3有7-8倍提升。
  • [2024/03/15] 更新了一篇技术报告Dial-insight 在垂直领域场景微调大模型时,使用高质量的垂直领域数据可以在使模型的垂直领域能力增强的同时,有效的抵抗模型通用能力的坍缩。
  • [2024/03/11] 开源Belle-whisper-larger-v3-zh 中文能力强化后的语音识别模型,相比whisper-large-v3相对提升24~65%,特别是在高噪、混响等复杂场景下有突出表现。
  • [2024/01/16] 更新了一篇技术报告RAISE. RAISE通过实验发现构造少量的样例数据,就能有效的激发大模型,生成对话也更可控
  • [2023/12/29] 开源Belle-whisper-larger-v2-zhBelle-distilwhisper-large-v2-zh两个针对中文能力强化后的语音识别模型,方便大家在语音场景下使用大语言模型
  • [2023/11/24] 开源BELLE-VL多模态大语言模型,基于中文能力更强的语言模型基座来扩展模型的视觉能力,为社区提供更加灵活的选择(目前BELLE-VL最新的模型在MME感知评测维度共获得1620.10分,超过Qwen-VL、Llava、mplug-owl)
  • [2023/10/27] 更新了一篇技术报告DUMA,探索了对话场景下基于快慢脑架构的Agent实现方法
  • [2023/09/26] 更新了RLHF的训练代码,支持PPO和DPO训练,具体细节见:README_RLHF.md
  • [2023/08/16] 基于原有的train_3.5M_CN数据新增了指令类别字段,共包括13个类别,具体细节见:train_3.5M_CN_With_Category
  • [2023/08/10] 更新了基于ZeRO Inference的推理代码,详见train/README_ZERO_INFERENCE.md
  • [2023/08/07] 更新了继续预训练代码和指令微调代码,添加了flash attention 2,详见train/README.md。同时打包了运行环境,详见train/docker/README.md
  • [2023/07/31] 更新了一篇技术报告ChatHome,探索了针对垂直领域时的增量预训练+指令微调的的策略方法
  • [2023/07/27] 开放BELLE-Llama2-13B-chat-0.4M,在Llama-2-13B的基础上采用40万高质量的对话数据上进行训练。在评测集上的效果相比BELLE-LLaMA-EXT-13B模型有显著提升。
  • [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
</br>

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

<img src="./chat/chatbelle-demo.gif"></img>

</br>

📝 项目主要内容

🚀 训练代码

详见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!

<br/>

📑 研究报告

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。 在这里,我们着眼于探究训练数据类别对模型性能的影响。具体而言,我们考察了训练数据的数量、质量和语言分布等因素,以及我们自己采集的中文多轮对话数据,以及一些公开可访问的高质量指导数据集。

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

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

实验结果如下:

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

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

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

View on GitHub
GitHub Stars8.3k
CategoryDevelopment
Updated3h ago
Forks768

Languages

HTML

Security Score

100/100

Audited on Apr 6, 2026

No findings