首页 > 其他分享 >LLMs Fine-tuning 学习笔记(一):trl+peft

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

时间:2023-05-18 21:03:35浏览次数:52  
标签:显存 co tuning LLMs 模型 huggingface https 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 代码分析

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

标签:显存,co,tuning,LLMs,模型,huggingface,https,peft
From: https://www.cnblogs.com/lokvahkoor/p/17413273.html

相关文章

  • Fine-tuning Pretrained Network技术研究
    Fine-tuningPretrainedNetwork技术研究一、基本概念定义(1)数据域(domain)用D={χ,P(X)}表示,它包含两部分:特征空间χ和边缘概率分布P(X)其中X={x1,...xn}∈χ在文本分类任务中,把每一个单词看作二值的特征即出现或者不出现,所有检索词向量的空间就是χ,xi对应某一文本......
  • Fine-tuning Pretrained Network技术研究
    一、基本概念定义(1)数据域(domain)用D={χ,P(X)}表示,它包含两部分:特征空间χ和边缘概率分布P(X)其中X={x1,...xn}∈χ在文本分类任务中,把每一个单词看作二值的特征即出现或者不出现,所有检索词向量的空间就是χ,xi对应某一文本第i个词向量的值,X就是特定的学习样本。如果说两个数据域不同,......
  • Hugging Face之PEFT
    HuggingFace'sPEFT是一种针对Transformer模型的加速器,其全称为"PositionalEncodingsforFine-tuning"。PEFT的主要目的是通过改变位置编码的方式来提高Transformer模型的训练和推理速度。PEFT是在HuggingFace团队的论文"PositionalEncodingsforEfficientTransformers"中......
  • openai模型个性化训练Embedding和fine-tuning区别
    现在基于自然语言和文档进行对话的背后都是使用的基于嵌入的向量搜索。OpenAI在这方面做的很好,它的Cookbook(github.com/openai/openai-cookbook)上有很多案例,最近他们对文档做了一些更新。GPT擅长回答问题,但是只能回答它以前被训练过的问题,如果是没有训练过的数据,比如一些私有数据......
  • 迁移Prompt–解决Prompt Tuning三大问题!
    文|Harris刘鹏飞博士将近代NLP的研究划归为四种范式[1]并把预训练语言模型加持下的PromptLearning看作是近代自然语言处理技术发展的“第四范式”。当我们使用新范式的方法的时候,能够意识到它带来的优异性可能是以某种“人力”牺牲为代价的。而如何让这种人力代价降到最低,往往......
  • 大模型入门(五)—— 基于peft微调ChatGLM模型
    ChatGLM是基于 GeneralLanguageModel(GLM) 架构,针对中文问答和对话进行了优化。经过中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术,ChatGLM因为是中文大模型,在中文任务的表现要优于LLaMa,我在一些实体抽取的任务中微调ChatGLM-6B,都取得了很不错的效果。GL......
  • Vicuna-13B, an open-source chatbot trained by fine-tuning LLaMA
    一、项目背景WeintroduceVicuna-13B,anopen-sourcechatbottrainedbyfine-tuningLLaMAonuser-sharedconversationscollectedfromShareGPT.PreliminaryevaluationusingGPT-4asajudgeshowsVicuna-13Bachievesmorethan90%* qualityofOpenAIChatGPT......
  • 你也可以动手参数有效微调:LoRA、Prefix Tuning、P-Tuning、Prompt Tuning
    Part1前言随着大语言模型的流行,如何让大模型在消费级GPU上进行微调训练成为了热点。掌握参数有效微调成为每个自然语言处理工程师必不可少的技能,正好huggingface开源了一个PEFT库,让我们也能够自己动手去了解参数有效微调。接下来以中文情感分析(二分类)去了解下参数有效微调。使......
  • SQLite performance tuning
    SQLiteperformancetuning-ScalingSQLitedatabasestomanyconcurrentreadersandmultiplegigabyteswhilemaintaining100kSELECTspersecond-phiresky'sblog ScalingSQLitedatabasestomanyconcurrentreadersandmultiplegigabyteswhilemain......
  • Oracle SQL优化之STA(SQL Tuning Advisor)
    前言:经常可以碰到优化sql的需求,开发人员直接扔过来一个SQL让DBA优化,然后怎么办?当然,经验丰富的DBA可以从各种方向下手,有时通过建立正确索引即可获得很好的优化效果,但是那些复杂SQL错综复杂的表关联,却让DBA们满头大汗。如下特别介绍一种oracle官方提供的科学优化方法STA,经过实践,不......