项目申请书

项目名称: 基于LLAMA/Bloom/GLM的高效指令微调和RLHF训练 项目导师: CQU弟中弟 申请人: 陈佳亮 日期: 2023.06.02 邮箱: cjl99@zju.edu.cn

Project Target

使用 Mindspore,基于目前开源的基座模型 LLaMA/Bloom/GLM 做中文对话任务的调优,预期可以达到 ChatGPT 90%的效果。其中调优方法可以采用 Instruction Tuning 或 RLHF等。

Roadmap

我思考了我会如何实现这个项目,拆解了一下项目任务。对每个过程给出了预期目标、实现路径以及预期时间。我的想法是主要基于 LLaMA 和 GLM 模型。

1. 熟悉 MindNLP+OPS 开发框架

我想先通过训练和推理 BERT/GPT2/T5 这几个基础模型来熟悉一下 MindNLP + ops 的开发流程(从 Transformer + torch)中迁移过来。由于对BERT、GPT2、T5模型的细节已经有所了解,在这部分我应该会更关注整个训练推理框架的流水线,API使用等,为之后做准备。

熟悉的主要方法:

2. 实现模型推理和评估流程

2.1 推理 ChatGLM-6B

由于 ChatGLM-6B 对中文的支持应该是三个基模型中最好的,同时他的参数已经经过 RLHF 调整,直接使用效果就可能不错。所以我想先尝试一下 GLM 模型,把它作为项目的 Baseline。我会使用 ChatGLM-6B预训练参数),构建一个评估Pipeline,得到和 ChatGLM-6B 一样的效果。有一个 Eval pipeline 对之后微调模型更有帮助。

具体过程大致可以分为:

  • 精读论文 + 阅读 GLM 源码,深入了解 GLM 模型架构
  • 预训练参数导入、简单测试模型推理效果
  • 编写模型 Eval 代码 并和现有结果进行对比

对于评估模型,除了自己评估外,我目前找到的评价中文大语言模型的公开指标,具体如何选用可能需要再与导师沟通。

  1. 智源指数
  2. BELLE Eval
  3. 中文通用大模型综合性基准SuperCLUE SuperCLUE琅琊榜
  4. LLAMA-Chinese 仓库给出的paired score
  5. 有待调研补充…

2.2 推理 Chinese Alpaca 模型

与2.1 类似的过程,这一部分我会基于Chinese-LLaMA 中给出的 LoRA 权重,实现 mindnlp 中的 llama+lora 微调模型的推理过程,并做类似的效果评估。

3. 复现 Instruction Tuning 过程

3.1 指令微调数据集收集和处理

我大致搜索了一下现有的指令微调数据集:

3.2 尝试指令微调

LLaMA + LoRA

这一部分应该是整个 project 最难的一部分,要使用自己的代码训练出类似效果的模型参数。LoRA 微调我看到 mindnlp 已经有实现了,我应该会先尝试使用 LoRA方式指令微调 LLaMA,参考先有的基于Transformer的指令微调的代码,这里参考的代码有很多就不一一列举了。我会训练出一个模型并验证其达到了与之前 Part2 模型类似的效果。

P-tuning v2 + ChatGLM-6B

清华放出了对于 ChatGLM-6B 模型进行 P-tuning-v2 微调的方案,但是 ChatGLM 本身已经经过微调,这个微调可能更适合于将模型迁移到其他领域,同时目前P-Tuningv2在 mindnlp 我没有找到实现,是否需要做有待商榷。

4. Others

我目前认为做完 Part3 应该基本完成了项目预期目标,下面列举了一些更深入的方向,如果顺利的话希望可以多多探索,如果还不够也请导师指正。

  1. RLHF/RAHF,这块知识我目前还不是很了解,但是也比较想学习,因为这是训练ChatGPT模型非常重要的一环。如果时间来得及,我更可能尝试这一块内容,争取能实现正确和完整的代码逻辑,并验证效果。
  2. 将模型连接一个可视化界面,类似于 llama.cpp,便于人与模型交互测试。
  3. 我希望能实现并尝试使用不同的PEFT方式(如Adapters、P-Tuning、AdaLoRA等)来微调并对比实验,我可能会参考 PEFT 仓库的实现,将代码迁移到mindnlp上。

Timeline

这里放出了我各个部分的时间安排,可能会在不影响产出的前提下动态调整。由于目前手头有一篇论文想赶一赶 DDL,最迟会从 7月中旬开始实现,不影响项目预期目标。

subtasktime
熟悉 MindNLP+OPS 开发框架1 week
ChatGLM-6B 模型导入 + 推理1 week (-2days)
评估 ChatGLM-6B (数据收集+代码编写+测试)2 weeks (-2days)
LLaMA+LoRA 模型 推理 + 评估1 week (-2days)
Instruction 数据收集 + 处理1 week
Instruction Tuning 代码编写1 week
Instruction Tuning 训练 + 评估3 weeks (+/- 1 weeks)
Others: (RHLF) + 总结归纳2 weeks
Total3 months