Кузня

Обучение нейросетей прямо из JSON — без единой строки кода.

Скачать Кузню 1.0.0
Windows 10/11 x64 · ~700–900 МБ · PyTorch внутри, Python не нужен Установщик не подписан. SmartScreen покажет предупреждение — нажмите «Подробнее» → «Выполнить в любом случае».

Не хотите отключать Smart App Control? Запустить из исходников

Главный экран Кузни: карта решений, кривые потерь, полоса градиентов

Один JSON — один воспроизводимый эксперимент

Кузня — настольный инструмент, в котором JSON-конфиг полностью описывает тренировочный ран. Форма в браузере и файл конфига — это два представления одного объекта: изменяете одно, второе обновляется синхронно. Файл поддерживает комментарии и висящие запятые, потому что конфиги пишут руками.

Обучение — не полоска прогресса. Кузня показывает, как меняются решения сети по эпохам, насколько здоровы градиенты по слоям, и что происходит внутри RL-агента при каждом шаге. Запустить эксперимент можно кликом в браузере, через терминал или по SSH — интерфейс и движок одинаковые.

Видно, чему учится сеть

Для двумерных данных карта решений перерисовывается каждые несколько эпох. Насыщенность цвета — уверенность: граница проявляется мягким швом, а не резкой линией. Ползунок отматывает эпохи назад — видно, как из шума проступает спираль.

Клик по любой точке на карте прогоняет её через модель и показывает вектор вероятностей прямо на экране.

Полоса grad/weight по слоям — затухание и взрыв видны до NaN
Скраббинг по эпохам: история обучения как таймлайн
Кривые потерь в реальном времени — train и val на одном графике
Карта решений, кривые обучения и полоса градиентов

Форма и JSON — одно и то же

Каждый параметр, который можно задать в форме браузера, можно написать в JSON. Форма и файл синхронизированы: редактируете одно — обновляется другое. Воспроизвести или передать эксперимент — просто скопируй файл.

jsonc spirals.json
// Архитектура
"model": {
  "layers": [
    { "type": "linear", "units": 64 },
    { "type": "relu" },   // висящая запятая — норм
  ]
},
"train": {
  "optimizer": { "name": "adamw", "lr": 0.003 }
}

Поддерживаются комментарии // и /* */, а также висящие запятые — всё это убирается перед разбором.

Редактор конфига: форма и JSON-файл синхронизированы

Один параметр — 19 процентных пунктов

Отметьте несколько ранов — кривые лягут на один график, а таблица покажет точно, чем отличались конфиги. Никакого ручного сравнения JSON-файлов.

Пример: единственная разница — lr 0.0004 против 0.003 — стоила 19 п.п. точности. Такие вещи видно сразу.

Наложение кривых нескольких ранов на один график
Таблица diff конфигов — только отличия, не всё подряд
Наложение кривых нескольких ранов и таблица различий конфигов

Подключите свою симуляцию

Напишите класс с reset() и step() — любой Gym-совместимый код. Кузня запустит его в изолированном подпроцессе с таймаутом, обучит агента PPO или REINFORCE и запишет ~12 эпизодов за ран.

Плеер реплея проигрывает эпизод по шагам: поле симуляции, действие агента, вероятности политики и ценность состояния. Можно сравнить неуклюжий эп. 1 с уверенным эп. 12 — видно, чему агент научился.

Алгоритмы PPO и REINFORCE из коробки
Изоляция среды в subprocess — зависший step() убивается по дедлайну
Код среды можно вставить inline прямо в конфиг
RL-реплей: поле симуляции, вероятности политики и ценность состояния

Мелкое, но важное

Экспорт без 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

torch 2.8.0+cpu · Python 3.9 · тестовая среда

Задача Старт Финиш Метрика
Спирали · 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

  1. Скачайте и запустите Kuznya-1.0.0-setup.exe
  2. При предупреждении SmartScreen: «Подробнее» → «Выполнить в любом случае»
  3. Откройте Кузню из меню Пуск
  4. Пресет spirals → кнопка Запустить
Скачать .exe

~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. Либо запустить из исходников.