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

Esta es una variante de LoRA y, por lo tanto, todo lo que es posible con LoRA es válido para este método, salvo que se indique lo contrario en esta página.

VeLoRA es una variante de LoRA que reduce la memoria de entrenamiento al comprimir las activaciones guardadas para LoRA en la pasada hacia adelante y luego reconstruirlas en la pasada hacia atrás para implementar las reglas de actualización. En PEFT, VeLoRA se configura como una variante de LoRA a través del argumento velora_config en 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 se aplica a cada capa LoRA seleccionada por target_modules. num_groups controla cómo se divide la profundidad de la activación de entrada antes de la compresión. Si la profundidad de la activación no es divisible uniformemente por num_groups, VeLoRA rellena internamente la representación agrupada y elimina el relleno después de la reconstrucción. scale reescala las activaciones reconstruidas durante la propagación hacia atrás, y init_type elige cómo se inicializa la proyección.

Use batch_average_once para inicializar la proyección a partir del primer lote de entrenamiento, batch_average para actualizarla en cada pasada de entrenamiento, o random para inicializarla de inmediato a partir de un vector normalizado aleatorio.

A continuación se muestran algunos resultados con el MetaMathQA benchmark.

VariantePérdida de entrenamientoMemoria máxima (GiB)Tokens/seg
LoRA0.542727.692366.2
LoRA + GC0.542613.171671.8
LoRA+VeLoRA0.542719.942057.6

Precauciones

  • VeLoRA es compatible actualmente solo con capas lineales estándar de LoRA.
Update on GitHub