Skip to main content

Transformer based LLM trainer

Project description

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}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

impruver-1.0.4.tar.gz (35.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

impruver-1.0.4-py3-none-any.whl (52.6 kB view details)

Uploaded Python 3

File details

Details for the file impruver-1.0.4.tar.gz.

File metadata

  • Download URL: impruver-1.0.4.tar.gz
  • Upload date:
  • Size: 35.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for impruver-1.0.4.tar.gz
Algorithm Hash digest
SHA256 49f233b376627fc57307a627e20a8502ee39c3bd9f6d662cbcdc7534e6287112
MD5 2eb8a2cf6fd2031236d647cb125fc35d
BLAKE2b-256 6d83e822a5b92436dcc9ba10b546901ffa020cfd86eb7d9a64a57e8723cffbcd

See more details on using hashes here.

File details

Details for the file impruver-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: impruver-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 52.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for impruver-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 770a87508561de68dc65f6cd6c97b3369e49d931379e1f6657bc9fb7b8951986
MD5 928f334550847f184325e74f527cff63
BLAKE2b-256 3b9bb86e25ba304d0ed5cfbe1233720b627ccdb5f18d6e6265970925c1267aab

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page