Một lớp tuyến tính trong QLoRA và bộ nhớ của ba cách fine-tune

Một lớp tuyến tính trong QLoRA và bộ nhớ của ba cách fine-tune A workflow diagram generated by Archify. 01 / Nhánh W₀ đóng băng (luồng chính) 02 / Nhánh LoRA, có gradient 03 / Bộ nhớ model states, chưa tính activation Activation x · fp16 hoặc bf16 · Nhánh W₀ đóng băng (luồng chính) Activation x fp16 hoặc bf16 W₀ lưu NF4 · nhóm 64, double quant · Nhánh W₀ đóng băng (luồng chính) W₀ lưu NF4 nhóm 64, double quant Dequantize · sang compute dtype · Nhánh W₀ đóng băng (luồng chính) Dequantize sang compute dtype W₀·x · không cập nhật W₀ · Nhánh W₀ đóng băng (luồng chính) W₀·x không cập nhật W₀ Cộng · W₀x + (α/r)·BAx · Nhánh W₀ đóng băng (luồng chính) Cộng W₀x + (α/r)·BAx Output h · sang lớp tiếp theo · Nhánh W₀ đóng băng (luồng chính) Output h sang lớp tiếp theo A: r × k · khởi tạo ngẫu nhiên · Nhánh LoRA, có gradient A: r × k khởi tạo ngẫu nhiên B: d × r · khởi tạo bằng 0 · Nhánh LoRA, có gradient B: d × r khởi tạo bằng 0 Full FT ≈ 128 GB · 16 byte mỗi tham số · Bộ nhớ model states, chưa tính activation Full FT ≈ 128 GB 16 byte mỗi tham số LoRA ≈ 17 GB · base bf16 + adapter · Bộ nhớ model states, chưa tính activation LoRA ≈ 17 GB base bf16 + adapter QLoRA ≈ 6,4 GB · base NF4 + adapter · Bộ nhớ model states, chưa tính activation QLoRA ≈ 6,4 GB base NF4 + adapter bỏ state của W₀ base 2 → 0,5 byte Legend adapter LoRA, có gradient phép tính trong forward activation vào và ra weights đóng băng, lưu NF4 bộ nhớ model states, Llama 3.1 8B