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