Bonsaiの使用を開始する
Bonsaiの主要な概念
Bonsaiでは独自の用語を使用します。これらの用語を理解すると、Bonsaiの使用手順の理解に役立ちます。
- brain(頭脳) - Bonsaiのbrainはエージェントです。Bonsai内でトレーニングを行うと、設定目標の達成方法をbrainが学習します。
- シミュレーター - Bonsaiのシミュレーターは、brainが学習のために使用する環境です。brainはシミュレーターから監視内容を取得し、その応答としてシミュレーターにアクションを送信します。
- ワークスペース - Bonsaiのワークスペースには、ユーザーが作成したbrainとシミュレーターがすべて含まれています。ユーザーはワークスペース内で各brainを作成、定義します。brainをシミュレーターに接続した後、トレーニングすることもできます。ワークスペースでは、brainのトレーニングの進捗を監視できます。また、brainをエクスポートし、Webサービスとして展開することもできます。
- 反復 - Bonsaiのbrainは、トレーニング中にアクションを起こします。シミュレーターが実行され、監視内容を返します。Bonsaiはシミュレーションを進めながら別のアクションを起こし、別の監視内容を生み出します。反復とは、アクション/監視の各サイクルを意味します。複雑なシステムでトレーニングして良いエージェントを得るには、トレーニングを数百万回反復する必要があります。
- エピソード - トレーニング中、Bonsaiはシミュレーターをリセットし、反復を数多く実行します。BonsaiにはEpisodeIterationLimitが組み込まれています。この反復制限に達するまで、あるいはある種の目標を達成するまで、Bonsaiはエピソードを続行します。その後、シミュレーションをリセットし、別のエピソードを実行します。トレーニングが完了するまでエピソードは続行されます。
brain
Bonsaiのbrainは、Inklingファイルという特別なテキストファイルで定義します。Inklingファイルでは、brainの次の側面を定義できます。
- brainにどのような監視内容を認識させるか。
- brainでどのようなアクションを利用できるか。
- brainに何を学習させたいか。
Inklingコードの詳細に関する説明は、このトピックの範囲外です。詳細については、Bonsaiのドキュメントを参照してください。
FlexSim AIリポジトリにはBonsaiの例が含まれています。各例には、.inkという拡張子のInklingファイルがあります。また、各例にはFlexSimモデルも含まれています。モデルとInklingファイルは、次の方法で連動するように構成されています。
- モデルは強化学習ツールを使用します。
- 監視スペースとアクションスペースはどちらもBonsaiを使用するように設定されています。
- モデルは、決定を要求する前に監視スペースパラメータを設定します。
- モデルはロジック内でアクションスペースパラメータを使用します。
- 報酬機能は、第2の要素(「done」フラグ)が常に0である配列を返す必要があります。このフラグは将来Bonsaiで使用される可能性があります。
- Inklingファイルはモデルと連動します。
- Inklingファイルのタイプは監視スペースと一致します。そのタイプのフィールドは、監視スペースのパラメータとまったく同じ名前とタイプを持ちます。
- Inklingファイルのタイプはアクションスペースと一致します。そのタイプのフィールドは、アクションスペースのパラメータとまったく同じ名前とタイプを持ちます。
たとえば、ChangeoverTimesという例には、監視スペースにLastItemType、Time、Throughputというパラメータがあります。アクションスペースにはItemTypeというパラメータがあります。この例のInklingファイルには、監視スペースに一致するObservableStateタイプと、アクションスペースに一致するSimActionタイプという2つのタイプがあります。
# State received from the simulator after each iteration
type ObservableState {
LastItemType: number,
Time: number,
Throughput: number,
}
# Action provided as output by policy and sent as input to the simulator
type SimAction {
ItemType: number<1 .. 5 step 1>
}
「ObservableState」および「SimAction」という名前は任意です。監視スペースタイプとアクションスペースタイプは、有効なBonsai名であればどのような名前でもかまいません。ただし、各タイプに属する各フィールドの名前は、パラメータ名と一致する必要があります。
マネージドシミュレーターとアンマネージドシミュレーター
Bonsaiには、アンマネージドとマネージドという2種類のシミュレーターがあります。Bonsaiのbrainは常にクラウドで実行されますが、アンマネージドシミュレーターはローカルコンピュータで実行されます。次の図に示します。
FlexSimはアンマネージドシミュレーターとして簡単に使用できます。マネージドシミュレーターを作成する前に、モデルとInklingコードの準備状態をこの方法でテストすることをお勧めします。トレーニング中やトレーニング後にbrainの評価を実行するときにも、FlexSimをアンマネージドシミュレーターとして使用できます。
トレーニングについては、マネージドシミュレーターを作成する必要があります。マネージドシミュレーターでは、Bonsaiが複数のFlexSimインスタンスを使用してトレーニングを大幅に加速できます。インスタンスの正確な数は、学習のためにBonsaiが選択するアルゴリズムによります。Bonsaiがマネージドシミュレーターを使用してトレーニングを行う場合、アクティビティはすべてクラウドで行われます。
Bonsaiの設定
このセクションでは、BonsaiとFlexSimを併用するために必要な手順について説明します。次のリソースが必要です。
- Microsoftアカウント
- このアカウントへのアクセスを許可するAzureサブスクリプション
- このサブスクリプションにアタッチされたAzureリソースグループ
- リソースグループ内のBonsaiワークスペース
- このサブスクリプションに追加するFlexSim for Bonsaiオファー
- 環境変数SIM_WORKSPACEおよびSIM_ACCESS_KEYの値
- ライセンス版のFlexSim
Bonsaiワークスペースを作成する
Bonsaiワークスペースを作成するには、ページ「BonsaiのためのMicrosoftアカウントの設定」の指示に従ってください。この指示には、アカウント、サブスクリプション、リソースグループの作成など、Bonsaiワークスペースの作成方法が記載されています。
ワークスペースにFlexSimのサポートを追加する
FlexSimのサポートを追加するには、「Add simulator platform support to your Bonsai workspace」(シミュレータープラットフォームのサポートをBonsaiワークスペースに追加する)の指示に従ってください。この指示には、FlexSim for Bonsaiオファーをサブスクリプションに追加する手順が記載されています。これらの手順の最後に、次の3つの値を記録する必要があります。
- Application Name(アプリケーション名)
- Managed Resource Group(マネージドリソースグループ)
- Region(リージョン)
コンピュータで環境変数を設定する
次の指示に従ってワークスペースの詳細を表示します:Get your Bonsai workspace details(Bonsaiワークスペースの詳細を取得する)
ワークスペースの詳細ページから、次の値を確認できます。
- Workspace ID(ワークスペースID)
- Access Key(アクセスキー) - この値を生成する必要があります。このキーを生成するとき、必ずテキストエディタにコピーしてください。このキーは1回しか見ることができないためです。とはいえ、キーを紛失した場合は別のキーを生成できます。さらに、アクセスキーには有効期限があります。期限が切れた場合は、別のキーを生成する必要があります。
- Windowsで[環境変数]ウィンドウを開きます。
- [ユーザー環境変数]セクションの[新規]ボタンをクリックします。
- [変数名]を「SIM_WORKSPACE」に設定します。
- [変数値]をワークスペースIDに設定します。
- [OK]をクリックしてこの新しい変数を追加します。
- [新規]ボタンを再度クリックします。
- [変数名]を「SIM_ACCESS_KEY」に設定します。
- [変数値]を有効なアクセスキーに設定します。
- [OK]をクリックしてこの新しい変数を追加します。
- [OK]をクリックして[環境変数]ウィンドウを閉じます。
FlexSimとBonsaiを使用するサンプル
FlexSimAIリポジトリをダウンロードできます。このリポジトリにはBonsaiのサンプルが格納されており、サンプルには、モデルと、そのモデルのbrain定義ファイル(.inkファイル)が含まれています。FlexSimの最新バージョン用のzipファイルは、FlexSimAI-main.zipリンクでダウンロードできます。リポジトリページFlexSimAIで、このリポジトリのクローンを作成することもできます。クローン作成またはダウンロードするファイルは、必ず使用中のFlexSimバージョンの分岐から選択してください。
brainを作成する
Bonsaiでbrainを作成するには、次の手順を実行します。
- ブラウザーでBonsaiのインターフェイスを開き、ワークスペースに移動します。使用する予定のサブスクリプション、リソースグループ、ワークスペースを必要に応じて指定します。
- 左側にある[Create brain]ボタンを見つけます。
- このボタンをクリックし、[Empty brain]を選択します。
- brainが作成済みの場合は、そのbrainの[Teach]タブに移動します。コードエディタにInklingコードを入力します。いずれかのサンプルを使用する場合は、該当する.inkファイルをテキストエディタで開き、コードをコピーしてコードエディタに貼り付けることもできます。
FlexSimをアンマネージドシミュレーターとして使用する
FlexSimをアンマネージドシミュレーターとして使用するには、次の手順を実行します。
- FlexSimモデルを開きます。
- 強化学習ツールのプロパティを開きます。
- [Bonsai]タブの[シミュレーターを登録]ボタンをクリックします。
このボタンをクリックすると、Bonsaiとの通信がFlexSimに表示されます。ブラウザーのBonsai UIに移動すると、[Flexsim モデル]というアンマネージドシミュレーターがシミュレーターリストに表示されています。このシミュレーターをクリックすると、このモデルで使用するように構成されているパラメータのセットが、ページの[Simulator Interface Details]領域に表示されます。
この時点で、brainだけでなくシミュレーターも存在することになります。これら2つのコンポーネントがあれば、brainを使用したトレーニングのテストを行うことができます。FlexSimをマネージドシミュレーターとして使用すると、brainとモデルが正しく構成されていることを迅速にテストできます。トレーニングをテストするには、FlexSimのローカルインスタンスを使用してbrainを短時間トレーニングするだけです。トレーニングの詳細については、次のトピック「Bonsaiによるトレーニング」を参照してください。
FlexSimがシミュレーターとして登録されている間は、BonsaiがFlexSimを制御しているため、モデルを通常どおりにリセットまたは実行することはできません。ただし、[シミュレーターの登録を解除]ボタンをクリックして、BonsaiからFlexSimをいつでも切断することができます。
マネージドシミュレーターを作成する
マネージドシミュレーターを作成するには、次の手順を実行します。
- FlexSimモデルを開きます。
- 強化学習ツールのプロパティを開きます。
- [Bonsai]タブの[シミュレーターパッケージをエクスポート...]ボタンをクリックします。モデルを格納した.zipファイルが保存されます。
- ブラウザーのBonsai UIで[+ Add sim]ボタンをクリックします。
- 利用可能なソフトウェアのリストからFlexSimを選択します。
- zipファイルを追加します。
- シミュレーターの適切な名前を入力します。
- [Resource group name]、[Application name]、[Region]に正しい値を入力します。これらの値は、FlexSimのサポートをワークスペースに追加したときに取得したものです。
- [Create simulator]ボタンをクリックします。
シミュレーターのリストに新しいシミュレーターがすぐに表示されますが、使用できる状態になるまでに数分かかる可能性があります。準備が整い次第、このシミュレーターを使用してbrainをトレーニングできます。詳細については、次のトピック「Bonsaiによるトレーニング」を参照してください。