Condividi tramite


Configurare CNTK in Windows

Se si vuole compilare manualmente CNTK dal codice sorgente in Windows usando Visual Studio 2017, questa pagina è disponibile per l'utente.

Se si sta cercando qualsiasi altro tipo di supporto per configurare un ambiente di compilazione CNTK o installare CNTK nel sistema, è consigliabile andare qui .

Nota

Questa pagina presuppone che si stia tentando di compilare il ramo master di CNTK.

Sistema operativo a 64 bit

CNTK richiede un'installazione di Windows a 64 bit. È stato testato il processo di compilazione su Windows 8.1, Windows 10 e Windows Server 2012 R2 e versioni successive. Gli altri ambienti non sono ufficialmente supportati. Per i problemi di compatibilità, controllare la configurazione di compilazione e test di produzione CNTK.

Variabili e componenti di ambiente

La compilazione di CNTK nel sistema richiede la definizione e la configurazione di varie variabili di ambiente. In questa pagina è disponibile una panoramica delle variabili di ambiente usate dalla build di Windows di CNTK. Questa pagina offre anche una panoramica dei componenti obbligatori e facoltativi per la compilazione di CNTK e il relativo percorso di installazione predefinito.

Visual Studio 2017

Installare Microsoft Visual Studio 2017 per Windows. Un collegamento al download è disponibile qui.

La versione community di Visual Studio 2017 è sufficiente per compilare CNTK.

Durante il processo di installazione, selezionare "sviluppo piattaforma UWP (Universal Windows Platform)", "Sviluppo di desktop.NET", "Sviluppo di applicazioni desktop con C++" e carichi di lavoro "Sviluppo Python":

im1

Inoltre, nella schermata dei singoli componenti assicurarsi di aggiungere "VC++ 2017 versione 15.4 v14.11 set di strumenti" e "Runtime visual C++ per UWP" all'installazione:

im1

Infine, aggiungere 'Windows 10 SDK (10.0.16299.0) per Desktop C++ [x86 e x64]':

im1

Installazione preesistente di Visual Studio 2017

È necessario avere il set di strumenti "VC++ 2017 versione 15.4 v14.11", "Runtime di Visual C++ per UWP" e "Windows 10 SDK (10.0.16299.0) per Desktop C++ [x86 e x64]" installato nel sistema. Per verificare l'apertura di Windows "Pannello di controllo -> Programmi -> Programmi e funzionalità" e selezionare "Visual Studio Community 2017" dall'elenco dei programmi installati. Verrà avviata di nuovo l'installazione di Visual Studio e sarà possibile assicurarsi che i componenti menzionati in precedenza siano installati nel sistema (vedere l'immagine precedente).

Nota

Se VS2017INSTALLDIR la variabile di ambiente non è stata impostata dal programma di installazione di Visual Studio, impostarla manualmente. La directory di installazione esatta dipende sia dalla versione (2017 in questo caso) che dall'offerta (Community, Enterprise e così via) di Visual Studio, in base al modello seguente: . C:\Program Files (x86)\Microsoft Visual Studio\<version>\<offering>

Per Visual Studio 2017 Enterprise Edition, eseguire:

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

Per Visual Studio 2017 Community Edition, eseguire:

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

Git

Git è necessario per usare la codebase CNTK. È possibile usare gli strumenti seguenti:

Integrazione nel repository GitHub CNTK

