Este repositorio implementa el algoritmo de gradiente de gradiente de varianza de órdenes cero de orden de memoria (MEZO-SVRG) para ajustar la cara de abrazadera previa al ajuste de los LM. Como líneas de base, también implementamos Optimizer ZO de memoria (MEZO) y SGD de primer orden (FO-SGD). El repositorio está escrito en Pytorch y aprovecha el marco Pytorch Lightning.
Para instalar el entorno Python relevante, use el comando
conda create --name zo_opt python=3.9
conda activate zo_opt
python -m pip install -r requirements.txtEste repositorio implementa el algoritmo MEZO-SVRG y permite ajustar un rango en modelos de lenguaje utilizando el conjunto de datos de referencia de pegamento. Para ejecutar experimentos, ejecute el script 'finetune_llm.sh' bash.
El script admite los siguientes modelos:
El script admite las siguientes tareas de pegamento:
Indique el algoritmo de ajuste fino pasando uno de los siguientes {'fo', 'zo', 'Zosvrg'}. La configuración exacta del hiperparameter utilizada para generar las tablas/figuras en el documento se proporciona en el apéndice.
Considere citar nuestro documento si usa nuestro código:
@misc{gautam2024variancereduced,
title={Variance-reduced Zeroth-Order Methods for Fine-Tuning Language Models},
author={Tanmay Gautam and Youngsuk Park and Hao Zhou and Parameswaran Raman and Wooseok Ha},
year={2024},
eprint={2404.08080},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
Ver contribuyendo para más información.
Este proyecto tiene licencia bajo la licencia Apache-2.0.