Transformer based LLM trainer
Project description
Impruver: Фреймворк для обучения Больших Языковых Моделей (LLM)
Набор скриптов и конфигураций для самостоятельного обучения Больших Языковых Моделей (БЯМ) или же на английском Large Language Models (LLM).
Вдохновлён проектами: saiga, torchtune, nanoGPT.
Обладает следующими возможностями:
- Единая конфигурация для подготовки датасетов, запуска обучения и инференса в формате YAML
- Возможно указать отдельно токенизатор и модель
- Предусмотрена возможность обучения моделей с нуля (from scratch), full-train дообучения и LoRA/Peft дообучения
- Гибкая система подготовки датасетов, позволяющая скомбинировать несколько датасетов, каждый из них индивидуально
нарезать и преобразовать, после чего выполнить слияние и дедупликацию
- Можно использовать датасеты типа
instructилиchatпроизвольного формата, система преобразует их в OpenAI-подобный chat типа messages - Можно обучать function call модели с ролями
function_callиfunction_response
- Можно использовать датасеты типа
- В отличие от иных реализаций использует классы из пакета
transformers, однако, можно указать путь до любого другого класса описывающего модель и/или токенизатор иimpruverбудет использовать уже их - Поддерживает возможность распределённого обучения при помощи
accelerate
При необходимости вы можете изучить документацию проекта.
Рекомендованные системные требования
- Python 3.12
- Python Virtual Environment
- Nvidia GPU с 24Гб VRAM (на видеокартах с меньшим объёмом VRAM можно уменьшить размер
per_device_*_batch_sizeи/илиgradient_accumulation_steps) - Драйвера Nvidia и CUDA
Как установить
Устанавливается одной командой:
pip install impruver
После чего в PATH станет доступна утилита командной строки impruver.
Если планируется обучение моделей с использованием Flash Attention, то надо будет выполнить ещё и:
pip install setuptools psutil torch flash-attn --no-build-isolation
Доступные конфигурации
Полный список рецептов обучения и конфигураций можно посмотреть выполнив:
impruver ls
Вы можете скопировать конфигурацию локально:
impruver cp ruGPT-3.5/13B_lora_saiga2 ./ruGPT-3.5_13B_lora_saiga2.yaml
Подробнее про конфигурации в wiki проекта.
Как пользоваться
Прежде чем приступить к обучению модели необходимо подготовить и дедуплицировать датасет, после чего разделить его на тренировочный и валидационный наборы сэмплов.
Все эти задачи можно выполнить запустив рецепт compose_dataset и указав необходимую конфигурацию:
impruver run compose_dataset --config ./ruGPT-3.5_13B_lora_saiga2.yaml
Или используя конфигурацию, идущую в стандартной поставке:
impruver run compose_dataset --config ruGPT-3.5/13B_lora_saiga2
Далее запускаем рецепт finetune для обучения трансфорфмерной модели:
impruver run finetune --config ./ruGPT-3.5_13B_lora_saiga2.yaml
Скрипт тренировки поддерживает режим отправки логов в Weights and Biases, но по умолчанию это отключено,
для того чтобы включить данный функционал нужно добавить опцию --report-to=wandb в команду запуска обучения.
По завершению обучения при помощи рецепта chat можно запустить интерактивный чат:
impruver run chat ./ruGPT-3.5_13B_lora_saiga2.yaml
Для того чтобы выйти из оболочки чата, используйте комбинацию клавиш Ctrl+D или Ctrl+C.
Подробнее про обучение в wiki проекта.
Лицензия
Данный проект распространяется под лицензией MIT. Подробности в файле LICENSE.
Цитирование
@misc{impruver2024sources,
author = {Pavel Rykov},
title = {{Impruver: Framework for Training Large Language Models}},
howpublished = {\url{https://github.com/EvilFreelancer/impruver}},
year = {2024}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file impruver-1.0.8.tar.gz.
File metadata
- Download URL: impruver-1.0.8.tar.gz
- Upload date:
- Size: 69.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
693a717e1738b4e04bf3fa2887caa2161f0069ab0c8086b793f08a0899004ae6
|
|
| MD5 |
90712e15b43ed90f3d069ca591a70046
|
|
| BLAKE2b-256 |
ac284fba1a923a2c1284fbff3bce2d13ce230964d0cbc1d3e6ff7c06d8157849
|
File details
Details for the file impruver-1.0.8-py3-none-any.whl.
File metadata
- Download URL: impruver-1.0.8-py3-none-any.whl
- Upload date:
- Size: 94.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2fbe9f9d4395970e0057339a9007852674bc97b1d1294216cfbd74abbbd84e49
|
|
| MD5 |
b347428bcb0b0d21e3662f8e6d144c33
|
|
| BLAKE2b-256 |
0753f65b31ccdb7a6e8a76f94f171d8709e9f9f24ce01baf9d8e5b32bc49e153
|