Nastavení CNTK ve Windows

Pokud chcete vytvořit ručně CNTK ze zdrojového kódu ve Windows pomocí sady Visual Studio 2017, je tato stránka za vás.

Pokud hledáte jinou podporu k nastavení prostředí sestavení CNTK nebo instalaci CNTK do systému, měli byste místo toho přejít sem .

Poznámka

Tato stránka předpokládá, že se pokoušíte sestavit hlavní větev CNTK.

64bitový operační systém

CNTK vyžaduje 64bitovou instalaci Windows. Proces sestavení jsme otestovali na Windows 8.1, Windows 10 a Windows Server 2012 R2 a novějších verzích. Jiná prostředí nejsou oficiálně podporována. V případě problémů s kompatibilitou zkontrolujte konfiguraci produkčního sestavení a testu CNTK.

Proměnné prostředí a komponenty

Sestavení CNTK ve vašem systému vyžaduje definici a konfiguraci různých proměnných prostředí. Přehled proměnných prostředí používaných sestavením CNTK systému Windows najdete na této stránce. Tato stránka navíc poskytuje přehled požadovaných a volitelných komponent pro sestavování CNTK a jejich výchozího umístění instalace.

Visual Studio 2017

Nainstalujte Microsoft Visual Studio 2017 pro Windows. Odkaz na stažení najdete tady.

Komunitní verze sady Visual Studio 2017 je dostatečná k sestavení CNTK.

Během procesu instalace vyberte úlohy vývoj pro Univerzální platforma Windows, Vývoj desktopových aplikací .NET, Vývoj desktopových aplikací s C++a Vývoj v Pythonu:

im1

Kromě toho na obrazovce jednotlivých komponent nezapomeňte do instalace přidat sadu nástrojů VC++ 2017 verze 15.4 v14.11 a modul runtime Visual C++ pro UPW:

im1

Nakonec přidejte sadu Windows 10 SDK (10.0.16299.0) pro Desktop C++ [x86 a x64]:

im1

Instalace sady Visual Studio 2017

Musíte mít sadu nástrojů VC++ 2017 verze 15.4 v14.11, visual C++ runtime pro UPW a sadu Windows 10 SDK (10.0.16299.0) pro Desktop C++ [x86 a x64] nainstalovanou ve vašem systému. Chcete-li zkontrolovat, že se jedná o systém Windows Ovládací panely –> Programy –> Programy a funkce, a v seznamu nainstalovaných programů vyberte Visual Studio Community 2017. Tím se znovu spustí instalace sady Visual Studio a umožní vám zajistit, aby byly ve vašem systému nainstalované výše uvedené komponenty (viz obrázek výše).

Poznámka

Pokud VS2017INSTALLDIR instalační program sady Visual Studio nenastavil proměnnou prostředí, nastavte ji ručně. Přesný instalační adresář závisí na verzi (2017 v tomto případě) a nabídce sady Visual Studio (Community, Enterprise atd.) podle následujícího vzoru: C:\Program Files (x86)\Microsoft Visual Studio\<version>\<offering>.

Pro edici Visual Studio 2017 Enterprise spusťte:

setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise"

Pro Visual Studio 2017 Community edition spusťte:

setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community"

Git

Git je nutný k práci se základní kódovou základnou CNTK. Můžete použít následující nástroje:

Zařazení do úložiště CNTK GitHub

