このページには、コミュニティからの最も一般的な質問への回答が含まれています。
モデルが Windows ML で動作するかどうかを確認する最も簡単な方法としては、WinML Model Runner ツールを使用します。 あるいは、「ONNX バージョンと Windows ビルド」で、特定の Windows リリースでサポートされているすべての ONNX バージョンの詳細を確認することもできます。
WinMLTools を使用すると、Apple CoreML や scikit-learn などのいくつかの異なる形式のモデルを ONNX に変換できます。
ネイティブなトレーニング フレームワーク内の一部の演算子が現在、ONNX バージョンでサポートされていない可能性があります。 最初に、対象の Windows ビルドでサポートされている ONNX バージョンを確認してから、サポートされている最大バージョンにモデルを変換してみることをお勧めします。 最新のバージョンの ONNX には、以前のバージョンと比較して、より多くの演算子に対するサポートが含まれています。
依然として問題が発生する場合は、データ サイエンス チームと協力して、サポートされていない演算子の使用を回避してみることをお勧めします。 お勧めするアプローチの 1 つとして、ソース フレームワーク内のモデルのアーキテクチャを変更し、モデルを対象の ONNX バージョンに変換またはエクスポートしてみる方法があります。 アーキテクチャの変換は、モデルを再トレーニングしなくても試みることができることに注意してください。そして、成功した場合は、モデルの完全な再トレーニングに進むことができます。
モデルの読み込みでトラブルが発生する原因はいくつかありますが、UWP 上で開発している場合の最も一般的な原因の 1 つにファイルのアクセス制限があります。 既定では、UWP アプリケーションはファイル システムの特定の部分にしかアクセスできず、他の場所にアクセスするにはユーザーのアクセス許可または追加機能が必要になります。 詳細については、「ファイル アクセス許可」を参照してください。
常に最新バージョンの winmltools パッケージをダウンロードしてインストールすることをお勧めします。 これにより、最新バージョンの Windows を対象とする ONNX モデルを確実に作成できるようになります。
はい。それは可能ですが、Windows ML でサポートされている最小の ONNX バージョンである ONNX v1.2.2 を対象とするには、適切なバージョンの onnxmltools をインストールするようにする必要があります。 どのバージョンをインストールするかに関して確信がない場合は、最新バージョンの winmltools をインストールすることをお勧めします。 これにより、Windows でサポートされている ONNX バージョンが確実に対象になります。
mlgen をサポートしている Visual Studio の推奨される最小バージョンは 15.8.7 です。 Windows 10 バージョン 1903 以降では、mlgen が SDK に含まれなくなったため、拡張機能をダウンロードしてインストールする必要があります。 Visual Studio 2017 と Visual Studio 2019 向けにそれぞれ 1 つあります。
mlgen を実行しようとしたときの最も一般的な 2 つのエラーは次のとおりです。
- 必要な属性 'consumed_inputs' が見つかりません: このエラー メッセージが表示された場合、最も可能性が高いのは、17763 より古いバージョンの Windows 10 SDK で ONNX v1.2 モデルを実行しようとしていることです。SDK のバージョンを確認し、それをバージョン 17763 以降に更新することをお勧めします。
- 型エラー: ノード (ZipMap) の出力引数 (loss) の型 (map(string,tensor(float))) が予期された型と一致しません...: このエラーが表示された場合、最も可能性が高いのは、ONNX モデルが WinML で受け入れられるビルド 17763 以降のバージョンより古いことです。 コンバーター パッケージを使用可能な最新バージョンに更新し、モデルを 1.2 バージョンの ONNX に再変換することをお勧めします。
LearningModelDeviceKind で実行するデバイスを指定しない場合や、LearningModelDeviceKind.Default を使用した場合は、どのデバイスでモデルを評価するかがシステムで決定されます。 通常、これは CPU です。 WinML を GPU で実行するようにするには、LearningModelDevice を作成するときに次の値のいずれかを指定します。
- LearningModelDeviceKind.DirectX
- LearningModelDeviceKind.DirectXHighPerformance
- LearningModelDeviceKind.DirectXMinPower
注意
Windows ML に関するヘルプについては、次のリソースを参照してください。
- Windows ML に関する技術的な質問をしたり、質問に回答したりするには、Stack Overflow の windows-machine-learning タグを使用してください。
- バグを報告するには、GitHub で問題を提出してください。