2024中文LLM微调挑战赛:BELLE模型训练全攻略

2024中文LLM微调挑战赛:BELLE模型训练全攻略

【免费下载链接】BELLE BELLE: Be Everyone's Large Language model Engine(开源中文对话大模型) 【免费下载链接】BELLE 项目地址: https://gitcode.com/gh_mirrors/be/BELLE

你还在为中文大模型微调效果不佳而困扰?还在纠结全参数微调与LoRA的取舍?本文将以BELLE开源项目为基础,带你从零掌握中文LLM微调技术,轻松应对2024年度微调挑战赛。读完本文你将获得:BELLE模型训练全流程指南、不同微调方法对比分析、实战案例代码解析以及评估优化技巧。

一、挑战赛背景与目标

BELLE(Be Everyone's Large Language model Engine)是一个开源中文对话大模型项目,致力于降低中文大语言模型的研究和应用门槛。本次微调挑战赛旨在推动中文LLM微调技术的发展,鼓励开发者探索更高效、更优质的微调方法。

1.1 项目核心内容

BELLE项目提供了完整的训练代码、开放数据集、验证集合与方法、多种模型以及相关技术分析,为挑战赛提供了坚实的技术支撑。

  • 训练代码:详见BELLE/train,集成了Deepspeed-Chat,支持全参数微调、LoRA等多种训练方法,并提供了相关的docker环境。
  • 数据开放:包含1.5M、10M等多个规模的中文数据集,如train_3.5M_CN_With_Category
  • 验证集合&方法:详见BELLE/eval,包含一个1k+的测试集合和对应打分prompt,采用GPT-4或者ChatGPT打分。
  • 模型:基于LLaMA、BLOOMZ等基础模型优化后的多个中文模型,如BELLE-Llama2-13B-chat-0.4M

1.2 挑战赛任务

参赛者需基于BELLE提供的代码和数据,对指定模型进行微调,以在给定的评估集上取得最优性能。评估指标将综合考虑模型在多个任务上的表现,包括问答、对话、推理等。

二、BELLE模型训练环境搭建

2.1 Docker环境(推荐)

BELLE提供了完整可运行的Docker镜像,简化了环境配置过程。

sudo docker pull tothemoon/belle:latest
git clone https://gitcode.com/gh_mirrors/be/BELLE

运行Docker容器的命令如下:

sudo docker run --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 \
    --network host \
    --privileged \
    --env HF_HOME=$hf_home \
    -it \
    --name belle \
    -v $belle_path:$belle_path \
    -v $hf_home:$hf_home \
    -w $workdir \
    tothemoon/belle:latest \
    /bin/bash

上述命令实现了拉取镜像、克隆仓库、挂载目录等功能,具体参数说明可参考docker环境说明

2.2 Conda环境(不推荐)

若无法使用Docker,也可通过conda创建环境,但需自行解决依赖问题:

pip install -r requirements.txt

关于Deepspeed的安装问题,可参考FAQ

三、微调方法详解

BELLE支持多种微调方法,包括全参数微调(FT)、LoRA以及RLHF(PPO、DPO)等。

3.1 全参数微调

全参数微调是对模型所有参数进行更新,通常能取得较好的效果,但计算成本较高。

3.1.1 数据准备

全参数微调的数据格式与指令微调类似,具体可参考相关数据集说明。

3.1.2 训练脚本
bash train/scripts/run_sft.sh

详细参数设置可参考README_FT.md

3.2 LoRA微调

LoRA(Low-Rank Adaptation)是一种参数高效的微调方法,通过冻结预训练模型的大部分参数,仅更新少量适配器参数来实现微调。

3.2.1 数据准备

与全参数微调类似,但可能需要针对特定任务进行数据筛选和预处理。

3.2.2 训练脚本
bash train/scripts/run_lora.sh

LoRA配置文件可参考configs/lora_config_llama.jsonconfigs/lora_config_bloom.json

3.3 RLHF训练

RLHF(Reinforcement Learning from Human Feedback)通过人类反馈的强化学习进一步提升模型性能,BELLE支持PPO和DPO两种方法。

3.3.1 PPO训练

PPO(Proximal Policy Optimization)是一种常用的强化学习算法。

  1. 奖励模型训练
bash train/scripts/run_rm.sh
  1. PPO训练
bash train/scripts/run_ppo.sh

详细流程可参考README_RLHF.md

3.3.2 DPO训练

DPO(Direct Preference Optimization)是一种直接优化偏好的方法,无需训练奖励模型。

  1. 数据准备

数据格式如下:

{"chosen":xxx, "reject":xxx, "prompt":xxx}

一条数据样例:

{"chosen": "水的化学式是H2O。这意味着每个水分子由两个氢原子(H)和一个氧原子(O)组成。在这个结构中,氢原子和氧原子通过共价键相连。", "rejected": "H2O.", "prompt": "Human: \n水的化学式是什么?\n\nAssistant: \n"}
  1. 训练脚本
cd train/scripts
bash run_dpo.sh

四、微调方法对比与选择

不同的微调方法各有优缺点,参赛者需根据自身资源和任务需求选择合适的方法。

4.1 性能对比

以下是BELLE技术分析中不同微调方法的性能对比:

ModelAverage ScoreAdditional Param.Training Time (Hour/epoch)
LLaMA-13B + LoRA(2M)0.64828M8
LLaMA-7B + LoRA(4M)0.62417.9M11
LLaMA-7B + FT(2M)0.710-31
LLaMA-7B + FT(2M) + LoRA(math_0.25M)0.72917.9M3
LLaMA-7B + FT(2M) + FT(math_0.25M)0.738-6

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

从表格中可以看出,全参数微调(FT)通常能取得更高的性能,但训练时间更长,参数更新量更大;LoRA微调则在参数效率和训练速度上具有优势,适合资源有限的情况。

4.2 评估集分布

BELLE的评估集包含多个类别,分布如下:

评估集分布

了解评估集的分布有助于选择合适的微调策略,针对重点类别进行优化。

五、实战案例:中文LLM微调步骤

5.1 数据准备与预处理

  1. 下载BELLE提供的数据集,如train_3.5M_CN_With_Category。
  2. 对数据进行清洗和过滤,去除低质量样本。
  3. 根据任务需求,对数据进行格式转换和划分,如划分为训练集和验证集。

5.2 模型选择与初始化

  1. 选择合适的基础模型,如LLaMA-7B或BELLE-Llama2-13B-chat-0.4M。
  2. 加载预训练模型权重,注意遵循模型的使用许可。

5.3 微调训练

以LoRA微调为例,训练步骤如下:

  1. 修改LoRA配置文件,设置合适的秩、学习率等参数。
  2. 运行训练脚本:
bash train/scripts/run_lora.sh
  1. 监控训练过程,观察损失、准确率等指标的变化,及时调整超参数。

5.4 模型评估与优化

  1. 使用BELLE/eval中的评估脚本对微调后的模型进行评估。
  2. 根据评估结果,分析模型的优势和不足,针对性地进行数据增强或模型调整。
  3. 若性能未达预期,可尝试其他微调方法,如结合全参数微调和LoRA的增量微调。

5.5 模型部署与应用

微调后的模型可用于多种中文NLP任务,如聊天机器人、智能问答等。BELLE提供了ChatBELLE App,可实现模型的本地部署和交互:

ChatBELLE Demo

详细部署方法可参考BELLE/chat

六、总结与展望

6.1 挑战赛要点回顾

  1. 熟悉BELLE项目的代码结构和数据格式,选择合适的微调方法。
  2. 搭建高效的训练环境,合理配置超参数,监控训练过程。
  3. 充分利用评估集进行模型优化,关注模型在不同任务上的综合表现。

6.2 未来展望

随着大语言模型技术的不断发展,中文LLM的微调方法将更加高效和多样化。BELLE项目也将持续更新,提供更多的训练数据、模型和工具,为中文NLP社区贡献力量。

6.3 资源与互动

欢迎大家点赞、收藏、关注本项目,获取最新动态。期待在挑战赛中看到大家的精彩表现!

【免费下载链接】BELLE BELLE: Be Everyone's Large Language model Engine(开源中文对话大模型) 【免费下载链接】BELLE 项目地址: https://gitcode.com/gh_mirrors/be/BELLE

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值