Compartilhar via


Avaliação de EvalDLL em Windows

A biblioteca EvalDll no Windows é fornecida como biblioteca C++ e C#. Um pacote de NuGet também está disponível em nuget.org. Observe que Visual Studio atualização 3 de 2015 é necessária e que a plataforma de destino na propriedade do projeto deve ser X64.

Usando a biblioteca EvalDll

A biblioteca EvalDll habilita a avaliação de modelo programático na CPU (não há suporte para GPU).
O padrão de uso para essa DLL é o seguinte:

  1. Vincule a Cntk.Eval-<VERSION>.lib biblioteca de importação ao aplicativo. Certifique-se de usar o nome de arquivo correto – consulte o início deste artigo.
  2. Incluir o arquivo de cabeçalho de avaliação "Eval.h"
  3. Obter uma instância do mecanismo de avaliação específica para o tipo de dados do modelo (float ou double).
  4. Carregue o modelo (ou crie a rede) no mecanismo de avaliação.
  5. Avalie algumas entradas em relação ao modelo e obtenha a saída correspondente.
  6. Descarte o modelo quando terminar.

Para obter detalhes sobre a API C++ fornecida pelo EvalDll, consulte a página de API C++ do EvalDll .

O programa CPPEvalClient localizado na pasta Examples/Evaluation/LegacyEvalDll/CPPEvalClient demonstra o uso dessa interface de avaliação. Consulte a página Exemplos de EvalDll para saber como criar e executar exemplos.

Usando a biblioteca EvalDll C#

CNTK fornece um wrapper de biblioteca gerenciado (.Net) chamado Cntk.Eval.Wrapper. Essa biblioteca encapsula a biblioteca EvalDll nativa e expõe uma interface gerenciada. Essa interface fornece a mesma funcionalidade que a interface nativa, com a adição de alguns métodos de conveniência. Da mesma forma que sua contraparte nativa, essa biblioteca só pode executar avaliações usando a CPU (nenhuma GPU usada). A biblioteca é escrita na CLI/C++ e, portanto, forma a ponte entre .Net (por exemplo, C#) e o lado nativo do C++.

Para obter detalhes sobre a API gerenciada fornecida pelo EvalWrapper.DLL, consulte a página de API Gerenciada do EvalDll .

O padrão de uso do wrapper gerenciado é simples:

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

Há vários exemplos de execução de uma avaliação de modelo de CNTK programática em C# dentro do projeto CSEvalClient. Consulte a página Exemplos de EvalDll para saber como criar e executar exemplos.

Pacote NuGet

Atualmente, há um pacote NuGet em nuget.org (pesquisa por CNTK) que fornece as versões nativas e gerenciadas para depuração e versão para as bibliotecas de avaliação de CNTK (CPU usando apenas MKL). Com o NuGet é possível simplesmente adicionar o CNTK Eval NuGet a um projeto .Net ou Win32 e chamar as APIs. Consulte a página NuGet Pacote para obter detalhes sobre como começar a usar CNTK e NuGet.

Se você não quiser usar NuGet Pacote, poderá adicionar Cntk.Eval.Wrapper-<VERSION>.dll como referência ao seu projeto. Nesse caso, verifique se o caminho para a Cntk.Eval.Wrapper DLL e suas dependências abaixo estão incluídos no caminho de pesquisa de DLLs para seu aplicativo.

Enviando a Biblioteca EvalDll com seu aplicativo Windows

O EvalDll requer que o pacote Pacote Redistribuível do Visual C++ para Visual Studio 2015 seja instalado no sistema em que seu aplicativo será executado. E a plataforma de destino na propriedade do projeto deve ser X64.

Esta página descreve como CNTK arquivos binários são nomeados.

Se seu próprio aplicativo usa a biblioteca EvalDll, você precisa distribuir essas DLLs com seu aplicativo:

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

Todas essas DLLs podem ser encontradas na versão de versão binária CNTK, consulte a página CNTK Versões.