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という例には、監視スペースにLastItemTypeTimeThroughputというパラメータがあります。アクションスペースには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は常にクラウドで実行されますが、アンマネージドシミュレーターはローカルコンピュータで実行されます。次の図に示します。

クラウド Bonsai ローカルコンピュータ FlexSim

FlexSimはアンマネージドシミュレーターとして簡単に使用できます。マネージドシミュレーターを作成する前に、モデルとInklingコードの準備状態をこの方法でテストすることをお勧めします。トレーニング中やトレーニング後にbrainの評価を実行するときにも、FlexSimをアンマネージドシミュレーターとして使用できます。

トレーニングについては、マネージドシミュレーターを作成する必要があります。マネージドシミュレーターでは、Bonsaiが複数のFlexSimインスタンスを使用してトレーニングを大幅に加速できます。インスタンスの正確な数は、学習のためにBonsaiが選択するアルゴリズムによります。Bonsaiがマネージドシミュレーターを使用してトレーニングを行う場合、アクティビティはすべてクラウドで行われます。

クラウド Bonsai Bonsaiシミュレーター FlexSim

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(リージョン)
上記の値は、FlexSimでマネージドシミュレーターを作成するために必要になります。

コンピュータで環境変数を設定する

次の指示に従ってワークスペースの詳細を表示します:Get your Bonsai workspace details(Bonsaiワークスペースの詳細を取得する)

ワークスペースの詳細ページから、次の値を確認できます。

  • Workspace ID(ワークスペースID)
  • Access Key(アクセスキー) - この値を生成する必要があります。このキーを生成するとき、必ずテキストエディタにコピーしてください。このキーは1回しか見ることができないためです。とはいえ、キーを紛失した場合は別のキーを生成できます。さらに、アクセスキーには有効期限があります。期限が切れた場合は、別のキーを生成する必要があります。
これらのどちらの値も、コンピュータの環境変数として保存する必要があります。Bonsaiで必要となる環境変数を設定するには、次の手順を実行します。
  1. Windowsで[環境変数]ウィンドウを開きます。
  2. ユーザー環境変数]セクションの[新規]ボタンをクリックします。
  3. 変数名]を「SIM_WORKSPACE」に設定します。
  4. 変数値]をワークスペースIDに設定します。
  5. OK]をクリックしてこの新しい変数を追加します。
  6. 新規]ボタンを再度クリックします。
  7. 変数名]を「SIM_ACCESS_KEY」に設定します。
  8. 変数値]を有効なアクセスキーに設定します。
  9. OK]をクリックしてこの新しい変数を追加します。
  10. OK]をクリックして[環境変数]ウィンドウを閉じます。
なお、環境変数を変更するときに開いていたFlexSimのインスタンスには、この変更は反映されません。

FlexSimとBonsaiを使用するサンプル

FlexSimAIリポジトリをダウンロードできます。このリポジトリにはBonsaiのサンプルが格納されており、サンプルには、モデルと、そのモデルのbrain定義ファイル(.inkファイル)が含まれています。FlexSimの最新バージョン用のzipファイルは、FlexSimAI-main.zipリンクでダウンロードできます。リポジトリページFlexSimAIで、このリポジトリのクローンを作成することもできます。クローン作成またはダウンロードするファイルは、必ず使用中のFlexSimバージョンの分岐から選択してください。

brainを作成する

Bonsaiでbrainを作成するには、次の手順を実行します。

  1. ブラウザーでBonsaiのインターフェイスを開き、ワークスペースに移動します。使用する予定のサブスクリプション、リソースグループ、ワークスペースを必要に応じて指定します。
  2. 左側にある[Create brain]ボタンを見つけます。
  3. このボタンをクリックし、[Empty brain]を選択します。
  4. brainが作成済みの場合は、そのbrainの[Teach]タブに移動します。コードエディタにInklingコードを入力します。いずれかのサンプルを使用する場合は、該当する.inkファイルをテキストエディタで開き、コードをコピーしてコードエディタに貼り付けることもできます。

FlexSimをアンマネージドシミュレーターとして使用する

FlexSimをアンマネージドシミュレーターとして使用するには、次の手順を実行します。

  1. FlexSimモデルを開きます。
  2. 強化学習ツールのプロパティを開きます。
  3. [Bonsai]タブの[シミュレーターを登録]ボタンをクリックします。

このボタンをクリックすると、Bonsaiとの通信がFlexSimに表示されます。ブラウザーのBonsai UIに移動すると、[Flexsim モデル]というアンマネージドシミュレーターがシミュレーターリストに表示されています。このシミュレーターをクリックすると、このモデルで使用するように構成されているパラメータのセットが、ページの[Simulator Interface Details]領域に表示されます。

この時点で、brainだけでなくシミュレーターも存在することになります。これら2つのコンポーネントがあれば、brainを使用したトレーニングのテストを行うことができます。FlexSimをマネージドシミュレーターとして使用すると、brainとモデルが正しく構成されていることを迅速にテストできます。トレーニングをテストするには、FlexSimのローカルインスタンスを使用してbrainを短時間トレーニングするだけです。トレーニングの詳細については、次のトピック「Bonsaiによるトレーニング」を参照してください。

FlexSimがシミュレーターとして登録されている間は、BonsaiがFlexSimを制御しているため、モデルを通常どおりにリセットまたは実行することはできません。ただし、[シミュレーターの登録を解除]ボタンをクリックして、BonsaiからFlexSimをいつでも切断することができます。

マネージドシミュレーターを作成する

マネージドシミュレーターを作成するには、次の手順を実行します。

  1. FlexSimモデルを開きます。
  2. 強化学習ツールのプロパティを開きます。
  3. [Bonsai]タブの[シミュレーターパッケージをエクスポート...]ボタンをクリックします。モデルを格納した.zipファイルが保存されます。
  4. ブラウザーのBonsai UIで[+ Add sim]ボタンをクリックします。
  5. 利用可能なソフトウェアのリストからFlexSimを選択します。
  6. zipファイルを追加します。
  7. シミュレーターの適切な名前を入力します。
  8. Resource group name]、[Application name]、[Region]に正しい値を入力します。これらの値は、FlexSimのサポートをワークスペースに追加したときに取得したものです。
  9. Create simulator]ボタンをクリックします。

シミュレーターのリストに新しいシミュレーターがすぐに表示されますが、使用できる状態になるまでに数分かかる可能性があります。準備が整い次第、このシミュレーターを使用してbrainをトレーニングできます。詳細については、次のトピック「Bonsaiによるトレーニング」を参照してください。