Konfigurowanie zestawu CNTK w systemie Windows

Jeśli chcesz utworzyć ręcznie kod CNTK na podstawie kodu źródłowego w systemie Windows przy użyciu programu Visual Studio 2017, ta strona jest dla Ciebie.

Jeśli szukasz innego rodzaju obsługi konfigurowania środowiska kompilacji CNTK lub instalowania zestawu CNTK w systemie, zamiast tego należy przejść tutaj .

Uwaga

Na tej stronie założono, że próbujesz skompilować gałąź główną CNTK.

64-bitowy system operacyjny

CnTK wymaga 64-bitowej instalacji systemu Windows. Przetestowaliśmy proces kompilacji na Windows 8.1, Windows 10 i Windows Server 2012 R2 i nowszych. Inne środowiska nie są oficjalnie obsługiwane. Aby uzyskać informacje o problemach ze zgodnością, sprawdź konfigurację kompilacji i testowania CNTK Production.

Zmienne środowiskowe i składniki

Tworzenie zestawu CNTK w systemie wymaga definicji i konfiguracji różnych zmiennych środowiskowych. Na tej stronie można znaleźć omówienie zmiennych środowiskowych używanych przez kompilację CNTK systemu Windows. Ponadto ta strona zawiera omówienie wymaganych i opcjonalnych składników do kompilowania zestawu CNTK, a także ich domyślnej lokalizacji instalacji.

Visual Studio 2017

Zainstaluj program Microsoft Visual Studio 2017 dla systemu Windows. Link do pobierania można znaleźć tutaj.

Wersja Community programu Visual Studio 2017 jest wystarczająca do utworzenia zestawu CNTK.

Podczas procesu instalacji wybierz pozycję "platforma uniwersalna systemu Windows programowanie", "Programowanie aplikacji klasycznych na platformie .NET", "Programowanie aplikacji klasycznych w języku C++" i "Programowanie w języku Python":

im1

Poza tym na ekranie poszczególnych składników upewnij się, że do instalacji dodano zestaw narzędzi "VC++ 2017 w wersji 15.4 w wersji 14.11" i "Środowisko uruchomieniowe Visual C++ dla platformy UWP":

im1

Na koniec dodaj element "Windows 10 SDK (10.0.16299.0) dla programu Desktop C++ [x86 i x64]":

im1

Przedistnieje instalacja programu Visual Studio 2017

Wymagany jest zestaw narzędzi "VC++ 2017 w wersji 15.4 w wersji 14.11", "Środowisko uruchomieniowe Visual C++ dla platformy UWP" i "Windows 10 SDK (10.0.16299.0) dla komputerów stacjonarnych C++ [x86 i x64]" zainstalowane w systemie. Aby otworzyć system Windows "Panel sterowania -> Programy i> funkcje" i wybierz pozycję "Visual Studio Community 2017" z listy zainstalowanych programów. Spowoduje to ponowne uruchomienie konfiguracji programu Visual Studio i umożliwi upewnienie się, że wymienione składniki są zainstalowane w systemie (zobacz ilustrację powyżej).

Uwaga

Jeśli VS2017INSTALLDIR zmienna środowiskowa nie została ustawiona przez instalatora programu Visual Studio, ustaw ją ręcznie. Dokładny katalog instalacyjny zależy od wersji (2017 w tym przypadku) i oferty (Community, Enterprise itp.) programu Visual Studio zgodnie z następującym wzorcem: C:\Program Files (x86)\Microsoft Visual Studio\<version>\<offering>.

W przypadku programu Visual Studio 2017 Enterprise edition uruchom polecenie:

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

W programie Visual Studio 2017 Community Edition uruchom polecenie:

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

Git

Usługa Git jest wymagana do pracy z bazą kodu CNTK. Możesz użyć następujących narzędzi:

Rejestrowanie w repozytorium GITHub CNTK

