559 Views
October 13, 18
スライド概要
.NET Conf 2018 Tokyo, on Oct.13, at Microsoft Japan.
ヴイエムウェア株式会社 プリンシパルエンタープライズアーキテクト。Microsoft で13年間、テクニカルエバンジェリストとして .NET、Visual Studio、Windows、iOS、Android、Microsoft Azure 等の開発者向け最新技術啓発活動を実施。その後、Dell、Accenture、Elastic 等を通じて現職でも同様の活動を実施。 2019年4月〜2021年8月迄、内閣官房 IT 総合戦略室 政府 CIO 補佐官を兼務、2021年9月〜2024年3月迄、デジタル庁 PjM ユニット ソリューションアーキテクトを兼務。 2022年、企業向けに技術顧問、クラウド等開発技術トレーニング、技術マーケティング支援、エバンジェリスト業務、エバンジェリスト養成などを行う合同会社デベロッパーアドボケイトを設立、数社の技術顧問業務や、トレーニング等を実施。
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