LLMs Fine-tuning 学习笔记(一):trl+peft

1 基本信息#

From:Fine-tuning 20B LLMs with RLHF on a 24GB consumer GPU (huggingface.co)

Codes:trl/examples/sentiment/scripts/gpt-neox-20b_peft at main · lvwerra/trl · GitHub

相关工具:

使用RLHF训练LLM的三个基本步骤:

  1. 构建一个由prompt和respond组成的数据集,用这个数据集来微调LLM
  2. 收集第一步中训好的LLM对各prompt的不同回复,对同一个prompt的不同回复内容按质量好坏进行排序,排序后的数据将构成新的数据集用在第三步中
  3. 使用强化学习算法(比如PPO)根据第二步得到的数据集对第一步得到的LLM进行RLHF微调

可选的基础模型(截至March 9, 2023):

关于模型和GPU显存之间的关系

  • 建议基础模型参数量大于100亿,这类模型全精度工作一般需要40G以上显存
  • 在GPU上以全精度(FP32)加载模型,每10亿参数需要消耗 4GB显存,以半精度(FP32)加载模型需要的显存是全精度的一半

关于模型/数据并行及分布式训练:

对RLHF的理解:

  • 在RLHF中,Actor Model(生成模型)需要Instruct Tuning来学习如何follow指令,而Reward model将学习人类的偏好,对Actor Model的输出进行打分。因此,可以把Reward Model理解为一个针对Actor Model输出结果的分类器。

对PPO的理解:

  • Overview of the PPO training setup in TRL:

  • The active model is the model being trained, and a copy of it is periodically made as the reference model. When the policy changes, the reference model is used as a baseline to evaluate whether the changes made by the active model are good or bad.

在单GPU中完成RLHF的关键技术要素:adapters 和 8bit matrix multiplication

2 实现步骤#

第一步:以8-bit精度加载预训练模型

第二步:使用peft在预训练模型中增加一个可训练的Adapter

  • 这样我们在微调模型时只需要动Adapter中的参数即可,不需要调整整个Active模型的参数:

第三步:使用添加了Adapter的模型来做PPO,实现RLHF

  • peft提供了便捷的API ,使我们可以随时启用或禁用模型中额外添加的Adapter。禁用Adapter时就是Reference Model,启用Adapter时就是Active Model:

3 代码分析#

这个坑等后面有空再填。。。

posted @   云野Winfield  阅读(1551)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示
主题色彩