---
title: Unity ML-Agents を Azure 上で使ってみる
tags:  #unity #azure #machine learning #python #aws #gcp #c #vis  
author: [Shotaro Suzuki](https://www.docswell.com/user/shosuz)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/LELZ44MVJR.jpg?width=480
description: .NET Conf 2018 Tokyo, on Oct.13, at Microsoft Japan.
published: October 13, 18
canonical: https://www.docswell.com/s/shosuz/Z4QYYN-unity-ml-agentsutilzingmicrosoftazure
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/LELZ44MVJR.jpg)

Unity ML-Agents を
Azure 上で使ってみる
鈴木 章太郎
ジェネラルマネージャー
エバンジェリスト
株式会社 FIXER
https://www.fixer.co.jp/ja-jp/


# Page. 2

![Page Image](https://bcdn.docswell.com/page/4JMVKKYNJW.jpg)

自己紹介 – 鈴木章太郎
• Microsoft エバンジェリスト、Dell エバンジェリスト、
Accenture シニアマネージャーを経て、FIXER に参画。
• Azure 案件アーキテクトとして提案に関わる他、
Cloud/AI/MR 等最新テクノロジーに関する講演や
記事・ブログ執筆等による技術啓蒙を担当。


# Page. 3

![Page Image](https://bcdn.docswell.com/page/PJR2XX94E9.jpg)

Agenda
•
•
•
•
•
•
•
•
•
•
Unity ML-Agents とは
Unity ML-Agents のしくみ
Microsoft Azure DSVMとは
ML-Agentsを動かすDSVMの準備
ML-Agentsのインストール
UnityアプリのビルドとDSVM へのコピー
プロジェクトの作成とTensorFlowSharpの設定
サンプルアプリのビルド
DSVMで学習を行う
学習済みモデルの取得と動作確認


# Page. 4

![Page Image](https://bcdn.docswell.com/page/PEXD66QZ7X.jpg)

Unity ML-Agentsとは
• Unity Machine Learning Agents Toolkit（ML-Agents）
• ゲームオブジェクトに強化学習を適用できる
• オープンソースのUnity プラグイン
• 外部の TensorFlow 環境を使用して学習を行うことが可能
• 生成された学習モデルをゲームオブジェクトを使って推論動作
させることもできる
https://github.com/Unity-Technologies/ml-agents
• Version 0.5 が出たばかり！


# Page. 5

![Page Image](https://bcdn.docswell.com/page/3EKX119V7D.jpg)

• Agent の行動は通常人間が手作業で
コードを書いて実装
• 機械学習を用いれば、学習環境との
インタラクションを通じて振る舞い
の学習が可能
• 学習において、訓練環境の質は訓練
結果に大きな影響を及ぼすため、非
常に重要な問題
• ML-Agents SDK を利用することで、
Unity を高度な訓練環境にできる
Unity ML-Agents の
しくみ
• 対象者：
• 複数エージェントの行動につい
て興味のある研究者
• 自動運転などの並列処理に興味
のある研究者
• AI に興味のあるゲーム制作者


# Page. 6

![Page Image](https://bcdn.docswell.com/page/L735QQ9QE5.jpg)

Agent の行動を決定
•
独立して
行動し
報酬を
受け取る
•
•
•
Internal
• Python API・
TensorFlow
External
• 学習済みモデル・
TensorFlowSharp
Player
Heuristic
学習空間の制御
ML-Agentsの
学習環境
• 3種類のオブジェクト
• Agent
• Brain
• Academy


# Page. 7

![Page Image](https://bcdn.docswell.com/page/87DD99GW7G.jpg)

PC or Mac
で学習
vs
Cloud で学習
• *.exe, *.app, などを Unity で開発して
ビルド（PC or Mac）
• 学習 → 学習済みモデルファイル生成
PC or Mac or Cloud
• ファイルを取り込み再度学習 → Unity
（PC or Mac）


# Page. 8

![Page Image](https://bcdn.docswell.com/page/VJPXZZ3X78.jpg)

Microsoft Azure DSVM とは
• Data Science Virtual Machine (DSVM)
• 機械学習各種ツールプレインストール済み仮想マシン
• https://azure.microsoft.com/ja-jp/services/virtual-machines/datascience-virtual-machines/
• 今回使う Linux の DSVM
• Ubuntu と Anaconda がベース
• Deep Learning ツールが初めからインストール済み
The Microsoft Cognitive Toolkit
NVIDIA DIGITS PyTorch
Torch
Caffe
Caffe2
Theano
Keras
MXNet
Chainer
Deep Water
• Nシリーズ（NVIDIA GPU が搭載された仮想マシン）を利用
• NVIDIA ドライバ、CUDA、cuDNN も初めからインストール済み
TensorFlow


# Page. 9

![Page Image](https://bcdn.docswell.com/page/2EVLWW43JQ.jpg)

ML-Agents を動か
すDSVM の準備
• Microsoft Azure のポータ
ルで DSVM の仮想マシン
を作成した後、DSVMで
ML-Agents の動作環境を
構築
• Microsoft Azure ポータル
https://portal.azure.com
• 設定では ssh のポートを
経由してシェルと
Tensorboard を利用


# Page. 10

![Page Image](https://bcdn.docswell.com/page/57GXDD1YEL.jpg)

ML-Agents のインストール
• DSVM にログインして実行
• GitHub の ML-Agents のリポジトリを DSVM の仮想マシンにクローン
• ML-Agents で利用する Python のパッケージをインストール
cd ~
git clone https://github.com/Unity-Technologies/ml-agents.git
cd ml-agents/python
conda create -n ml-agents python=3.6
source activate ml-agents
pip install .


# Page. 11

![Page Image](https://bcdn.docswell.com/page/4EQ811D6JP.jpg)

Unity アプリのビルドと DSVM へのコピー
• Unity アプリは、ML-Agents のサンプルを例として使用
• PC or Mac で Linux 向けアプリとしてビルドした後、DSVM
の仮想マシンにコピー


# Page. 12

![Page Image](https://bcdn.docswell.com/page/KJ42RRZME1.jpg)

プロジェクトの作成とTensorFlowSharp
の設定
• Unityのプロジェクトを作成
• Edit &gt; Project Settings &gt; Player
• PlayerSettings の Inspector を下記の通り設定
•
•
•
Display Resolution Dialogを Disable に
Script Runtime Versionを.NET 4.x
Script Define SymbolsをENABLE_TENSORFLOW
• プロジェクトでは強化学習にTensorflowを使用
• C#からTensorFlowを使うためのTensorFlowSharp
プラグイン
• https://github.com/Unity-Technologies/mlagents/blob/master/docs/Basic-Guide.md


# Page. 13

![Page Image](https://bcdn.docswell.com/page/LE1MQQRY7G.jpg)

プロジェクトの作成
とTensorFlowSharp
の設定
• ダウンロードしたファイルを、
Assets &gt; Import Package よりインポート


# Page. 14

![Page Image](https://bcdn.docswell.com/page/GEW3MM11E2.jpg)

サンプルアプリのビルド
① ML-Agents をクローン ※ PC or Mac
• サンプルアプリは ML-Agents のリポジトリに含まれているので
ML-Agents をクローン
• Git がインストールされていない場合は、
https://github.com/Unity-Technologies/ml-agents より Zip
ファイルをダウンロード
git clone https://github.com/Unity-Technologies/ml-agents.git


# Page. 15

![Page Image](https://bcdn.docswell.com/page/47ZVQQPXE3.jpg)

• ml-agentsmaster¥UnitySDK¥Assets¥ML
-Agentsフォルダ配下にサンプ
ルのシーン
• このML-Agentsフォルダを
Unityのアセットに追加
• 追加したアセット内の「3D
Ball」シーンを開く
• Hierarchyより、
Ball3DAcademy（Academy）
のBall3DBrain（Brain）を選択
サンプルアプリのビルド
② ML-Agents フォルダを Unity
のアセットに追加
• InspectorのBrain Typeを
Externalに設定
• これによりTensorFlowを利用
して学習を行うことが可能


# Page. 16

![Page Image](https://bcdn.docswell.com/page/YJ6566MP7V.jpg)

サンプルアプリの
ビルド
③ ビルド
• Azure の DSVM は Linux で動作する
ため、Linux 向けのビルド設定
• File &gt; Build Settings
• Target Platform を Linux
• Headless Mode にチェック
※ DSVM への ssh を使用した
ターミナル接続のため


# Page. 17

![Page Image](https://bcdn.docswell.com/page/GJ5Y66ZPJ4.jpg)

サンプルアプリのビルド
④ ビルドにより作成された実行ファイル
• PC or Mac 上で実行
dir (build)
2018/08/25
2018/08/25
2018/08/19
2018/08/25
10:57
10:57
17:00
10:57
&lt;DIR&gt;
.
&lt;DIR&gt;
..
25,630,440 3DBall.x86_64
&lt;DIR&gt;
3DBall_Data
• これを SCP で DSVM にコピー
scp -r (build) &lt;ユーザ&gt;@&lt; DSVM アドレス&gt;:./
(例）
scp /Users/xxxxx/mlagents/ml-agents/3DBall.x86_64
xxxxxxxx@00.000.000.00:./utmla1/mla/ml-agents/ml-agents


# Page. 18

![Page Image](https://bcdn.docswell.com/page/LE35QQ96J5.jpg)

DSVM で学習を行う ①
※ DSVM で実行
• DSVM にコピーした Unity アプリを chmod で実行可能に変更
cd ~
chmod +x （build）/3DBall.x86_64
• 学習にはlearn.pyを使用
• オプションとしてコピーした Unity アプリと学習モードを指定
cd ~
source activate ml-agents
python ml-agents/ml-agents/trainers/learn.py
（build）/3DBall.x86_64 –train
(例）
/home/xxxxx/utmla1/mla/ml-agents/ml(↑改行無し）
agents/mlagents/trainers/learn.py 3DBall.x86_64 --train


# Page. 19

![Page Image](https://bcdn.docswell.com/page/8EDD99GMEG.jpg)

DSVM で学習を行う ②
※ DSVM の別ターミナルで実行
• 学習には時間がかかる
• 学習中の状況は Tensorboard で表示可能
cd ~
source activate ml-agents
tensorboard --logdir=summaries --host 127.0.0.1
Your CPU supports instructions that this TensorFlow binary was not
compiled to use: AVX2 FMA
TensorBoard 1.7.0 at http://127.0.0.1:6006 (Press CTRL+C to quit)


# Page. 20

![Page Image](https://bcdn.docswell.com/page/V7PXZZ3QE8.jpg)

DSVM で学習を行う ③
※ PC or Mac で実行
• Tensorboard へのアクセスには ssh のポートフォワード機能を
使用
• ssh のポートフォワード接続が確立された後に、ブラウザより
Tensorboard に接続して学習状況を確認
ssh -L 6006:localhost:6006 &lt;ユーザ&gt;@&lt; DSVM のアドレス&gt;


# Page. 21

![Page Image](https://bcdn.docswell.com/page/2JVLWW4P7Q.jpg)

DSVM で学習を行う
④
※ PC or Mac で実行
• ブラウザでローカルの6006
ポートにアクセスし学習状況
を確認
• http://localhost:6006/


# Page. 22

![Page Image](https://bcdn.docswell.com/page/5EGXDD1QJL.jpg)

学習済みモデルの取得と動作確認 ①
※ PC で実行
• DSVM で学習された学習済みモデルは Unity アプリで使える
• 学習済みモデルを PC にコピー
&gt; scp &lt;ユーザ&gt;@&lt;DSVMのアドレス&gt;
:./models/&lt;run-identifier&gt;/3DBall*.bytes &lt;アセットのディレクトリ
(↑改行無し）


# Page. 23

![Page Image](https://bcdn.docswell.com/page/4JQ811DW7P.jpg)

• Hierarchyより
Ball3DAcademy
（Academy）の
Ball3DBrain（Brain）を
選択
• InspectorのBrain Typeを
Internalに設定
• Graph ModelにDSVMよ
りコピーした学習済みモ
デルを設定
学習済みモデルの取得と
動作確認 ②
※ PC or Mac で実行
• アプリケーションを実行
することにより学習済み
モデルを反映したゲーム
オブジェクトの動きが確
認できる


# Page. 24

![Page Image](https://bcdn.docswell.com/page/K742RRZ1J1.jpg)

Tech Summit 2018


# Page. 25

![Page Image](https://bcdn.docswell.com/page/LJ1MQQR5EG.jpg)

https://blogs.unity3d.com/jp/2017/09/19/introducing-unity-machine-learning-agents/
https://github.com/Unity-Technologies/ml-agents
https://qiita.com/kai_kou/items/6478fa686ce1af5939d8


# Page. 26

![Page Image](https://bcdn.docswell.com/page/GJW3MM1WJ2.jpg)

Thank you for your attention!


# Page. 27

![Page Image](https://bcdn.docswell.com/page/4EZVQQP2J3.jpg)

www.dotnetconf.net


