Skip to main content

Impruver: Фреймворк для обучения Больших Языковых Моделей (LLM)

Русский | 中文 | English

Набор скриптов и конфигураций для самостоятельного обучения Больших Языковых Моделей (БЯМ) или же на английском 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)

Source distribution for impruver 1.0.8
File Size Uploaded
impruver-1.0.8.tar.gz 69.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for impruver 1.0.8
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.0.8 This release

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page