はじめに
Project Bonsaiについて調べてみましたの4回目です。
過去の内容はこちら。
1回目は「Bonsaiを触ってみる」
2回目は「Bonsaiをいじってみる」
3回目は「BonsaiをBonsaiのシミュレータを触ってみる」
今回は、学習されたBonsaiをローカル環境で使ってみたいと思います。
Bonsaiって何?
Microsoftが提供している自律システム向け機械教示サービスです。(現在はPublic Preview)
産業制御システムに焦点を当てた汎用ディープ強化学習プラットフォームのようです
Bonsaiを使ってみる
学習結果は、Dockerのコンテナとしてパッケージ化して使用することができます。
使用するにあたり、以下のソフトが必要となります。
インストール方法や操作方法は、ここでは説明いたしませんので、個別でお調べください。
学習されたBonsaiを出力する
まずは、学習済みの情報を表示させ、「Train」ページから「Export Brain」をクリックします。
出力するコンテナの形式を指定します。
※例えばRaspberryPi3で動作させたい場合は、arm64(v8)などを指定します。
利用する環境の出力形式が決定したら「Export」ボタンをクリックします。
完了には少し時間がかかります。
コンテナをダウンロード&実行
Exportが完了すると、左のメニューの「Simulators」の下に、Expoeted Brainsの項目が追加されます。
追加された項目の右にある「...」を選択し、メニューから「View deployment instructions」をクリックします。
ログインから、取得、起動までのコマンドが表示されますので、コピーしてローカル環境で実行します。
コマンドは以下の通りです。
# Azure Container Registryにログイン
az acr login
# イメージのダウンロード
docker pull \
WORKSPACE_NAME.azurecr.io/WORKSPACE_ID/BRAIN_NAME:VERSION-OS_TYPE-ARCHITECTURE
# 起動
docker run \
--detach \
--publish 5000:5000 \
--name CONTAINER_NAME \
WORKSPACE_NAME.azurecr.io/WORKSPACE_ID/BRAIN_NAME:VERSION-OS_TYPE-ARCHITECTURE
WORKSPACE_NAME
: Bonsaiのワークスペースに付けた名前。
WORKSPACE_ID
: Azure によって割り当てられたBonsaiのWokespace ID。
CONTAINER_NAME
: ローカルのDocker コンテナー名前。
コピー内容を実行すると、ACRへのログイン、ダウンロード、実行が実行されます。
起動の確認
起動コマンドまで実行出来たら、Bonsaiが起動されているか確認するため、以下のコマンドを実行します。
docker logs -f CONTAINER_NAME
Bonsaiが正常に実行されている場合は、Bosanaiのログが表示されます。
動作の確認
起動させたローカルのBonsaiに対して、RESTにて学習の結果を取得することができます。
以下のURLに対して、学習カリキュラムで指定したSimState
のJSON情報をPOSTすることで、内容に対するSimAction
が返却されます。
http://localhost:5000/v1/prediction
ためしに以下に情報を送信してみます。
{
"cart_position":0,
"cart_velocity":0,
"pole_angle":0,
"pole_angular_velocity":0
}
しっかり、SimState
に対するSimAction
(command)が返却されています。
ちなみに、pole_angleのパラメータを削除して、実行した場合は、以下のようなエラーとなります。
余談
APIのマニュアルは、http://localhost:5000/v1/doc/index.html で参照することができます。
まとめ
今回は、学習後にBonsaiをどうやって使用していくのか?を中心に調べてみました。
お手軽にできるのはいい感じです。
ただ、学習させたCartpoleを現実環境でテストできる環境がないのが残念なところです。
ここまででBonsaiについて一通り触ることができたので、次(いつになるかわからないけど)は、全部独自で用意してみたいと思います。