FAQ(질문과 대답)

이 페이지는 커뮤니티에서 가장 인기 있는 질문에 대한 답변이 있습니다.

갖고 있는 ONNX 모델이 Windows ML로 실행될지 여부를 어떻게 알 수 있나요?

사용자의 모델이 Windows ML로 실행될지 여부를 확인하는 가장 쉬운 방법은 WinML Model Runner 도구를 사용하는 것입니다. 또는 ONNX 버전 및 Windows 빌드에서 특정 Windows 릴리스에 대해 지원되는 모든 ONNX 버전에 대한 자세한 정보를 확인할 수 있습니다.

다른 형식의 모델을 ONNX로 어떻게 변환하나요?

WinMLTools를 사용하여 Apple CoreML 및 scikit-learn과 같은 여러 가지 형식의 모델을 ONNX로 변환할 수 있습니다.

모델을 ONNX로 내보내거나 변환하려고 하면 내 모델에 "지원되지 않는 연산자"가 있다는 오류가 발생합니다.   어떻게 해야 합니까?

네이티브 학습 프레임워크의 일부 연산자는 현재 ONNX 버전에서 지원되지 않을 수 있습니다. 먼저 대상 Windows 빌드에 지원되는 ONNX 버전을 확인하고 사용하는 모델을 지원되는 최대 버전으로 변환하는 것이 좋습니다. 최신 버전의 ONNX는 이전 버전보다 더 많은 연산자 집합을 지원합니다.

문제가 계속 발생하면 데이터 과학 팀과 협력하여 시도해보고 지원되지 않는 연산자를 피하는 것이 좋습니다. 권장되는 방법 중 하나는 소스 프레임워크에서 모델의 아키텍처를 변경하고 대상 ONNX 버전으로 모델 변환/내보내기를 시도하는 것입니다. 한편 모델 재학습은 아직 필요하지 않습니다. 아키텍처 변환을 시도해보고 성공하면, 모델에 대한 전체 재학습으로 넘어가면 됩니다.

모델을 로드할 수 없는 이유는 무엇인가요?

모델을 로드하는 데 문제가 될만한 이유가 몇 가지 있지만, UWP에서 개발하는 경우 가장 일반적인 이유 중 하나는 파일 액세스 제한 문제입니다. 기본적으로 UWP 애플리케이션은 파일 시스템의 특정 부분에만 액세스할 수 있으며 다른 위치에 액세스하려면 사용자 권한이나 추가 기능이 필요합니다. 자세한 내용은 파일 액세스 권한을 참조하세요.

어떤 버전의 WinMLTools를 사용해야 하나요?

항상 최신 버전의 winmltools 패키지를 다운로드하여 설치하는 것이 좋습니다. 그러면 최신 버전의 Windows를 대상으로 하는 ONNX 모델을 만들 수 있습니다.

onnxmltools 대신 winmltools를 사용할 수 있나요?

예, 가능합니다. 단, Windows ML에서 지원하는 최소 ONNX 버전인 ONNX v1.2.2를 대상으로 하려면 올바른 버전의 onnxmltools를 설치해야 합니다. 어떤 버전을 설치할지 잘 모르는 경우에는 최신 버전의 winmltools를 설치하는 것이 좋습니다. 그러면 Windows에서 지원하는 ONNX 버전을 대상으로 할 수 있습니다.

자동 코드 생성(mlgen)을 얻으려면 어떤 버전의 Visual Studio를 사용해야 하나요?

mlgen을 지원하는 Visual Studio의 최소 권장 버전은 15.8.7입니다. Windows 10 버전 1903 이상에서는 mlgen이 SDK에 더 이상 포함되지 않기 때문에 확장 프로그램을 다운로드하여 설치해야 합니다. Visual Studio 2017용 확장 프로그램과 Visual Studio 2019용 확장 프로그램이 있습니다.

mlgen을 실행하려고 하면 오류 메시지가 표시되고 코드가 생성되지 않습니다. 무슨 일이 일어날 수 있나요?

mlgen 실행을 시도하는 경우 가장 일반적인 두 가지 오류는 다음과 같습니다.

  • 필수 특성 'consumed_inputs'가 없습니다.: 이 오류 메시지가 표시되면 17763 이전의 Windows 10 SDK 버전에서 ONNX v1.2 모델 실행을 시도했을 가능성이 높습니다. SDK 버전을 확인하고 17763 이상 버전으로 업데이트하는 것이 좋습니다.
  • 유형 오류: 노드(ZipMap)의 출력 인수(손실)의 유형(map(string,tensor(float)))이 예상 유형과 일치하지 않습니다.: 이 오류가 발생하면 ONNX 모델은 빌드 17763부터 WinML에서 허용하는 것보다 이전 버전일 가능성이 높습니다. 변환기 패키지를 사용 가능한 최신 버전으로 업데이트하고 모델을 ONNX 1.2 버전으로 다시 변환하는 것이 좋습니다.

WinML은 기본적으로 어디에서 실행되나요?

LearningModelDeviceKind에 실행할 디바이스를 지정하지 않거나 LearningModelDeviceKind.Default를 사용하면, 모델을 평가할 디바이스가 시스템에서 결정됩니다. 이것은 일반적으로 CPU입니다. GPU에서 WinML을 실행하려면 LearningModelDevice를 만들 때 다음 값 중 하나를 지정합니다.

  • LearningModelDeviceKind.DirectX
  • LearningModelDeviceKind.DirectXHighPerformance
  • LearningModelDeviceKind.DirectXMinPower

참고

Windows ML에 대한 도움말은 다음 리소스를 참조하세요.

  • Windows ML에 대한 기술적인 질문을 하거나 질문에 답하려면, Stack Overflow에서 windows-machine-learning 태그를 사용하세요.
  • 버그를 보고하려면 GitHub에서 문제를 제출하세요.