Google Colab ではじめる Unity ML-Agentsのクラウド学習
「Google Colab」による「Unity ML-Agents」のクラウド学習の手順をまとめました。
1. Unity ML-Agentsの学習環境
「Unity ML-Agents」には、18以上の学習環境のサンプル提供されています。
2. プロジェクトの準備
プロジェクトの準備手順は、次のとおりです。
(1) 以下のサイトから「Unity Hub」をダウンロードしてインストールし、「Unity Hub」で「Unity 2021.3」をインストール。
(2) 「Unity 2021.3」にモジュール「Linux Build Support (Mono)」を追加。
(3) 以下のサイトの「Release 19」の「Souce Code(zip)」から、zipファイルをダウンロードして解凍。
「ml-agents-release_19」というフォルダができます。
(4) Unityの3Dプロジェクトを新規作成。
(5) メニュー「Window → Package Manager」を開き、「+ → Add package from disk」を選択し、「ml-agents-release_19/com.unity.ml-agents/package.json」を選択。
3. 学習環境の準備
今回は「3DBall」を利用します。準備手順は、次のとおりです。
(1) 「ml-agents-release19/Project/Assets/ML-Agents」にある「Examples」をプロジェクトの「Assets」にコピー。
(2) 「Examples」内の「PushBlockWithInput」を削除。
「PushBlockWithInput」は、追加パッケージのインストールが必要でそのままだとエラーになるため、一旦削除します。
(3) 「Assets/Examples/3DBall/Scenes/」の「3DBall」を開く。
4. 学習環境のビルド
「Google Colab」で学習するには「Linux」の「x86_64」でビルドします。
(1) Unityのメニュー「File → Build Settings」を選択。
(2) 「Platform」で「Windows, Mac, Linux」を選択し、「Target Platform」で「Linux」を選択し、「Build」ボタンを押す。
(3) 「3DBall」の「学習設定ファイル」(ml-agents-release_19/config/ppo/3DBall.yaml)を出力フォルダに追加。
出力フォルダの構成は次のようになります。
5. Google Colabでのクラウド学習
「Google Colab」でクラウド学習します。
(1) 出力フォルダをGoogleドライブにアップロード。
今回は、マイドライブ直下にworkフォルダを作成し、そこに出力フォルダ(3DBall)をアップロードします。
(2) Colabのノートブックを作成し、メニュー「編集 → ノートブックの設定」のハードウェアアクセラレータで「GPU」を選択。
(3) Googleドライブのマウントと作業フォルダへの移動
# Googleドライブのマウントと作業フォルダへの移動
from google.colab import drive
drive.mount('/content/drive')
%cd '/content/drive/My Drive/work'
(4) 実行ファイル (.x86_64, .so)の実行権限を付加。
# ファイルに実行権限を付加
!chmod -R 755 3DBall/3DBall.x86_64
!chmod -R 755 3DBall/UnityPlayer.so
(5) ML-Agentsパッケージのインストール。
# ML-Agentsパッケージのインストール
!git clone --branch release_19 https://github.com/Unity-Technologies/ml-agents.git
!pip install -e ml-agents/ml-agents-envs/
!pip install -e ml-agents/ml-agents/
(6) TensorBoardの準備。
# TensorBoardの準備
%load_ext tensorboard
%tensorboard --logdir results
(7) 学習の開始。
「mlagents-learn」で学習を開始します。Colabで学習するには、「--no-graphics」で描画を無効にする必要があります。「Visual Observation」を使うものは学習できなさそうです。
# 学習の実行。
!mlagents-learn 3DBall/3DBall.yaml --run-id=3DBall-ppo1 --env=3DBall/3DBall.x86_64 --no-graphics
┐ ╖
╓╖╬│╡ ││╬╖╖
╓╖╬│││││┘ ╬│││││╬╖
╖╬│││││╬╜ ╙╬│││││╖╖ ╗╗╗
╬╬╬╬╖││╦╖ ╖╬││╗╣╣╣╬ ╟╣╣╬ ╟╣╣╣ ╜╜╜ ╟╣╣
╬╬╬╬╬╬╬╬╖│╬╖╖╓╬╪│╓╣╣╣╣╣╣╣╬ ╟╣╣╬ ╟╣╣╣ ╒╣╣╖╗╣╣╣╗ ╣╣╣ ╣╣╣╣╣╣ ╟╣╣╖ ╣╣╣
╬╬╬╬┐ ╙╬╬╬╬│╓╣╣╣╝╜ ╫╣╣╣╬ ╟╣╣╬ ╟╣╣╣ ╟╣╣╣╙ ╙╣╣╣ ╣╣╣ ╙╟╣╣╜╙ ╫╣╣ ╟╣╣
╬╬╬╬┐ ╙╬╬╣╣ ╫╣╣╣╬ ╟╣╣╬ ╟╣╣╣ ╟╣╣╬ ╣╣╣ ╣╣╣ ╟╣╣ ╣╣╣┌╣╣╜
╬╬╬╜ ╬╬╣╣ ╙╝╣╣╬ ╙╣╣╣╗╖╓╗╣╣╣╜ ╟╣╣╬ ╣╣╣ ╣╣╣ ╟╣╣╦╓ ╣╣╣╣╣
╙ ╓╦╖ ╬╬╣╣ ╓╗╗╖ ╙╝╣╣╣╣╝╜ ╘╝╝╜ ╝╝╝ ╝╝╝ ╙╣╣╣ ╟╣╣╣
╩╬╬╬╬╬╬╦╦╬╬╣╣╗╣╣╣╣╣╣╣╝ ╫╣╣╣╣
╙╬╬╬╬╬╬╬╣╣╣╣╣╣╝╜
╙╬╬╬╣╣╣╜
╙
Version information:
ml-agents: 0.28.0,
ml-agents-envs: 0.28.0,
Communicator API: 1.5.0,
PyTorch: 1.8.1+cu102
[INFO] Connected to Unity environment with package version 2.2.1-exp.1 and communication version 1.5.0
[INFO] Connected new brain: 3DBall?team=0
:
(8) 学習の停止
十分学習したら(今回は「Mean Reward」が100に近くなったら)、Colabのメニュー「ランタイム → 実行の中断」で学習を停止させます。「results/<id>」に学習したモデル(3DBall.onnx)が生成されます。
6. ローカルでの推論
学習したモデルで推論を行う手順は、次のとおりです。
(1) Googleドライブから学習したモデル(3DBall.onnx)をダウンロード。
(2) 学習環境のプロジェクトのAssetsにモデル(3DBall.onnx)を追加。
(3) エージェント「3DBall/Prefabs/3DBall」の「BehaviorParameters」の「Model」に学習したモデル(3DBall.onnx)を指定。
(4) Playボタンで実行。
7. 関連
【おまけ】 PushBlockWithInputの実行
「PushBlockWithInput」は、「InputSystem」や「com.unity.ml-agents-extensions」など依存関係が厳しいですが、「ml-agents-release_19/Project」をUnityで直接開くことで実行することができます。
この記事が気に入ったらサポートをしてみませんか?