PEFT documentation

VeLoRA

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.21.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

VeLoRA

Đây là một biến thể của LoRA và do đó mọi thứ có thể thực hiện được với LoRA đều áp dụng cho phương pháp này, trừ khi có ghi chú khác trên trang này.

VeLoRA là một biến thể của LoRA, giúp giảm bộ nhớ huấn luyện bằng cách nén các activation được lưu cho LoRA trong bước forward, sau đó tái tạo chúng trong bước backwards để thực hiện các quy tắc cập nhật. Trong PEFT, VeLoRA được cấu hình như một biến thể của LoRA thông qua đối số velora_config trên LoraConfig.

from peft import LoraConfig, VeloraConfig

config = LoraConfig(
    target_modules=["q_proj", "v_proj"],
    velora_config=VeloraConfig(
        num_groups=64,
        scale=0.2,
        init_type="batch_average",
    ),
)

VeLoRA được áp dụng cho mọi lớp LoRA được chọn bởi target_modules. num_groups kiểm soát cách chia độ sâu kích hoạt đầu vào trước khi nén. Nếu độ sâu kích hoạt không chia hết cho num_groups, VeLoRA sẽ đệm biểu diễn nhóm bên trong và loại bỏ phần đệm sau khi tái tạo. scale điều chỉnh lại kích hoạt đã tái tạo trong quá trình truyền ngược, và init_type quyết định cách khởi tạo phép chiếu.

Sử dụng batch_average_once để khởi tạo phép chiếu từ batch huấn luyện đầu tiên, batch_average để cập nhật nó từ mỗi bước truyền thuận trong huấn luyện, hoặc random để khởi tạo ngay lập tức từ một vector chuẩn hóa ngẫu nhiên.

Dưới đây là một số kết quả với MetaMathQA benchmark.

Biến thểMất huấn luyệnBộ nhớ tối đa (GiB)Tokens/giây
LoRA0.542727.692366.2
LoRA + GC0.542613.171671.8
LoRA+VeLoRA0.542719.942057.6

Lưu ý

  • VeLoRA hiện chỉ được hỗ trợ trên các lớp tuyến tính LoRA tiêu chuẩn.
Update on GitHub