Пример запуска Unity среды с DQN агентом¶
О чем урок¶
Короткий путь: подключить Unity‑среду (через Editor или standalone‑билд), обучить DQN‑агента и проверить взаимодействие случайным агентом. Для подготовки Unity следуйте разделу «Настройка Unity среды» — см. страницу Unity Environment.
Репозиторий Unity окружения
Исходный код Unity окружения доступен по ссылке: TensorAeroSpace/UnityAirplaneEnvironment
Цели и требования¶
- Что вы сделаете:
- Подключите Unity‑среду к TensorAeroSpace (Editor или билд).
- Запустите DQN‑тренировку и оценку.
- Проверите взаимодействие со случайным агентом.
- Что потребуется:
- Unity + ML-Agents (
mlagents==1.1.0), Python 3.8+,tensoraerospace.
Импорты модели и среды¶
from tensoraerospace.agent.dqn.model import Model, DQNAgent
from tensoraerospace.envs.unity_env import get_plane_env, unity_discrete_env
Подключение среды¶
Порт и подключение
По умолчанию используется порт 5004. Если он занят — закройте другие процессы или измените порт в настройках ML‑Agents/окружения.
Запуск DQN‑тренировки и оценки¶
num_actions = env.action_space.n
model = Model(num_actions)
target_model = Model(num_actions)
agent = DQNAgent(model, target_model, env, train_nums=100)
agent.train()
# Оценка после обучения
rewards_sum = agent.evaluation(env)
print("After Training: %d out of 200" % rewards_sum)
Типичные логи подключения¶
[INFO] Listening on port 5004. Start training by pressing the Play button in the Unity Editor.
[INFO] Connected to Unity environment with package version 2.2.1-exp.1 and communication version 1.5.0
[INFO] Connected new brain: My Behavior?team=0
[WARNING] uint8_visual was set to true, but visual observations are not in use. This setting will not have any effect.
[WARNING] The environment contains multiple observations. You must define allow_multiple_obs=True to receive them all.
Экран запуска взаимодействия¶
Рисунок 2.1. Визуализация процесса обучения и взаимодействия (Unity Environment)
Случайный агент: быстрое взаимодействие¶
Запуск в Docker на множестве GPU/CPU¶
Обучение на нескольких GPU ускоряет процесс, позволяет использовать более сложные модели и параллелить сбор опыта.
FROM pytorch/pytorch:2.2.0-cuda12.1-cudnn8-runtime
RUN pip install mlagents==1.1.0 scipy==1.5.4 tensorboard==2.17.0
RUN mkdir /workspace/logs
COPY a3c_example.py /workspace
ENTRYPOINT tensorboard --logdir /workspace/logs --port 8889 --host 0.0.0.0 & python /workspace/a3c_example.py
Открытые источники (документация)¶
- Unity ML-Agents: https://github.com/Unity-Technologies/ml-agents
- Документация TensorBoard: https://www.tensorflow.org/tensorboard
- Docker: https://docs.docker.com/
Скрипт запуска A3C в Docker¶
from tensoraerospace.envs.unity_env import get_plane_env
from tensoraerospace.agent.a3c import Agent, setup_global_params
def env_function(worker_id):
# /tf/linux_build/build.x86_64 — путь к собранному Unity окружению
return get_plane_env("/tf/linux_build/build.x86_64", server=True, worker=worker_id)
actor_lr = 0.0005
critic_lr = 0.001
gamma = 0.99
hidden_size = 128
update_interval = 1
max_episodes = 100
setup_global_params(actor_lr, critic_lr, gamma, hidden_size, update_interval, max_episodes)
agent = Agent(env_function, gamma)
agent.train()
Запуск контейнера¶
docker run \
-v ./tensoraerospace:/tf/tensoraerospace \
-v ./linux_build:/tf/linux_build \
-p 8889:8889 unity_docker
Трудности и решения¶
- Порт 5004 занят: измените порт в конфигурации или остановите конфликтующий процесс.
- Лог
allow_multiple_obs=True: либо включите параметр в обертке среды, либо используйте первый наблюдаемый канал. - Несоответствие версий
mlagents: убедитесь, что версия совместима с ML-Agents (mlagents==1.1.0). - Не подключается к билду: проверьте
build_pathи права на запуск (Linux:chmod +x).
Связанные примеры¶
- Unity с SAC — SAC-агент для непрерывного управления
- Настройка Unity окружения — полный гайд по настройке
- Unity окружение — детали среды и сцены

