AIKraft Agents

MakazhanAlpamys/Soup

Fine-tune LLMs из одного YAML. Layer streaming обучает 8B модель на 4 GB laptop GPU.

Обучение⭐ 10 214Pythonпоследний релиз: v0.77.2
Открыть на GitHub ↗Сайт проекта ↗

Что это за инструмент

Soup — это CLI-инструмент для тонкой настройки (fine-tune) больших языковых моделей (LLM) через один YAML-файл, позволяющий запускать обучение даже на слабых устройствах с 4 ГБ видеопамяти.

Зачем нужен

Инструмент решает проблему сложной инфраструктуры и настройки окружения при обучении LLM, устраняя необходимость в SSH и ручном конфигурировании. Он полезен тем, кто хочет быстро протестировать или дообучить модели (например, Llama-3.1-8B) локально на ноутбуке, используя технологию layer streaming для экономии VRAM.

Что можно реализовать

  • Локальное fine-tune 8B-моделей на ноутбуках с GPU объемом 4 ГБ (например, RTX 3050 Laptop).
  • Быстрый запуск обучения без настройки облачной инфраструктуры или сложных скриптов.
  • Обучение моделей на Apple Silicon с явным контролем квантования (QLoRA).
  • Тестирование гипотез и пайплайнов обучения с использованием единого YAML-конфигурации.

Ключевые возможности

  • Layer streaming: выводит замороженную базовую модель из VRAM, загружая её слои по мере необходимости, что позволяет обучать 8B-модели на 4 ГБ видеопамяти.
  • Управление через один YAML-файл: автоматическое определение GPU, размера батча и квантования.
  • Отсутствие необходимости в SSH: локальное выполнение команд без удаленного доступа к серверам.
  • Поддержка Apple Silicon и явная обработка квантования (NF4/4bit) для Mac.
  • Bit-exact результаты: подтверждена идентичность выходных данных по сравнению со стандартным обучением.

👤 Кому подойдёт: ML-инженеры, разработчики, исследователи и энтузиасты, работающие с LLM локально или на ограниченном оборудовании.

Релизы

v0.77.2minor
🕐 20 ч назад · релиз на GitHub ↗

MLX-обучение с предпочтениями и GRPO на 4-битных моделях, проверка токенов в soup serve, новые рецепты Qwen3.5.

  • Added: Добавлена поддержка MLX preference training (DPO, ORPO, SIMPO) и GRPO на предварительно квантованных 4-битных базах.
  • Added: soup profile теперь оценивает размещение модели без soup.yaml, а soup serve проверяет --tool-auth-token и Origin.
  • Added: Добавлены рецепты qwen3.5-0.8b-dpo и qwen3.5-27b-dpo для обучения с предпочтениями.
  • Fixed: Исправлены ошибки, приводившие к тихим перезаписям данных и пустым результатам при совпадении имен входов и выходов.
  • Deprecated: Заменен устаревший аргумент torch_dtype на поддерживаемый dtype при загрузке моделей Transformers.
v0.77.1minor
🕐 9 дн назад · релиз на GitHub ↗

Исправлено критическое перетирание входных файлов в soup data, улучшена валидация конфигураций и восстановлен пример Docker.

  • Fixed: Команды soup data больше не перезаписывают входные файлы при указании их же в --output, предотвращая потерю данных.
  • Fixed: soup plan и soup apply теперь корректно отклоняют конфигурации с ошибками валидации, которые раньше принимались.
  • Fixed: Восстановлена работа примера Docker из README благодаря добавлению флага --yes.
  • Fixed: Исправлены неточности в документации, касающиеся вывода soup doctor и обработки меток KTO.
v0.77.0majorbreaking
🕐 11 дн назад · релиз на GitHub ↗

v0.77.0: строгая валидация конфига, нативный MLX для Apple Silicon, потоковая загрузка DeepSeek-V3 и проверка происхождения данных.

  • Breaking: Запрещена загрузка конфигураций, которые ранее вызывали предупреждения или игнорировались; требуется предварительная проверка через soup doctor.
  • Added: Нативная поддержка обучения DPO, ORPO, SimPO и KTO на Apple Silicon через MLX, включая DoRA и воспроизводимые запуски.
  • Added: Потоковая загрузка (layer streaming) расширена на DeepSeek-V3-family и Kimi-K2 с оптимизацией памяти и пересчёта активаций.
  • Added: Внедрена проверяемая провенанс-система: фиксация хешей данных и коммитов базовой модели для верификации при деплое.
  • Added: GRPO теперь поддерживает оценку через LLM-судью (judge_rank), а также добавлены новые рецепты и инструменты для работы с данными.
v0.76.1patch
🕐 23 дн назад · релиз на GitHub ↗

Исправлены ошибки DPO, добавлены лимиты для YAML, обновлен Typer и исправлена загрузка датасетов с точкой в имени.

  • Fixed: Восстановлена работа DPO, IPO, BCO и preference задач на встроенных примерах.
  • Fixed: Исправлена загрузка датасетов с хабов, содержащих точку в названии.
  • Added: Введены единые лимиты вложенности, расширения и размера для всех YAML-файлов.
  • Fixed: Обновлен минимальный требуемый Typer до версии 0.15.4.
  • Added: Улучшена маскирование конфиденциальных параметров в логах аудита.
v0.76.0majorbreaking
🕐 24 дн назад · релиз на GitHub ↗

