使用梯度检查点、LoRA和量化在单个GPU上适配您的LLM

使用梯度检查点、LoRA和量化在单个GPU上适配您的LLM can be condensed as 在单个GPU上适配LLM,使用梯度检查点、LoRA和量化技术

任何尝试微调大型语言模型的人都知道处理GPU内存有多难。

“RuntimeError: CUDA错误: 内存不足”

这个错误信息一直困扰着我。

3B、7B甚至13B参数的模型都很大,微调过程冗长而乏味。在训练过程中出现内存不足的情况既令人沮丧又代价高昂。

但是不用担心,我来帮助你!

在本文中,我们将介绍3种你必须了解或已经使用但不知道其工作原理的技术:梯度检查点、低秩适配器和量化。

这些技术将帮助你避免在训练过程中出现内存不足的情况,并节省大量时间。

如果你对微调LLM不熟悉,我在这个主题上写了一篇文章,其中我将带你了解如何在《魔戒》书中微调Bloom-3B。

在个人数据上微调LLM:创建一个“魔戒”故事讲述者。

你现在可以在自己的私人数据上微调LLM,并在不泄露个人信息的情况下保持控制…

VoAGI.com

让我们开始吧!

Amritanshu Sikdar在Unsplash上的照片

梯度检查点

梯度检查点是一种使用动态计算的技术,在神经网络训练过程中仅存储少量层。

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

前向和反向传播基础知识

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

来自3Blue1Brown的Youtube频道

在前向传递过程中,输入被向量化(将图像转换为像素、文本转换为嵌入向量),然后通过一系列线性乘法和激活函数在神经网络中处理每个元素…