562 Views
October 13, 18
スライド概要
.NET Conf 2018 Tokyo, on Oct.13, at Microsoft Japan.
FPT ジャパン エグゼクティブエバンジェリスト 独立行政法人 国立印刷局 デジタル統括アドバイザー兼最高情報セキュリティアドバイザー Microsoft で13年間、テクニカルエバンジェリストとして .NET、C#、Visual Studio、Windows、iOS、Android、Microsoft Azure 等の開発者向け技術啓発活動 (DevRel) 。Dell、Accenture、Elastic、VMware 等での DevRel 後、2024年11月1日より現職で DevRel 活動を開始。NVIDIA との戦略的協業 AI GPU クラウド、Azure/AWS/GC 上の AI &データ関連サービスのマーケティング、プリセールス、教育、関連新規サービス開発。元内閣官房 IT 総合戦略室 政府 CIO 補佐官(兼務)、元デジタル庁 ソリューションアーキテクト(兼務)。
Unity ML-Agents を Azure 上で使ってみる 鈴木 章太郎 ジェネラルマネージャー エバンジェリスト 株式会社 FIXER https://www.fixer.co.jp/ja-jp/
自己紹介 – 鈴木章太郎 • Microsoft エバンジェリスト、Dell エバンジェリスト、 Accenture シニアマネージャーを経て、FIXER に参画。 • Azure 案件アーキテクトとして提案に関わる他、 Cloud/AI/MR 等最新テクノロジーに関する講演や 記事・ブログ執筆等による技術啓蒙を担当。
Agenda • • • • • • • • • • Unity ML-Agents とは Unity ML-Agents のしくみ Microsoft Azure DSVMとは ML-Agentsを動かすDSVMの準備 ML-Agentsのインストール UnityアプリのビルドとDSVM へのコピー プロジェクトの作成とTensorFlowSharpの設定 サンプルアプリのビルド DSVMで学習を行う 学習済みモデルの取得と動作確認
Unity ML-Agentsとは • Unity Machine Learning Agents Toolkit(ML-Agents) • ゲームオブジェクトに強化学習を適用できる • オープンソースのUnity プラグイン • 外部の TensorFlow 環境を使用して学習を行うことが可能 • 生成された学習モデルをゲームオブジェクトを使って推論動作 させることもできる https://github.com/Unity-Technologies/ml-agents • Version 0.5 が出たばかり!
• Agent の行動は通常人間が手作業で コードを書いて実装 • 機械学習を用いれば、学習環境との インタラクションを通じて振る舞い の学習が可能 • 学習において、訓練環境の質は訓練 結果に大きな影響を及ぼすため、非 常に重要な問題 • ML-Agents SDK を利用することで、 Unity を高度な訓練環境にできる Unity ML-Agents の しくみ • 対象者: • 複数エージェントの行動につい て興味のある研究者 • 自動運転などの並列処理に興味 のある研究者 • AI に興味のあるゲーム制作者
Agent の行動を決定 • 独立して 行動し 報酬を 受け取る • • • Internal • Python API・ TensorFlow External • 学習済みモデル・ TensorFlowSharp Player Heuristic 学習空間の制御 ML-Agentsの 学習環境 • 3種類のオブジェクト • Agent • Brain • Academy
PC or Mac で学習 vs Cloud で学習 • *.exe, *.app, などを Unity で開発して ビルド(PC or Mac) • 学習 → 学習済みモデルファイル生成 PC or Mac or Cloud • ファイルを取り込み再度学習 → Unity (PC or Mac)
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
ML-Agents を動か すDSVM の準備 • Microsoft Azure のポータ ルで DSVM の仮想マシン を作成した後、DSVMで ML-Agents の動作環境を 構築 • Microsoft Azure ポータル https://portal.azure.com • 設定では ssh のポートを 経由してシェルと Tensorboard を利用
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 .
Unity アプリのビルドと DSVM へのコピー • Unity アプリは、ML-Agents のサンプルを例として使用 • PC or Mac で Linux 向けアプリとしてビルドした後、DSVM の仮想マシンにコピー
プロジェクトの作成と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
プロジェクトの作成 とTensorFlowSharp の設定 • ダウンロードしたファイルを、 Assets > Import Package よりインポート
サンプルアプリのビルド ① 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
• ml-agentsmaster¥UnitySDK¥Assets¥ML -Agentsフォルダ配下にサンプ ルのシーン • このML-Agentsフォルダを Unityのアセットに追加 • 追加したアセット内の「3D Ball」シーンを開く • Hierarchyより、 Ball3DAcademy(Academy) のBall3DBrain(Brain)を選択 サンプルアプリのビルド ② ML-Agents フォルダを Unity のアセットに追加 • InspectorのBrain Typeを Externalに設定 • これによりTensorFlowを利用 して学習を行うことが可能
サンプルアプリの ビルド ③ ビルド • Azure の DSVM は Linux で動作する ため、Linux 向けのビルド設定 • File > Build Settings • Target Platform を Linux • Headless Mode にチェック ※ DSVM への ssh を使用した ターミナル接続のため
サンプルアプリのビルド ④ ビルドにより作成された実行ファイル • 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
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
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)
DSVM で学習を行う ③ ※ PC or Mac で実行 • Tensorboard へのアクセスには ssh のポートフォワード機能を 使用 • ssh のポートフォワード接続が確立された後に、ブラウザより Tensorboard に接続して学習状況を確認 ssh -L 6006:localhost:6006 <ユーザ>@< DSVM のアドレス>
DSVM で学習を行う ④ ※ PC or Mac で実行 • ブラウザでローカルの6006 ポートにアクセスし学習状況 を確認 • http://localhost:6006/
学習済みモデルの取得と動作確認 ① ※ PC で実行 • DSVM で学習された学習済みモデルは Unity アプリで使える • 学習済みモデルを PC にコピー > scp <ユーザ>@<DSVMのアドレス> :./models/<run-identifier>/3DBall*.bytes <アセットのディレクトリ (↑改行無し)
• Hierarchyより Ball3DAcademy (Academy)の Ball3DBrain(Brain)を 選択 • InspectorのBrain Typeを Internalに設定 • Graph ModelにDSVMよ りコピーした学習済みモ デルを設定 学習済みモデルの取得と 動作確認 ② ※ PC or Mac で実行 • アプリケーションを実行 することにより学習済み モデルを反映したゲーム オブジェクトの動きが確 認できる
Tech Summit 2018
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
Thank you for your attention!
www.dotnetconf.net