😊

Unity で ML-Agents Release 22 のサンプルを動かす

2025/03/14に公開

Windows で Unity を、 Ubuntu (on WSL2) で Python を動かして、ML-Agents Release 22 のサンプルプログラムを動かすのがこの記事の目標です。バージョンが新しかったり古かったりすると動かないので大変でした。

環境

Windows

  • Windows 11
  • Unity 6000.0.41f1
  • git
  • git bash

WSL2

  • Ubuntu 24.04
  • Cuda 11.8
  • Python 3.10.12
    • pyenv + venv で管理
  • bash

Python の環境構築

Ubuntu (on WSL2) の方で作業します。

  1. 仮想環境を作成
~$ python -m venv ml-agents
  1. アクティベート
~$ source ml-agents/bin/activate
  1. PyTorch のインストール
    このサイトでそれぞれの環境に合わせたインストールのコマンドを調べて実行。

(ml-agents) ~$ pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
  1. mlagents, mlagents_envsのインストール
(ml-agents) ~$ wget https://github.com/Unity-Technologies/ml-agents/archive/refs/heads/main.zip -O ml-agents.zip
(ml-agents) ~$ unzip ml-agents.zip
(ml-agents) ~$ cd ml-agents-main
(ml-agents) ~$ pip install -e ./ml-agents
(ml-agents) ~$ pip install -e ./ml-agents-envs

Unity の準備

Windows で作業します。

  1. Unity 6000.0.41f1 をインストール
    Unity Hub をいじってるとできます。
  1. ML-Agents を clone する。
~$ git clone git@github.com:Unity-Technologies/ml-agents.git --branch release_22

サンプルプログラムを動かしてみる

詳しくは公式ドキュメント[3]を見てください。
WSL側
Unity のサンプルプログラムを実行する前に事前に実行しておきます。

~$ cd ml-agents-main
~/ml-agents-main$ mlagents-learn config/ppo/3DBall.yaml --run-id=3DBall

このような画面が現れると成功です。

Windows側

  1. Editor Version は Unity 6000.0.41f1 を選択し、ml-agents\Project を Add して開きます。
  2. このサンプルシーンを開きます。
  3. 実行
    わちゃわちゃと動き出しました。成功です。学習していく様子が見えて面白いです。

最後に

ネットで探してもなかなか記事が見つからず試行錯誤に時間がかかり苦労しました。
一日パソコンにへばりついて出来たのに記事にしてみると以外と短いですね(笑)
Python の仮想環境に関しては Python やライブラリのバージョンが合っていれば好きなようにしていいと思います。
もし記事中に間違いや、分かりにくいところ、もっと詳しく知りたいことなどがあれば、遠慮なく質問してください!

参考文献

[1] Start Locally, https://pytorch.org/get-started/locally/
[2] ml-agents/docs/Installation.md at develop · Unity-Technologies/ml-agents · GitHub, https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Installation.md
[3] Getting Started Guide - Unity ML-Agents Toolkit, https://unity-technologies.github.io/ml-agents/Getting-Started/

Discussion