Кузня
Обучение нейросетей прямо из JSON — без единой строки кода.
Не хотите отключать Smart App Control? Запустить из исходников
Что это
Один JSON — один воспроизводимый эксперимент
Кузня — настольный инструмент, в котором JSON-конфиг полностью описывает тренировочный ран. Форма в браузере и файл конфига — это два представления одного объекта: изменяете одно, второе обновляется синхронно. Файл поддерживает комментарии и висящие запятые, потому что конфиги пишут руками.
Обучение — не полоска прогресса. Кузня показывает, как меняются решения сети по эпохам, насколько здоровы градиенты по слоям, и что происходит внутри RL-агента при каждом шаге. Запустить эксперимент можно кликом в браузере, через терминал или по SSH — интерфейс и движок одинаковые.
Карта решений
Видно, чему учится сеть
Для двумерных данных карта решений перерисовывается каждые несколько эпох. Насыщенность цвета — уверенность: граница проявляется мягким швом, а не резкой линией. Ползунок отматывает эпохи назад — видно, как из шума проступает спираль.
Клик по любой точке на карте прогоняет её через модель и показывает вектор вероятностей прямо на экране.
Конфиг как истина
Форма и JSON — одно и то же
Каждый параметр, который можно задать в форме браузера, можно написать в JSON. Форма и файл синхронизированы: редактируете одно — обновляется другое. Воспроизвести или передать эксперимент — просто скопируй файл.
// Архитектура
"model": {
"layers": [
{ "type": "linear", "units": 64 },
{ "type": "relu" }, // висящая запятая — норм
]
},
"train": {
"optimizer": { "name": "adamw", "lr": 0.003 }
}
Поддерживаются комментарии // и /* */, а также висящие запятые — всё это убирается перед разбором.
Сравнение ранов
Один параметр — 19 процентных пунктов
Отметьте несколько ранов — кривые лягут на один график, а таблица покажет точно, чем отличались конфиги. Никакого ручного сравнения JSON-файлов.
Пример: единственная разница — lr 0.0004 против 0.003 — стоила 19 п.п. точности. Такие вещи видно сразу.
Подкрепляющее обучение
Подключите свою симуляцию
Напишите класс с reset() и step() — любой Gym-совместимый код. Кузня запустит его в изолированном подпроцессе с таймаутом, обучит агента PPO или REINFORCE и запишет ~12 эпизодов за ран.
Плеер реплея проигрывает эпизод по шагам: поле симуляции, действие агента, вероятности политики и ценность состояния. Можно сравнить неуклюжий эп. 1 с уверенным эп. 12 — видно, чему агент научился.
Ещё
Мелкое, но важное
Экспорт без torch
TorchScript, ONNX, state_dict или NumPy. NumPy-экспорт кладёт рядом predict.py, который считает без torch вообще — расхождение с оригиналом ≤ 1e-06.
Discord-оверлей
Rich Presence показывает прогресс в статусе Discord. Вебхук публикует одну карточку на ран и редактирует её на месте — без спама. Работает headless, по SSH.
Терминал и SSH
Тот же движок, те же события: kuz train, kuz check, kuz sim, kuz runs. Командная палитра Ctrl+K в браузере.
Воспроизводимость
seed в конфиге фиксирует всё. Передать эксперимент — скопировать JSON-файл. Никакой магии состояния за пределами файла.
Измеренные результаты
На CPU, без GPU
| Задача | Старт | Финиш | Метрика |
|---|---|---|---|
| Спирали · 25 эпох | loss 1.295 | loss 0.240 | val acc 90.3% |
| Синус · 30 эпох | MSE 0.865 | MSE 0.0117 | регрессия |
| Gridworld PPO · 150 эп. | return −4.41 | return +0.48 | rand ≈ −6 |
Быстрый старт
Три способа запустить
Установщик Windows
- Скачайте и запустите
Kuznya-1.0.0-setup.exe - При предупреждении SmartScreen: «Подробнее» → «Выполнить в любом случае»
- Откройте Кузню из меню Пуск
- Пресет spirals → кнопка Запустить
~700–900 МБ · PyTorch и Python уже внутри
Из исходников
Linux, macOS, Windows без SmartScreen:
# Клонировать и запустить
git clone https://github.com/shirou-eh/teacher
cd teacher
pip install "torch>=2.0" "numpy>=1.21"
python3 kuz.py app
Откроется http://127.0.0.1:7860
Терминал / SSH
После установки команда kuz в PATH:
# Создать конфиг из пресета
kuz init my.json --preset spirals
# Проверить
kuz check my.json
# Обучить
kuz train my.json
Тот же движок, что и в браузере
Ограничения
Важно знать до установки
CPU по умолчанию
Авто-выбор устройства работает, но дефолтные батч-размеры и параметры оптимизированы под CPU. Для GPU меняйте "device": "cuda" вручную.
Только дискретные действия в RL
ActorCritic использует категориальную политику (Categorical). Непрерывные пространства действий не поддерживаются.
conv2d требует data-хук
Встроенные датасеты табличные (spirals, sine и т.д.). Свёрточные слои допустимы в конфиге, но загрузка изображений требует python-хука.
Один компьютер
Нет распределённого обучения — один процесс, один узел. Параллельные эксперименты запускайте в отдельных терминалах.
Установщик не подписан (Windows)
Smart App Control блокирует неподписанные exe-файлы на Windows 11. Нужно отключить SAC или нажать «Подробнее» → «Выполнить в любом случае» в SmartScreen. Либо запустить из исходников.
Ресурсы
Документация
shirou-eh.github.io/kuznya_docs
Исходный код
github.com/shirou-eh/teacher
Лицензия
MIT — используйте свободно