다음을 통해 공유


세션 만들기

LearningModel을 로드한 후에는 모델을 실행하고 평가하는 디바이스에 모델을 바인딩하는 LearningModelSession을 만듭니다.

디바이스 선택

세션을 만들 때 디바이스를 선택할 수 있습니다. 다음 LearningModelDeviceKind 유형의 디바이스를 선택합니다.

  • 기본값
    • 시스템이 사용할 디바이스를 결정하도록 합니다. 현재 기본 디바이스는 CPU입니다.
  • CPU
    • 다른 디바이스를 사용할 수 있는 경우에도 CPU를 사용합니다.
  • DirectX
    • DirectX 하드웨어 가속 디바이스를 사용 합니다. 특히 IDXGIFactory1::EnumAdapters1로 열거된 첫 번째 어댑터를 사용합니다.
  • DirectXHighPerformance
  • DirectXMinPower

디바이스를 지정하지 않으면 시스템은 기본을 사용합니다. 기본을 사용하여 시스템에서 나중에 선택할 수 있는 유연성을 얻는 것이 좋습니다.

다음 비디오는 각 디바이스 종류에 대해 자세히 설명합니다.


고급 디바이스 만들기

Windows AI는 호출자가 이미 만든 디바이스를 사용할 수 있도록 지원합니다. 이렇게 할 때 여러 가지 옵션과 고려 사항이 있습니다.

  • CreateFromDirect3D11Device. 기존 IDirect3DDevice가 있는 경우 이 옵션을 사용합니다. Windows AI는 이 동일한 어댑터를 사용하여 ML 워크로드용 d3d12 디바이스를 만듭니다. 이 옵션은 VideoFrames에 d3d11 디바이스를 사용하는 카메라를 보유하고 있으며 LearningModelSession에 동일한 디바이스를 사용하려는 경우에 유용합니다. 대부분의 경우 메모리 복사를 방지할 수 있습니다. 메모: VideoFrame 텐서화(Tensorization)는 Windows AI의 유일한 d3d11 워크로드입니다. 이 기능을 사용하지 않으면 d3d11 디바이스를 공유하거나 만들어서 얻을 수 있는 이점이 없습니다.
  • CreateFromD3D12CommandQueue(네이티브). 다시 사용하려는 d3d12 디바이스가 있는 경우 이 옵션을 사용합니다. Windows AI는 ML 워크로드에 이 명령 큐를 사용합니다. 또한 D3D11On12CreateDevice를 사용하여 d3d11 디바이스를 만듭니다. 이 작업은 필요한 경우에만 수행되며 VideoFrame 텐서화(Tensorization) 같은 모든 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 Overflow에서 windows-machine-learning 태그를 사용하세요.
  • 버그를 보고하려면 GitHub에서 문제를 제출하세요.