W tym miejscu założono, że zainstalowano usługę Git dla systemu Windows. Przyjęto założenie, że narzędzie Git zainstalowano przy użyciu opcji domyślnych w instalatorze Git (szczególnie "Użyj narzędzia Git z wiersza polecenia systemu Windows" i z włączoną opcją "Wyewidencjonuj zakończenia wiersza w stylu systemu Windows, zatwierdź zakończenia wiersza w stylu systemu UNIX" w wierszu polecenia "Konfigurowanie końców wierszy".

Utwórz klon kodu źródłowego CNTK w c:\repos\cntk katalogu. Jeśli wolisz inną lokalizację, musisz odpowiednio dostosować polecenia.

Otwórz standardową powłokę poleceń systemu Windows i wykonaj następujące polecenie

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

Umieszcza to cały wymagany kod źródłowy dla standardowej kompilacji w systemie. Jeśli planujesz wprowadzanie modyfikacji kodu CNTK, przeczytaj informacje na temat programowania i testowania.

Moduł podrzędny Multiverso służy do włączania funkcji DataParallelASGD na potrzeby trenowania. Jeśli nie potrzebujesz obsługi elementu DataParallelASGD, dodaj zmienną środowiskową CNTK_ENABLE_ASGD i ustaw jej wartość na false. Na przykład uruchom polecenie w wierszu polecenia, a następnie otwórz ponownie powłoki CMD i program Visual Studio, aby pobrać zmianę:

setx CNTK_ENABLE_ASGD false

Mkl

Domyślną biblioteką matematyczną CNTK jest biblioteka intel math kernel library (Intel MKL). Postępuj zgodnie z tą stroną , aby ją zainstalować

MKL-DNN

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

MS-MPI

Zainstaluj wersję 7 (7.0.12437.6) programu Microsoft MPI (MS-MPI) ze strony pobierania, oznaczoną po prostu jako "Wersja 7" w tytule strony. Kliknij przycisk Pobierz, a następnie wybierz pozycję i msmpisdk.msiMSMpiSetup.exe.

Zwiększyć

Wykonaj następujące kroki, aby zainstalować bibliotekę Boost w systemie:

  • Pobierz i zainstaluj pakiet Boost w wersji 1.60 (potrzebujesz msvc-14.0 plików binarnych) z tej lokalizacji pobierania w lokalizacji Sourceforge.
  • Ustaw zmienną środowiskową BOOST_INCLUDE_PATH na instalację Boost, np.:
    setx BOOST_INCLUDE_PATH c:\local\boost_1_60_0-msvc-14.0
  • Ustaw zmienną środowiskową BOOST_LIB_PATH na biblioteki Boost, np.:
    setx BOOST_LIB_PATH c:\local\boost_1_60_0-msvc-14.0\lib64-msvc-14.0
  • Aby zintegrować platformę testową Boost z programem Visual Studio, możesz zainstalować moduł uruchamiający testy boost w programie Visual Studio z galerii programu Visual Studio.

Protobuf

Potrzebna jest wersja narzędzia Protobuf 3.1.0 skompilowana dla zestawu CNTK. Możesz skompilować tę wersję samodzielnie lub użyć już przygotowanej (wstępnie skompilowanej) wersji protobuf 3.1.0 (opisanej na tej stronie). Jeśli chcesz utworzyć bibliotekę Protobuf dla CNTK w systemie, szczegółowe informacje można znaleźć tutaj

Pobierz plik ZIP zawierający wstępnie skompilowaną wersję narzędzia Protobuf dla CNTK z tej lokalizacji

Wyodrębnij archiwum do folderu na dysku lokalnym, np. na C:\local\protobuf-3.1.0-vs15 i ustaw zmienną środowiskową PROTOBUF_PATH wskazującą na lokalizację, np.:

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

Pakiety specyficzne dla procesora GPU

W tej sekcji opisano pakiety, które należy skonfigurować, aby cnTK korzystać z procesorów GPU FIRMY NVIDIA.

Jeśli nie zamierzasz używać żadnych procesorów GPU z CNTK i będzie polegać tylko na procesorze CPU, możesz przejść bezpośrednio do następnej sekcji ogólnej. W przeciwnym razie przejdź do tej strony.

Ustaw zmienną środowiskową CUDNN_PATH wskazującą na lokalizację, np.:

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

Ustaw zmienną środowiskową CUB_PATH wskazującą na lokalizację, np.:

    setx CUB_PATH c:\local\cub-1.7.4\

OPCJONALNE. SWIG.

Jeśli chcesz korzystać z zestawu CNTK z poziomu języka Python, musisz zainstalować bibliotekę SWIG. SWIG jest również wymagane do tworzenia bibliotek oceny CNTK (dla języka C#/.NET lub Java).

Pobierz wersję SWIG 3.0.10 z tej witryny.

Wyodrębnij archiwum do folderu na dysku lokalnym, np. na C:\local\swigwin-3.0.10 i ustaw zmienną środowiskową SWIG_PATH wskazującą na lokalizację, np.:

    setx SWIG_PATH C:\local\swigwin-3.0.10

Szybki test instalacji: jeśli wykonano powyższe instrukcje i użyto tych samych ścieżek, polecenie dir C:\local\swigwin-3.0.10\swig.exe zakończy się pomyślnie i wyświetli jeden plik.

OPCJONALNE. Opencv

CnTK 2.2 wymaga zainstalowania przetwarzanie obrazów open source (OpenCV), ale jest opcjonalny dla CNTK 2.3. Wykonaj tę stronę , aby uzyskać dalsze kroki.

Ustaw zmienną środowiskową OPENCV_PATH_V31 wskazującą folder kompilacji OpenCV, np.

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

Szybki test instalacji: jeśli powyższe instrukcje zostały wykonane i użyto tych samych ścieżek, polecenie dir C:\local\Opencv3.1.0\build zakończy się pomyślnie.

OPCJONALNE. zlib i libzip

Jeśli planujesz skompilować czytnik obrazów CNTK , potrzebujesz bibliotek zlib i libzip .

zlib i libzip

Biblioteki ZLib i LibZip są dystrybuowane w kodzie źródłowym. Należy ponownie skompilować te pakiety. Możesz również użyć wstępnie skompilowanej wersji utworzonej dla Twojej wygody (opisanej w tej sekcji). Aby utworzyć biblioteki samodzielnie, szczegółowe instrukcje znajdziesz tutaj

Pobierz plik ZIP zawierający wstępnie skompilowaną wersję biblioteki kompresji libzip/zlib dla pliku CNTK z tej lokalizacji

Wyodrębnij archiwum do folderu na dysku lokalnym, np. na C:\local\zlib-vs15 i ustaw zmienną środowiskową ZLIB_PATH wskazującą na lokalizację, np.:

    setx ZLIB_PATH c:\local\zlib-vs15

Szybki test instalacji: jeśli wykonano powyższe instrukcje i użyto tych samych ścieżek, polecenie dir C:\local\zlib-vs15\bin zakończy się pomyślnie i wyświetli kilka bibliotek DLL.

OPCJONALNE. Instalacja środowiska Anaconda w języku Python

Jeśli planujesz skompilowanie zestawu CNTK z obsługą języka Python, zainstaluj bibliotekę SWIG , jeśli jeszcze tego nie zrobiono. Ponadto potrzebne będzie środowisko języka Python. Do domyślnej instalacji języka Python używamy środowiska Anaconda.

Jeśli nie masz instalacji środowiska Anaconda: zainstaluj środowisko Anaconda Python dla systemu Windows. Możesz postępować zgodnie ze standardową konfiguracją podaną w programie instalacyjnym (InstallationType=JustMe; AddToPath=Nie; RegisterPython=Nie). W poniższym założeniu założono, że język Python Anaconda3 4.1.1 został zainstalowany w programie C:\local\Anaconda3-4.1.1-Windows-x86_64.

OPCJONALNE. Kompilacja platformy UWP CNTK

Uwaga

Nowość w CNTK w wersji 2.1.

Jeśli chcesz utworzyć bibliotekę oceny CNTK dla platformy UWP, musisz wykonać dodatkowe kroki instalacji opisane tutaj.

Środowiska języka Python CNTK

Platforma CNTK obsługuje języki Python 2.7, Python 3.5 i Python 3.6. Zalecamy utworzenie dedykowanego środowiska w instalacji języka Python do pracy z cnTK. Dzięki temu pakiety CNTK i zainstalowane pakiety pomocnicze nie będą mieć wpływu na żaden inny projekt języka Python. Udostępniamy kilka plików (yml-files) zawierających opis wymaganych pakietów języka Python. Pakiety znajdują się w katalogu wewnątrz scripts\install\windows klonu CNTK. Wybierz plik pasujący do docelowej wersji języka Python.

Wersja języka Python Pod nazwą
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 przykład utworzymy środowisko języka Python 3.5 w środowisku o nazwie cntk-py35. Jeśli chcesz użyć innej nazwy środowiska, odpowiednio dostosuj poniższe kroki. Jeśli chcesz utworzyć środowisko języka Python w wersji 2.7 lub Python 3.6, dostosuj nazwę YML tak, aby odpowiadała wersji języka Python, której zamierzasz użyć.

W poniższych założeniach kod źródłowy CNTK został sklonowany z usługi GitHub do katalogu c:\repos\cntk.

  • Aby utworzyć nowe środowisko conda (np. cntk-py35) i aktywować je, uruchom następujące polecenia w powłoce poleceń systemu Windows:
    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

Jeśli masz środowisko (np. cntk-py35) możesz zaktualizować je przy użyciu najnowszych wymaganych pakietów przy użyciu następujących poleceń:

    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

Zmienne środowiskowe CNTK dla języka Python

Przed rozpoczęciem kompilacji cnTK i skompilowania bibliotek języka Python dla CNTK należy ustawić/zdefiniować zmienne CNTK_PY.._PATH środowiskowe i PYTHONPATH

CNTK_PY.. _PATH

Skonfiguruj zmienne środowiskowe kompilacji dla środowiska języka Python (wybierz co najmniej jedno, które ma zastosowanie):

    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]

Jeśli do tej pory nastąpiła instalacja, oznaczałoby to

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

Wartość CNTK_PY36_PATHzmiennych środowiskowych , CNTK_PY35_PATHlub CNTK_PY27_PATH można określić, uruchamiając polecenie w conda ..activate cmd.exe [name-or-path-of-your-environment]

PYTHONPATH

PYTHONPATH Ustawia ścieżki do miejsc, w których język Python będzie szukał modułów do zaimportowania. Jeśli tworzysz cnTK, musisz dodać ścieżkę wyjściową procesu kompilacji do tej zmiennej środowiskowej. W przypadku sklonowania cnTK do c:\repos\cntk tego będzie

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

OPCJONALNE. Java

Aby utworzyć powiązania Języka Java dla biblioteki oceny CNTK, zainstaluj narzędzie SWIG , jeśli jeszcze tego nie zrobiono. Ponadto wymagany jest zestaw Java Development Kit (JDK). Obecnie używamy 64-bitowego zestawu JDK 8 (JDK w wersji 1.8.0_131).

Ustaw zmienną środowiskową JAVA_HOME, aby wskazywała katalog instalacji języka Java. W poniższym ustawieniu przyjęto założenie, że zainstalowano zestaw JDK 1.8.0_131 do folderu C:\local\jdk1.8.0_131:

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

Odinstalowywanie poprzednich wersji zestawu CNTK

Jeśli wcześniej zainstalowano dowolną wersję pakietu CNTK języka Python na maszynie, odinstaluj go, usuwając najpierw wszystkie ścieżki pokrewne CNTK w zmiennej środowiskowej PYTHONPATH. Wykonaj: echo %PYTHONPATH% aby wyświetlić jego bieżącą wartość, a następnie użyj setx polecenia , aby ustawić pythonPATH tak, aby ścieżki pokrewne CNTK zostały zniknęły. Jeśli to sprawia, że język PYTHONPATH jest pusty, tak czy tak.

Wykonaj dezinstalację: pip uninstall cntk


To kończy część instalacji. Kontynuujmy tworzenie CNTK


Budynek CNTK

Obecnie występuje problem ze zgodnością między narzędziami CUDA 9 i domyślnymi narzędziami VCTools w programie Visual Studio 2017. CNTK wymaga narzędzia VCTools 14.11 do kompilacji przy użyciu cudA 9. W tym celu:

  • Otwórz wiersz polecenia
  • wywołaj metodę "%VS2017INSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.11

Spowoduje to ustawienie narzędzia VCTools na zgodną wersję CUDA 9. W wierszu polecenia uruchom plik CNTK.sln w katalogu głównym sklonowanego projektu CNTK z usługi GitHub. Jeśli cnTK.sln działa z domyślną niezgodną wersją NARZĘDZIA VCTools CUDA9, będą występować błędy kompilacji, takie jak "1>c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/host_config.h(133): błąd krytyczny C1189: #error: -- nieobsługiwana wersja programu Microsoft Visual Studio! Obsługiwane są tylko wersje 2012, 2013, 2015 i 2017!"

W przypadku zmiany i zmiennej środowiskowej należy zamknąć wszystkie już otwarte wystąpienie programu Visual Studio. W przeciwnym razie zawartość zmienionych zmiennych środowiskowych nie zostanie odzwierciedlona w programie Visual Studio.

  • Kliknij prawym przyciskiem myszy rozwiązanie CNTK w Eksplorator rozwiązań i wybierz pozycjęProperties
  • W otwartym oknie wybierz Configuration Properties i naciśnij Configuration Manager... przycisk
  • W Configuration Manager wybierz żądaną konfigurację:
    • Debugowanie lub wydawanie
    • Procesor GPU lub tylko procesor CPU. Konfiguracje tylko do procesora CPU są jawnie nazwane. Wszystkie inne konfiguracje oznaczają użycie procesora GPU (tj. Releasewydanie. Tryb włączony przez procesor GPU)
    • Zawsze należy wybrać konfiguracje tylko procesora CPU, jeśli nie zainstalowano składników wymaganych do konfiguracji procesora GPU

Skompiluj rozwiązanie CNTK. Składniki utworzone przez proces kompilacji są zależne od zainstalowanych wymagań wstępnych, aby uzyskać szczegółowe informacje na stronie ze szczegółami zmiennych środowiskowych systemu Windows .

Jeśli tworzysz moduły języka Python, zwróć uwagę na następujące kwestie:

  • Moduły języka Python są tworzone tylko w Release konfiguracji
  • Spowoduje to skompilowanie modułu JĘZYKA Python CNTK wewnątrz bindings\python\cntk i utworzenie pakietu (.whl) w podfolderze Python folderu wyjściowego kompilacji (np. x64\Release\Python)
  • Upewnij się, że ścieżka zawiera folder wyjściowy kompilacji (np. x64\Release), który PYTHONPATH zawiera bindings\python katalog. Jest to sprzeczne z konfiguracją pokazaną w przypadku instalacji pakietu Pip. W tym miejscu załadujemy moduł CNTK z klonu repozytorium CNTK, a nie jako zainstalowany pakiet w środowisku języka Python, dlatego też różnica w konfigurowaniu PYTHONPATHprogramu .

Testowanie funkcji kompilacji CNTK

Aby upewnić się, że cnTK działa prawidłowo w systemie, możesz szybko uruchomić przykład z samouczka Hello world — Regresja logistyczna. Ten przykład trenuje prostą sieć i może być kierowany do użycia procesora CPU lub procesora GPU, co pomaga szybko zapewnić prawidłowe działanie CNTK.

Poniżej założono, że repozytorium CNTK zostało sklonowane do c:\repos\cntk i build\x64\release zostało użyte jako podkatalog kompilacji (Release).

  • Otwórz wiersz polecenia
  • Podaj ścieżkę do plików binarnych CNTK (za pośrednictwem zmiennej środowiskowej lub sesji wiersza polecenia przy użyciu pierwszego poniższego polecenia) i przejdź do Tutorials\HelloWorld-LogisticRegression katalogu:
set PATH=C:\repos\cntk\x64\release;%PATH%
cd C:\repos\cntk\Tutorials\HelloWorld-LogisticRegression

Najpierw wypróbuj przykład:

cntk configFile=lr_bs.cntk makeMode=false

Jeśli przykład zostanie uruchomiony, tj. jeśli nie ma żadnych komunikatów o błędach, najpierw otrzymasz dane wyjściowe związane z odczytaniem konfiguracji, a następnie dane wyjściowe rzeczywistego trenowania sieci.

Próba użycia zestawu CNTK z procesorem GPU

Jeśli utworzono zestaw CNTK na potrzeby użycia procesora GPU, spróbuj użyć procesora GPU, wykonując następujące polecenie:

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

Na początku danych wyjściowych powinien zostać wyświetlony wiersz potwierdzający, że użyto procesora GPU:

Model has 9 nodes. Using GPU 0.

Należy pamiętać, że identyfikator procesora GPU może być inny. Parametr deviceId definiuje procesor używany do obliczeń.

  • deviceId=-1 oznacza użycie procesora CPU. Wartość domyślna
  • deviceId=X gdzie X jest liczbą całkowitą >=0 oznacza użycie procesora GPU X, tj. deviceId=0 oznacza procesor GPU 0 itp.
  • deviceId=auto oznacza użycie procesora GPU, wybranie procesora GPU automatycznie

Wypróbowanie interfejsu API języka Python WTK

Przyjęto założenie, że utworzono środowisko języka Python CNTK (za pomocą skryptu instalacji lub ręcznie. Otwórz wiersz polecenia i aktywuj środowisko języka Python CNTK, np. wykonując polecenie

activate cntk-py35

W ramach szybkiego testu przejdź do Tutorials\NumpyInterop folderu i uruchom polecenie python FeedForwardNet.py. Po trenowaniu powinny zostać wyświetlone dane wyjściowe podobne do następujących:

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

Debugowanie kodu źródłowego CNTK w programie Visual Studio

  • Jeśli chcesz używać narzędzi Python Tools, CNTK i Visual Studio, zobacz tutaj
  • Aby debugować kod BrainScript w pliku CNTK za pomocą programu Visual Studio, wykonaj kroki opisane tutaj.

Współtworzenia kodu CNTK

Jeśli planujesz modyfikacje kodu, przeczytaj informacje dotyczące tworzenia i testowania.