Brewery — консольный агент для дообучения своих моделей

· 2 мин чтения
fine-tuning llm cli python gpu
📂 Исходный код на GitHub

Консольный агент для дообучения языковых и картинных моделей. ИИ-наставник (brewmaster) проводит пользователя по всему пути: цель, железо, базовая модель, данные, безопасные гиперпараметры, обучение на своей GPU или арендованном сервере Runpod/Vast.ai, проверка и публикация на Hugging Face вместе с карточкой модели. Поддерживает LoRA, QLoRA и полное дообучение, цепочки CPT → SFT → DPO, единый формат данных ETF и галерею превью для картинных LoRA. Python 3.10+, стадия alpha, лицензия Brewery (MIT при обороте до 2 млн долларов в месяц).

Brewery — консольный агент для дообучения своих моделей

Brewery — это консольный агент, который помогает дообчить языковую или картинную модель под вашу задачу. Вы общаетесь с ИИ-наставником по имени brewmaster, а он ведёт вас по всему пути: что должна делать модель, где её обучать, какая базовая модель подойдёт, где взять и как подготовить данные, какие гиперпараметры безопасны, как запустить обучение и как выложить результат на Hugging Face с нормальной карточкой модели.

Проект сделан в Empero — независимой исследовательской лаборатории, которая публикует всё открыто. До версии 0.2.0 репозиторий назывался Homebrew, но это имя перепутали с менеджером пакетов macOS, поэтому проект переименовали. Старые ссылки работают, а проекты и настройки Homebrew подхватываются автоматически.

Сам продукт — Python-пакет с CLI, который ставится одной командой. Проект пока в стадии alpha, текущая версия — 0.2.1.

Как проходит работа

Brewery разбивает работу на девять фаз, и агент переходит между ними по ходу разговора:

Фаза Что происходит
Цель brewmaster уточняет, что модель должна делать, пока задача не станет конкретной
Железо Проверяет, что есть на вашем компьютере, и выбирает, где идти обучение: на своей видеокарте или на арендованном сервере, который Brewery готовит по SSH
Базовая модель Подбирает модель под задачу, железо и лицензионные ограничения, проверяет доступ
Данные Находит, импортирует, пишет или генерирует данные и показывает, чему именно модель будет учиться
Рецепт Подставляет все гиперпараметры из рекомендаций модели и рассчитывает размер под вашу видеокарту
Варка Обучение идёт в фоне, показывается живой прогресс, кривая потерь и время до конца
Проба Проверяет промпты на новой модели рядом с базовой, можно собрать предпочтения для DPO
Розлив Экспорт адаптера или объединённой модели, карточка модели, файлы лицензий
Публикация Загрузка на Hugging Face (по умолчанию приватно) и напоминание выключить арендованный сервер

Любое действие, которое тратит деньги, ставит софт, уводит ваши данные в другое место или публикует что-то наружу, Brewery спрашивает отдельно. ИИ не может пропустить этот вопрос. Пароли, API-ключи и токены в чат не попадают — они лежат в файле, который читается только вами.

Что поддерживается

Текстовые модели: Qwen3, Qwen3.5, а также Qwen3.6/3.8 и модели самой Empero на той же архитектуре, Qwen3.5 MoE, Llama 3.1/3.2/3.3, Gemma 3 и Gemma 4. Методы — LoRA, QLoRA и полное дообучение.

Картинные модели: адаптеры LoRA для Qwen-Image 2.1 — стили, персонажи, объекты.

Гиперпараметры не придумываются на ходу. Для каждой поддерживаемой модели есть рекомендации отдельно для каждой цели и метода, и агент может предлагать настройки только внутри них. Перед запуском он считает нужную память, время и деньги.

Данные берутся откуда угодно: поиск и просмотр датасетов на Hugging Face без скачивания, локальные файлы, примеры, которые вы пишете вместе с агентом, по желанию — синтетические данные под вашу задачу и сбор предпочтений, где вы выбираете лучший из двух ответов своей модели.

Установка

pip install "brewery-ai @ git+https://github.com/empero-org/brewery-ai"

Запуск:

brewery

При первом старте Brewery спрашивает, какая модель будет вас вести, и просит её API-ключ. Ключ сохраняется только на вашем компьютере. Потом выбирается уровень опыта — 🌱 новичок, 🍺 любитель, 🛠️ создатель или 🧪 эксперт — и название проекта. После этого всё идёт обычным разговором:

