GR00T是英偉達最新的人類機器人基礎模型。自然,機器人專家對將這種模型應用于各種機器人應用有著極大的興趣。微調是一個我們教模型新技能的過程,例如,用新的機器人硬件操縱新的物體。然而,微調基礎模型對于我們中的許多GPU貧乏的人來說在計算上是令人望而卻步的——直到現在。在這里,我們將探討如何使用LoRa在個人計算機上實現參數有效微調(PEFT)。
背景
訓練一個神經網絡通常需要比推理多幾倍的內存。這是因為在訓練過程中,除了模型權重之外,現代優(yōu)化器還需要存儲中間激活、梯度值和其他狀態(tài),以幫助優(yōu)化器適應復雜的訓練動態(tài)。
傳統(tǒng)的微調和任何訓練過程一樣昂貴。它仍然使用相同數量的內存。如果你沒有獲得h100,你就不走運了。然而,像LoRA這樣的PEFT技術允許我們對模型的一小部分進行微調。
LoRA
在我看來,低等級適配器(LoRA)是最優(yōu)雅的PEFT實現。它不是完整地訓練模型,而是將一組非常小的權重覆蓋到模型的原始權重(稱為LoRA適配器)上。模型的原始權重是固定的,只有LoRA適配器是可訓練的,與原始網絡相比,它們的大小通常在0.5%到5%之間。使用更小的可訓練參數集和更少的優(yōu)化器狀態(tài)來存儲,它使得使用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背后的根源。
ΔW_lora迭代地應用于模型中的所有變壓器權重矩陣。因為我們只訓練ΔW_lora,與傳統(tǒng)的微調相比,它只需要一小部分內存。這使我們可以自由地在微調性能和計算預算之間進行交易。
如果您對實現細節(jié)感到好奇,請查看已上載到Nvidia Isaac-GR00T官方回購的PR。
搭建環(huán)境
讓我們從設置Pyenv和miniconda開始
根據這里的說明設置shell。例如,如果你使用zsh:
重新加載shell并測試Pyenv的安裝
安裝Miniconda
獲取模型
對模型進行微調
要運行微調示例:
本文編譯自hackster.io





