다음을 통해 공유


Windows EvalDLL 평가

Windows EvalDll 라이브러리는 C++ 및 C# 라이브러리로 제공됩니다. nuget.org NuGet 패키지도 사용할 수 있습니다. Visual Studio 2015 업데이트 3이 필요하며 프로젝트 속성의 대상 플랫폼은 X64여야 합니다.

EvalDll 라이브러리 사용

EvalDll 라이브러리를 사용하면 CPU에서 프로그래밍 방식으로 모델을 평가할 수 있습니다(GPU는 지원되지 않음).
이 DLL의 사용 패턴은 다음과 같습니다.

  1. 가져오기 라이브러리를 Cntk.Eval-<VERSION>.lib 애플리케이션에 연결합니다. 올바른 파일 이름을 사용하는지 확인합니다. 이 문서의 시작 부분을 참조하세요.
  2. 평가 헤더 파일 "Eval.h"를 포함합니다.
  3. 모델의 데이터 형식(float 또는 double)에 해당하는 평가 엔진의 인스턴스를 가져옵니다.
  4. 평가 엔진에서 모델을 로드하거나 네트워크를 만듭니다.
  5. 모델에 대한 일부 입력을 평가하고 해당 출력을 가져옵니다.
  6. 완료되면 모델을 삭제합니다.

EvalDll에서 제공하는 C++ API에 대한 자세한 내용은 EvalDll C++ API 페이지를 참조하세요.

Examples/Evaluation/LegacyEvalDll/CPPEvalClient 폴더에 있는 CPPEvalClient 프로그램은 이 평가 인터페이스의 사용을 보여 줍니다. 예제를 빌드하고 실행하는 방법은 EvalDll 예제 페이지를 참조하세요.

EvalDll C# 라이브러리 사용

CNTK 명명Cntk.Eval.Wrapper된 관리형(.Net) 라이브러리 래퍼를 제공합니다. 이 라이브러리는 네이티브 EvalDll 라이브러리를 래핑하고 관리되는 인터페이스를 노출합니다. 이 인터페이스는 몇 가지 편리한 메서드를 추가하여 네이티브 인터페이스와 동일한 기능을 제공합니다. 네이티브 라이브러리와 마찬가지로 이 라이브러리는 CPU(사용된 GPU 없음)를 사용하여만 평가를 수행할 수 있습니다. 라이브러리는 CLI/C++로 작성되므로 .Net(예: C#)과 네이티브 C++ 쪽 간에 브리지를 형성합니다.

EvalWrapper.DLL 제공하는 관리되는 API에 대한 자세한 내용은 EvalDll Managed API 페이지를 참조하세요.

관리되는 래퍼의 사용 패턴은 간단합니다.

using Microsoft.MSR.CNTK.Extensibility.Managed;
...
try
{
    using (var model = new IEvaluateModelManagedF())
    {
        // Load model
        model.CreateNetwork(...);
        model.Evaluate(...);
    }
}
catch (CNTKException ex)
{
...
}
catch (Exception ex)
{
...
}

CSEvalClient 프로젝트 내에서 C#에서 프로그래밍 방식 CNTK 모델 평가를 수행하는 몇 가지 가 있습니다. 예제를 빌드하고 실행하는 방법은 EvalDll 예제 페이지를 참조하세요.

NuGet 패키지

현재 nuget.org(CNTK 검색)에는 CNTK 평가 라이브러리에 대한 디버그 및 릴리스에 대한 네이티브 버전과 관리되는 버전(MKL만 사용하는 CPU)을 모두 제공하는 NuGet 패키지가 있습니다. NuGet 사용하면 CNTK Eval NuGet .Net 또는 Win32 프로젝트에 추가하고 API를 호출할 수 있습니다. CNTK 및 NuGet 시작하는 방법에 대한 자세한 내용은 NuGet 패키지 페이지를 참조하세요.

NuGet 패키지를 사용하지 않으려면 프로젝트에 대한 참조로 추가할 Cntk.Eval.Wrapper-<VERSION>.dll 수 있습니다. 이 경우 DLL 경로 Cntk.Eval.Wrapper 와 아래의 종속성이 애플리케이션에 대한 DLL의 검색 경로에 포함되어 있는지 확인하세요.

Windows 애플리케이션을 사용하여 EvalDll 라이브러리 배송

EvalDll은 Visual Studio 2015용 Visual C++ 재배포 가능 패키지 패키지를 애플리케이션이 실행될 시스템에 설치해야 합니다. 그리고 프로젝트 속성의 대상 플랫폼은 X64여야 합니다.

페이지에서는 CNTK 이진 파일의 이름을 지정하는 방법을 설명합니다.

애플리케이션이 EvalDll 라이브러리를 사용하는 경우 애플리케이션과 이러한 DLL을 배포해야 합니다.

  • Cntk.Eval-<VERSION>.dll
  • Cntk.Eval.Wrapper-<VERSION>.dll
  • Cntk.Math-<VERSION>.dll
  • libiomp5md.dll
  • mklml.dll

이러한 모든 DLL은 CNTK 이진 릴리스 버전에서 찾을 수 있습니다. CNTK 릴리스 페이지를 참조하세요.