Si supponga di aver installato Git per Windows. Si supponga di aver installato Git usando le opzioni predefinite nel programma di installazione git (in particolare "Usare Git dal prompt dei comandi di Windows" e con l'opzione "Checkout Windows-style, commit UNIX-style line endings" al prompt "Configuring line endings" abilitato.

Creare un clone del codice sorgente CNTK nella c:\repos\cntk directory. Se si preferisce una posizione diversa, sarà necessario modificare i comandi di conseguenza.

Aprire una shell dei comandi di Windows standard ed eseguire questi comandi

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

In questo modo tutto il codice sorgente necessario per una compilazione standard viene inserito nel sistema. Se si prevede di apportare modifiche al codice CNTK, leggere le informazioni su Sviluppo e test.

Il modulo secondario Multiverso viene usato per abilitare DataParallelASGD per il training. Se non è necessario il supporto di DataParallelASGD, aggiungere la variabile di ambiente CNTK_ENABLE_ASGD e impostarne il valore su false. Ad esempio, eseguire questa operazione in un prompt cmd e quindi riaprire le shell CMD e Visual Studio per selezionare la modifica:

setx CNTK_ENABLE_ASGD false

MKL

La libreria matematica CNTK predefinita è Intel Math Kernel Library (Intel MKL).The default CNTK math library is the Intel Math Kernel Library (Intel MKL). Seguire questa pagina per installarla

MKL-DNN

  • Scaricare l'origine MKL-DNN e compilare con MKL_PATH come percorso di destinazione. Controllare le istruzioni di compilazione in Configurare MKL-DNN in Windows

  • Impostare la variabile MKL_PATH di ambiente sulla directory, ad esempio:

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

MS-MPI

Installare la versione 7 (7.0.12437.6) di Microsoft MPI (MS-MPI) da questa pagina di download, contrassegnata semplicemente come "Versione 7" nel titolo della pagina. Fare clic sul pulsante Scarica e quindi selezionare sia msmpisdk.msi che MSMpiSetup.exe.

Aumento priorità

Seguire questa procedura per installare la libreria Boost nel sistema:

  • Scaricare e installare Boost versione 1.60 (sono necessari i msvc-14.0 file binari) da questo percorso di download in Sourceforge.
  • Impostare la variabile BOOST_INCLUDE_PATH di ambiente sull'installazione di Boost, ad esempio:
    setx BOOST_INCLUDE_PATH c:\local\boost_1_60_0-msvc-14.0
  • Impostare la variabile BOOST_LIB_PATH di ambiente sulle librerie Boost, ad esempio:
    setx BOOST_LIB_PATH c:\local\boost_1_60_0-msvc-14.0\lib64-msvc-14.0
  • Per integrare il framework di test Boost in Visual Studio, è possibile installare uno strumento di esecuzione per i test Boost in Visual Studio da Visual Studio Gallery.

Protobuf

È necessaria una versione di Protobuf 3.1.0 compilata per CNTK. È possibile compilare questa versione manualmente o usare una versione già preparata (precompilata) di Protobuf 3.1.0 (descritta in questa pagina). Se si vuole creare la libreria Protobuf per CNTK nel sistema, è possibile trovare i dettagli qui

Scaricare il file ZIP contenente la versione precompilata di Protobuf per CNTK da questo percorso

Estrarre l'archivio in una cartella sul disco locale, ad esempio su C:\local\protobuf-3.1.0-vs15 e impostare la variabile PROTOBUF_PATH di ambiente che punta a tale posizione, ad esempio:

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

Pacchetti specifici della GPU

In questa sezione vengono descritti i pacchetti da configurare per consentire a CNTK di sfruttare GPU NVIDIA.

Se non si prevede di usare GPU con CNTK e si basa solo sulla CPU, è possibile passare direttamente alla sezione generale successiva. In caso contrario, passare a questa pagina.

Impostare la variabile CUDNN_PATH di ambiente che punta a tale posizione, ad esempio:

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

Impostare la variabile CUB_PATH di ambiente che punta a tale posizione, ad esempio:

    setx CUB_PATH c:\local\cub-1.7.4\

FACOLTATIVO SORSO.

Se si vuole sfruttare CNTK da Python, è necessario installare SWIG. SWIG è anche un requisito per compilare le librerie di valutazione CNTK (per C#/.NET o Java).

Scaricare la versione SWIG 3.0.10 da questo sito.

Estrarre l'archivio in una cartella sul disco locale, ad esempio su C:\local\swigwin-3.0.10 e impostare la variabile SWIG_PATH di ambiente che punta a tale posizione, ad esempio:

    setx SWIG_PATH C:\local\swigwin-3.0.10

Verifica rapida dell'installazione: se è stata seguita l'istruzione precedente e sono stati usati gli stessi percorsi, il comando dir C:\local\swigwin-3.0.10\swig.exe avrà esito positivo e mostrerà un file.

FACOLTATIVO OpenCV

CNTK 2.2 richiede l'installazione di open source Visione artificiale (OpenCV), ma è facoltativo per CNTK 2.3. Seguire questa pagina per altri passaggi.

Impostare la variabile di ambiente che punta alla cartella di compilazione OPENCV_PATH_V31 OpenCV, ad esempio

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

Verifica rapida dell'installazione: se è stata seguita l'istruzione precedente e sono stati usati gli stessi percorsi, il comando dir C:\local\Opencv3.1.0\build avrà esito positivo.

FACOLTATIVO zlib e libzip

Se si prevede di compilare il lettore di immagini CNTK , sono necessarie librerie zlib e libzip .

zlib e libzip

ZLib e LibZip sono distribuiti nel codice sorgente, sarà necessario ricompilare questi pacchetti. È anche possibile usare una versione precompilata creata per praticità (descritta in questa sezione). Per creare manualmente le librerie, sono disponibili istruzioni dettagliate qui

Scaricare il file ZIP contenente la versione precompilata della libreria di compressione libzip/zlib per CNTK da questo percorso

Estrarre l'archivio in una cartella sul disco locale, ad esempio su C:\local\zlib-vs15 e impostare la variabile ZLIB_PATH di ambiente che punta a tale posizione, ad esempio:

    setx ZLIB_PATH c:\local\zlib-vs15

Verifica rapida dell'installazione: se è stata seguita l'istruzione precedente e sono stati usati gli stessi percorsi, il comando dir C:\local\zlib-vs15\bin avrà esito positivo e visualizzerà un paio di DLL.

FACOLTATIVO Installazione di Anaconda Python

Se si prevede di compilare CNTK con il supporto python, installare SWIG se non è ancora stato fatto. Sarà anche necessario un ambiente Python. Per l'installazione predefinita di Python si usa Anaconda Python.

Se non è disponibile un'installazione di Anaconda: installare Anaconda Python per Windows. È possibile seguire la configurazione standard specificata nel programma di installazione (InstallationType=JustMe; AddToPath=No; RegisterPython=No). Nell'esempio seguente si presuppone che Python Anaconda3 4.1.1 sia stato installato in C:\local\Anaconda3-4.1.1-Windows-x86_64.

FACOLTATIVO Compilazione UWP CNTK

Nota

Novità in CNTK versione 2.1.

Se vuoi compilare la libreria di valutazione CNTK per la piattaforma UWP, devi seguire i passaggi di installazione aggiuntivi descritti qui.

Ambienti Python CNTK

CNTK supporta Python 2.7, Python 3.5 e Python 3.6. È consigliabile creare un ambiente dedicato nell'installazione di Python per usare CNTK. In questo modo CNTK e i pacchetti di supporto installati non influiranno su altri progetti Python. Sono disponibili diversi file (yml-files) contenenti la descrizione dei pacchetti Python necessari. I pacchetti si trovano nella directory all'interno del scripts\install\windows clone CNTK. Selezionare il file corrispondente alla versione di Python di destinazione.

Versione Python Nome file
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

Ad esempio, viene creato un ambiente Python 3.5 in un ambiente denominato cntk-py35. Se si vuole un nome di ambiente diverso, modificare i passaggi seguenti di conseguenza. Se si vuole creare un ambiente Python 2.7 o Python 3.6, modificare il nome del file YML in modo che corrisponda alla versione di Python che si intende usare.

Di seguito si presuppone che il codice sorgente CNTK sia stato clonato da GitHub nella directory c:\repos\cntk.

  • Per creare un nuovo ambiente conda (ad esempio cntk-py35) e attivarlo, eseguire i comandi seguenti dalla shell dei comandi di 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

Se si dispone di un ambiente ,ad esempio cntk-py35, è possibile aggiornarlo con i pacchetti necessari più recenti con i comandi seguenti:

    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

Variabili di ambiente CNTK per Python

Prima di avviare la compilazione di CNTK e compilare le librerie Python per CNTK, è necessario impostare/definire le variabili CNTK_PY.._PATH di ambiente e PYTHONPATH

CNTK_PY.. _PATH

Configurare le variabili di ambiente di compilazione per l'ambiente Python (scegliere almeno uno che si applica):

    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]

Se l'installazione è stata seguita finora, ciò significa

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

Il valore per le CNTK_PY36_PATHvariabili di ambiente , CNTK_PY35_PATHo CNTK_PY27_PATH può essere determinato eseguendo in conda ..activate cmd.exe [name-or-path-of-your-environment]

PYTHONPATH

PYTHONPATH imposta i percorsi delle posizioni in cui Python cercherà i moduli da importare. Se si compila CNTK, è necessario aggiungere il percorso di output del processo di compilazione a questa variabile di ambiente. Se si clona CNTK in c:\repos\cntk questa operazione,

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

FACOLTATIVO Java

Per compilare le associazioni Java per la libreria di valutazione CNTK, installare lo strumento SWIG se non è ancora stato fatto. È inoltre necessario un Java Development Kit (JDK). Attualmente si usa JDK 8 a 64 bit (JDK versione 1.8.0_131).

Impostare la variabile di ambiente JAVA_HOME in modo che punti alla directory dell'installazione di Java. L'impostazione seguente presuppone che JDK 1.8.0_131 sia stato installato in C:\local\jdk1.8.0_131:

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

Disinstallare le versioni precedenti di CNTK

Se in precedenza è stata installata una versione del pacchetto Python CNTK nel computer, disinstallarla rimuovendo prima tutti i percorsi correlati ANTK nella variabile di ambiente PYTHONPATH. Do: echo %PYTHONPATH% per visualizzare il valore corrente e quindi usare il setx comando per impostare PYTHONPATH in modo che i percorsi correlati a CNTK non siano più disponibili. Se questo rende PYTHONPATH vuoto, è così.

Eseguire la disinstallazione: pip uninstall cntk


Questa operazione conclude la parte di installazione. Si continuerà a creare CNTK


Compilazione di CNTK

Attualmente esiste un problema di compatibilità tra CUDA 9 e VCTools predefinito in Visual Studio 2017. CNTK richiede VCTools 14.11 per la compilazione con CUDA 9. A tale scopo, eseguire queste operazioni:

  • Aprire una finestra del prompt dei comandi
  • chiamare "%VS2017INSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.11

In questo modo VCTools verrà impostata sulla versione compatibile con CUDA 9. Dal prompt dei comandi avviare CNTK.sln nella radice del progetto CNTK clonato da GitHub. Se CNTK.sln viene eseguito con la versione CUDA9 non compatibile predefinita di VCTools, si verificano errori di compilazione come "1>c:\programmi\nvidia gpu computing toolkit\cuda\v9.0\include\crt/host_config.h(133): errore irreversibile C1189: #error: -- versione di Microsoft Visual Studio non supportata! Sono supportate solo le versioni 2012, 2013, 2015 e 2017!"

Se è stata appena modificata e la variabile di ambiente, è consigliabile chiudere qualsiasi istanza di Visual Studio già aperta. In caso contrario, il contenuto delle variabili di ambiente modificate non verrà riflessa all'interno di Visual Studio.

  • Fare clic con il pulsante destro del mouse sulla soluzione CNTK in Esplora soluzioni e scegliereProperties
  • Nella finestra aperta selezionare Configuration Properties e premere il Configuration Manager... pulsante
  • In Configuration Manager selezionare la configurazione desiderata:
    • Debug o versione
    • SOLO CPU o GPU. Le configurazioni solo CPU vengono denominate in modo esplicito. Tutte le altre configurazioni implicano l'utilizzo della GPU( ovvero Releaserelease. Modalità abilitata per GPU)
    • È consigliabile selezionare sempre configurazioni solo CPU se non sono stati installati i componenti necessari per le configurazioni GPU

Compilare la soluzione CNTK. I componenti creati dal processo di compilazione dipendono dai prerequisiti installati. Per informazioni dettagliate, consultare le variabili di ambiente Windows in dettaglio.

Se si compilano moduli Python, tenere presente quanto segue:

  • I moduli Python vengono creati solo nella Release configurazione
  • Verrà compilato il modulo Python CNTK all'interno bindings\python\cntk e verrà generato anche un pacchetto (.whl) in una sottocartella Python della cartella di output della compilazione (ad esempio, x64\Release\Python)
  • Assicurarsi che il percorso includa la cartella di output della compilazione ,ad esempio x64\Release, e che PYTHONPATH includa la bindings\python directory . Ciò è contrario alla configurazione illustrata per l'installazione del pacchetto Pip. In questo caso si caricherà il modulo CNTK dal clone del repository CNTK, non come pacchetto installato nell'ambiente Python, quindi anche la differenza nella configurazione PYTHONPATHdi .

Test delle funzionalità di compilazione CNTK

Per assicurarsi che CNTK funzioni correttamente nel sistema, è possibile eseguire rapidamente un esempio dall'esercitazione Hello World - Logistic Regression. Questo esempio esegue il training di una rete semplice e può essere indirizzato all'uso della CPU o della GPU, che consente di garantire rapidamente il corretto funzionamento di CNTK.

Di seguito si presuppone che il repository CNTK venga clonato in c:\repos\cntk e build\x64\release sia stato usato come sottodirectory per la build (Release).

  • Aprire una finestra del prompt dei comandi
  • Specificare il percorso dei file binari CNTK (tramite variabile di ambiente o per la sessione del prompt dei comandi usando il primo comando seguente) e passare alla Tutorials\HelloWorld-LogisticRegression directory:
set PATH=C:\repos\cntk\x64\release;%PATH%
cd C:\repos\cntk\Tutorials\HelloWorld-LogisticRegression

Provare prima di tutto l'esempio:

cntk configFile=lr_bs.cntk makeMode=false

Se l'esempio viene eseguito, ad esempio se non sono presenti messaggi di errore, si otterrà prima un output correlato alla lettura della configurazione, seguito dall'output del training di rete effettivo.

Tentativo di CNTK con GPU

Se è stato compilato CNTK per l'utilizzo della GPU, provare a usare la GPU eseguendo il comando seguente:

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

All'inizio dell'output dovrebbe essere visualizzata una riga che conferma che è stata usata una GPU:

Model has 9 nodes. Using GPU 0.

Si noti che l'ID GPU può essere diverso. Il deviceId parametro definisce il processore da usare per il calcolo.

  • deviceId=-1 significa usare la CPU. Valore predefinito
  • deviceId=X dove X è un intero >=0 significa usare GPU X, ad esempio deviceId=0 significa GPU 0 e così via.
  • deviceId=auto significa usare GPU, selezionare automaticamente GPU

Tentativo dell'API Python CNTK

Si presuppone che sia stato creato un ambiente Python CNTK(tramite lo script di installazione o manualmente). Aprire un prompt dei comandi e attivare l'ambiente Python CNTK, ad esempio eseguendo

activate cntk-py35

Come modifica rapida del test nella Tutorials\NumpyInterop cartella ed eseguire python FeedForwardNet.py. Dopo il training, verrà visualizzato un output simile al seguente:

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

Debug del codice sorgente CNTK in Visual Studio

  • Per usare Python Tools, CNTK e Visual Studio, vedere qui
  • Per eseguire il debug di BrainScript in CNTK con Visual Studio, seguire questa procedura.

Contributo al codice CNTK

Se si pianificano modifiche al codice, è necessario leggere le informazioni su Sviluppo e test.