CNTK instellen in Windows
Als u CNTK handmatig wilt bouwen vanuit broncode in Windows met Visual Studio 2017, is deze pagina voor u.
Als u op zoek bent naar andere soorten ondersteuning voor het instellen van een CNTK-buildomgeving of het installeren van CNTK op uw systeem, moet u hierheen gaan.
Notitie
Op deze pagina wordt ervan uitgegaan dat u de hoofdvertakking van CNTK probeert te bouwen.
64-bits besturingssysteem
CNTK vereist een 64-bits Windows-installatie. We hebben het buildproces getest op Windows 8.1, Windows 10 en Windows Server 2012 R2 en hoger. Andere omgevingen worden niet officieel ondersteund. Controleer de configuratie van CNTK Production Build en Test voor compatibiliteitsproblemen.
Omgevingsvariabelen en -onderdelen
Voor het bouwen van CNTK op uw systeem is de definitie en configuratie van verschillende omgevingsvariabelen vereist. Op deze pagina vindt u een overzicht van omgevingsvariabelen die worden gebruikt door de Windows-build van CNTK. Daarnaast geeft deze pagina een overzicht van vereiste en optionele onderdelen voor het bouwen van CNTK en de standaardinstallatielocatie.
Visual Studio 2017
Installeer Microsoft Visual Studio 2017 voor Windows. Hier vindt u een koppeling naar de download.
De communityversie van Visual Studio 2017 is voldoende om CNTK te bouwen.
Selecteer tijdens het installatieproces 'Universeel Windows-platform ontwikkeling', '.NET desktopontwikkeling', 'Desktopontwikkeling met C++' en 'Python-ontwikkeling':
Bovendien moet u op het scherm afzonderlijke onderdelen 'VC++ 2017 versie 15.4 v14.11 toolset' en 'Visual C++ runtime voor UWP' toevoegen aan uw installatie:
Voeg tot slot 'Windows 10 SDK (10.0.16299.0) toe voor Desktop C++ [x86 en x64]':
Bestaande installatie van Visual Studio 2017
U moet beschikken over de hulpprogrammaset 'VC++ 2017 versie 15.4 v14.11', 'Visual C++ runtime voor UWP' en 'Windows 10 SDK (10.0.16299.0) voor Desktop C++ [x86 en x64]' op uw systeem. Als u wilt controleren of windows 'Configuratiescherm - Programma's -> Programma's en> onderdelen' is geopend en selecteert u 'Visual Studio Community 2017' in de lijst met geïnstalleerde programma's. Hiermee start u de Installatie van Visual Studio opnieuw en kunt u ervoor zorgen dat de bovengenoemde onderdelen op uw systeem zijn geïnstalleerd (zie de bovenstaande afbeelding).
Notitie
Als VS2017INSTALLDIR
de omgevingsvariabele niet is ingesteld door het installatieprogramma van Visual Studio, stelt u deze handmatig in. De exacte installatiemap is afhankelijk van zowel de versie (2017 in dit geval) als het aanbieden (Community, Enterprise, enzovoort) van Visual Studio, volgens het volgende patroon: C:\Program Files (x86)\Microsoft Visual Studio\<version>\<offering>
Voer voor Visual Studio 2017 Enterprise Edition het volgende uit:
setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise"
Voor Visual Studio 2017 Community-editie voert u het volgende uit:
setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community"
Git
Git is vereist om te werken met de CNTK-codebasis. U kunt de volgende hulpprogramma's gebruiken:
Git voor Windows. Dit is de standaard opdrachtregelclient voor Git, die we op deze pagina gebruiken om de opname in de CNTK-opslagplaats te beschrijven.
Een Git-client is beschikbaar als onderdeel van de installatie van Visual Studio 2017. Lees het blogbericht Microsoft Application Lifecycle Management over het gebruik van de ingebouwde Git-client.
Opnemen in de CNTK GitHub-opslagplaats
Hier gaan we ervan uit dat u Git voor Windows hebt geïnstalleerd. We gaan ervan uit dat u Git hebt geïnstalleerd met behulp van de standaardopties in het Git-installatieprogramma (met name 'Git gebruiken vanaf de Windows-opdrachtprompt' en met de optie 'Windows-stijl, UNIX-stijl einden doorvoeren' bij de prompt Regeleinden configureren ingeschakeld.
Maak een kloon van de CNTK-broncode in c:\repos\cntk
de map. Als u liever een andere locatie hebt, moet u de opdrachten dienovereenkomstig aanpassen.
Open een standaard Windows-opdrachtshell en voer deze opdracht uit
c: && md \repos && cd \repos
git clone --recursive https://github.com/Microsoft/cntk
cd cntk
Hiermee worden alle vereiste broncode voor een standaardbuild op uw systeem geïnstalleerd. Als u van plan bent wijzigingen aan te brengen in de CNTK-code, moet u de informatie over ontwikkelen en testen lezen.
De submodule Multiverso wordt gebruikt om DataParallelASGD in te schakelen voor training. Als u geen ondersteuning voor DataParallelASGD nodig hebt, voegt u de omgevingsvariabele CNTK_ENABLE_ASGD toe en stelt u de waarde ervan in op false. Voer dit bijvoorbeeld uit in een CMD-prompt en open vervolgens uw CMD-shell(s) en Visual Studio opnieuw om de wijziging op te halen:
setx CNTK_ENABLE_ASGD false
Mkl
De standaard-CNTK-wiskundige bibliotheek is de Intel Math Kernel Library (Intel MKL). Volg deze pagina om deze te installeren
MKL-DNN
Download de MKL-DNN-bron en bouw met MKL_PATH als doelpad. Build-instructies controleren in Setup MKL-DNN in Windows
Stel de omgevingsvariabele
MKL_PATH
in op de map, bijvoorbeeld:
setx MKL_PATH c:\local\mklml-mkldnn-0.14
MS-MPI
Installeer versie 7 (7.0.12437.6) van Microsoft MPI (MS-MPI) vanaf deze downloadpagina, gemarkeerd als 'versie 7' in de paginatitel. Klik op de knop Downloaden en selecteer vervolgens beide msmpisdk.msi
en MSMpiSetup.exe
.
Boost
Volg deze stappen om de Boost Library op uw systeem te installeren:
- Download en installeer Boost versie 1.60 (u hebt de
msvc-14.0
binaire bestanden nodig) vanaf deze downloadlocatie op Sourceforge. - Stel de omgevingsvariabele in
BOOST_INCLUDE_PATH
op uw Boost-installatie, bijvoorbeeld:
setx BOOST_INCLUDE_PATH c:\local\boost_1_60_0-msvc-14.0
- Stel de omgevingsvariabele
BOOST_LIB_PATH
in op de Boost-bibliotheken, bijvoorbeeld:
setx BOOST_LIB_PATH c:\local\boost_1_60_0-msvc-14.0\lib64-msvc-14.0
- Als u het Boost-testframework in Visual Studio wilt integreren, kunt u een runner voor Boost-tests in Visual Studio installeren vanuit de Visual Studio Gallery.
Protobuf
U hebt een versie van Protobuf 3.1.0 nodig die is gecompileerd voor CNTK. U kunt deze versie zelf compileren of een reeds (vooraf gecompileerde) voorbereide versie van Protobuf 3.1.0 (beschreven op deze pagina) gebruiken. Als u de Protobuf-bibliotheek voor CNTK op uw systeem wilt bouwen, vindt u hier de details
Download het ZIP-bestand met de vooraf gecompileerde versie van Protobuf voor CNTK vanaf deze locatie
Pak het archief uit naar een map op uw lokale schijf, bijvoorbeeld op C:\local\protobuf-3.1.0-vs15
de omgevingsvariabele PROTOBUF_PATH
die naar die locatie wijst, bijvoorbeeld:
setx PROTOBUF_PATH c:\local\protobuf-3.1.0-vs15
GPU-specifieke pakketten
In deze sectie worden de pakketten beschreven die u moet instellen om CNTK te laten profiteren van NVIDIA GPU's.
Als u geen GPU's met CNTK wilt gebruiken en alleen afhankelijk bent van de CPU, kunt u rechtstreeks doorgaan naar de volgende algemene sectie. Ga anders verder met deze pagina.
Stel de omgevingsvariabele CUDNN_PATH
in die naar die locatie, bijvoorbeeld:
setx CUDNN_PATH C:\local\cudnn-9.0-v7.0\cuda
Stel de omgevingsvariabele CUB_PATH
in die naar die locatie, bijvoorbeeld:
setx CUB_PATH c:\local\cub-1.7.4\
OPTIONELE. SWIG.
Als u wilt profiteren van CNTK van Python, moet u SWIG installeren. SWIG is ook een vereiste voor het bouwen van de CNTK-evaluatiebibliotheken (voor C#/.NET of Java).
Download de versie SWIG 3.0.10
van deze site.
Pak het archief uit naar een map op uw lokale schijf, bijvoorbeeld op C:\local\swigwin-3.0.10
de omgevingsvariabele SWIG_PATH
die naar die locatie wijst, bijvoorbeeld:
setx SWIG_PATH C:\local\swigwin-3.0.10
Snelle installatiecontrole: Als u de bovenstaande instructies hebt gevolgd en dezelfde paden hebt gebruikt, slaagt de opdracht dir C:\local\swigwin-3.0.10\swig.exe
en wordt één bestand weergegeven.
OPTIONELE. Opencv
CNTK 2.2 vereist dat Open Source Computer Vision (OpenCV) is geïnstalleerd, maar het is optioneel voor CNTK 2.3. Volg deze pagina voor verdere stappen.
Stel de omgevingsvariabele OPENCV_PATH_V31
in die verwijst naar de map OpenCV-build, bijvoorbeeld
setx OPENCV_PATH_V31 c:\local\Opencv3.1.0\build
Snelle installatiecontrole: Als u de bovenstaande instructies hebt gevolgd en dezelfde paden hebt gebruikt, slaagt de opdracht dir C:\local\Opencv3.1.0\build
.
OPTIONELE. zlib en libzip
Als u van plan bent om de CNTK Image Reader te bouwen, hebt u zlib - en libzip-bibliotheken nodig.
zlib en libzip
De ZLib en LibZip worden gedistribueerd in broncode. U moet deze pakketten opnieuw compileren. U kunt ook een vooraf samengestelde versie gebruiken die we voor uw gemak hebben gemaakt (beschreven in deze sectie). Als u de bibliotheken zelf wilt bouwen, vindt u hier gedetailleerde instructies
Download het ZIP-bestand met de vooraf gecompileerde versie van libzip/zlib-compressiebibliotheek voor CNTK vanaf deze locatie
Pak het archief uit naar een map op uw lokale schijf, bijvoorbeeld op C:\local\zlib-vs15
de omgevingsvariabele ZLIB_PATH
die naar die locatie verwijst, bijvoorbeeld:
setx ZLIB_PATH c:\local\zlib-vs15
Snelle installatiecontrole: Als u de bovenstaande instructies hebt gevolgd en dezelfde paden hebt gebruikt, slaagt de opdracht dir C:\local\zlib-vs15\bin
en worden een aantal DLL's weergegeven.
OPTIONELE. Installatie van Anaconda Python
Als u CNTK wilt bouwen met Python-ondersteuning, installeert u SWIG als u dit nog niet hebt gedaan. U hebt ook een Python-omgeving nodig. We gebruiken Anaconda Python voor onze standaard Python-installatie.
Als u geen Anaconda-installatie hebt: installeer Anaconda Python voor Windows.
U kunt de standaardconfiguratie volgen die is opgegeven in het installatieprogramma (InstallationType=JustMe; AddToPath=Nee; RegisterPython=Nee). In het volgende wordt ervan uitgegaan dat u Python Anaconda3 4.1.1
hebt geïnstalleerd in C:\local\Anaconda3-4.1.1-Windows-x86_64
.
OPTIONELE. CNTK UWP Build
Notitie
Nieuw in CNTK versie 2.1.
Als u de CNTK-evaluatiebibliotheek voor UWP wilt bouwen, moet u de aanvullende installatiestappen volgen die hier worden beschreven.
CNTK Python-omgevingen
CNTK ondersteunt Python 2.7, Python 3.5 en Python 3.6. U wordt aangeraden een speciale omgeving te maken in uw Python-installatie om met CNTK te werken. Op deze manier hebben CNTK en de geïnstalleerde ondersteunende pakketten geen invloed op een ander Python-project. We bieden verschillende bestanden (yml
-bestanden) met de beschrijving van vereiste Python-pakketten. De pakketten bevinden zich in de scripts\install\windows
map in uw CNTK-kloon. Selecteer het bestand dat overeenkomt met uw beoogde Python-versie.
Python-versie | Bestandsnaam |
---|---|
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 |
Als voorbeeld maken we een Python 3.5-omgeving in een omgeving met de naam cntk-py35
. Als u een andere omgevingsnaam wilt, past u de volgende stappen dienovereenkomstig aan. Als u een Python 2.7- of Python 3.6-omgeving wilt maken, past u de naam van de YML aan op de Python-versie die u wilt gebruiken.
In het volgende wordt ervan uitgegaan dat u de CNTK-broncode van GitHub hebt gekloond naar de map c:\repos\cntk
.
- Als u een nieuwe Conda-omgeving wilt maken (bijvoorbeeld
cntk-py35
) en deze wilt activeren, voert u de volgende opdrachten uit vanuit de Windows-opdrachtshell:
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
Als u een omgeving hebt (bijvoorbeeld cntk-py35
) kunt u deze bijwerken met de meest recente vereiste pakketten met de volgende opdrachten:
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
CNTK-omgevingsvariabelen voor Python
Voordat u de build van CNTK start en de Python-bibliotheken voor CNTK bouwt, moet u omgevingsvariabelen CNTK_PY.._PATH
instellen/definiëren en PYTHONPATH
CNTK_PY.. _PATH
Stel omgevingsvariabelen voor uw Python-omgeving in (kies ten minste één die van toepassing is):
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]
Als u de installatie tot nu toe hebt gevolgd, betekent dit
setx CNTK_PY35_PATH C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35
De waarde voor de CNTK_PY36_PATH
omgevingsvariabelen CNTK_PY35_PATH
of CNTK_PY27_PATH
omgevingsvariabelen kan worden bepaald door in conda ..activate cmd.exe [name-or-path-of-your-environment]
PYTHONPATH
PYTHONPATH
stelt de paden in op de plaatsen waar Python naar modules zoekt die moeten worden geïmporteerd. Als u CNTK bouwt, moet u het uitvoerpad van het buildproces toevoegen aan deze omgevingsvariabele. Als u CNTK hebt c:\repos\cntk
gekloond, wordt dit
setx PYTHONPATH c:\repos\cntk\bindings\python;%PYTHONPATH%
OPTIONELE. Java
Als u de Java-bindingen voor de CNTK-evaluatiebibliotheek wilt maken, installeert u het hulpprogramma SWIG als u dit nog niet hebt gedaan. Daarnaast is een Java Development Kit (JDK) vereist. Momenteel gebruiken we 64-bits JDK 8 (JDK versie 1.8.0_131).
Stel de omgevingsvariabele in JAVA_HOME zodat deze verwijst naar de map van de Java-installatie. Bij de volgende instelling wordt ervan uitgegaan dat u JDK 1.8.0_131 hebt geïnstalleerd op C:\local\jdk1.8.0_131:
setx JAVA_HOME "c:\local\jdk1.8.0_131"
Vorige CNTK-versies verwijderen
Als u eerder een versie van het CNTK Python-pakket op uw computer hebt geïnstalleerd, verwijdert u dit door eerst eventuele CNTK-gerelateerde paden te verwijderen in de omgevingsvariabele PYTHONPATH. Do: echo %PYTHONPATH%
als u de huidige waarde wilt zien en vervolgens de setx
opdracht gebruikt om PYTHONPATH zo in te stellen dat de aan CNTK gerelateerde paden zijn verdwenen. Als dat PYTHONPATH leeg maakt, is dat ook zo.
Verwijder het volgende: pip uninstall cntk
Hiermee wordt het installatiegedeelte afgesloten. Laten we doorgaan met het bouwen van CNTK
CNTK bouwen
Er is momenteel een compatibiliteitsprobleem tussen CUDA 9 en standaard VCTools in Visual Studio 2017. CNTK vereist VCTools 14.11 om te bouwen met CUDA 9. Hiervoor gaat u als volgt te werk:
- Opdrachtprompt openen
- call "%VS2017INSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.11
Hiermee wordt VCTools ingesteld op de CUDA 9-compatibele versie. Start vanaf de opdrachtprompt CNTK.sln in de hoofdmap van het gekloonde CNTK-project vanuit GitHub. Als CNTK.sln wordt uitgevoerd met de standaard CUDA9-incompatibele versie van VCTools, zijn er buildfouten zoals '1>c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/host_config.h(133): fatale fout C1189: #error: -- niet-ondersteunde Microsoft Visual Studio-versie! Alleen de versies 2012, 2013, 2015 en 2017 worden ondersteund!"
Als u zojuist bent gewijzigd en omgevingsvariabele, moet u een al geopend Visual Studio-exemplaar sluiten, anders wordt de inhoud van gewijzigde omgevingsvariabelen niet weergegeven in Visual Studio.
- Klik met de rechtermuisknop op de CNTK-oplossing in Solution Explorer en selecteer
Properties
- Selecteer
Configuration Properties
en druk opConfiguration Manager...
de knop in het geopende venster - Selecteer in Configuration Manager de gewenste configuratie:
- Fouten opsporen of vrijgeven
- GPU of ALLEEN CPU. Configuraties met alleen CPU-namen worden expliciet genoemd. Alle andere configuraties impliceren GPU-gebruik (dat wil zeggen
Release
release . Gpu-modus) - U moet altijd ALLEEN CPU-configuraties selecteren als u niet de onderdelen hebt geïnstalleerd die vereist zijn voor GPU-configuraties
Bouw de CNTK-oplossing. De onderdelen die door het buildproces zijn gemaakt, zijn afhankelijk van de vereisten die u hebt geïnstalleerd, voor meer informatie over de pagina met informatie over windows-omgevingsvariabelen moet worden geraadpleegd.
Als u Python-modules bouwt, let op:
- Python-modules worden alleen gemaakt in de
Release
configuratie - Hiermee bouwt u de CNTK Python-module in
bindings\python\cntk
en produceert u ook een pakket (.whl
) in een submapPython
van uw build-uitvoermapx64\Release\Python
(bijvoorbeeld ) - Zorg ervoor dat uw pad de build-uitvoermap bevat (bijvoorbeeld )
x64\Release
en datPYTHONPATH
debindings\python
map bevat. Dit is in tegenstelling tot de installatie van het Pip-pakket, hier laden we de CNTK-module uit de kloon van de CNTK-opslagplaats, niet als een geïnstalleerd pakket in uw Python-omgeving, vandaar ook het verschil in het instellenPYTHONPATH
.
Test van CNTK-buildfunctionaliteit
Om ervoor te zorgen dat CNTK goed werkt in uw systeem, kunt u snel een voorbeeld uitvoeren vanuit de zelfstudie Hallo wereld - Logistic Regression. In dit voorbeeld wordt een eenvoudig netwerk getraind en kan worden omgeleid om CPU of GPU te gebruiken, wat ervoor zorgt dat CNTK goed functioneert.
Hieronder wordt ervan uitgegaan dat de CNTK-opslagplaats is gekloond naar c:\repos\cntk
en build\x64\release
is gebruikt als submap voor de build (Release).
- Opdrachtprompt openen
- Geef het pad op naar de binaire CNTK-bestanden (via omgevingsvariabele of voor opdrachtpromptsessie met behulp van de eerste opdracht hieronder) en ga naar de
Tutorials\HelloWorld-LogisticRegression
map:
set PATH=C:\repos\cntk\x64\release;%PATH%
cd C:\repos\cntk\Tutorials\HelloWorld-LogisticRegression
Probeer eerst het voorbeeld:
cntk configFile=lr_bs.cntk makeMode=false
Als het voorbeeld wordt uitgevoerd, bijvoorbeeld als er geen foutberichten zijn, krijgt u eerst een uitvoer met betrekking tot het lezen van de configuratie, gevolgd door de uitvoer van de daadwerkelijke netwerktraining.
CNTK uitproberen met GPU
Als u CNTK voor GPU-gebruik hebt gemaakt, kunt u GPU gebruiken door de volgende opdracht uit te voeren:
cntk configFile=lr_bs.cntk makeMode=false deviceId=auto
Aan het begin van de uitvoer ziet u een regel die bevestigt dat een GPU is gebruikt:
Model has 9 nodes. Using GPU 0.
Houd er rekening mee dat de GPU-id mogelijk anders is. De deviceId
parameter definieert welke processor moet worden gebruikt voor berekeningen.
-
deviceId=-1
betekent cpu gebruiken. Standaardwaarde -
deviceId=X
waarbij X een geheel getal >=0 is, betekent gpu X, dat wil zeggendeviceId=0
GPU 0, enzovoort. -
deviceId=auto
betekent GPU gebruiken, GPU automatisch selecteren
De CNTK Python-API uitproberen
We gaan ervan uit dat u een CNTK Python-omgeving hebt gemaakt (via het installatiescript of handmatig). Open een opdrachtprompt en activeer uw CNTK Python-omgeving, bijvoorbeeld door de opdracht uit te voeren
activate cntk-py35
Als snelle test wijzigt u in de Tutorials\NumpyInterop
map en voert u deze uit python FeedForwardNet.py
. Na de training ziet u een uitvoer die er ongeveer als volgt uitziet:
Finished Epoch [1]: loss = 0.297748 * 25600 2.383s (10742.8 samples per second)
error rate on an unseen minibatch 0.040000
Foutopsporing van CNTK-broncode in Visual Studio
- Als u Python Tools, CNTK en Visual Studio wilt gebruiken, raadpleegt u hier
- Als u fouten wilt opsporen in BrainScript in CNTK met Visual Studio, volgt u de stappen hier.
Bijdragen aan CNTK-code
Als u wijzigingen in de code plant, moet u de informatie over ontwikkelen en testen lezen.