次の方法で共有


セッションを作成する

LearningModel を読み込むと、LearningModelSession が作成され、モデルが実行され、モデルが評価されるデバイスにモデルがバインドされます。

デバイスを選択する

セッションの作成時にデバイスを選択できます。 LearningModelDeviceKind 型のデバイスを選択します。

  • デフォルト
    • 使用するデバイスをシステムで決定します。 現在、既定のデバイスは CPU です。
  • CPU
    • 他のデバイスが使用可能な場合でも、CPU を使用します。
  • DirectXの
    • DirectX ハードウェア アクセラレーション デバイス 、特に IDXGIFactory1::EnumAdapters1 によって列挙された最初のアダプターを使用します。
  • DirectXHighPerformance (ダイレクト X ハイ パフォーマンス)
  • DirectXMインパワー

デバイスを指定しない場合、システムは Default を使用 しますDefault を使用して、将来的にシステムが自動的に選択できるようにする柔軟性を得ることをお勧めします。

次のビデオでは、各デバイスの種類について詳しく説明します。


高度なデバイス作成

Windows AI では、呼び出し元が既に作成したデバイスの使用がサポートされています。 これを行うときには、いくつかのオプションと考慮事項があります。

  • CreateFromDirect3D11Device。 これは、既存の IDirect3DDevice がある場合に使用します。 Windows AI は、同じアダプターを使用して、ML ワークロード用の d3d12 デバイスを作成します。 これは、VideoFrames に d3d11 デバイスを使用しているカメラがあり、その同じデバイスを LearningModelSession に使用する場合に便利です。 多くの場合、メモリ のコピーを回避できます。 注: VideoFrame のテンソル化は、Windows AI が持つ唯一の d3d11 ワークロードです。 この機能を使用していない場合は、d3d11 デバイスを共有または作成する利点はありません。
  • CreateFromD3D12CommandQueue (ネイティブ)。 これは、再利用する d3d12 デバイスがある場合に使用します。 Windows AI では、そのコマンド キューが ML ワークロードに使用されます。 また、D3D11On12CreateDevice を使用して d3d11 デバイスを作成します。 これは必要な場合にのみ行われ、VideoFrame テンソル化などのすべての d3d11 ワークロードに使用されます。 この新しいデバイスには、LearningModelDevice.Direct3D11Device プロパティを使用してアクセスできます。

次の例は、モデルとデバイスからセッションを作成する方法を示しています。

private void CreateSession(LearningModel model, LearningModelDeviceKind kind)
{
    // Create the evaluation session with the model and device
    LearningModelSession session =
        new LearningModelSession(model, new LearningModelDevice(kind));
}

こちらも参照ください

Windows ML に関するヘルプについては、次のリソースを参照してください。

  • Windows ML に関する技術的な質問や回答を行うには、Stack Overflowwindows-machine-learning タグを使用してください。
  • バグを報告するには、 GitHub で問題を報告してください。