建立工作階段
載入 LearningModel之後,您會建立 LearningModelSession,將模型系結至執行並評估模型的裝置。
選擇裝置
您可以在建立會話時選取裝置。 您可以選擇 LearningModelDeviceKind類型的裝置:
-
預設值
- 讓系統決定要使用的裝置。 目前,預設裝置是 CPU。
-
CPU
- 使用 CPU,即使有其他裝置可用也一樣。
-
DirectX
- 使用 DirectX 硬體加速裝置,特別是 IDXGIFactory1::EnumAdapters1列舉的第一張介面卡。
-
DirectXHighPerformance
- 與 DirectX相同,但在列舉配接器時會使用 DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE 。
-
DirectXMinPower
- 與 DirectX相同,但在列舉配接器時會使用 DXGI_GPU_PREFERENCE_MINIMUM_POWER 。
如果您未指定裝置,系統會使用 [預設]。 建議您使用 Default 來彈性地讓系統在未來為您選擇。
下列影片會更詳細地說明每個裝置類型。
進階裝置建立
Windows AI 支援使用呼叫端已建立的裝置。 執行此動作時,有幾個選項和考慮:
- CreateFromDirect3D11Device。 當您已經有現有的 IDirect3DDevice 時,請使用此專案。 Windows AI 會使用相同的配接器來為其 ML 工作負載建立 d3d12 裝置。 當您有一部相機使用適用于 VideoFrames 的 d3d11 裝置,而且您想要針對 LearningModelSession 使用相同的裝置時,這非常有用。 在許多情況下,它可以避免記憶體複製。 注意:VideoFrame 張量化是 Windows AI 唯一的 d3d11 工作負載。 如果您未使用該功能,則無法共用或建立 d3d11 裝置。
- CreateFromD3D12CommandQueue (原生) 。 當您有想要重複使用的 d3d12 裝置時,請使用此選項。 Windows AI 會將該命令佇列用於其 ML 工作負載。 它也會使用 D3D11On12CreateDevice 建立 d3d11 裝置。 這只有在需要時才完成,而且將用於所有 d3d11 工作負載,例如 VideoFrame 張量化。 您可以透過 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 Overflow 上的 windows-machine-learning 標籤。
- 如需回報錯誤 (bug),請在 GitHub 上提出問題。