PEFT如何帮助我们在消费级GPU上微调GR00T基础

2025-04-09

GR00T是英伟达最新的人类机器人基础模型。自然,机器人专家对将这种模型应用于各种机器人应用有着极大的兴趣。微调是一个我们教模型新技能的过程,例如,用新的机器人硬件操纵新的物体。然而,微调基础模型对于我们中的许多GPU贫乏的人来说在计算上是令人望而却步的——直到现在。在这里,我们将探讨如何使用LoRa在个人计算机上实现参数有效微调(PEFT)。

PEFT如何帮助我们在消费级GPU上微调GR00T基础 (https://ic.work/) 工控技术 第1张

背景

训练一个神经网络通常需要比推理多几倍的内存。这是因为在训练过程中,除了模型权重之外,现代优化器还需要存储中间激活、梯度值和其他状态,以帮助优化器适应复杂的训练动态。

PEFT如何帮助我们在消费级GPU上微调GR00T基础 (https://ic.work/) 工控技术 第2张

传统的微调和任何训练过程一样昂贵。它仍然使用相同数量的内存。如果你没有获得h100,你就不走运了。然而,像LoRA这样的PEFT技术允许我们对模型的一小部分进行微调。

LoRA

在我看来,低等级适配器(LoRA)是最优雅的PEFT实现。它不是完整地训练模型,而是将一组非常小的权重覆盖到模型的原始权重(称为LoRA适配器)上。模型的原始权重是固定的,只有LoRA适配器是可训练的,与原始网络相比,它们的大小通常在0.5%到5%之间。使用更小的可训练参数集和更少的优化器状态来存储,它使得使用PEFT进行微调在计算上更加友好。一旦训练完成,这些小的权重集就会被加回到原来的权重中。

输出=输入* W

W:原权矩阵;[input_dim, output_dim]

ΔW: delta权重;与W相同的尺寸

W_ft:微调权重矩阵= W + ΔW

由于微调只对原始模型权重进行很小的更改,因此与原始权重矩阵相比,delta权重ΔW应该只包含一小部分信息。因此,我们可以将ΔW表示为两个瘦矩阵的乘积,而不是将其作为与原始权重矩阵相同的大小:

ΔW_lora = B x A ~= ΔW

[input_dim, r]

A: [r, output_dim]

ΔW_lora是ΔW的近似值,r表示我们想要使用的排名数。把r想象成你想用在音乐文件上的比特率,不同的是,这里我们处理的是矩阵重构错误而不是音频丢失。

ΔW的最大rank是max(input_dim, output_dim)。但是,由于ΔW包含的信息并不丰富,我们可以使用很小的r,例如16到128,而仍然可以得到很好的结果。这也是LoRA名称Low-Rank Adaption背后的根源。

PEFT如何帮助我们在消费级GPU上微调GR00T基础 (https://ic.work/) 工控技术 第3张

ΔW_lora迭代地应用于模型中的所有变压器权重矩阵。因为我们只训练ΔW_lora,与传统的微调相比,它只需要一小部分内存。这使我们可以自由地在微调性能和计算预算之间进行交易。

如果您对实现细节感到好奇,请查看已上载到Nvidia Isaac-GR00T官方回购的PR。

搭建环境

让我们从设置Pyenv和miniconda开始

PEFT如何帮助我们在消费级GPU上微调GR00T基础 (https://ic.work/) 工控技术 第4张

根据这里的说明设置shell。例如,如果你使用zsh:

PEFT如何帮助我们在消费级GPU上微调GR00T基础 (https://ic.work/) 工控技术 第5张

重新加载shell并测试Pyenv的安装

PEFT如何帮助我们在消费级GPU上微调GR00T基础 (https://ic.work/) 工控技术 第6张

安装Miniconda

PEFT如何帮助我们在消费级GPU上微调GR00T基础 (https://ic.work/) 工控技术 第7张

获取模型

PEFT如何帮助我们在消费级GPU上微调GR00T基础 (https://ic.work/) 工控技术 第8张

对模型进行微调

要运行微调示例:

PEFT如何帮助我们在消费级GPU上微调GR00T基础 (https://ic.work/) 工控技术 第9张


本文编译自hackster.io

文章推荐

相关推荐