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":
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:
Infine, aggiungere 'Windows 10 SDK (10.0.16299.0) per Desktop C++ [x86 e x64]':
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:
Git per Windows. Si tratta del client della riga di comando standard per Git, che verrà usato in questa pagina per descrivere l'integrazione nel repository CNTK.
Un client Git è disponibile come parte dell'installazione di Visual Studio 2017. Leggere il post di blog Microsoft Application Lifecycle Management sull'uso del client Git predefinito.
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_PATH
variabili di ambiente , CNTK_PY35_PATH
o 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 scegliere
Properties
- Nella finestra aperta selezionare
Configuration Properties
e premere ilConfiguration 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
Release
release. 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 sottocartellaPython
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 chePYTHONPATH
includa labindings\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 configurazionePYTHONPATH
di .
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 esempiodeviceId=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.