Partager via


Configurer CNTK sur Windows

Si vous souhaitez générer manuellement CNTK à partir du code source sur Windows à l’aide de Visual Studio 2017, cette page vous convient.

Si vous recherchez un autre type de prise en charge pour configurer un environnement de build CNTK ou installer CNTK sur votre système, vous devez aller ici à la place.

Notes

Cette page part du principe que vous essayez de générer la branche principale de CNTK.

Système d’exploitation 64 bits

CNTK nécessite une installation Windows 64 bits. Nous avons testé le processus de génération sur Windows 8.1, Windows 10 et Windows Server 2012 R2 et versions ultérieures. Les autres environnements ne sont pas officiellement pris en charge. Pour les problèmes de compatibilité, vérifiez la configuration de build et de test CNTK Production.

Variables et composants d’environnement

La génération de CNTK sur votre système nécessite la définition et la configuration de différentes variables d’environnement. Vous trouverez une vue d’ensemble des variables d’environnement utilisées par la build Windows de CNTK sur cette page. De plus, cette page fournit une vue d’ensemble des composants obligatoires et facultatifs pour la génération de CNTK ainsi que leur emplacement d’installation par défaut.

Visual Studio 2017

Installez Microsoft Visual Studio 2017 pour Windows. Vous trouverez ici un lien vers le téléchargement.

La version community de Visual Studio 2017 est suffisante pour générer CNTK.

Pendant le processus d’installation, sélectionnez « plateforme Windows universelle développement », « Développement de bureau .NET », « Développement Desktop avec C++ » et charges de travail « Développement Python » :

im1

En outre, sur l’écran des composants individuels, veillez à ajouter « VC++ 2017 version 15.4 v14.11 toolset » et « Visual C++ runtime pour UWP » à votre installation :

im1

Enfin, ajoutez « Windows 10 SDK (10.0.16299.0) pour Desktop C++ [x86 et x64] » :

im1

Installation préexistante de Visual Studio 2017

Vous devez disposer de l’ensemble d’outils « VC++ 2017 version 15.4 v14.11 », « Runtime Visual C++ pour UWP » et « Windows 10 SDK (10.0.16299.0) pour desktop C++ [x86 et x64] » installés sur votre système. Pour ouvrir Windows « Panneau de configuration -> Programmes -> Programmes et fonctionnalités », sélectionnez « Visual Studio Community 2017 » dans la liste des programmes installés. Cette opération démarre à nouveau la configuration de Visual Studio et vous permet de vous assurer que les composants mentionnés ci-dessus sont installés sur votre système (voir l’image ci-dessus).

Notes

Si VS2017INSTALLDIR la variable d’environnement n’a pas été définie par le programme d’installation de Visual Studio, définissez-la manuellement. Le répertoire d’installation exact dépend de la version (2017 dans ce cas) et de l’offre (Communauté, Entreprise, etc.) de Visual Studio, selon le modèle suivant : C:\Program Files (x86)\Microsoft Visual Studio\<version>\<offering>

Pour Visual Studio 2017 Enterprise Edition, exécutez :

setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise"

Pour Visual Studio 2017 Community Edition, exécutez :

setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community"

Git

Git est nécessaire pour travailler avec la base de code CNTK. Vous pouvez utiliser les outils suivants :

  • Git pour Windows. Il s’agit du client de ligne de commande standard pour Git, que nous allons utiliser sur cette page pour décrire l’inscription dans le référentiel CNTK.

  • Un client Git est disponible dans le cadre de l’installation de Visual Studio 2017. Lisez le billet de blog Microsoft Application Lifecycle Management sur l’utilisation du client Git intégré.

  • Client GitHub Desktop

Inscription dans le dépôt GitHub CNTK

