常见大模型综述
ChatGLM-6B
清华唐杰老师团队 项目: https://github.com/THUDM/ChatGLM-6B Blog: https://chatglm.cn/blog
ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 GLM 架构,具有 62 亿参数。ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 个标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持。为了方便下游开发者针对自己的应用场景定制模型,项目还开源了基于 P-Tuning v2 的高效参数微调代码。
亮点:
- GLM 是一种 Prefix decoder 的结构,而目前大模型采用的主流结构是 Casual decoder,可以说 GLM 走出了自己的道路,但究竟那种结构更优,需要更科学的评定
- 1T 个 token 的中英文预训练,对比 175B 的 GPT3 训练了 300B 个 token,540B 的 PaLM 训练了 780B 个 token,而 ChatGLM-6B 的底座只是 6B 的模型,却训练了 1T 个 token,让人有种憧憬,用大数据训练小模型,是否能达到小数据训练大模型的效果。
- 项目号称经过监督微调、反馈自助、人类反馈强化学习
但是 ChatGLM-6B 没有公布它的训练细节和语料是怎么做的,有人说 ChatGLM-6B 的 IFT 也是通过 self-Instruct 得到的,这也不是空穴来风,相信用过 ChatGLM-6B 的人都会觉得,ChatGLM-6B 的回复风格跟 ChatGPT 十分相似。
Alpaca-CoT
中科院的学生做的项目 项目:https://github.com/PhoebusSi/Alpaca-CoT/blob/main/CN_README.md
多接口统一的大模型指令微调平台。该项目做了一个框架,利用这个框架,可以方便地用不同的底座模型+不同的指令数据集进行大模型的微调,不足的地方是,只提供了使用 Lora 的训练方式。除此之外,该项目主打一个思维链 (CoT),把 CoT 数据集加入到指令微调中,在项目中还举了很多案例,证明加入了 CoT 数据集后对模型的提升作用。
亮点:
- 统一了多个底座模型,包括有 LLaMA、ChatGLM、BLOOM
- 整理统一了其他公开项目的数据集,如果大家想梳理下现在市面上开源的 IFT 数据集,建议可以通过这个项目了解
- 项目集成了 Int8-bitsandbytes、Fp16-mixed precision、LoRA(hugging peft 库)等高效训练的方法
- 首个加入了 CoT 训练后的效果研究
BELLE
贝壳团队开源的项目 项目:https://github.com/LianjiaTech/BELLE
项目基于 Deepspeed-Chat 项目,包括全量参数微调(fine-tuning)和基于 LoRA 的参数高效微调。
亮点:
- 开源了一个规模巨大的中文 IFT 数据集,现在加起来有 300 万以上,基本都是通过 Self-Instructi 得到
- 做了一系列的实验,截止日前已发了 4 篇技术报告
- 《Exploring ChatGPT's Ability to Rank Content: A Preliminary Study on Consistency with Human Preferences》
- 《Exploring the Impact of Instruction Data Scaling on Large Language Models: An Empirical Study on Real-World Use Cases》
- 《Towards Better Instruction Following Language Models for Chinese: Investigating the Impact of Training Data and Evaluation》
- 《A Comparative Study between Full-Parameter and LoRA-based Fine-Tuning on Chinese Instruction Data for Instruction Following Large Language Model》 建议大家把它们的数据集下载下来看看,并把这 4 篇实验报告都看一次。虽然这些实验并不是很客观,例如最后的 test 集也是用的 belle 自己的,然后用的是 GPT3.5 打分。不过整体的实验思路和实验结果还是可以大致参考的。
Chinese-LLaMA-Alpaca
科大讯飞&哈工大团队,很出名的团队,很多耳熟能详的中文预训练模型,如 RoBERTa、MacBERT、PERT 都出自它们团队 项目:https://github.com/ymcui/Chinese-LLaMA-Alpaca
该项目包括词表扩充、继续预训练和指令精调三部分,其中词表扩充的代码参见 merge_tokenizers.py ;预训练和指令精调代码参考了 transformers 中的 run_clm.py 和 Stanford Alpaca 项目中数据集处理的相关部分。
亮点:
- 相对完整的流程,不紧紧是指令微调这一步,还包括词表扩充、继续预训练
- 针对 LLaMA 模型扩充了中文词表,提升了中文编解码效率。这一步是我觉得假如想用 LLaMA 去做中文必须要做的一个事情,因为原生 LLaMA 对中文支持不好,很多中文词不在它们的词表中,会被切成两个 token,极大影响了效果
- 对中文继续做了 20G 语料的预训练,这个预料规模一看就很熟,它们开源的 RoBERTa、MacBERT 也是在这个规模的预料上训练得到的
- 在预训练介绍,分成两部分,第一阶段:冻结 transformer 参数,仅训练 embedding,在尽量不干扰原模型的情况下适配新增的中文词向量,第二阶段:使用 LoRA 技术,为模型添加 LoRA 权重(adapter),训练 embedding 的同时也更新 LoRA 参数。这给大家做高效继续预训练的提供了一个方向。
StackLLaMA
项目:https://huggingface.co/spaces/trl-lib/stack-llama Blog: https://huggingface.co/blog/stackllama
Hugging Face 的研究人员发布的一个 70 亿参数的模型——StackLLaMA。这是一个通过人类反馈强化学习在 LLaMA-7B 微调而来的模型。
个人感觉有价值的是 Hugging Face 研究人员发布的一篇 Blog:用 RLHF 训练 LLaMA 的实践指南。
亮点:
- 博客更像是一个教程和指南,介绍如何使用 RLHF 来训练模型,而不是主要关注模型的性能表现
- 重点介绍了指令微调和强化学习部分,其中强化学习部分利用的是 StackOverflow 构建的数据集,利用网民们的 upvotes 去进行评分,给我们构造强化学习数据集部分提供了一个思路,能否利用微博点赞、知乎点赞等数据去构造一个中文的强化学习数据集呢?