Konfigurera CNTK på Windows
Om du vill skapa CNTK manuellt från källkoden i Windows med Visual Studio 2017 är den här sidan till dig.
Om du letar efter någon annan typ av stöd för att konfigurera en CNTK-byggmiljö eller installera CNTK i systemet bör du gå hit i stället.
Anteckning
Den här sidan förutsätter att du försöker skapa CNTK:s huvudgren.
64-bitars operativsystem
CNTK kräver en 64-bitars Windows-installation. Vi testade byggprocessen på Windows 8.1, Windows 10 och Windows Server 2012 R2 och senare. Andra miljöer stöds inte officiellt. Kompatibilitetsproblem finns i KONFIGURATIONen av CNTK Production Build och Test.
Miljövariabler och komponenter
Att skapa CNTK i systemet kräver definition och konfiguration av olika miljövariabler. En översikt över miljövariabler som används av Windows-versionen av CNTK finns på den här sidan. Dessutom ger den här sidan en översikt över nödvändiga och valfria komponenter för att skapa CNTK samt deras standardinstallationsplats.
Visual Studio 2017
Installera Microsoft Visual Studio 2017 för Windows. En länk till nedladdningen finns här.
Communityversionen av Visual Studio 2017 räcker för att skapa CNTK.
Under installationsprocessen väljer du "Universell Windows-plattform utveckling", ".NET desktop development", "Desktop development with C++" och "Python development"-arbetsbelastningar:
På skärmen enskilda komponenter ser du dessutom till att lägga till verktygsuppsättningen "VC++ 2017 version 15.4 v14.11" och "Visual C++ runtime for UWP" i installationen:
Lägg slutligen till "Windows 10 SDK (10.0.16299.0) för Desktop C++ [x86 och x64]":
Befintlig Visual Studio 2017-installation
Du måste ha verktygsuppsättningen "VC++ 2017 version 15.4 v14.11", "Visual C++ runtime for UWP" och "Windows 10 SDK (10.0.16299.0) för Desktop C++ [x86 och x64]" installerade på datorn. Om du vill kontrollera öppnar du Windows "Kontrollpanelen –> Program –> Program och funktioner" och väljer "Visual Studio Community 2017" i listan över installerade program. Då startas Visual Studio-installationen igen och du kan se till att de tidigare nämnda komponenterna är installerade i systemet (se bilden ovan).
Anteckning
Om VS2017INSTALLDIR
miljövariabeln inte angavs av Installationsprogrammet för Visual Studio anger du den manuellt. Den exakta installationskatalogen beror på både versionen (2017 i det här fallet) och erbjudandet (Community, Enterprise osv.) i Visual Studio, enligt följande mönster: C:\Program Files (x86)\Microsoft Visual Studio\<version>\<offering>
.
Kör för Visual Studio 2017 Enterprise Edition:
setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise"
Kör för Visual Studio 2017 Community Edition:
setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community"
Git
Git krävs för att fungera med CNTK-kodbasen. Du kan använda följande verktyg:
Git för Windows. Det här är standardkommandoradsklienten för Git, som vi använder på den här sidan för att beskriva värvningen på CNTK-lagringsplatsen.
En Git-klient är tillgänglig som en del av Visual Studio 2017-installationen. Läs blogginlägget Microsoft Application Lifecycle Management om att använda den inbyggda Git-klienten.
Ta med i CNTK GitHub-lagringsplatsen
Här förutsätter vi att du har installerat Git för Windows. Vi förutsätter att du har installerat Git med standardalternativen i Git-installationsprogrammet (särskilt "Använd Git från Windows-kommandotolken" och med alternativet "Checkout Windows-style, commit UNIX-style line endings" (Checkout Windows-style, commit UNIX-style line endings) i kommandotolken "Konfigurera radslut" aktiverat.
Skapa en klon av CNTK-källkoden i c:\repos\cntk
katalogen. Om du föredrar en annan plats måste du justera kommandona därefter.
Öppna ett Standard Windows-kommandogränssnitt och kör det här kommandot
c: && md \repos && cd \repos
git clone --recursive https://github.com/Microsoft/cntk
cd cntk
Detta placerar all nödvändig källkod för en standardversion på systemet. Om du planerar att göra ändringar i CNTK-koden bör du läsa informationen om utveckling och testning.
Undermodulen Multiverso används för att aktivera DataParallelASGD för träning. Om du inte behöver stöd för DataParallelASGD lägger du till miljövariabeln CNTK_ENABLE_ASGD och anger värdet falskt. Kör t.ex. detta i en CMD-prompt och öppna sedan cmd-gränssnittet och Visual Studio igen för att hämta ändringen:
setx CNTK_ENABLE_ASGD false
Mkl
Standardbiblioteket för CNTK-matematik är Intel Math Kernel Library (Intel MKL). Följ den här sidan om du vill installera den
MKL-DNN
Ladda ned MKL-DNN-källa och skapa med MKL_PATH som målsökväg. Kontrollera kompileringsinstruktionerna i Installation av MKL-DNN i Windows
Ange miljövariabeln
MKL_PATH
till katalogen, t.ex.
setx MKL_PATH c:\local\mklml-mkldnn-0.14
MS-MPI
Installera version 7 (7.0.12437.6) av Microsoft MPI (MS-MPI) från den här nedladdningssidan, markerad helt enkelt som "Version 7" i sidrubriken. Klicka på knappen Ladda ned och välj sedan både msmpisdk.msi
och MSMpiSetup.exe
.
Öka
Följ de här stegen för att installera Boost-biblioteket i systemet:
- Ladda ned och installera Boost version 1.60 (du behöver binärfilerna
msvc-14.0
) från den här nedladdningsplatsen på Sourceforge. - Ange miljövariabeln
BOOST_INCLUDE_PATH
till din Boost-installation, till exempel:
setx BOOST_INCLUDE_PATH c:\local\boost_1_60_0-msvc-14.0
- Ange miljövariabeln
BOOST_LIB_PATH
till Boost-biblioteken, till exempel:
setx BOOST_LIB_PATH c:\local\boost_1_60_0-msvc-14.0\lib64-msvc-14.0
- Om du vill integrera Boost-testramverket i Visual Studio kan du installera en löpare för Boost-tester i Visual Studio från Visual Studio-galleriet.
Protobuf
Du behöver en version av Protobuf 3.1.0 som kompilerats för CNTK. Du kan kompilera den här versionen själv eller använda en redan (förkompilerad) förberedd version av Protobuf 3.1.0 (beskrivs på den här sidan). Om du vill skapa Protobuf-biblioteket för CNTK i systemet hittar du informationen här
Ladda ned ZIP-filen som innehåller den förkompilerade versionen av Protobuf för CNTK från den här platsen
Extrahera arkivet till en mapp på den lokala disken, t.ex. till C:\local\protobuf-3.1.0-vs15
och ange miljövariabeln PROTOBUF_PATH
som pekar på den platsen, t.ex.
setx PROTOBUF_PATH c:\local\protobuf-3.1.0-vs15
GPU-specifika paket
Det här avsnittet beskriver de paket som du behöver konfigurera för att CNTK ska kunna utnyttja NVIDIA-GPU:er.
Om du inte tänker använda GPU:er med CNTK och endast förlitar dig på CPU kan du hoppa direkt till nästa allmänna avsnitt. Annars fortsätter du till den här sidan.
Ange miljövariabeln CUDNN_PATH
som pekar på den platsen, t.ex.
setx CUDNN_PATH C:\local\cudnn-9.0-v7.0\cuda
Ange miljövariabeln CUB_PATH
som pekar på den platsen, t.ex.
setx CUB_PATH c:\local\cub-1.7.4\
VALFRI. SWIG.
Om du vill dra nytta av CNTK från Python måste du installera SWIG. SWIG är också ett krav för att skapa CNTK-utvärderingsbiblioteken (för C#/.NET eller Java).
Ladda ned versionen SWIG 3.0.10
från den här webbplatsen.
Extrahera arkivet till en mapp på den lokala disken, t.ex. till C:\local\swigwin-3.0.10
och ange miljövariabeln SWIG_PATH
som pekar på den platsen, t.ex.
setx SWIG_PATH C:\local\swigwin-3.0.10
Snabbinstallationskontroll: Om du följde anvisningarna ovan och använde samma sökvägar kommer kommandot dir C:\local\swigwin-3.0.10\swig.exe
att lyckas och visa en fil.
VALFRI. Opencv
CNTK 2.2 kräver att Open Source Visuellt innehåll (OpenCV) installeras, men det är valfritt för CNTK 2.3. Följ den här sidan för ytterligare steg.
Ange miljövariabeln OPENCV_PATH_V31
som pekar på OpenCV-byggmappen, t.ex.
setx OPENCV_PATH_V31 c:\local\Opencv3.1.0\build
Snabbinstallationskontroll: Om du följde instruktionerna ovan och använde samma sökvägar kommer kommandot dir C:\local\Opencv3.1.0\build
att lyckas.
VALFRI. zlib och libzip
Om du planerar att skapa CNTK-avbildningsläsaren behöver du zlib - och libzip-bibliotek .
zlib och libzip
ZLib och LibZip distribueras i källkod, du måste kompilera om dessa paket, du kan också använda en förkompilerad version som vi skapade för din bekvämlighet (beskrivs i det här avsnittet). Om du vill skapa biblioteken själv hittar du detaljerade instruktioner här
Ladda ned ZIP-filen som innehåller den förkompilerade versionen av libzip/zlib-komprimeringsbiblioteket för CNTK från den här platsen
Extrahera arkivet till en mapp på den lokala disken, t.ex. till C:\local\zlib-vs15
och ange miljövariabeln ZLIB_PATH
som pekar på den platsen, t.ex.
setx ZLIB_PATH c:\local\zlib-vs15
Snabbinstallationskontroll: Om du följde instruktionerna ovan och använde samma sökvägar lyckas kommandot dir C:\local\zlib-vs15\bin
och visar ett par DLL:er.
VALFRI. Python-installation av Anaconda
Om du planerar att skapa CNTK med Python-stöd installerar du SWIG om du inte har gjort det ännu. Dessutom behöver du en Python-miljö. Vi använder Anaconda Python för vår standardinstallation av Python.
Om du inte har någon Anaconda-installation: installera Anaconda Python för Windows.
Du kan följa standardkonfigurationen som anges i installationsprogrammet (InstallationType=JustMe; AddToPath=Nej; RegisterPython=Nej). I följande antar vi att du har installerat Python Anaconda3 4.1.1
i C:\local\Anaconda3-4.1.1-Windows-x86_64
.
VALFRI. CNTK UWP Build
Anteckning
Nytt i CNTK version 2.1.
Om du vill skapa CNTK-utvärderingsbiblioteket för UWP måste du följa de ytterligare installationssteg som beskrivs här.
CNTK Python-miljöer
CNTK stöder Python 2.7, Python 3.5 och Python 3.6. Vi rekommenderar att du skapar en dedikerad miljö i Python-installationen för att arbeta med CNTK. På så sätt påverkar INTE CNTK och de installerade stödpaketen något annat Python-projekt. Vi tillhandahåller flera filer (yml
-filer) som innehåller beskrivningen av nödvändiga Python-paket. Paketen scripts\install\windows
finns i katalogen i DIN CNTK-klon. Välj den fil som matchar din riktade Python-version.
Python-version | Filnamn |
---|---|
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 |
Som ett exempel skapar vi en Python 3.5-miljö i en miljö med namnet cntk-py35
. Om du vill ha ett annat miljönamn justerar du följande steg i enlighet med detta. Om du vill skapa en Python 2.7- eller Python 3.6-miljö justerar du namnet på YML så att det matchar den Python-version som du tänker använda.
Följande förutsätter att du klonade CNTK-källkoden från GitHub till katalogen c:\repos\cntk
.
- Om du vill skapa en ny conda-miljö (t.ex.
cntk-py35
) och aktivera den kör du följande kommandon från Windows-kommandogränssnittet:
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
Om du har en miljö (t.ex. cntk-py35
) kan du uppdatera den med de senaste nödvändiga paketen med följande kommandon:
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-miljövariabler för Python
Innan du startar versionen av CNTK och skapar Python-biblioteken för CNTK måste du ange/definiera miljövariabler CNTK_PY.._PATH
och PYTHONPATH
CNTK_PY.. _PATH
Konfigurera byggmiljövariabler för Din Python-miljö (välj minst en som gäller):
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]
Om du har följt installationen hittills innebär det att
setx CNTK_PY35_PATH C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35
Värdet för CNTK_PY36_PATH
miljövariablerna , CNTK_PY35_PATH
eller CNTK_PY27_PATH
kan fastställas genom att köra i conda ..activate cmd.exe [name-or-path-of-your-environment]
PYTHONPATH
PYTHONPATH
anger sökvägarna till de platser där Python söker efter moduler som ska importeras. Om du skapar CNTK måste du lägga till utdatasökvägen för byggprocessen i den här miljövariabeln. Om du klonade CNTK till c:\repos\cntk
detta kommer att
setx PYTHONPATH c:\repos\cntk\bindings\python;%PYTHONPATH%
VALFRI. Java
Om du vill skapa Java-bindningar för CNTK-utvärderingsbiblioteket installerar du SWIG-verktyget om du inte har gjort det ännu. Dessutom krävs ett Java Development Kit (JDK). För närvarande använder vi 64-bitars JDK 8 (JDK version 1.8.0_131).
Ange miljövariabeln JAVA_HOME så att den pekar på katalogen för Java-installationen. Följande inställning förutsätter att du har installerat JDK 1.8.0_131 till C:\local\jdk1.8.0_131:
setx JAVA_HOME "c:\local\jdk1.8.0_131"
Avinstallera tidigare CNTK-versioner
Om du tidigare har installerat någon version av CNTK Python-paketet på datorn avinstallerar du det genom att först ta bort eventuella CNTK-relaterade sökvägar i PYTHONPATH-miljövariabeln. Gör: echo %PYTHONPATH%
om du vill se dess aktuella värde och sedan använda setx
kommandot för att ange PYTHONPATH så att DE CNTK-relaterade sökvägarna är borta. Om det gör PYTHONPATH tomt, så får det vara så.
Gör avinstallationen: pip uninstall cntk
Detta avslutar installationsdelen. Låt oss fortsätta med att skapa CNTK
Skapa CNTK
För närvarande finns det ett kompatibilitetsproblem mellan CUDA 9 och standard-VCTools i Visual Studio 2017. CNTK kräver VCTools 14.11 för att skapa med CUDA 9. Om du vill göra det:
- Öppna kommandotolken
- anropa "%VS2017INSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.11
Då anges VCTools till den CUDA 9-kompatibla versionen. Starta CNTK.sln i roten för det klonade CNTK-projektet från GitHub från kommandotolken. Om CNTK.sln körs med standardversionen av CUDA9-inkompatibel version av VCTools uppstår byggfel som "1>c:\programfiler\nvidia gpu computing toolkit\cuda\v9.0\include\crt/host_config.h(133): allvarligt fel C1189: #error: -- Microsoft Visual Studio-version som inte stöds! Endast versionerna 2012, 2013, 2015 och 2017 stöds!"
Om du precis har ändrat miljövariabeln bör du stänga alla redan öppnade Visual Studio-instanser, annars återspeglas inte innehållet i ändrade miljövariabler i Visual Studio.
- Högerklicka på CNTK-lösningen i Solution Explorer och välj
Properties
- I det öppnade fönstret väljer du
Configuration Properties
och trycker påConfiguration Manager...
knappen - I Configuration Manager väljer du önskad konfiguration:
- Felsöka eller släppa
- GPU eller endast CPU. Endast CPU-konfigurationer namnges uttryckligen. Alla andra konfigurationer innebär GPU-användning (dvs.
Release
release . GPU-aktiverat läge) - Du bör alltid välja konfigurationer endast för processorer om du INTE har installerat de komponenter som krävs för GPU-konfigurationer
Skapa CNTK-lösningen. Komponenterna som skapas av byggprocessen är beroende av de krav som du har installerat. Mer information om windows-miljövariabler bör konsulteras för mer information.
Observera följande om du skapar Python-moduler:
- Python-moduler skapas bara i konfigurationen
Release
- Detta skapar CNTK Python-modulen inuti
bindings\python\cntk
och skapar även ett paket (.whl
) i en undermappPython
i din version av utdatamappen (t.ex.x64\Release\Python
) - Kontrollera att sökvägen innehåller utdatamappen för bygget (t.ex.
x64\Release
) och attPYTHONPATH
denbindings\python
innehåller katalogen. Detta strider mot den konfiguration som visas för Pip-paketinstallationen. Här läser vi in CNTK-modulen från CNTK-lagringsplatsens klon, inte som ett installerat paket i Python-miljön, och därmed också skillnaden i att konfigureraPYTHONPATH
.
Test av CNTK-byggfunktioner
För att säkerställa att CNTK fungerar korrekt i systemet kan du snabbt köra ett exempel från självstudiekursen Hello World – Logistic Regression. Det här exemplet tränar ett enkelt nätverk och kan dirigeras att använda antingen CPU eller GPU, vilket hjälper dig att snabbt se till att CNTK fungerar korrekt.
Nedan förutsätter vi att CNTK-lagringsplatsen klonas till c:\repos\cntk
och build\x64\release
användes som en underkatalog för versionen (release).
- Öppna kommandotolken
- Ange sökvägen till CNTK-binärfilerna (via miljövariabeln eller för kommandotolken med det första kommandot nedan) och ändra till
Tutorials\HelloWorld-LogisticRegression
katalogen:
set PATH=C:\repos\cntk\x64\release;%PATH%
cd C:\repos\cntk\Tutorials\HelloWorld-LogisticRegression
Prova först exemplet:
cntk configFile=lr_bs.cntk makeMode=false
Om exemplet körs, d.v.s. om det inte finns några felmeddelanden, får du först utdata relaterade till att läsa konfigurationen, följt av utdata från den faktiska nätverksträningen.
Prova CNTK med GPU
Om du har skapat CNTK för GPU-användning kan du prova att använda GPU genom att köra följande kommando:
cntk configFile=lr_bs.cntk makeMode=false deviceId=auto
Nära början av utdata bör du se en rad som bekräftar att en GPU har använts:
Model has 9 nodes. Using GPU 0.
Observera att GPU-ID kan vara annorlunda. Parametern deviceId
definierar vilken processor som ska användas för beräkning.
-
deviceId=-1
innebär att använda CPU. Standardvärde -
deviceId=X
där X är ett heltal >=0 innebär att GPU X används, d.v.s.deviceId=0
GPU 0 osv. -
deviceId=auto
innebär att du använder GPU, väljer du GPU automatiskt
Prova CNTK Python API
Vi förutsätter att du har skapat en CNTK Python-miljö (antingen via installationsskriptet eller manuellt. Öppna en kommandotolk och aktivera DIN CNTK Python-miljö, t.ex. genom att köra
activate cntk-py35
Som ett snabbt test ändras till Tutorials\NumpyInterop
mappen och kör python FeedForwardNet.py
. Efter träningen bör du se utdata som liknar följande:
Finished Epoch [1]: loss = 0.297748 * 25600 2.383s (10742.8 samples per second)
error rate on an unseen minibatch 0.040000
Felsöka CNTK-källkod i Visual Studio
- Om du vill använda Python Tools, CNTK och Visual Studio kan du läsa här
- Följ stegen här om du vill felsöka BrainScript i CNTK med Visual Studio.
Bidra till CNTK-kod
Om du planerar ändringar i koden bör du läsa informationen om utveckling och testning.