← Кабинет хакатона «Градиент»

Требования к нейросети и окружению

Структура сети

Формат решения — rover-gru-v1. Он использует GRU с памятью размером 128 значений. Последовательность слоёв:

Linear(obs_dim + action_dim + 3, 128) → Tanh → GRUCell(128, 128)
                                          ├── Linear(128, action_dim)
                                          └── Linear(128, 1)

Первая выходная ветвь выбирает действие, вторая оценивает ожидаемую награду. Сохраняйте обе ветви. Размер наблюдения obs_dim задаётся средой, action_dim = len(ACTION_MACROS). В набор действий входят четыре команды управления обогревателем.

Входные данные и память

Метод Agent.step получает:

Нормализация наблюдений: (obs - mean) / sqrt(var + 1e-8), с ограничением значений диапазоном от −10 до 10. Параметры mean и var сохраняются вместе с весами.

Признак trial_start очищает память сети перед новым испытанием. Между попытками в пределах одного испытания память сохраняется: робот может учитывать предыдущий опыт.

Выбор действий при проверке

Для вычислений используется тип float32. Выбирается действие с максимальным выходным значением сети (argmax). Оно выполняется в течение восьми шагов моделирования (frame_skip=8); разовые команды действуют только на первом шаге.

Предыдущая награда рассчитывается с параметрами gamma=0.9995 и frontier_bonus_scale=2.0. Сохраняйте эти преобразования при собственной проверке, чтобы результаты можно было сравнивать с таблицей на сайте.

Файл весов

Сохраните /output/policy.safetensors, содержащий все значения Agent.state_dict(), а также rms.mean и rms.var. Используйте функцию arena.protocol.export из начального решения.

Требования к файлу:

Файлы .pt, TorchScript, ONNX и программный код вместо весов не принимаются.

Как считается балл

Каждое испытание длится 120 секунд модельного времени. На каждом шаге учитывается координата X робота, в том числе непосредственно перед началом следующей попытки. Результат испытания — максимальная достигнутая координата в диапазоне от 0 до 800 метров. Начальная координата равна одному метру; она не вычитается из результата.

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

Окружение программы

Программа запускается командой python /submission/train.py. Для временных файлов доступен каталог /tmp, для сохранения весов — /output.

Dockerfile должен начинаться с FROM arena-base и содержать один этап сборки. Разрешены команды RUN, COPY, WORKDIR, ENV, USER, CMD, ENTRYPOINT, LABEL. Команды CMD и ENTRYPOINT не меняют указанный выше способ запуска обучения.

Не используйте COPY --from, RUN --mount, RUN --security, директиву # syntax и многострочные блоки с <<. Для переноса команды на следующую строку используйте \. Устанавливайте библиотеки через HTTPS и указывайте точные версии.

Дополнительные файлы Python и исходники расширений можно включить в ZIP. Символические ссылки и специальные файлы не допускаются.