● brewmaster
  Ahoy! I'm here to help you brew your own AI model. Tell me what you'd like it to do —
  chat in a certain style, know about a topic, use tools, draw in a style…

 › a chatbot that explains chemistry like a friendly pirate

● brewmaster
  ✻ thinking
    No GPU on this laptop; a 2-4B model with LoRA fits a rented 24 GB card…
  ⚙ checking hardware…
  Your laptop has no NVIDIA GPU, so we'll rent one for about an hour (~$0.40 on a 24 GB card)…

Сам код обучения живёт на машине с видеокартой. Ноутбуку достаточно лёгкой установки, которая отвечает только за управление. Терминал можно закрыть: обучение не остановится, а команда brewery в папке проекта продолжит с того же места.

Своя видеокарта или аренда

Ваша машина Что делать
Видеокарта NVIDIA (Linux или Windows) pip install "brewery-ai[train] @ git+https://github.com/empero-org/brewery-ai" — ставит PyTorch с CUDA
Видеокарта AMD (Linux или Windows) Сначала поставьте PyTorch из ROCm — на Windows берите сборку AMD и держите PIP_CONSTRAINT=constraints-windows-rocm.txt, чтобы pip не заменил сборку AMD
Apple Silicon или только CPU Только крошечные тестовые запуски, для настоящих моделей brewmaster предложит арендовать видеокарту

Команда brewery hardware показывает, что Brewery нашла. Перед локальным обучением инструмент выполняет настоящую операцию на видеокарте, поэтому сломанный драйвер или неверная сборка PyTorch покажутся понятным сообщением, а не упадут посреди запуска. QLoRA и картинные LoRA пока проверены только на видеокартах NVIDIA; на AMD безопасный выбор — LoRA и полное дообучение.

Аренда устроена просто: Brewery не заводит аккаунты и не тратит деньги за вас. Программа советует подходящую видеокарту с примерными ценами Runpod и Vast.ai, создаёт SSH-ключ и ведёт по шагам. Дальше вы вставляете SSH-команду провайдера, а Brewery забирает остальное: проверку железа, настройку окружения, загрузку данных, обучение и результат. Учтите: остановленные поды и инстансы продолжают брать деньги за хранение — их нужно удалить, когда закончили.

CPT → SFT → DPO

У каждого запуска обучения есть цель — cpt, sft или dpo — и он может стартовать с результата предыдущего этапа.

  • SFT — обычный случай: инструктивная модель учится вашему поведению, стилю, формату или инструментам.
  • CPT → SFT — сначала учим базовую модель предметной области или языку по сырому тексту, потом — умению разговаривать.
  • SFT → DPO — дотачиваем вкусы. Пары предпочтений берутся с Hugging Face, из синтетической генерации или с вашей же модели: Brewery генерирует два ответа на промпт (generate_candidates), вы выбираете лучший прямо в терминале (review_candidates), либо поручает судью-ИИ и проверяете часть его вердиктов вручную.

Этапы на LoRA перед следующим шагом сливаются с исходными весами, поэтому стадии можно спокойно накладывать друг на друга. DPO считает опорные лог-вероятности один раз по модели, с которой начинался этап, — вторая модель в памяти ему не нужна.

Данные и галерея

Синтетические данные включаются только по вашему согласию, и Brewery сначала показывает вам условия провайдера. Она умеет писать новые диалоги по короткому описанию, переписывать готовый датасет в нужную манеру и собирать пары предпочтений для DPO. Запросы идут параллельно, прогресс виден прямо в строке, а готовые порции сохраняются сразу. Поэтому отменённый запуск не теряет работу. Команда clean_dataset выбрасывает пустые, повторяющиеся и битые записи, предварительно сделав копию.

Картинные LoRA показывают результат прямо во время обучения. Сначала рендерится набор «до» на шаге 0, потом — набор для каждого чекпоинта, всегда с одинаковыми сидами, чтобы сравнение было честным. Каждый новый набор Brewery скачивает в runs/<job>/samples/step_NNNNNN/ и печатает папку. Рядом лежит сохранённый чекпоинт: если шаг 500 выглядит лучше финала, попросите brewmaster упаковать именно его.