Tady předpokládáme, že jste nainstalovali Git pro Windows. Předpokládáme, že jste git nainstalovali pomocí výchozích možností v instalačním programu Gitu (zejména použití Gitu z příkazového řádku Systému Windows a s možností Rezervovat styl Windows, potvrdit konce řádků ve stylu UNIX na příkazovém řádku je povoleno.

Vytvořte klon zdrojového kódu CNTK v c:\repos\cntk adresáři. Pokud dáváte přednost jinému umístění, budete muset odpovídajícím způsobem upravit příkazy.

Otevřete standardní příkazové prostředí windows a spusťte tento příkaz.

c: && md \repos && cd \repos
git clone --recursive https://github.com/Microsoft/cntk
cd cntk

Tím se vloží veškerý požadovaný zdrojový kód pro standardní sestavení do vašeho systému. Pokud plánujete provádět úpravy kódu CNTK, měli byste si přečíst informace o vývoji a testování.

Podmodule Multiverso slouží k povolení DataParallelASGD pro trénování. Pokud nepotřebujete podporu DataParallelASGD, přidejte proměnnou prostředí CNTK_ENABLE_ASGD a nastavte její hodnotu na false. Spusťte to například v příkazovém řádku CMD a pak znovu otevřete prostředí CMD a Visual Studio, abyste tuto změnu získali:

setx CNTK_ENABLE_ASGD false

MKL

Výchozí matematická knihovna CNTK je knihovna Intel Math Kernel Library (Intel MKL). Pokud ji chcete nainstalovat, postupujte podle této stránky .

MKL-DNN

  • Stáhněte si zdroj MKL-DNN a build s MKL_PATH jako cílovou cestu. Kontrola pokynů k sestavení v instalačním programu MKL-DNN ve Windows

  • Nastavte proměnnou MKL_PATH prostředí do adresáře, například:

    setx MKL_PATH c:\local\mklml-mkldnn-0.14

MS-MPI

Nainstalujte z této stránky ke stažení verzi 7 (7.0.12437.6) microsoft MPI (MS-MPI) označenou jednoduše jako "Verze 7" v názvu stránky. Klikněte na tlačítko Stáhnout a pak vyberte obě msmpisdk.msi a MSMpiSetup.exe.

Zvýšit

Pokud chcete nainstalovat knihovnu Boost do systému, postupujte takto:

  • Stáhněte a nainstalujte Boost verze 1.60 (potřebujete msvc-14.0 binární soubory) z tohoto umístění pro stažení na Sourceforge.
  • Nastavte proměnnou BOOST_INCLUDE_PATH prostředí na instalaci Boost, například:
    setx BOOST_INCLUDE_PATH c:\local\boost_1_60_0-msvc-14.0
  • Nastavte proměnnou BOOST_LIB_PATH prostředí na knihovny Boost, například:
    setx BOOST_LIB_PATH c:\local\boost_1_60_0-msvc-14.0\lib64-msvc-14.0
  • Pokud chcete integrovat testovací architekturu Boost do sady Visual Studio, můžete nainstalovat runner pro testy Boost v sadě Visual Studio z galerie sady Visual Studio.

Protobuf

Potřebujete verzi Protobuf 3.1.0 zkompilovanou pro CNTK. Tuto verzi můžete zkompilovat sami nebo můžete použít již připravenou verzi Protobuf 3.1.0 (popsanou na této stránce). Pokud chcete vytvořit knihovnu Protobuf pro CNTK ve vašem systému, najdete podrobnosti tady.

Stáhněte soubor ZIP obsahující předkompilovanou verzi Protobuf pro CNTK z tohoto umístění.

Extrahujte archiv do složky na místním disku, např. na C:\local\protobuf-3.1.0-vs15 a nastavte proměnnou PROTOBUF_PATH prostředí odkazující na toto umístění, například:

    setx PROTOBUF_PATH c:\local\protobuf-3.1.0-vs15

Balíčky specifické pro GPU

Tato část popisuje balíčky, které potřebujete nastavit, aby CNTK využívala grafické procesory NVIDIA.

Pokud nemáte v úmyslu používat žádné GPU s CNTK a budete spoléhat pouze na procesor, můžete přeskočit přímo na další obecnou část. V opačném případě přejděte na tuto stránku.

Nastavte proměnnou CUDNN_PATH prostředí odkazující na toto umístění, například:

    setx CUDNN_PATH C:\local\cudnn-9.0-v7.0\cuda

Nastavte proměnnou CUB_PATH prostředí odkazující na toto umístění, například:

    setx CUB_PATH c:\local\cub-1.7.4\

VOLITELNÉ. SWIG.

Pokud chcete využít CNTK z Pythonu, budete muset nainstalovat SWIG. SWIG je také požadavek na sestavení knihoven hodnocení CNTK (pro C#/.NET nebo Java).

Stáhněte si prosím verzi SWIG 3.0.10 z tohoto webu.

Extrahujte archiv do složky na místním disku, např. na C:\local\swigwin-3.0.10 a nastavte proměnnou SWIG_PATH prostředí odkazující na toto umístění, například:

    setx SWIG_PATH C:\local\swigwin-3.0.10

Rychlá kontrola instalace: Pokud jste postupovali podle výše uvedených pokynů a použili stejné cesty, příkaz dir C:\local\swigwin-3.0.10\swig.exe bude úspěšný a zobrazí jeden soubor.

VOLITELNÉ. OpenCV

CNTK 2.2 vyžaduje instalaci open source Počítačové zpracování obrazu (OpenCV), ale pro CNTK 2.3 je nepovinný. Další kroky najdete na této stránce .

Nastavte proměnnou OPENCV_PATH_V31 prostředí odkazující na složku sestavení OpenCV, např.

setx OPENCV_PATH_V31 c:\local\Opencv3.1.0\build

Rychlá kontrola instalace: Pokud jste postupovali podle výše uvedených pokynů a použili stejné cesty, příkaz dir C:\local\Opencv3.1.0\build bude úspěšný.

VOLITELNÉ. zlib a libzip

Pokud plánujete sestavit čtečku obrázků CNTK , potřebujete knihovny zlib a libzip .

zlib a libzip

ZLib a LibZip jsou distribuovány ve zdrojovém kódu, budete muset tyto balíčky znovu zkompilovat, můžete také použít předkompilovanou verzi, kterou jsme vytvořili pro usnadnění práce (popsané v této části). Pokud chcete vytvořit knihovny sami, najdete tady podrobné pokyny.

Stáhněte soubor ZIP obsahující předkompilovanou verzi knihovny komprese libzip/zlib pro CNTK z tohoto umístění.

Extrahujte archiv do složky na místním disku, např. na C:\local\zlib-vs15 a nastavte proměnnou ZLIB_PATH prostředí odkazující na toto umístění, například:

    setx ZLIB_PATH c:\local\zlib-vs15

Rychlá kontrola instalace: Pokud jste postupovali podle výše uvedených pokynů a použili stejné cesty, příkaz dir C:\local\zlib-vs15\bin bude úspěšný a zobrazí několik knihoven DLL.

VOLITELNÉ. Instalace Pythonu anaconda

Pokud plánujete sestavit CNTK s podporou Pythonu, nainstalujte SWIG , pokud jste to ještě neudělali. Budete také potřebovat prostředí Pythonu. Pro výchozí instalaci Pythonu používáme Anaconda Python.

Pokud nemáte instalaci Anaconda: nainstalujte Anaconda Python pro Windows. Můžete postupovat podle standardní konfigurace uvedené v instalačním programu (InstallationType=JustMe; AddToPath=Ne; RegisterPython=Ne). V následujícím příkladu předpokládáme, že jste nainstalovali Python Anaconda3 4.1.1 do C:\local\Anaconda3-4.1.1-Windows-x86_64.

VOLITELNÉ. Sestavení CNTK PRO UPW

Poznámka

Novinka v CNTK verze 2.1.

Pokud chcete vytvořit knihovnu hodnocení CNTK pro UPW, musíte postupovat podle dalších kroků instalace popsaných tady.

Prostředí PYTHONu CNTK

CNTK podporuje Python 2.7, Python 3.5 a Python 3.6. Doporučujeme vytvořit vyhrazené prostředí v instalaci Pythonu pro práci s CNTK. Tímto způsobem CNTK a nainstalované podpůrné balíčky nebudou mít vliv na žádný jiný projekt Pythonu. Poskytujeme několik souborů (yml-souborů) obsahujících popis požadovaných balíčků Pythonu. Balíčky se nacházejí v scripts\install\windows adresáři uvnitř klonu CNTK. Vyberte soubor odpovídající cílové verzi Pythonu.

Python version (Verze Pythonu) Název_souboru
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

Jako příklad vytvoříme prostředí Pythonu 3.5 v prostředí s názvem cntk-py35. Pokud chcete jiný název prostředí, upravte následující kroky odpovídajícím způsobem. Pokud chcete vytvořit prostředí Pythonu 2.7 nebo Pythonu 3.6, upravte název YML tak, aby odpovídal verzi Pythonu, kterou chcete použít.

Následující předpokládá, že jste naklonovali zdrojový kód CNTK z GitHubu do adresáře c:\repos\cntk.

  • Pokud chcete vytvořit nové prostředí conda (např. cntk-py35) a aktivovat ho, spusťte z příkazového prostředí Windows následující příkazy:
    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

Pokud máte prostředí (např. cntk-py35), můžete ho aktualizovat nejnovějšími požadovanými balíčky pomocí následujících příkazů:

    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

Proměnné prostředí CNTK pro Python

Před zahájením sestavení CNTK a sestavením knihoven Pythonu pro CNTK je potřeba nastavit nebo definovat proměnné CNTK_PY.._PATH prostředí a PYTHONPATH

CNTK_PY.. _PATH

Nastavení proměnných prostředí sestavení pro prostředí Pythonu (zvolte aspoň jednu, která platí):

    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]

Pokud jste dosud postupovali po instalaci, znamenalo by to

    setx CNTK_PY35_PATH C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35

Hodnotu proměnné CNTK_PY36_PATHprostředí , , CNTK_PY35_PATHnebo CNTK_PY27_PATH prostředí lze určit spuštěním v conda ..activate cmd.exe [name-or-path-of-your-environment]

PYTHONPATH

PYTHONPATH nastaví cesty k místům, kde Python vyhledá moduly pro import. Pokud vytváříte CNTK, musíte do této proměnné prostředí přidat výstupní cestu procesu sestavení. Pokud jste naklonovali CNTK do c:\repos\cntk tohoto, bude

    setx PYTHONPATH c:\repos\cntk\bindings\python;%PYTHONPATH%

VOLITELNÉ. Java

Pokud chcete vytvořit vazby Java pro knihovnu hodnocení CNTK, nainstalujte nástroj SWIG , pokud jste to ještě neudělali. Vyžaduje se také sada Java Development Kit (JDK). V současné době používáme 64bitovou verzi JDK 8 (verze JDK 1.8.0_131).

Nastavte proměnnou prostředí JAVA_HOME tak, aby odkazovat na adresář instalace Javy. Následující nastavení předpokládá, že jste nainstalovali sadu JDK 1.8.0_131 na C:\local\jdk1.8.0_131:

    setx JAVA_HOME "c:\local\jdk1.8.0_131"

Odinstalace předchozích verzí CNTK

Pokud jste na svém počítači nainstalovali jakoukoli verzi balíčku PYTHON CNTK, odinstalujte ho tak, že nejprve odeberete všechny cesty související s CNTK v proměnné prostředí PYTHONPATH. Proveďte: echo %PYTHONPATH% pokud chcete zobrazit jeho aktuální hodnotu, a pak pomocí setx příkazu nastavte PYTHONPATH tak, aby související cesty CNTK byly pryč. Pokud se tím pythonPATH vyprázdní, tak to může být.

Proveďte odinstalaci: pip uninstall cntk


Tím se dokončí část instalace. Pojďme pokračovat v sestavování CNTK


Sestavení CNTK

V současné době existuje problém s kompatibilitou mezi CUDA 9 a výchozími VCTools v sadě Visual Studio 2017. CNTK k sestavení pomocí CUDA 9 vyžaduje VCTools 14.11. Postup:

  • Otevřít příkazový řádek
  • volání %VS2017INSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.11

Tím nastavíte VCTools na verzi kompatibilní s CUDA 9. Z příkazového řádku spusťte CNTK.sln v kořenovém adresáři klonovaného projektu CNTK z GitHubu. Pokud CNTK.sln běží s výchozí verzí CUDA9 nekompatibilní verze nástroje VCTools, dojde k chybám sestavení, jako je 1>c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/host_config.h(133): závažná chyba C1189: #error: -- nepodporovaná verze sady Microsoft Visual Studio! Podporují se pouze verze 2012, 2013, 2015 a 2017!"

Pokud jste právě změnili a proměnnou prostředí, měli byste zavřít všechny již otevřené instance sady Visual Studio, jinak se obsah změněných proměnných prostředí neprojeví v sadě Visual Studio.

  • V Průzkumník řešení klikněte pravým tlačítkem na řešení CNTK a vyberteProperties
  • V otevřeném okně vyberte Configuration Properties a stiskněte Configuration Manager... tlačítko
  • V Configuration Manager vyberte požadovanou konfiguraci:
    • Ladění nebo vydání
    • Gpu nebo procesor jen pro procesor. Konfigurace jen pro procesor jsou explicitně pojmenované. Všechny ostatní konfigurace znamenají využití GPU (tj. Release znamená vydání. Režim s podporou GPU)
    • Pokud jste nenainstalovali komponenty požadované pro konfigurace GPU, měli byste vždy vybrat konfigurace jen pro procesor.

Sestavte řešení CNTK. Komponenty vytvořené procesem sestavení závisí na nainstalovaných požadavcích. Podrobnosti o stránce s podrobnostmi o proměnných prostředí systému Windows by se měly zobrazit.

Pokud vytváříte poznámku k modulům Pythonu:

  • Moduly Pythonu Release se vytvářejí jenom v konfiguraci.
  • Tím se vytvoří modul PYTHONu CNTK uvnitř bindings\python\cntk a také vytvoří balíček (.whl) v podsložce Python výstupní složky sestavení (např. x64\Release\Python)
  • Ujistěte se, x64\Releaseže cesta obsahuje výstupní složku sestavení (např. ) a adresář PYTHONPATHbindings\python . To je na rozdíl od nastavení zobrazené pro instalaci balíčku Pip, zde načteme modul CNTK z klonu úložiště CNTK, ne jako nainstalovaný balíček ve vašem prostředí Pythonu, a proto také rozdíl v nastavení PYTHONPATH.

Testování funkcí sestavení CNTK

Abyste měli jistotu, že CNTK funguje ve vašem systému správně, můžete rychle spustit příklad z kurzu Hello World – logistická regrese. Tento příklad vytrénuje jednoduchou síť a dá se směrovat na použití procesoru nebo GPU, což vám pomůže rychle zajistit správné fungování CNTK.

Níže předpokládáme, že se úložiště CNTK naklonuje c:\repos\cntk a build\x64\release používá se jako podadresář sestavení (Release).

  • Otevřít příkazový řádek
  • Zadejte cestu k binárním souborům CNTK (prostřednictvím proměnné prostředí nebo relace příkazového řádku pomocí následujícího prvního příkazu) a přejděte do Tutorials\HelloWorld-LogisticRegression adresáře:
set PATH=C:\repos\cntk\x64\release;%PATH%
cd C:\repos\cntk\Tutorials\HelloWorld-LogisticRegression

Nejprve zkuste příklad:

cntk configFile=lr_bs.cntk makeMode=false

Pokud se ukázka spustí, tj. pokud neexistují žádné chybové zprávy, zobrazí se výstup související nejprve se čtením konfigurace a výstupem skutečného trénování sítě.

Vyzkoušení CNTK s GPU

Pokud jste vytvořili CNTK pro využití GPU, zkuste použít GPU spuštěním následujícího příkazu:

cntk configFile=lr_bs.cntk makeMode=false deviceId=auto

Na začátku výstupu byste měli vidět řádek, který potvrzuje použití GPU:

Model has 9 nodes. Using GPU 0.

Všimněte si, že ID GPU se může lišit. Parametr deviceId definuje, jaký procesor se má použít pro výpočty.

  • deviceId=-1 znamená použití procesoru. Výchozí hodnota
  • deviceId=X kde X je celé číslo >=0 znamená použití GPU X, tj. deviceId=0 znamená GPU 0 atd.
  • deviceId=auto znamená použití GPU, automatické výběr GPU

Vyzkoušení rozhraní CNTK Python API

Předpokládáme, že jste vytvořili prostředí PYTHONu CNTK (buď prostřednictvím instalačního skriptu , nebo ručně. Otevřete příkazový řádek a aktivujte prostředí Pythonu CNTK, například spuštěním příkazu

activate cntk-py35

Jako rychlá změna testu do Tutorials\NumpyInterop složky a spuštění python FeedForwardNet.py. Po trénování by se měl zobrazit výstup podobný tomuto:

Finished Epoch [1]: loss = 0.297748 * 25600 2.383s (10742.8 samples per second)
 error rate on an unseen minibatch 0.040000

Ladění zdrojového kódu CNTK v sadě Visual Studio

  • Pokud chcete používat nástroje Python Tools, CNTK a Visual Studio, podívejte se sem.
  • Pokud chcete ladit BrainScript v CNTK pomocí sady Visual Studio, postupujte následovně.

Přispívání do kódu CNTK

Pokud plánujete úpravy kódu, měli byste si přečíst informace o vývoji a testování.