Английский |中文
Это реализация для полного параметра точной настройки для крупных языковых моделей с ограниченными ресурсами и Adalomo: оптимизация с низкой памяти с адаптивной скоростью обучения.
transformers
и accelerate
.lomo-optim
был выпущен.CoLLiE
, которая эффективно поддерживает совместную подготовку крупных языковых моделей. Вы можете установить lomo-optim
из PYPI с помощью PIP.
pip install lomo-optim
Затем импортируйте Lomo
или AdaLomo
.
from lomo_optim import Lomo
from lomo_optim import AdaLomo
Использование Lomo
и AdaLomo
похоже, но не то же самое, что оптимизаторы Pytorch (пример). Мы рекомендуем использовать AdaLomo
без gradnorm
, чтобы получить лучшую производительность и более высокую пропускную способность.
В этой работе мы предлагаем новый оптимизатор, Lo W-Memory O Ptimization ( LOMO ), которая объединяет расчет градиента и обновление параметров за один шаг, чтобы уменьшить использование памяти. Наш подход обеспечивает полную точную настройку модели 7B на одной модели RTX 3090 или 65B на одной машине с 8 × RTX 3090, каждая с памятью 24 ГБ.
Наша реализация зависит от инъекции функций крюка в обратный проход Pytorch. Как показано на рисунке, мы регистрируем настраиваемую функцию крючка для каждого параметра. Когда градиент параметра вычисляется (перед написанием его в атрибут .GRAD), его соответствующая функция крюка вызывается. Для получения дополнительной информации о функциях крючка и обратном проходе графика автограда, пожалуйста, обратитесь к документации Pytorch. Таким образом, во время обратного прохода мы проходим тензор и его grad_fn, записываем градиент в атрибут .GRAD, а затем переходим к следующему тензору.
Наша индивидуальная функция крюка сканирует все параметры, обновляя параметр, если его атрибут .GRAD не пуст, а затем очищает и освобождает атрибут .GRAD. Поскольку функция крюка для параметра вызывается до установки его атрибута .GRAD, атрибут .GRAGRAD последнего параметра на графике Autograd не готов при использовании последней функции крюка. Поэтому мы выполняем дополнительное сканирование для обновления последнего параметра.
Код для Lomo находится в папке Lomo.
В этой работе мы изучили различия между методами оптимизации LOMO и ADAM и введем Adalomo, который обеспечивает адаптивную скорость обучения для каждого параметра и использует сгруппированную нормализацию обновления при сохранении эффективности памяти. Адаломо достигает результатов, сравнимых с ADAMW как в настройке инструкций, так и в дальнейшем обучении с меньшим количеством памяти.
Код для Adalomo находится в папке Adalomo.
@article{lv2023full,
title={Full Parameter Fine-tuning for Large Language Models with Limited Resources},
author={Lv, Kai and Yang, Yuqing and Liu, Tengxiao and Gao, Qinghui and Guo, Qipeng and Qiu, Xipeng},
journal={arXiv preprint arXiv:2306.09782},
year={2023}
}
@article{lv2023adalomo,
title={AdaLomo: Low-memory Optimization with Adaptive Learning Rate},
author={Lv, Kai and Yan, Hang and Guo, Qipeng and Lv, Haijun and Qiu, Xipeng},
journal={arXiv preprint arXiv:2310.10195},
year={2023}
}