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

Это вариант LoRA, поэтому всё, что возможно с LoRA, применимо и к этому методу, если на этой странице не указано иное.

VeLoRA — это вариант LoRA, который снижает объём памяти, используемой при обучении, за счёт сжатия активаций, сохраняемых для LoRA на прямом проходе, и их последующей реконструкции на обратном проходе для реализации правил обновления. В PEFT VeLoRA настраивается как вариант LoRA через аргумент velora_config в 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 применяется к каждому слою LoRA, выбранному с помощью target_modules. Параметр num_groups определяет, как глубина входных активаций разделяется перед сжатием. Если глубина активаций не делится нацело на num_groups, VeLoRA внутренним образом дополняет сгруппированное представление и удаляет дополнения после реконструкции. Параметр scale масштабирует реконструированные активации во время обратного прохода, а init_type определяет способ инициализации проекции.

Используйте batch_average_once, чтобы инициализировать проекцию из первой обучающей партии, batch_average, чтобы обновлять её на каждом проходе прямой передачи в обучении, или random, чтобы инициализировать её сразу из случайного нормированного вектора.

Ниже приведены некоторые результаты на бенчмарке MetaMathQA.

ВариантПотери обученияМаксимальная память (ГБ)Токенов/сек
LoRA0.542727.692366.2
LoRA + GC0.542613.171671.8
LoRA+VeLoRA0.542719.942057.6

Ограничения

  • VeLoRA в настоящее время поддерживается только для стандартных линейных слоёв LoRA.
Update on GitHub