PEFT documentation
VeLoRA
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.
| Variante | Pérdida de entrenamiento | Memoria máxima (GiB) | Tokens/seg |
|---|---|---|---|
| LoRA | 0.5427 | 27.69 | 2366.2 |
| LoRA + GC | 0.5426 | 13.17 | 1671.8 |
| LoRA+VeLoRA | 0.5427 | 19.94 | 2057.6 |
Precauciones
- VeLoRA es compatible actualmente solo con capas lineales estándar de LoRA.