什麼是 量化低秩適配(QLoRA)?
QLoRA是LoRA的改進版,使用4位量化技術壓縮預訓練模型,進一步降低記憶體需求,實現在消費級硬體上微調大型模型。
核心概念
QLoRA的核心概念是在LoRA的基礎上引入了量化技術,以進一步降低記憶體需求。量化是指將模型的權重從高精度(例如32位浮點數)轉換為低精度(例如4位整數)。這樣可以大幅減少模型的大小,但同時也會帶來一定的精度損失。
QLoRA的關鍵組成部分包括:
- 4位量化: 使用4位整數來表示預訓練模型的權重。這可以將模型的大小壓縮到原來的1/8。
- 凍結的量化預訓練模型: 原始的預訓練模型的所有權重都被量化並凍結,在訓練過程中不會被更新。
- 低秩適配器: 與LoRA相同,由兩個小的矩陣A和B組成,它們的秩r遠小於原始權重矩陣的維度。A和B是可訓練的參數。
- 解量化: 在前向傳播過程中,需要將量化的權重解量化回高精度,才能進行計算。
運作原理
QLoRA的運作原理可以概括為以下幾個步驟:
- 量化: 將預訓練模型的所有權重量化為4位整數。
- 初始化: 凍結量化的預訓練模型的所有權重。初始化低秩適配器A和B,通常A會使用隨機初始化,而B會初始化為零矩陣。
- 前向傳播: 輸入數據通過預訓練模型。在計算之前,需要將量化的權重解量化回高精度。同時,輸入數據也通過低秩適配器。低秩適配器的輸出是A和B的矩陣乘積,然後將其添加到預訓練模型的輸出中。
- 反向傳播: 計算損失函數的梯度,並僅更新低秩適配器A和B的權重。量化的預訓練模型的權重保持不變。
- 迭代訓練: 重複步驟3和4,直到模型收斂。
QLoRA使用了一種稱為NormalFloat的4位量化方法,它可以更好地保留模型的精度。NormalFloat使用了一種特殊的量化方案,可以將權重映射到一個更均勻的範圍內,從而減少量化誤差。
實際應用
QLoRA在各種自然語言處理任務中都有廣泛的應用,尤其是在資源受限的環境下,例如:
- 在消費級硬體上微調大型語言模型: QLoRA可以使得在只有少量記憶體的GPU上微調大型語言模型成為可能。
- 移動設備上的自然語言處理: QLoRA可以將大型語言模型部署到移動設備上,實現本地化的自然語言處理。
- 邊緣計算: QLoRA可以將大型語言模型部署到邊緣設備上,實現低延遲的自然語言處理。
QLoRA的優勢在於:
- 極低的記憶體需求: 使用4位量化可以大幅降低記憶體需求。
- 參數高效: 只需要訓練少量的參數,大大降低了計算成本。
- 快速適應: 可以快速地將預訓練模型適應到新的任務上。
QLoRA的局限性在於:
- 精度損失: 量化會帶來一定的精度損失,可能會影響模型的性能。
- 需要特殊的量化和解量化操作: QLoRA需要特殊的量化和解量化操作,可能會增加計算複雜度。
常見誤區
- QLoRA的性能一定不如LoRA: 雖然量化會帶來一定的精度損失,但在某些情況下,QLoRA的性能可能與LoRA相當,甚至更好。這是因為QLoRA可以使用更大的模型,從而彌補量化帶來的損失。
- QLoRA只能使用4位量化: 雖然QLoRA最初是使用4位量化,但也可以使用其他位數的量化,例如8位量化。位數越高,精度越高,但記憶體需求也越高。
- QLoRA適用於所有預訓練模型: QLoRA主要適用於大型預訓練模型,對於小型模型,QLoRA的優勢可能不明顯。
相關術語
常見問題
延伸學習
想看 量化低秩適配 的完整影片教學?前往 美第奇 AI 學院