Bonsai で始める強化学習 超入門

keonabut
8 min readMay 21, 2020

--

Microsoft Build 2020 で Build 2020 で Project Bonsai を発表しました。以前買収した強化学習スタートアップ Bonsai がようやく製品としてリリースされたということです。

まずは簡単なサンプルを動かすところから始めてみます。

アジェンダ

  • 環境構築
  • Moab を動かす
  • 詳細情報
  • リファレンス

1. 環境構築

Azure Portal で Bonsai と検索するとリソース作成画面が出てきます。

「作成」をクリックして、詳細な設定項目を記入します。(赤枠)

  • サブスクリプション : 対象の Azure サブスクリプション
  • リソースグループ : 任意の名称
  • Workspace Name : ワークスペースの名称 (文字から始める、特殊記号は -._~ が利用可能)
  • 場所 : 米国西部 2 (プレビューということもありリージョンは限定されています)

Review + Create をクリックします。

問題なければ、 Create をクリックしてリソース作成を開始します。

無事デプロイが完了がしました。「リソースに移動」 をクリックします。

Bonsai の Azure Portal におけるトップページが表示されます。

この画面は Azure のシステム管理者が利用するものです。Launch Workspace から利用者ための Bonsai ワークスペース https://preview.bons.ai/ にアクセスします。

Bonsai ワークスペースのトップ画面が表示されます。

右上の設定から Dark theme を利用することもできます 。 地味に嬉しい。。。

これで環境作成はお終いです。

2. Moab を動かす

2.1 事前準備

Microsoft Build 2020 では Project Moab も発表されました。これはオープンソースのバランシングロボットです。3D プリンターで構築する、もしくはロボット本体を購入できるようになる予定です。

ここでは Moab のシミュレーターを使って学習をします。Moab を選択します。

Brain 表示名称を入力します。本ブログでは Brain-Moab という名称にして進めます。Create brain をクリックします。

Teach する内容を定義する UI が表示されます。

真ん中はコーディングするセクションになっており、Inkling というプログラミング言語で記述します。右側はプログラム内容に基づいて生成されたグラフになります。

コードは特に編集しなくても大丈夫ですが、日本語コメントを少し追加したものを gist で共有します。

定義したグラフを簡単にみてみます。

State Node
Brain で利用するデータを定義します。ここでは Moab の現在位置と速度を使用しています。

Concept Node
学習させたい挙動を定義します。Moab における目標は、中央に物体が移動すること (Drive Center Of Plate) と、プレートの端を避けることです (Avoid Fall Off Plate)。

Action Node
アクションを定義します。 Moab は Pitch と Rollを調整します。

Roll と Pitch はベクトル表現で使われます。Azure の Face API のドキュメントに分かりやすいイラストがありました。

https://docs.microsoft.com/ja-jp/azure/cognitive-services/face/concepts/face-detection

Moab でのイメージ図はこちらです。

2.2 モデル学習

それでは、Train をクリックして学習を開始します。
※ 立ち上がりに少々時間がかかります。

学習が始まってきました。シミュレータでは 20 インスタンスが動いています。

下にスクロールすると Moab を試行を繰り返している様子が 3D で確認できます。

学習が進んでいくと、Goal Satisfaction が 100% になりました。一旦ここで学習を終了します。「Stop training」 をクリックします。

2.3 モデルのエクスポート

Export brain をクリックしてモデルをエクスポートします

x64 などから選択することができます。Export をクリックします。

モデルは Azure Container Registry の格納されます。

これを Moab の実機から Pull して Run (実行) できるのですが、手元に実機がないので (涙)、入手し次第具体的な手順を記載することにします。

3. 詳細情報

タイトルに超入門と書いちゃいましたが、細かい情報もご紹介いたします。

3.1 シミュレータ環境

Bonsai に内蔵されているシミュレータは Azure Container Instances 上で稼働します。Azure Portal を見ると専用のリソースグループ が作成されていることが確認できます。

左メニューの Simulators の画面から、シミュレーション時に並列で動かすインスタンス数、コア数、メモリ量などの細かい設定ができます。

3.2 VSCode Extension

Bonsai では Inkling というプログラミング言語が使用されています。Bonsai のワークスペース上でコーディングができますが、VSCode 上でのコーディングをサポートすべくコードハイライトする拡張機能が提供されています。(VSCode から学習を実行するなどはできません汗)

--

--

keonabut

ML/DL Engineer @Microsoft | Machine Learning & Deep Learning | Piano | Soccer | Opinions are my own and not the views of my