Unity ML-Agents を Azure 上で使ってみる

591 Views

October 13, 18

スライド概要

.NET Conf 2018 Tokyo, on Oct.13, at Microsoft Japan.

profile-image

FPT ジャパン FPT データ& AI インテグレーション エグゼクティブエバンジェリスト 独立行政法人 国立印刷局 デジタル統括アドバイザー兼最高情報セキュリティアドバイザー AI 駆動開発勉強会主催。Microsoft エバンジェリスト時代から、Dell、Accenture、Elastic、VMware を経て現職まで一貫して開発者向けに最新技術を啓発。GPU クラウド技術訴求、AI 駆動開発推進。  政府の仕事は、内閣官房 政府 CIO 補佐官、 デジタル庁 PM を経て、現職を兼務。 Locofy.ai Regional Developer Advocate Google Cloud Partner All Certifications Engineer 2025

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

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

2.

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

3.

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

4.

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

5.

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

6.

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

7.

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

8.

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

9.

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

10.

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 .

11.

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

12.

プロジェクトの作成とTensorFlowSharp の設定 • Unityのプロジェクトを作成 • Edit > Project Settings > 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

13.

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

14.

サンプルアプリのビルド ① 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

15.

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

16.

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

17.

サンプルアプリのビルド ④ ビルドにより作成された実行ファイル • 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 <DIR> . <DIR> .. 25,630,440 3DBall.x86_64 <DIR> 3DBall_Data • これを SCP で DSVM にコピー scp -r (build) <ユーザ>@< DSVM アドレス>:./ (例) scp /Users/xxxxx/mlagents/ml-agents/3DBall.x86_64 [email protected]:./utmla1/mla/ml-agents/ml-agents

18.

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

19.

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)

20.

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

21.

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

22.

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

23.

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

24.

Tech Summit 2018

25.

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

26.

Thank you for your attention!

27.

www.dotnetconf.net