次の方法で共有


セッションを作成する

LearningModel を読み込んだ後、モデルを実行して評価するデバイスにモデルをバインドする LearningModelSession を作成します。

デバイスを選択する

セッションを作成するときにデバイスを選択できます。 種類が LearningModelDeviceKind のデバイスを選択します。

  • 既定値
    • どのデバイスを使用するかをシステムが決定できるようにします。 現在、既定のデバイスは CPU です。
  • CPU
    • 他のデバイスが使用可能な場合でも、CPU を使用します。
  • DirectX
    • DirectX ハードウェア アクセラレータ デバイス、具体的には、IDXGIFactory1::EnumAdapters1 によって列挙される最初のアダプターを使用します。
  • DirectXHighPerformance
  • DirectXMinPower

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

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


高度なデバイス作成

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

  • CreateFromDirect3D11Device。 既存の IDirect3DDevice が既にある場合は、これを使用します。 Windows AI は、同じアダプターを使用して ML ワークロードのために d3d12 デバイスを作成します。 これは、VideoFrame のために 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));
}

関連項目

Note

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

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