首页 > 其他分享 >在消费级GPU调试LLM的三种方法:梯度检查点,LoRA和量化

在消费级GPU调试LLM的三种方法:梯度检查点,LoRA和量化

时间:2023-08-05 10:11:47浏览次数:36  
标签:计算 梯度 传播 神经网络 检查点 LLM LoRA 内存

LLM的问题就是权重参数太大,无法在我们本地消费级GPU上进行调试,所以我们将介绍3种在训练过程中减少内存消耗,节省大量时间的方法:梯度检查点,LoRA和量化。

梯度检查点

梯度检查点是一种在神经网络训练过程中使动态计算只存储最小层数的技术。

为了理解这个过程,我们需要了解反向传播是如何执行的,以及在整个过程中层是如何存储在GPU内存中的。

1、前向和后向传播的基本原理

前向传播和后向传播是深度神经网络训练的两个阶段。

在前向传递过程中,输入被矢量化(将图像转换为像素,将文本转换为嵌入),并且通过一系列线性乘法和激活函数(如sigmoid或ReLU等非线性函数)在整个神经网络中处理每个元素。

神经网络的输出,被称为头部,被设计用来产生期望的输出,例如分类或下一个单词预测。然后将矢量化的预测结果与预期结果进行比较,并使用特定的损失函数(如交叉熵)计算损失。

基于损失值,以最小化损失为目标更新每层的权值和偏差。这个更新过程从神经网络的末端开始并向起点传播。

上面就是一个简单的过程,下面才是我们主要关注的:计算是如何存储在内存中的。

2、减少存储数量

一种简单的方法是只保留反向传播所需的基本层,并在它们的使用完成后从内存中释放它们。

从上图可以看出,同时存储在内存中的层的最大数量并不是最优的。所以我们需要找到一种方法,在保持反向传播工作的同时,在内存中存储更少的元素。

3、减少计算时间

减少内存占用的一种方法是在神经网络开头的反向传播过程中重新计算每一层。

但是在这种情况下,计算时间会明显增加,使得训练在大模型的情况下不可行。

4、优化计算和内存梯度检查点

该技术通过保存“检查点”以计算反向传播期间“丢失”的层。该算法不是从头开始计算层,如前面的示例所示,而是从最近的检查点开始计算。

 

https://avoid.overfit.cn/post/7d68614b936a431a8973ff825091a795

标签:计算,梯度,传播,神经网络,检查点,LLM,LoRA,内存
From: https://www.cnblogs.com/deephub/p/17607561.html

相关文章

  • AI +悦数图数据库:图技术与大语言模型 LLM 结合,打造下一代知识图谱应用
    随着AI人工智能技术的迅猛发展和自然语言处理领域的研究日益深入,如何构建强大的大语言模型对于企业来说愈发重要,而图数据库作为处理复杂数据结构的有力工具,为企业构建行业大语言模型提供了强大的支持。近日,国产企业级分布式图数据库——悦数图数据库正式发布了图+AI大模型解......
  • 大模型(LLM)最新趋势总结
    关键结论:开源社区模型不具备真正智能,更好的小模型来自大模型的ScaleDownGPT-4模型信息:采用MoE架构,16个experts,800b参数如何减少幻觉hallucination?scaling/retrieval/rewardmodel指令遵循的开源小模型被过度炒作,已经到达瓶颈,突破方向是更强的BaseModel和更进一步的反馈......
  • Lora简介
    断断续续接触lora已经有几年时间了,一直用lora来做点对点的传输,近来有朋友想通过Lora来做广播群发和群收管理,想通过低成本方式实现,sx1302几百的银子,成本有点高,尝试通过sx1278/LLCC68来解决;Lora优点介绍:一、抗干扰性强,灵敏度高LoRa采用了独有的LoRa无线扩频技术,有着-139dB......
  • vue-scrollmagic 滚动动画制作插件
     1、需求:在做网站的时候、需要加一个根据页面滚动位置进行页面变化的效果。2、实现方案:自己写个滚动监听也不是很复杂、但是管理维护起来比较乱。所以直接找了这个插件官网:vue-scrollmagic、插件地址3、使用:安装npmivue-scrollmagic--save载入//main.jsimportV......
  • graph db+LLM
    直接用LLM是不精确的,需要结合graphDB+LLM,参见: https://medium.com/neo4j/harnessing-large-language-models-with-neo4j-306ccbdd2867 https://neo4j.com/developer-blog/fine-tuning-retrieval-augmented-generation/ https://github.com/neo4j/NaLLM 以上是两篇系......
  • python的tril,pad,block_diag在LLM上的使用
    最近需要对position_ids和attention_mask进行重构,所以需要掌握numpy的一些操作,以下是一些示例,多个下三角矩阵拼接:importnumpyasnpfromscipy.linalgimportblock_diagA=np.ones((2,2))B=np.ones((3,3))b=[A,B]print(np.tril(block_diag(*b)))[[1.0.0.0.0.]......
  • Flink 容错机制 保存点和检查点
    Flink检查点常用配置://配置检查点env.enableCheckpointing(180000);//开启checkpoint每180000ms一次env.getCheckpointConfig().setMinPauseBetweenCheckpoints(50000);//确认checkpoints之间的时间会进行50000msenv.getCheckpointConfig().setCheckpointTimeout(60......
  • uva 784 Maze Exploration(DFS遍历图)
                            uva784MazeExplorationmaze(迷宫)ofrectangular(矩形的)roomsisrepresentedonatwodimensional(空间的)gridasillustrated(阐明)infigure1a.Eachpointofthegridisrepresentedbyacharacter.Thepoint......
  • 使用QLoRa微调Llama 2
    上篇文章我们介绍了Llama2的量化和部署,本篇文章将介绍使用PEFT库和QLoRa方法对Llama27b预训练模型进行微调。我们将使用自定义数据集来构建情感分析模型。只有可以对数据进行微调我们才可以将这种大模型进行符合我们数据集的定制化。 https://avoid.overfit.cn/post/e2b178d......
  • 用 Hugging Face 推理端点部署 LLM
    开源的LLM,如Falcon、(Open-)LLaMA、X-Gen、StarCoder或RedPajama,近几个月来取得了长足的进展,能够在某些用例中与闭源模型如ChatGPT或GPT4竞争。然而,有效且优化地部署这些模型仍然是一个挑战。在这篇博客文章中,我们将向你展示如何将开源LLM部署到HuggingFaceInferenc......