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}
}
Metadata
Release files for impruver 1.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| impruver-1.0.8.tar.gz | 69.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| impruver-1.0.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 163.8 kB
Release files / impruver-1.0.8.tar.gz
| Download URL | impruver-1.0.8.tar.gz |
|---|---|
| Size | 69.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
693a717e1738b4e04bf3fa2887caa2161f0069ab0c8086b793f08a0899004ae6
|
|
BLAKE2b-256 checksum How to use checksums |
ac284fba1a923a2c1284fbff3bce2d13ce230964d0cbc1d3e6ff7c06d8157849
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Release files / impruver-1.0.8-py3-none-any.whl
| Download URL | impruver-1.0.8-py3-none-any.whl |
|---|---|
| Size | 94.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2fbe9f9d4395970e0057339a9007852674bc97b1d1294216cfbd74abbbd84e49
|
|
BLAKE2b-256 checksum How to use checksums |
0753f65b31ccdb7a6e8a76f94f171d8709e9f9f24ce01baf9d8e5b32bc49e153
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|