Ici, nous partons du principe que vous avez installé Git pour Windows. Nous partons du principe que vous avez installé Git à l’aide des options par défaut dans le programme d’installation de Git (en particulier « Utiliser Git à partir de l’invite de commandes Windows » et l’option « Extraire le style Windows, valider les fins de ligne » à l’invite « Configuration des terminaisons de ligne » activée.

Créez un clone du code source CNTK dans c:\repos\cntk le répertoire. Si vous préférez un autre emplacement, vous devez ajuster les commandes en conséquence.

Ouvrez un interpréteur de commandes Windows standard et exécutez cette commande

c: && md \repos && cd \repos
git clone --recursive https://github.com/Microsoft/cntk
cd cntk

Cela place tout le code source requis pour une build standard sur votre système. Si vous envisagez d’apporter des modifications au code CNTK, vous devez lire les informations sur le développement et le test.

Le sous-module Multiverso est utilisé pour activer DataParallelASGD pour l’entraînement. Si vous n’avez pas besoin de la prise en charge de DataParallelASGD, ajoutez la variable d’environnement CNTK_ENABLE_ASGD et définissez sa valeur sur false. Par exemple, exécutez cette opération dans une invite CMD, puis rouvrez vos interpréteurs de commandes CMD et Visual Studio pour récupérer la modification :

setx CNTK_ENABLE_ASGD false

MKL

La bibliothèque mathématique CNTK par défaut est la bibliothèque Intel Math Kernel Library (Intel MKL). Suivez cette page pour l’installer

MKL-DNN

  • Téléchargez la source MKL-DNN et générez avec MKL_PATH en tant que chemin cible. Vérifier les instructions de build dans Le programme d’installation de MKL-DNN sur Windows

  • Définissez la variable MKL_PATH d’environnement sur le répertoire, par exemple :

    setx MKL_PATH c:\local\mklml-mkldnn-0.14

MS-MPI

Installez la version 7 (7.0.12437.6) de Microsoft MPI (MS-MPI) à partir de cette page de téléchargement, marquée simplement comme « Version 7 » dans le titre de la page. Cliquez sur le bouton Télécharger, puis sélectionnez les deux msmpisdk.msi et MSMpiSetup.exe.

Boost (Promouvoir)

Procédez comme suit pour installer la bibliothèque Boost sur votre système :

  • Téléchargez et installez Boost version 1.60 (vous avez besoin des msvc-14.0 fichiers binaires) à partir de cet emplacement de téléchargement sur Sourceforge.
  • Définissez la variable BOOST_INCLUDE_PATH d’environnement sur votre installation Boost, par exemple :
    setx BOOST_INCLUDE_PATH c:\local\boost_1_60_0-msvc-14.0
  • Définissez la variable BOOST_LIB_PATH d’environnement sur les bibliothèques Boost, par exemple :
    setx BOOST_LIB_PATH c:\local\boost_1_60_0-msvc-14.0\lib64-msvc-14.0
  • Pour intégrer l’infrastructure de test Boost dans Visual Studio, vous pouvez installer un exécuteur pour les tests Boost dans Visual Studio à partir de la galerie Visual Studio.

Protobuf

Vous avez besoin d’une version de Protobuf 3.1.0 compilée pour CNTK. Vous pouvez compiler cette version par vous-même ou utiliser une version déjà préparée (précompilée) de Protobuf 3.1.0 (décrite sur cette page). Si vous souhaitez générer la bibliothèque Protobuf pour CNTK sur votre système, vous trouverez les détails ici

Télécharger le fichier ZIP contenant la version précompilée de Protobuf pour CNTK à partir de cet emplacement

Extrayez l’archive dans un dossier sur votre disque local, par exemple, vers C:\local\protobuf-3.1.0-vs15 et définissez la variable PROTOBUF_PATH d’environnement pointant vers cet emplacement, par exemple :

    setx PROTOBUF_PATH c:\local\protobuf-3.1.0-vs15

Packages spécifiques au GPU

Cette section décrit les packages que vous devez configurer pour que CNTK tire parti des GPU NVIDIA.

Si vous n’envisagez pas d’utiliser de GPU avec CNTK et que vous vous appuyerez uniquement sur le processeur, vous pouvez passer directement à la section générale suivante. Sinon, passez à cette page.

Définissez la variable CUDNN_PATH d’environnement pointant vers cet emplacement, par exemple :

    setx CUDNN_PATH C:\local\cudnn-9.0-v7.0\cuda

Définissez la variable CUB_PATH d’environnement pointant vers cet emplacement, par exemple :

    setx CUB_PATH c:\local\cub-1.7.4\

FACULTATIF. SWIG.

Si vous souhaitez tirer parti de CNTK à partir de Python, vous devez installer SWIG. SWIG est également nécessaire pour générer les bibliothèques d’évaluation CNTK (pour C#/.NET ou Java).

Téléchargez la version SWIG 3.0.10 à partir de ce site.

Extrayez l’archive dans un dossier sur votre disque local, par exemple, vers C:\local\swigwin-3.0.10 et définissez la variable SWIG_PATH d’environnement pointant vers cet emplacement, par exemple :

    setx SWIG_PATH C:\local\swigwin-3.0.10

Vérification rapide de l’installation : si vous avez suivi l’instruction ci-dessus et utilisé les mêmes chemins, la commande dir C:\local\swigwin-3.0.10\swig.exe réussit et affiche un fichier.

FACULTATIF. OpenCV

CNTK 2.2 nécessite l’installation d’Open Source Vision par ordinateur (OpenCV), mais elle est facultative pour CNTK 2.3. Suivez cette page pour obtenir d’autres étapes.

Définissez la variable OPENCV_PATH_V31 d’environnement pointant vers le dossier de build OpenCV, par exemple

setx OPENCV_PATH_V31 c:\local\Opencv3.1.0\build

Vérification rapide de l’installation : si vous avez suivi l’instruction ci-dessus et utilisé les mêmes chemins, la commande dir C:\local\Opencv3.1.0\build réussit.

FACULTATIF. zlib et libzip

Si vous envisagez de générer le lecteur d’images CNTK , vous avez besoin de bibliothèques zlib et libzip .

zlib et libzip

Les fichiers ZLib et LibZip sont distribués dans le code source. Vous devez recompiler ces packages. Vous pouvez également utiliser une version précompilée que nous avons créée pour votre commodité (décrite dans cette section). Pour créer vous-même les bibliothèques, vous trouverez des instructions détaillées ici

Télécharger le fichier ZIP contenant la version précompilée de la bibliothèque de compression libzip/zlib pour CNTK à partir de cet emplacement

Extrayez l’archive dans un dossier sur votre disque local, par exemple, vers C:\local\zlib-vs15 et définissez la variable ZLIB_PATH d’environnement pointant vers cet emplacement, par exemple :

    setx ZLIB_PATH c:\local\zlib-vs15

Vérification de l’installation rapide : si vous avez suivi l’instruction ci-dessus et utilisé les mêmes chemins, la commande dir C:\local\zlib-vs15\bin réussit et affiche quelques DLL.

FACULTATIF. Installation d’Anaconda Python

Si vous envisagez de générer CNTK avec la prise en charge de Python, installez SWIG si vous ne l’avez pas encore fait. En outre, vous aurez besoin d’un environnement Python. Nous utilisons Anaconda Python pour notre installation Python par défaut.

Si vous n’avez pas d’installation Anaconda : installez Anaconda Python pour Windows. Vous pouvez suivre la configuration standard donnée dans le programme d’installation (InstallationType=JustMe; AddToPath=No; RegisterPython=No). Dans les éléments suivants, nous partons du principe que vous avez installé Python Anaconda3 4.1.1 dans C:\local\Anaconda3-4.1.1-Windows-x86_64.

FACULTATIF. CNTK UWP Build

Notes

Nouveautés de CNTK version 2.1.

Si vous souhaitez générer la bibliothèque d’évaluation CNTK pour UWP, vous devez suivre les étapes d’installation supplémentaires décrites ici.

Environnements Python CNTK

CNTK prend en charge Python 2.7, Python 3.5 et Python 3.6. Nous vous recommandons de créer un environnement dédié dans votre installation Python pour utiliser CNTK. Ainsi, CNTK et les packages de prise en charge installés n’ont aucun impact sur un autre projet Python. Nous fournissons plusieurs fichiers (yml-files) contenant la description des packages Python requis. Les packages se trouvent dans le répertoire à l’intérieur scripts\install\windows de votre clone CNTK. Sélectionnez le fichier correspondant à votre version cible de Python.

Version Python Nom de fichier
Python 2.7 conda-windows-cntk-py27-environment.yml
Python 3.5 conda-windows-cntk-py35-environment.yml
Python 3.6 conda-windows-cntk-py36-environment.yml

Par exemple, nous créons un environnement Python 3.5 dans un environnement nommé cntk-py35. Si vous souhaitez un autre nom d’environnement, ajustez les étapes suivantes en conséquence. Si vous souhaitez créer un environnement Python 2.7 ou Python 3.6, ajustez le nom du YML pour qu’il corresponde à la version de Python que vous envisagez d’utiliser.

L’exemple suivant part du principe que vous avez cloné le code source CNTK à partir de GitHub dans le répertoire c:\repos\cntk.

  • Pour créer un environnement conda (par exemple cntk-py35) et l’activer, exécutez les commandes suivantes à partir de l’interpréteur de commandes Windows :
    cd C:\local\Anaconda3-4.1.1-Windows-x86_64\scripts
    conda env create --file c:\repos\cntk\scripts\install\windows\conda-windows-cntk-py35-environment.yml  --name cntk-py35
    activate C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35

Si vous avez un environnement (par exemple cntk-py35) vous pouvez le mettre à jour avec les packages requis les plus récents avec les commandes suivantes :

    cd C:\local\Anaconda3-4.1.1-Windows-x86_64\scripts
    conda env update --file c:\repos\cntk\scripts\install\windows\conda-windows-cntk-py35-environment.yml --name cntk-py35
    activate C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35

Variables d’environnement CNTK pour Python

Avant de commencer la génération de CNTK et de générer les bibliothèques Python pour CNTK, vous devez définir/définir des variables CNTK_PY.._PATH d’environnement et PYTHONPATH

CNTK_PY.. _PATH

Configurez des variables d’environnement de build pour votre environnement Python (choisissez au moins une variable qui s’applique) :

    setx CNTK_PY36_PATH [paths for your Python 3.6 environment]
    setx CNTK_PY35_PATH [paths for your Python 3.5 environment]
    setx CNTK_PY27_PATH [paths for your Python 2.7 environment]

Si vous avez suivi l’installation jusqu’à présent, cela signifierait

    setx CNTK_PY35_PATH C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35

La valeur des variables d’environnement CNTK_PY36_PATHCNTK_PY35_PATHou , peut CNTK_PY27_PATH être déterminée en exécutantconda ..activate cmd.exe [name-or-path-of-your-environment]

PYTHONPATH

PYTHONPATH définit les chemins d’accès aux emplacements où Python recherche les modules à importer. Si vous générez CNTK, vous devez ajouter le chemin de sortie du processus de génération à cette variable d’environnement. Si vous avez cloné CNTK dans c:\repos\cntk ce sera

    setx PYTHONPATH c:\repos\cntk\bindings\python;%PYTHONPATH%

FACULTATIF. Java

Pour générer les liaisons Java pour la bibliothèque d’évaluation CNTK, installez l’outil SWIG si vous ne l’avez pas encore fait. En outre, un kit de développement Java (JDK) est requis. Actuellement, nous utilisons JDK 8 64 bits (JDK version 1.8.0_131).

Définissez la variable d’environnement JAVA_HOME pour pointer vers le répertoire de l’installation de Java. Le paramètre suivant part du principe que vous avez installé JDK 1.8.0_131 sur C:\local\jdk1.8.0_131 :

    setx JAVA_HOME "c:\local\jdk1.8.0_131"

Désinstaller les versions précédentes de CNTK

Si vous avez déjà installé une version du package Python CNTK sur votre ordinateur, désinstallez-le en supprimant d’abord les chemins d’accès associés À CNTK dans la variable d’environnement PYTHONPATH. Faire : echo %PYTHONPATH% pour afficher sa valeur actuelle, puis utilisez la setx commande pour définir PYTHONPATH afin que les chemins associés À CNTK soient supprimés. Si cela rend PYTHONPATH vide, soyez-le.

Effectuez la désinstallation : pip uninstall cntk


Cela conclut la partie installation. Poursuivons la génération de CNTK


Génération de CNTK

Il existe actuellement un problème de compatibilité entre CUDA 9 et VCTools par défaut dans Visual Studio 2017. CNTK nécessite VCTools 14.11 pour générer avec CUDA 9. Pour ce faire :

  • Ouvrir une invite de commandes
  • appelez « %VS2017INSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat » amd64 -vcvars_ver=14.11

Cela définit VCTools sur la version compatible CUDA 9. À partir de l’invite de commandes, démarrez CNTK.sln à la racine du projet CNTK cloné à partir de GitHub. Si CNTK.sln s’exécute avec la version CUDA9 incompatible par défaut de VCTools, il y aura des erreurs de génération telles que « 1>c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/host_config.h(133) : erreur irrécupérable C1189 : #error : -- version de Microsoft Visual Studio non prise en charge ! Seules les versions 2012, 2013, 2015 et 2017 sont prises en charge !

Si vous venez de modifier et de modifier la variable d’environnement, vous devez fermer n’importe quelle instance De Visual Studio déjà ouverte, sinon le contenu des variables d’environnement modifiées ne sera pas reflété dans Visual Studio.

  • Cliquez avec le bouton droit sur la solution CNTK dans Explorateur de solutions, puis sélectionnezProperties
  • Dans la fenêtre ouverte, sélectionnez Configuration Properties et appuyez Configuration Manager... sur le bouton
  • Dans Configuration Manager sélectionnez la configuration souhaitée :
    • Déboguer ou libérer
    • GPU ou PROCESSEUR uniquement. Les configurations de processeur uniquement sont explicitement nommées. Toutes les autres configurations impliquent l’utilisation du GPU (c’est-à-dire Releasela mise en production. Mode compatible GPU)
    • Vous devez toujours sélectionner des configurations processeur uniquement si vous n’avez PAS installé les composants requis pour les configurations GPU

Générez la solution CNTK. Les composants créés par le processus de génération dépendent des conditions préalables que vous avez installées. Pour plus d’informations, la page détaillant les variables d’environnement Windows doit être consultée.

Si vous générez des modules Python, notez :

  • Les modules Python sont créés uniquement dans la Release configuration
  • Cela génère le module Python CNTK à l’intérieur bindings\python\cntk et produit également un package (.whl) dans un sous-dossier Python de votre dossier de sortie de build (par exemple, x64\Release\Python)
  • Vérifiez que votre chemin d’accès inclut le dossier de sortie de build (par exemple), x64\Releaseet cela PYTHONPATH inclut le bindings\python répertoire. Cela est contraire à la configuration indiquée pour l’installation du package Pip. Ici, nous allons charger le module CNTK à partir du clone du référentiel CNTK, et non pas en tant que package installé dans votre environnement Python, donc aussi la différence de configuration PYTHONPATH.

Test de la fonctionnalité de génération CNTK

Pour vous assurer que CNTK fonctionne correctement dans votre système, vous pouvez rapidement exécuter un exemple à partir du didacticiel Hello World - Régression logistique. Cet exemple entraîne un réseau simple et peut être dirigé vers l’utilisation de l’UC ou du GPU, ce qui permet de s’assurer rapidement que CNTK fonctionne correctement.

Ci-dessous, nous partons du principe que le référentiel CNTK est cloné c:\repos\cntk et build\x64\release qu’il a été utilisé comme sous-répertoire pour la build (Release).

  • Ouvrir une invite de commandes
  • Fournissez le chemin d’accès aux fichiers binaires CNTK (via la variable d’environnement ou pour la session d’invite de commandes à l’aide de la première commande ci-dessous) et passez au Tutorials\HelloWorld-LogisticRegression répertoire :
set PATH=C:\repos\cntk\x64\release;%PATH%
cd C:\repos\cntk\Tutorials\HelloWorld-LogisticRegression

Essayez d’abord l’exemple :

cntk configFile=lr_bs.cntk makeMode=false

Si l’exemple s’exécute, c’est-à-dire s’il n’y a pas de messages d’erreur, vous obtenez une sortie liée en premier à la lecture de la configuration, suivie de la sortie de l’entraînement réseau réel.

Essayer CNTK avec GPU

Si vous avez créé CNTK pour l’utilisation du GPU, essayez d’utiliser gpu en exécutant la commande suivante :

cntk configFile=lr_bs.cntk makeMode=false deviceId=auto

Près du début de la sortie, vous devez voir une ligne confirmant qu’un GPU a été utilisé :

Model has 9 nodes. Using GPU 0.

Notez que l’ID GPU peut être différent. Le deviceId paramètre définit le processeur à utiliser pour le calcul.

  • deviceId=-1 signifie utiliser l’UC. Valeur par défaut
  • deviceId=X où X est un entier >=0 signifie utiliser GPU X, c’est-à-dire deviceId=0 gpu 0, etc.
  • deviceId=auto signifie utiliser GPU, sélectionner le GPU automatiquement

Essayer l’API Python CNTK

Nous supposons que vous avez créé un environnement Python CNTK (via le script d’installation ou manuellement. Ouvrez une invite de commandes et activez votre environnement Python CNTK, par exemple, en exécutant

activate cntk-py35

En tant que changement rapide dans le Tutorials\NumpyInterop dossier et exécutez python FeedForwardNet.py. Après l’entraînement, vous devez voir une sortie similaire à celle-ci :

Finished Epoch [1]: loss = 0.297748 * 25600 2.383s (10742.8 samples per second)
 error rate on an unseen minibatch 0.040000

Débogage du code source CNTK dans Visual Studio

  • Si vous souhaitez utiliser Python Tools, CNTK et Visual Studio, voir ici
  • Pour déboguer BrainScript dans CNTK avec Visual Studio, suivez les étapes ci-dessous.

Contribution au code CNTK

Si vous envisagez de modifier le code, vous devez lire les informations sur le développement et le test.