Delen via


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':

im1

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:

im1

Voeg tot slot 'Windows 10 SDK (10.0.16299.0) toe voor Desktop C++ [x86 en x64]':

im1

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:

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_PATHomgevingsvariabelen CNTK_PY35_PATHof 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 selecteerProperties
  • Selecteer Configuration Properties en druk op Configuration 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 submap Python van uw build-uitvoermap x64\Release\Python(bijvoorbeeld )
  • Zorg ervoor dat uw pad de build-uitvoermap bevat (bijvoorbeeld ) x64\Releaseen dat PYTHONPATH de bindings\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 instellen PYTHONPATH.

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 zeggen deviceId=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.