XTuner - это простой, гибкий и полнофункциональный набор инструментов для тонкой настройки больших моделей (LLM, VLM) практически на всех GPU (от 7B LLM на 8 Gb VRAM до 70B+ на многоузловых GPU).
Обновление V0.1.22:
С учетом обновления XTuner поддерживает:
# It is recommended to build a Python-3.10 virtual environment using conda
conda create --name xtuner-env python=3.10 -y
conda activate xtuner-env
# Install XTuner from source
git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -e '.[all]'
# Step 0, prepare the config
xtuner list-cfg
# Step 1, start fine-tuning
xtuner train ${CONFIG_NAME_OR_PATH}
# For example, we can start the QLoRA fine-tuning of InternLM2.5-Chat-7B with oasst1 dataset by
# On a single GPU
xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
# On multiple GPUs
(DIST) NPROC_PER_NODE=${GPU_NUM} xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
(SLURM) srun ${SRUN_ARGS} xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --launcher slurm --deepspeed deepspeed_zero2
# Step 2, convert the saved PTH model (if using DeepSpeed, it will be a directory) to Hugging Face model
xtuner convert pth_to_hf ${CONFIG_NAME_OR_PATH} ${PTH} ${SAVE_PATH}
@ai_machinelearning_big_data
#AI #FineTuning #LLM #XTuner #ML
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤4🔥3
⚡️ Q-GaLore: алгоритм обучения и файнтюна LLM с экономией памяти.
Q-GaLore - набор методик, который значительно оптимизирует использование памяти при сохранении высокой производительности за счет техник, полученных в результате наблюдения за поведением стабилизации слоев и устойчивости матриц проекции к квантованию:
🟢 адаптивного обновления подпространств (увеличение интервала между операциями SVD и, как следствие, сокращение их числа на 60%);
🟢 квантовании весов и матриц в проекции (хранение весов модели в INT8, использовании 4-битных матриц проекции и применение стохастического округления для аппроксимации траектории обучения с высокой точностью)
🟢 применении метода fused backward operation в совокупности с 8-битным оптимизатором Adam.
Совокупность этих техник позволяет проводить полнопараметрическое обучение при меньших затратах памяти, например, обучение модели LLaMA-7B с нуля на одном NVIDIA RTX 4060 Ti с использованием всего 16 ГБ памяти.
▶️ Локальный запуск:
Пример конфига для претрейга LLaMa на с4 датасете
Пример конфига для претрейна LLaMA-7B на 16 GB VRAM
▪Лицензирование: Apache-2.0
▪Arxiv
▪Video from Open AGI Summit
▪Github [ Stars: 3.4K | Issues: 122 | Forks: 274]
@ai_machinelearning_big_data
#AI #FineTuning #LLM #QGalore #ML
Q-GaLore - набор методик, который значительно оптимизирует использование памяти при сохранении высокой производительности за счет техник, полученных в результате наблюдения за поведением стабилизации слоев и устойчивости матриц проекции к квантованию:
Совокупность этих техник позволяет проводить полнопараметрическое обучение при меньших затратах памяти, например, обучение модели LLaMA-7B с нуля на одном NVIDIA RTX 4060 Ti с использованием всего 16 ГБ памяти.
# # Install via conda
conda env create - f environment.yml
# or Install Q-GaLore optimizer and experiment dependencies
# install from pip
pip install q-galore-torch
# or install from source:
git clone https://github.com/VITA-Group/Q-GaLore.git
cd Q-GaLore
pip install -e
pip install -r exp_requirements.txt
Пример конфига для претрейга LLaMa на с4 датасете
Пример конфига для претрейна LLaMA-7B на 16 GB VRAM
▪Лицензирование: Apache-2.0
▪Arxiv
▪Video from Open AGI Summit
▪Github [ Stars: 3.4K | Issues: 122 | Forks: 274]
@ai_machinelearning_big_data
#AI #FineTuning #LLM #QGalore #ML
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍14🔥6
Sparse Low Rank Adaptation (SaRA) - метод дополнительного обучения для диффузионных моделей, который использует "неэффективные" параметры с наименьшими абсолютными значениями в предобученной модели.
SaRA позволяет улучшить генеративные способности модели, адаптируя ее к новым задачам, сохраняя при этом обобщающие способности исходной модели. SaRA отличается простотой реализации, требуя модификации всего одной строки кода в исходном скрипте обучения.
Идея метода о том, что параметры модели с наименьшими абсолютными значениями, хотя и не оказывают существенного влияния на инференс модели, обладают потенциалом для обучения новым знаниям. Потенциал обусловлен не структурными ограничениями модели, а скорее случайностью процесса оптимизации во время обучения.
Чтобы предотвратить переобучение, которое может возникнуть из-за сильной способности к представлению разреженных матриц, в SaRA используется функция потерь на основе ядерной нормы (nuclear norm-based) для ограничения ранга обучаемых матриц.
Для более плотного использования "неэффективных" параметров, используется прогрессивная стратегия настройки параметров процесса файнтюна - на более поздних этапах обучения происходит повторный выбор "неэффективных" параметров для повышения адаптивности модели.
Для решения проблемы высокого потребления VRAM, характерной для методов selective PEFT, SaRA использует алгоритм «неструктурного обратного распространения ошибки». Этот алгоритм хранит и обновляет градиенты только для обучаемых параметров, значительно сокращая использование памяти во время обучения.
Проведенные эксперименты на моделях Stable Diffusion (14, 1.5, 2.0, 3.0) демонстрируют эффективность SaRA в сравнении с другими методами файнтюна:
⚠️ Метод был успешно протестирован на venv :
Python 3.9.5
и CUDA 11.8
. Подробный туториал разработчик обещает выложить в репозиторий на Github до 30 сентября 2024 г. В планах проекта - поддержка Dreambooth и Animatediff. Сроки по реализации планов не уточняются.
# easily employ SaRA to finetune the model by modifying a single line of code:
from optim import adamw
model = Initialize_model()
optimizer = adamw(model,threshold=2e-3) # <-modify this line only
for data in dataloader:
model.train()
model.save()
# Save and load only the trainable parameters
optimizer = adamw(model,threshold=2e-3)
optimizer.load($path_to_save)
torch.save(optimizer.save_params(),$path_to_save)
@ai_machinelearning_big_data
#AI #ML #Finetuning #Diffusers #SaRA
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤7🔥4👏3