Команда /gallery поднимает на вашем компьютере одностраничную галерею по адресу вида http://127.0.0.1:8765/<случайный токен>/ — снаружи она недоступна. Строки — чекпоинты, колонки — промпты. Стрелки ←/→ переключают чекпоинты для одного промпта, клавиша C сравнивает с базовой моделью.

Терминал

Команда Что делает
brewery начать или продолжить сессию в текущем проекте
brewery new NAME новый проект
brewery setup выбрать или сменить ИИ-наставника
brewery doctor проверить установку, наставника, вход в Hugging Face, железо
brewery hardware [--ssh "ssh …"] отчёт по железу этой машины или сервера
brewery models [--modality text\|image] [--all] поддерживаемые базовые модели
brewery status [JOB] задачи обучения текущего проекта
brewery etf validate\|stats\|convert\|schema работа с файлами ETF

Внутри сессии: /status, /jobs, /watch, /gallery, /level, /usage, /thinking, /help, /quit. Под строкой ввода показываются проект, наставник, уровень, фаза, расход токенов и заполненность контекста.

Внутри проекта пути записываются относительно папки проекта и через прямой слэш. Поэтому папку можно перенести на другой компьютер или передать другому человеку. Формат ETF — один .jsonl для диалогов, системных промптов, схем и вызовов инструментов, рассуждений, RAG-документов, пар предпочтений, сырого текста, дополнений и картинок. Описание формата лежит в docs/etf.md, список моделей с рекомендациями по гиперпараметрам — в docs/models.md, устройство проекта — в docs/architecture.md.

Две модели, сваренные этой сборкой

Авторы показали две демо-модели, каждую сваренную за одну сессию на арендованной RTX PRO 5000 с Vast.ai, с наставником xiaomi/mimo-v2.6-pro через OpenRouter:

  • Homebrew-Qwen3.5-2B-Grandmas-Kitchen — Qwen3.5 2B, которая пишет рецепты домашней еды голосом тёплой болтливой бабушки. Открытый датасет рецептов, чистка, переписывание под голос бабушки с синтетическими данными по желанию, затем LoRA SFT на 826 примерах примерно за две эпохи.
  • Homebrew-Qwen-Image-2.1-Y2K — LoRA для Qwen-Image 2.1 с видом снимков с цифровых камерок начала 2000-х, триггер y2kphoto. 160 фотографий с подписями плюс триггерное слово, LoRA с превью на каждом чекпоинте; чекпоинт шага 500 выбрали по этим превью.

Карточки моделей — с режимом обучения, данными, лицензиями, благодарностями и примерами «до/после» — тоже написал Brewery.

Кто ведёт вас за руку

Пресет Что это
Claude (Anthropic) лучшее качество пояснений, по умолчанию claude-opus-5-5, доступны Sonnet 5.5 и Haiku 4.5
OpenAI любая чат-модель с вызовом инструментов
OpenRouter много моделей под одним ключом
Ollama / LM Studio бесплатно и локально; для хорошего результата нужна модель от 14B с вызовом инструментов
Свой любой OpenAI-совместимый сервер (vLLM, llama.cpp и другие)

Brewery подстраивается под наставника: сильным моделям достаётся весь набор инструментов, слабым локальным — пошаговые подсказки и инструменты, ограниченные текущей фазой. Модели без родного вызова инструментов получают текстовый протокол автоматически. Сменить наставника можно в любой момент через brewery setup.

Лицензия и планы

Код распространяется по Brewery License: условия MIT для частных лиц и организаций с валовым месячным доходом до 2 000 000 долларов в среднем за двенадцать месяцев, включая аффилированные компании. Более крупным организациям нужна коммерческая лицензия от Empero. Модели и данные, которые вы создаёте с помощью Brewery, остаются вашими — с учётом лицензий базовых моделей и датасетов. Текст лицензии: LICENSE.

В планах экспорт в GGUF для llama.cpp и Ollama, бесплатные ноутбуки Colab и Kaggle, больше картинных моделей и LoRA для редактирования изображений, разбиение обучения на несколько видеокарт (FSDP) для больших полных дообучений, методы KTO и ORPO, наборы для оценки качества и автоматическая аренда видеокарт через API провайдеров — по желанию и с лимитами расходов.

Проекты и модели авторов лежат на GitHub и на Hugging Face.

Источник: https://github.com/empero-org/brewery-ai