Partager via


Évaluation EvalDLL sur Windows

La bibliothèque EvalDll sur Windows est fournie en tant que bibliothèque C++ et C#. Un package NuGet est également disponible sur nuget.org. Notez que Visual Studio 2015 Update 3 est obligatoire et que la plateforme cible de la propriété de projet doit être X64.

Utilisation de la bibliothèque EvalDll

La bibliothèque EvalDll active l’évaluation du modèle programmatique sur le processeur (LE GPU n’est pas pris en charge).
Le modèle d’utilisation de cette DLL est le suivant :

  1. Liez la bibliothèque d’importation Cntk.Eval-<VERSION>.lib à l’application. Veillez à utiliser le nom de fichier correct . Consultez le début de cet article.
  2. Inclure le fichier d’en-tête d’évaluation « Eval.h »
  3. Obtenir une instance du moteur d’évaluation spécifique au type de données du modèle (float ou double).
  4. Chargez le modèle (ou créez le réseau) dans le moteur d’évaluation.
  5. Évaluez une entrée par rapport au modèle et obtenez la sortie correspondante.
  6. Supprimez le modèle lorsque vous avez terminé.

Pour plus d’informations sur l’API C++ fournie par EvalDll, reportez-vous à la page de l’API C++ EvalDll .

Le programme CPPEvalClient situé dans le dossier Examples/Evaluation/LegacyEvalDll/CPPEvalClient illustre l’utilisation de cette interface d’évaluation. Consultez la page Exemples EvalDll pour savoir comment générer et exécuter des exemples.

Utilisation de la bibliothèque C# EvalDll

CNTK fournit un wrapper de bibliothèque managé (.Net) nommé Cntk.Eval.Wrapper. Cette bibliothèque encapsule la bibliothèque EvalDll native et expose une interface managée. Cette interface fournit les mêmes fonctionnalités que l’interface native, avec l’ajout de certaines méthodes pratiques. À la fois son équivalent natif, cette bibliothèque ne peut effectuer que des évaluations à l’aide de l’UC (aucun GPU utilisé). La bibliothèque est écrite en CLI/C++ et forme ainsi le pont entre .Net (par exemple, C#) et le côté C++ natif.

Pour plus d’informations sur l’API managée fournie par EvalWrapper.DLL, reportez-vous à la page API managée EvalDll .

Le modèle d’utilisation du wrapper managé est simple :

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

Il existe plusieurs exemples d’exécution d’une évaluation de modèle CNTK programmatique en C# dans le projet CSEvalClient. Consultez la page Exemples EvalDll pour savoir comment générer et exécuter des exemples.

Package NuGet

Il existe actuellement un package NuGet à nuget.org (recherchez CNTK) qui fournit à la fois les versions natives et managées de Debug et Release pour les bibliothèques d’évaluation CNTK (processeur uniquement à l’aide de MKL). Avec le NuGet il est possible d’ajouter simplement le CNTK Eval NuGet à un projet .Net ou Win32 et d’appeler les API. Reportez-vous à la page NuGet Package pour plus d’informations sur la prise en main des CNTK et des NuGet.

Si vous ne souhaitez pas utiliser NuGet package, vous pouvez ajouter Cntk.Eval.Wrapper-<VERSION>.dll comme référence à votre projet. Vérifiez dans ce cas que le chemin d’accès à la Cntk.Eval.Wrapper DLL et ses dépendances ci-dessous sont inclus dans le chemin de recherche des DLL pour votre application.

Expédition de la bibliothèque EvalDll avec votre application Windows

EvalDll nécessite l’installation du package Visual C++ Redistributable pour Visual Studio 2015 sur le système sur lequel votre application va s’exécuter. Et la plateforme cible dans la propriété de projet doit être X64.

Cette page décrit comment CNTK fichiers binaires sont nommés.

Si votre propre application utilise la bibliothèque EvalDll, vous devez distribuer ces DLL avec votre application :

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

Toutes ces DLL sont disponibles dans la version CNTK version de version binaire, consultez la page CNTK Versions.