Все команды #

КомандаОписание
kuz appОткрыть интерфейс в браузере (по умолчанию http://127.0.0.1:7860)
kuz train <config>Обучить из файла конфига
kuz check <config>Проверить конфиг и данные, ничего не запуская
kuz sim <path>Проверить файл симуляции
kuz init <config>Создать конфиг из пресета
kuz runsСписок ранов
kuz presetsСписок встроенных пресетов

Голая команда kuz без аргументов открывает интерфейс (то же, что kuz app).

kuz app #

Открывает веб-интерфейс Кузни в браузере.

bash
kuz app
kuz app --port 8080
kuz app --no-open            # запустить сервер, не открывать браузер
kuz app --host 0.0.0.0       # слушать на всех интерфейсах (для доступа по сети)

Флаги kuz app

ФлагПо умолчаниюОписание
--host HOST127.0.0.1Адрес для прослушивания.
--port PORT7860Порт.
--root DIRrunsПапка для хранения ранов.
--no-openНе открывать браузер/окно автоматически.
--window MODEwindow window — окно приложения (по умолчанию);
webview — только родное окно ОС;
app — окно браузера без вкладок;
browser — обычная вкладка;
auto — окно, а если не получилось — вкладка.

Пример вывода при запуске:

вывод
   _  __
  | |/ /  _   _  ___  _ __   _   _   __ _
  | ' /  | | | ||_  /| '_ \ | | | | / _` |
  | . \  | |_| | / / | | | || |_| || (_| |
  |_|\_\  \__,_|/___||_| |_| \__, | \__,_|
                             |___/

  Кузня v1.0.0 — обучение нейросетей из JSON

  интерфейс:  http://127.0.0.1:7860
  раны:       /home/user/runs
  окно:       отдельное окно приложения

  Ctrl+C — остановить

kuz train #

Запускает обучение из файла конфига в терминале. Работает headless — без браузера, в том числе по SSH.

bash
kuz train my.json
kuz train my.json --epochs 100       # переопределить число эпох
kuz train my.json --name exp-001     # задать имя рана
kuz train my.json --no-discord       # отключить Discord на этот ран
kuz train my.json --quiet            # минимум вывода в терминал
kuz train rl.json --episodes 500     # переопределить число эпизодов

Флаги kuz train

ФлагОписание
--epochs NПереопределить train.epochs из конфига.
--episodes NПереопределить simulation.episodes из конфига (RL-задачи).
--name NAMEПереопределить run_name.
--root DIRПапка для ранов (по умолчанию runs).
--no-discordПолностью отключить Discord на этот ран.
--dry-runDiscord в холостом режиме: не отправляет, только логирует.
-q, --quietТихий режим — минимум вывода.

Пример вывода при обучении:

вывод
  🔥 spiral-classifier / yasnyy-gorn-k3f9
  2→64→64→3 · 40 эп. · adamw lr=0.003

  устройство: cpu · параметров: 4 547
  ████████████░░░░░░░░░░░░   15/40    loss 0.8341 · val 0.9102 · acc 0.7800

  ✓ finished за 1м23с
  лучший val_loss: 0.2401
  чекпоинты: runs/20240115-143022-yasnyy-gorn-k3f9

kuz check #

Проверяет конфиг и данные, не запуская обучения. Удобно убедиться, что всё в порядке перед длинным ранов.

bash
kuz check my.json

Вывод при успехе:

вывод
  spiral-classifier / yasnyy-gorn-k3f9
  2→64→64→3 · 40 эп. · adamw lr=0.003
  параметров ≈ 4 547
  ✓ данные ок: 2400 train / 600 val, builtin:spirals

  конфиг рабочий.

Для RL-конфига дополнительно запускается smoke-test симуляции:

вывод — RL
  gridworld-agent / bystryy-iskra-m7q2
  PPO · 300 эп. · симуляция
  параметров ≈ 4 418

  проверяю симуляцию…
  ✓ симуляция ок: obs=4, actions=4

  конфиг рабочий.

kuz sim #

Проверяет файл симуляции: загружает его, выполняет smoke-test и выводит характеристики.

bash
kuz sim sims/gridworld.py
kuz sim sims/my_env.py --entry MyEnvClass
kuz sim sims/my_env.py --timeout 5.0

Флаги kuz sim

ФлагПо умолчаниюОписание
--entry NAMEmake_envИмя фабрики или класса среды.
--timeout SEC10.0Таймаут шага при проверке.

Пример вывода:

вывод
  проверяю sims/gridworld.py…
  ✓ симуляция рабочая
    obs_dim:   4
    n_actions: 4
    reward:    [-0.22, -0.02]
    · n_actions взят из атрибута n_actions
    · obs_dim выведен из формы первого наблюдения: (4,)

kuz init #

Создаёт файл конфига из встроенного пресета.

bash
kuz init my.json                     # пресет spirals по умолчанию
kuz init my.json --preset spirals
kuz init my.json -p xor
kuz init rl.json -p gridworld
kuz init my.json -p regression
kuz init my.json -f                  # --force: перезаписать существующий файл

Флаги kuz init

ФлагПо умолчаниюОписание
-p, --preset NAMEspiralsИмя пресета (см. kuz presets).
--rlПредупреждение, если выбранный пресет не для RL.
-f, --forceПерезаписать файл, если он уже существует.

Вывод:

вывод
  ✓ my.json
  2→64→64→3 · 40 эп. · adamw lr=0.003

  запустить: kuz train my.json

kuz runs #

Показывает список ранов в папке runs.

bash
kuz runs
kuz runs --limit 50        # показать до 50 ранов
kuz runs --root ./my-runs  # папка с ранами

Флаги kuz runs

ФлагПо умолчаниюОписание
-n, --limit N20Максимум ранов в выводе.
--root DIRrunsПапка с ранами.

Пример вывода:

вывод
  ✓ spiral-classifier    yasnyy-gorn-k3f9   val_loss 0.2401    1м23с
  ✓ xor-mini             tikhy-molot-x2p1   val_acc  0.9975    0м48с
  ⏹ sine-fit             ostryy-ugl-k8m2    mse      0.0443    —
  ✗ gridworld-agent      derzkiy-klin-r4n9  —                  2м11с

  всего: 4

kuz presets #

Показывает список встроенных пресетов.

bash
kuz presets

Вывод:

вывод
  spirals        2→64→64→3 · 40 эп. · adamw lr=0.003
                 ≈4 547 параметров
  xor            2→16→2 · 60 эп. · adam lr=0.01
                 ≈82 параметра
  regression     1→96→96→1 · 80 эп. · adamw lr=0.002
                 ≈9 601 параметр
  gridworld      PPO · 300 эп. · симуляция
                 ≈4 418 параметров

  kuz init my.json --preset spirals

Версия и помощь #

bash
kuz --version    # → Кузня 1.0.0
kuz --help       # общая справка
kuz train --help # справка по команде train

Примеры типичных сценариев #

Быстрый старт с пресетом

bash
kuz init my.json --preset spirals
kuz check my.json
kuz train my.json

Обучение RL-агента

bash
kuz init rl.json --preset gridworld
kuz sim sims/gridworld.py          # убедиться, что среда работает
kuz check rl.json
kuz train rl.json

Обучение в тихом режиме (для скриптов и CI)

bash
kuz train my.json --quiet --no-discord
echo "Обучение завершено с кодом: $?"

Обучение по SSH с webhook-уведомлением

bash
export KUZNYA_WEBHOOK_URL="https://discord.com/api/webhooks/..."
kuz train config.json   # карточка появится в Discord-канале

Переопределить параметры прямо из командной строки

bash
kuz train my.json --epochs 200 --name long-run-001

Открыть интерфейс на нестандартном порту

bash
kuz app --port 8888 --no-open
# Открыть вручную: http://127.0.0.1:8888