MLモデルのテストまたは埋め込み

このシナリオでは、トレーニング済みの ML (機械学習) モデルがシミュレートされた環境内から使用されます。つまり、ML モデルは最初に AnyLogic エコシステムの外部でトレーニングされます。次に、その予測能力を評価または利用するために、シミュレーション モデルの一部として含めることができます。
ML モデルのテストまたは埋め込みには、実行時にトレーニング済みの ML モデルとシミュレーション モデル間の接続が必要です。AnyLogic は、トレーニングに使用された言語に関係なく、ローカル接続とリモート接続の両方に対して複数の接続オプションを提供します。

使用事例 ワークフロー&ツール

ケース 1: モデル内の抽象化された動作を表す入力の代替としての ML モデル

シミュレーション モデルでの入力パラメータの用途の 1 つは、実際のシステムに存在する因果ルール (遅延時間、到着率など) に基づいた近似動作を定義することです。これらは、単変量確率変数としてモデル化されることが多く、シナリオによっては、多変量確率分布を持つランダム ベクトルとしてモデル化されます。


ケース 2: MLモデルを使用してシミュレートされたシステム内のコンポーネントの動作を近似する

シミュレーション モデル内の特定のコンポーネントが、非常に詳細なレベルを必要とするために複雑な場合、トレーニング済みの ML モデルを代替として使用して動作を近似することができます。これは前のケースと似ていますが、単一の値 (または分布) で必ずしも抽象化できないモデルの特定のコンポーネントに関係します。明白な例として、一般的なシミュレーション手法では容易にモデル化できない物理デバイスですが、機械学習で簡単に近似できます。


ケース 3: 既存のデプロイ済みMLモデルをシミュレーション環境に組み込んで精度を向上させる

シミュレーション モデルは実際のシステムのルールを再現する必要があります-これは、特定のシステム内の既存の組み込み AI ソリューションにも当てはまります。システムにデプロイされた AI ソリューションの直接的な結果であるルールと動作も、シミュレーションに組み込む必要があります。これを実現する最も自然な方法は、AI ソリューションをシミュレーションに直接埋め込むことです。


ケース 4: AIソリューションを導入前にシステム全体のパフォーマンスに与える影響をテストする

AI コンポーネントをシステムに組み込む目的は、AI によって置き換えられる特定のコンポーネントのパフォーマンスだけでなく、システム全体のパフォーマンスを向上させることです。十分にトレーニングされた AI ソリューションをデプロイすると、対象システムの全体的なパフォーマンスが大幅に向上することが期待できます。ただし、システム内のいかなる変動も、ボトルネックを移動させたり、その他の波及効果を引き起こしたりする可能性があります。トレーニング済みモデルを単独でテストしても (例えば、テスト データのサンプルを使用して)、変更されたシステム全体のパフォーマンスが十分に向上したことは確認できません。シミュレーション モデルは、既存のシステムに AI を組み込むことの影響をテストするための仮想的でリスクのない環境として使用できます。


ケース 5: 数学を視覚化する!

データ サイエンティストは、ML ソリューションの効果を、そのニュアンスや影響についてよく知らない人 (顧客、マネージャー、意思決定者など) に示して伝えるという問題に精通しています。シミュレーション モデリング ソフトウェアの目的の 1 つは、モデルの動的な動作を視覚的に魅力的で理解しやすい形で表現することです。そのため、ML ソリューションの有無にかかわらず、シミュレートされた環境のパフォーマンスを視覚的に表示するために使用できます。


ケース 6: 元のシミュレーション環境でRLポリシーをテストする

強化学習の最終的な目的は、システムを最適に制御できる有用なポリシーを学習することです。学習プロセス (トレーニング) はシミュレートされた環境で実行されるため、同じシミュレーション モデルを使用して学習したポリシーをテストすることもできます!学習したポリシーのパフォーマンスを評価することは、実際のシステムにポリシーをデプロイする前の有用なステップであり、一般に「Sim-to-Real Transfer」と呼ばれるプロセスです。

ワークフローとツール

ML モデルのテストまたは埋め込みには、実行時にトレーニング済みの ML モデルとシミュレーション モデル間の接続が必要です。AnyLogic は、トレーニングに使用された言語やローカル接続とリモート接続の両方に関係なく、ML モデルに接続するための 4 つの一般的なオプションを提供します。

ONNX ヘルパー ライブラリを使用した ML モデルへのアクセス

ONNX ヘルパー ライブラリを使用した ML モデルへのアクセス

「.onnx」形式で保存されたトレーニング済み ML モデルにアクセスするための ONNX ヘルパー ライブラリの使用。

ONNX 形式 (Open Neural Network Exchange の略) は、トレーニングされた ML モデル用の標準化されたフレームワーク相互運用可能な形式です。

互換性のある Java ライブラリは存在しますが、使用するには比較的高度な技術的知識が必要です。ONNX Helper は、AnyLogic のすべてのバージョン (PLE、University、または Professional) と互換性のある無料でダウンロード可能なアドオン ライブラリで、ML モデルをクエリするシンプルで簡単な方法を提供し、ユーザーはモデルにドラッグするだけで単一の関数を利用できるようになります。

詳細
API 呼び出しによる通信

API 呼び出しによる通信

ML/AutoML プラットフォームによってホストされる ML モデルとのリモート通信 (API 呼び出し経由)。

トレーニング済みの ML モデルは、API 経由でクエリを実行できる方法でデプロイできます。ほとんどすべての一般的な ML/Auto ML プラットフォームでは、これをすぐに実行できる簡単なメカニズムが提供されています。シミュレーション内で、適切なタイミングでリクエストを構築し、返された予測を適用するための簡単なコードを追加できます。このワークフローは、トレーニングされた ML モデルのプログラミング言語を抽象化します。

シミュレーション環境に組み込まれた ML モデル

シミュレーション環境に組み込まれた ML モデル

トレーニング済みの ML モデルをシミュレーション環境にネイティブに埋め込みます。

トレーニングが Java (AnyLogic のネイティブ言語) で行われた場合、またはトレーニング プラットフォームで ML モデルを Java で使用可能な形式でエクスポートできる場合は、トレーニングされた ML モデルのローカル クエリが可能です。たとえば、H2O.ai Driverless AIを使用すると、トレーニング済みのモデルを MOJOs (Model Objects, Optimized)としてダウンロードできます-これは、Java ライブラリの支援により、任意の Java 環境にデプロイできるスコアリング エンジンです。

Pypeline ライブラリを使用した ML モデルへのアクセス

Pypeline ライブラリを使用した ML モデルへのアクセス

Python ベースのトレーニング済み ML モデルへのローカル アクセスのための Pypeline ライブラリの使用。

デプロイされたトレーニング済みの ML モデルに Python ライブラリからアクセスできる場合は、カスタム AnyLogic ライブラリである Pypeline を使用してクエリを実行できます。Pypeline を使用すると、Python のローカル インストールを使用して、引数付きの Python スクリプトを実行したり、AnyLogic モデル内から Python コードを対話的に実行したりできます。

詳細