-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Набор скриптов и конфигураций для самостоятельного обучения Больших Языковых Моделей (БЯМ) или же на английском Large Language Models (LLM).
Вдохновлён проектами: saiga, torchtune, nanoGPT.
Обладает следующими возможностями:
- Единая конфигурация для подготовки датасетов, запуска обучения и инференса в формате YAML
- Возможно указать отдельно токенизатор и модель
- При необходимости можно описать конфигурацию модели from scratch
- Гибкая система подготовки датасетов, позволяющая скомбинировать несколько датасетов, каждый из них индивидуально
нарезать и преобразовать, после чего выполнить слияние и дедупликацию
- Можно использовать датасеты типа
instruct
илиchat
произвольного формата, система преобразует их в OpenAI-подобный chat типа messages - Можно обучать function call модели с ролями function_call и function_response
- Можно использовать датасеты типа
- Предусмотрены возможности обучения моделей с нуля (from scratch), full-train дообучения и LoRA/Peft дообучения
- В отличие от иных реализаций использует классы из пакета
transformers
, однако, можно указать путь до любого другого класса описывающего модель и/или токенизатор иimpruver
будет использовать уже их - Поддерживает возможность распределённого обучения при помощи
accelerate
- Python 3.12
- Python Virtual Environment
- Nvidia GPU с 24Гб VRAM (на видеокартах с меньшим объёмом VRAM можно уменьшить размер
per_device_*_batch_size
и/илиgradient_accumulation_steps
) - Драйвера Nvidia и CUDA
В директории configs имеется набор готовых конфигураций, каждый из них оптимизирован для обучения
модели на одной видеокарте, память которой равна 24Гб, хотя маленькие модели можно обучать и на меньших объёмах памяти
просто уменьшая размер per_device_*_batch_size
и/или gradient_accumulation_steps
.
Модель | Тип модели | Конфигурации |
---|---|---|
ruGPT3.5-13B | Saiga 2 | lora |
ruGPT3.5-13B | function call | lora |
nanoGPT (обучение с нуля) | Alpaca | full-train |
rugpt3large | Saiga 2 | full-train, lora |
rugpt3large | function call | full-train, lora |
rugpt3medium | Saiga 2 | full-train |
rugpt3medium | function call | full-train |
rugpt3small | Saiga 2 | full-train |
rugpt3small | function call | full-train |
zephyr-7b-beta | zephyr-python-ru analog | lora |
Полный список рецептов обучения и конфигураций можно посмотреть выполнив:
impruver ls
Прежде чем приступить к обучению модели необходимо подготовить и дедуплицировать датасет, после чего разделить его на тренировочный и валидационный наборы сэмплов.
Все эти задачи можно выполнить запустив рецепт compose_dataset
и указав необходимую конфигурацию:
impruver run compose_dataset --config ruGPT-3.5/13B_lora_saiga2
Далее запускаем рецепт обучения трансфорфмерной модели:
impruver run finetune --config ruGPT-3.5/13B_lora_saiga2
Скрипт тренировки поддерживает режим отправки логов в Weights and Biases, но по умолчанию данный функционал отключен,
для того чтобы включить данный функционал нужно добавить опцию --report-to=wandb
в команду запуска обучения.
По завершению обучения можно запустить интерактивный чат:
impruver run chat ruGPT-3.5/13B_lora_saiga2
Если у вас на сервере несколько видеокарт то потребуется выполнить ряд дополнительных настроек.
Для начала необходимо пройти небольшой опрос, выполни команду:
accelerate config
Пример вопросов и ответов для сервера с тремя видеокартами RTX 4070 Ti.
In which compute environment are you running? This machine
Which type of machine are you using? Multi-GPU
How many different machines will you use (in total with all the processes)? 1
Do you wish to use DeepSpeed? No
How many processes in total will you use? 3
Do you wish to use FP16 or BF16 (mixed precision)? bf16
Would you like to enable numa efficiency? (Currently only supported on NVIDIA hardware). Yes
Остальное по умолчанию, просто прожимайте Enter пока не закончится.
Далее в YAML-конфигурацию потребуется добавить стройки вида:
ddp:
ddp_find_unused_parameters: false
После этого можно будет запустить обучение:
accelerate launch train_transformers.py configs/ruGPT-3.5/13B_lora_saiga2.yaml
Опция --report-to=wandb
в таком формате тоже поддерживается.
Далее смотрите в nvidia-smi
или nvitop
, модель должна будет запуститься и разлиться на все видеокарты.