セッションを作成する
LearningModel を読み込んだ後、モデルを実行して評価するデバイスにモデルをバインドする LearningModelSession を作成します。
デバイスを選択する
セッションを作成するときにデバイスを選択できます。 種類が LearningModelDeviceKind のデバイスを選択します。
- 既定値
- どのデバイスを使用するかをシステムが決定できるようにします。 現在、既定のデバイスは CPU です。
- CPU
- 他のデバイスが使用可能な場合でも、CPU を使用します。
- DirectX
- DirectX ハードウェア アクセラレータ デバイス、具体的には、IDXGIFactory1::EnumAdapters1 によって列挙される最初のアダプターを使用します。
- DirectXHighPerformance
- DirectX と同じですが、アダプターを列挙するときに DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE を使用します。
- DirectXMinPower
- DirectX と同じですが、アダプターを列挙するときに DXGI_GPU_PREFERENCE_MINIMUM_POWER を使用します。
デバイスを指定しないと、システムは 既定 を使用します。 将来、システムが自動的に選択できる柔軟性を得るために、既定 を使用することをお勧めします。
次のビデオでは、デバイスの各種類について詳細に説明しています。
高度なデバイス作成
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 Overflow の windows-machine-learning タグを使用してください。
- バグを報告するには、GitHub で問題を提出してください。