Windows ML 런타임 API에 대한 C++ 프로젝트 설정

Important

Windows ML 런타임 API는 현재 실험적이며 프로덕션 환경에서 사용하는 것은 지원되지 않습니다. 이 API를 시도하는 앱은 Microsoft Store에 게시해서는 안 됩니다.

이 항목에서는 런타임 API를 사용하고 IWinMLRuntime 인스턴스를 만들도록 네이티브 C++ 프로젝트를 구성하는 방법을 보여 줍니다. 모델 로드, 텐서 바인딩 및 추론을 위해 Windows ML Runtime API로 모델 실행을 계속 진행하세요.

필수 조건

Note

C++20 및 C++/WinRT는 런타임 API가 아닌 이러한 설명서 샘플의 요구 사항입니다. 런타임 API는 해당 앱의 언어 요구 사항에 따라 원시 COM, WRL, WIL 또는 다른 COM 도우미를 사용하여 C 또는 C++에서 사용할 수도 있는 네이티브 COM 스타일 ABI입니다.

CPU 실행 대상은 기준 경로입니다. GPU 및 NPU 가용성은 디바이스, 플랫폼 기능 및 앱에 설치된 실행 백엔드에 따라 달라집니다.

네이티브 NuGet 복원 구성

네이티브 Visual C++ 프로젝트에는 NuGet 대상 모니커가 필요하므로 패키지 복원에서 네이티브 Windows 자산을 선택할 수 있습니다. 이 속성 그룹을 첫 번째 .vcxproj 가져오기 전에 Microsoft.Cpp.* 파일 상단에 추가합니다.

<PropertyGroup Label="NuGet">
  <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
  <NuGetTargetMoniker>native,Version=v0.0</NuGetTargetMoniker>
  <NuGetTargetPlatformIdentifier>Windows</NuGetTargetPlatformIdentifier>
  <NuGetTargetPlatformVersion>$(WindowsTargetPlatformVersion)</NuGetTargetPlatformVersion>
</PropertyGroup>

패키지는 PackageReference 또는 Microsoft.Windows.AI.MachineLearning를 사용하여 설치합니다. 이러한 페이지의 샘플을 빌드하려면 도 설치하고 Microsoft.Windows.CppWinRT를 ISO C++20 Standard (/std:c++20)로 설정합니다. Windows ML 패키지는 런타임 헤더, 가져오기 라이브러리 및 자체 포함 DLL을 제공합니다. C++/WinRT는 샘플 코드에서만 사용되는 winrt::com_ptr, winrt::check_hresult 및 <winrt/base.h> 편의 기능을 제공합니다.

CMake 및 배포 옵션은 독립 실행형 설치를 참조하세요.

런타임 초기화

main.cpp를 다음 코드로 바꿉니다.

// Copyright (C) Microsoft Corporation. All rights reserved.

#include <Windows.h>
#include <winrt/base.h>

#include <WinMLRuntime.h>

#pragma comment(lib, "windowsapp.lib")

int wmain()
{
    winrt::com_ptr<IWinMLRuntime> runtime;
    winrt::check_hresult(WinMLCreateRuntime(
        __uuidof(IWinMLRuntime),
        runtime.put_void()));

    return 0;
}

패키지 자산과 일치하는 아키텍처에 대한 빌드(예: Release|x64.) 빌드가 성공하면 NuGet 복원이 런타임 헤더와 가져오기 라이브러리를 찾고 필요한 DLL을 실행 파일 옆에 복사했음을 확인할 수 있습니다.

다음 단계