Dela via


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:

im1

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:

im1

Lägg slutligen till "Windows 10 SDK (10.0.16299.0) för Desktop C++ [x86 och x64]":

im1

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:

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_PATHmiljövariablerna , CNTK_PY35_PATHeller 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äljProperties
  • 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 undermapp Python 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 att PYTHONPATH den bindings\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 konfigurera PYTHONPATH.

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.