v0.76.0: отказ от неработающих настроек, новая валидация и команды для проверки конфигов и адаптеров.

  • Breaking: Отказ от загрузки настроек, которые не влияли на обучение (quantization_aware, use_longlora и др.), с предупреждением об устаревании других полей.
  • Breaking: Валидация loss теперь активна для всех задач; для GRPO, PPO и online_dpo данные валидации больше не исключаются из обучения.
  • Breaking: Клиентская часть KL-штрафа grpo_beta применяется ко всем вариантам GRPO, что меняет воспроизводимость предыдущих запусков.
  • Added: Добавлены команды soup adapters check, soup bench train, soup data clean, soup recipes verify и soup rewind.
  • Added: soup adapters check проверяет адаптеры LoRA на наличие нулевых весов и мертвых слоев без загрузки PyTorch.
v0.75.2patchbreaking
🕐 1 мес назад · релиз на GitHub ↗

Выпуск 0.75.2: критическое обновление безопасности для защиты от SSRF через строгую проверку IP-адресов в исходящих запросах.

  • Breaking: Запрещены приватные, локальные и зарезервированные IP-адреса в URL для всех исходящих подключений (vLLM, judge, eval-gate, веб-интерфейс).
  • Breaking: Адрес http://0.0.0.0 больше не считается локальным; используйте localhost или 127.0.0.1.
  • Added: Сетевые диапазоны 100.64.0.0/10 и fec0::/10 теперь классифицируются как непубличные.
  • Added: Нестандартные (не-ASCII) записи IP-адресов теперь корректно распознаются и проверяются.
  • Fixed: Исправлена ошибка: soup ship проверял модель судьи после сборки образов, теперь — до.
  • Fixed: Веб-интерфейс возвращает 400 Bad Request вместо 500 при некорректном URL эндпоинта.
v0.75.1patchbreaking
🕐 1 мес назад · релиз на GitHub ↗

Критическое обновление безопасности, исправление сохранения LoRA-адаптеров и багов CLI.

  • Breaking: Исправлена ошибка сохранения LoRA-адаптеров: в peft 0.21.0+ файлы содержали нулевые тензоры, восстановление невозможно, требуется переобучение.
  • Breaking: Исправлена логика флага --keep-weights в soup runs clean: теперь поведение стабильно на всех версиях Click, добавлен явный --no-keep-weights.
  • Fixed: Устранена уязвимость GHSA-63h4-gvp4-r26g: исправлена подмена токенов, проверка подписей адаптеров, XSS в Web UI и CSRF в API.
  • Fixed: Обновлена работа с облаком: сохранение чекпоинтов на томах soup-outputs и защита от преждевременного завершения процессов Lambda.
  • Fixed: Защита от зависания при загрузке конфигураций: исправлены regex-паттерны для lr_groups и unfrozen_parameters.
v0.75.0majorbreaking
🕐 1 мес назад · релиз на GitHub ↗

v0.75.0: строгая валидация конфига, исправление MLX-бэкенда, добавление validation loss и поддержка torch 2.6.

  • Breaking: Неизвестные ключи конфигурации теперь вызывают ошибку загрузки, а не предупреждение.
  • Fixed: MLX-бэкенд: добавлены недостающие параметры обучения и корректная маска для train_on_responses_only.
  • Added: Добавлена поддержка вычисления и отображения validation loss на всех бэкендах.
  • Fixed: Исправлен краш при использовании training.loraplus_lr_ratio и добавлена поддержка torch>=2.6.0.
  • Added: Реализован новый sequence-level objective grpo_variant: gspo, заменяющий эвристику центрирования.
v0.74.0majorbreaking
🕐 2 мес назад · релиз на GitHub ↗

Релиз v0.74.0: оптимизация VRAM, поддержка Transformers 5.x, исправление безопасности и новые рецепты.

  • Added: Оптимизация потребления памяти: базовая модель теперь загружается в fp16, что сокращает пиковое использование VRAM в 2.5 раза.
  • Added: Добавлена поддержка Transformers 5.x, TRL 0.29 и PEFT 0.20, а также возможность обучения моделей семейства Qwen3.5.
  • Fixed: Исправлены сбои потоковой передачи на бесплатных тарифах Colab/Kaggle благодаря корректному приведению типов LoRA-адаптеров.
  • Breaking: Включена защита `/v1/tools/bash` с обязательным токеном авторизации при привязке к не-локальным адресам.
  • Added: Добавлены 14 новых рецептов, общее количество в каталоге достигло 163.
v0.73.3minor
🕐 2 мес назад · релиз на GitHub ↗

Исправлены критические баги (коррупция данных, Windows, Apple Silicon), добавлен безопасный запуск MCP и новые модели.

  • Fixed: Устранена скрытая порча данных при ассистентном маскировании из-за некорректной обработки BatchEncoding.
  • Fixed: На Apple Silicon квантование 4bit теперь корректно применяется, а не игнорируется из-за ошибки определения устройства.
  • Fixed: Исправлена блокировка выполнения MCP на Windows, вызванная неверной интерпретацией кода выхода процесса 259.
  • Added: Добавлен флаг soup mcp serve --allow-execute для безопасного запуска задач через одноразовый токен.
  • Added: Добавлены новые рецепты для обучения моделей qwen3.5-4b-pretrain и deepseek-v4-flash-grpo.