Windows Machine Learning を使用したアプリのプロファイリング
プロファイリングは、開発者や AI エンジニアがプロセスの CPU、GPU、および NPU リソースの使用状況を診断し、さまざまな実行プロバイダーで ONNX モデルをプロファイリングし、Windows ML イベントをキャプチャするために設計されたツールです。
この記事では、プロファイリングを開始する方法と、リソース使用状況ビューおよびイベントビューを調査する方法について学びます。
前提条件
- Visual Studio Code の最新バージョンをインストールします。
- Foundry Toolkit VS Code 拡張機能をインストールします。詳細については、「Foundry Toolkit のインストールとセットアップ」を参照してください。
アプリ起動時のプロファイリング
このモードでは、プロファイリングツールは次に起動され、Windows ML イベントを送信するアプリをプロファイリングします。このオプションは、1回だけ実行するアプリのテストに最適です。この場合、プロファイリングを開始してからアプリを実行すると、リソースの使用状況が表示されます。

このツールは、新しく起動されたアプリのプロファイリングを開始します。つまり、Python ノートブックをプロファイリングする場合、カーネルが既に実行中であれば、そのプロファイリングを開始するためにカーネルを再起動する必要があります。新しいノートブックを起動しただけでは、自動的にプロファイリングは開始されません。
Windows ML イベントを受信するには、ツールを管理者モードで実行する必要があります。VS Code が管理者モードで起動されていない場合、通知が表示され、VS Code の再起動が案内されます。管理者モードでの再起動を有効にするには、他のすべての VS Code インスタンスを閉じる必要があります。
実行中のアプリのプロファイリング
このモードでは、プロファイリングツールは既に実行中のアプリのプロファイリングを開始します。以下の基準に基づいてプロセスを選択できます。
- プロセス ID: 12345 など
- プロセス名: 通常は
.exeを除いたアプリ名。最初の一致がプロファイリングされます。 - プロセスパス:
c:\Users\xxx\Inference.Service.Agent.exeなど。最初の一致がプロファイリングされます。
このオプションは、既に実行中で、プロファイリング目的のために再起動できないアプリのプロファイリングに最適です。

ONNX モデルのプロファイリング
このモードでは、プロファイリングツールは、指定された期間、ターゲットの実行プロバイダー (EP) 上で ONNX モデルファイルのプロファイリングを開始します。実行中のリソース使用状況を確認できます。
このオプションは、異なる EP 上で ONNX モデルをプロファイリングするのに最適です。

プロファイリング後、レポートを開くか保存するかを案内する通知が表示されます。

レポートには、ONNX モデルの詳細なプロファイリング統計と結果が含まれています。

各操作のベンチマーク時間
OP プロファイリングが有効になっている場合、モデルをより詳細に調査できるように、オペレーションレベルのデータが生成されます。

レポートには、各オペレーションの詳細なレイテンシが含まれています。

ONNX GenAI モデルのプロファイリング
このモードでは、プロファイリングツールは、指定された数のプロンプトに対して、ターゲットの実行プロバイダー (EP) 上で ONNX GenAI モデルのプロファイリングを開始します。実行中のリソース使用状況を確認できます。

GenAI モデルのフォルダーを選択する必要があります。これは genai_config.json を含むフォルダーです。
リソース使用状況ビュー
メインウィンドウの上部にあるプロットは、CPU、GPU、NPU、およびメモリの使用状況を示します。使用状況は 1 秒ごとに更新され、10 分間保持されます。右上のツールを使用して、ズームイン、ズームアウト、パンを行い、タイムラインを操作できます。

この機能はパフォーマンスカウンターを使用しています。より高い精度を実現するには、Windows Performance Recorder も試すことができます。
Windows ML イベントビュー
メインウィンドウの下部にあるプロットは、Windows ML イベントを示します。そのタイムラインはリソース使用状況ビューと同期されているため、特定のイベントが発生したときにリソースがどのように使用されているかを簡単に判断できます。
Windows ML イベントを受信するには、ツールを管理者モードで実行する必要があります。VS Code が管理者モードで起動されていない場合、通知が表示され、VS Code の再起動が案内されます。管理者モードでの再起動を有効にするには、他のすべての VS Code インスタンスを閉じる必要があります。
現在、以下のイベントタイプのみが表示されます。
- Ensure ExecutionProvider Ready: Windows ML が EP を準備しているとき
- Session Creation: セッションが作成されるとき
- Inference: モデルがセッションで推論を実行するとき

学んだこと
この記事では、以下の方法を学びました。
- さまざまな方法でプロファイリングを開始する
- リソース使用状況ビューを調査する
- Windows ML イベントビューを調査する