Настройка CNTK в Windows

Если вы хотите создать CNTK вручную из исходного кода в Windows с помощью Visual Studio 2017, эта страница предназначена для вас.

Если вы ищете любую другую поддержку для настройки среды сборки CNTK или установки CNTK в вашей системе, следует перейти сюда .

Примечание

На этой странице предполагается, что вы пытаетесь создать главную ветвь CNTK.

64-разрядная ОС

Для CNTK требуется 64-разрядная установка Windows. Мы протестировали процесс сборки на Windows 8.1, Windows 10 и Windows Server 2012 R2 и более поздних версий. Другие среды официально не поддерживаются. Сведения о проблемах совместимости см. в конфигурации сборки и тестирования CNTK Production.

Переменные среды и компоненты

Для создания CNTK в системе требуется определение и настройка различных переменных среды. Обзор переменных среды, используемых сборкой Windows CNTK, можно найти на этой странице. Кроме того, на этой странице представлены общие сведения о необходимых и необязательных компонентах для создания CNTK, а также о расположении установки по умолчанию.

Visual Studio 2017

Установите Microsoft Visual Studio 2017 для Windows. Ссылку на скачивание можно найти здесь.

Для сборки CNTK достаточно версии Сообщества Visual Studio 2017.

В процессе установки выберите рабочие нагрузки "разработка универсальная платформа Windows", "Разработка классических приложений .NET", "Разработка классических приложений на C++" и "Разработка на Python":

im1

Кроме того, на экране отдельных компонентов добавьте в установку набор инструментов VC++ 2017 версии 15.4 версии 14.11 и среду выполнения Visual C++ для UWP:

im1

Наконец, добавьте пакет SDK Windows 10 (10.0.16299.0) для классического C++ [x86 и x64]:

im1

Предварительная установка Visual Studio 2017

Вам потребуется установить набор инструментов VC++ 2017 версии 15.4 версии 14.11, среду выполнения Visual C++ для UWP и пакет SDK для Windows 10 (10.0.16299.0) для классического C++ [x86 и x64]. Чтобы проверить, откройте Windows "панель управления — программы и>> компоненты" и выберите "Visual Studio Community 2017" в списке установленных программ. Это снова запустит установку Visual Studio и позволит убедиться, что упомянутые выше компоненты установлены в вашей системе (см. рисунок выше).

Примечание

Если VS2017INSTALLDIR переменная среды не была задана установщиком Visual Studio, установите ее вручную. Точный каталог установки зависит от версии (2017 в данном случае) и предложения (Community, Enterprise и т. д.) Visual Studio в соответствии со следующим шаблоном: C:\Program Files (x86)\Microsoft Visual Studio\<version>\<offering>

Для выпуска Visual Studio 2017 Enterprise выполните следующую команду:

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

Для Visual Studio 2017 Community edition выполните следующую команду:

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

Git

Для работы с базой кода CNTK требуется Git. Вы можете использовать следующие средства:

  • Git для Windows. Это стандартный клиент командной строки для Git, который мы будем использовать на этой странице для описания зачисления в репозиторий CNTK.

  • Клиент Git доступен в рамках установки Visual Studio 2017. Ознакомьтесь с записью блога microsoft Application Lifecycle Management об использовании встроенного клиента Git.

  • Клиент GitHub Desktop

Зачисление в репозиторий GitHub CNTK

Здесь предполагается, что вы установили Git для Windows. Предполагается, что вы установили Git с помощью параметров по умолчанию в установщике Git (особенно "Использовать Git из командной строки Windows" и с параметром "Проверить стиль Windows, зафиксировать окончания строки в стиле UNIX" в включенной строке "Настройка окончаний строк".

Создайте клон исходного кода CNTK в c:\repos\cntk каталоге. Если вы предпочитаете другое расположение, необходимо соответствующим образом настроить команды.

Откройте стандартную командную оболочку Windows и выполните следующую команду.

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

Это помещает весь необходимый исходный код для стандартной сборки в систему. Если вы планируете вносить изменения в код CNTK, ознакомьтесь с информацией о разработке и тестировании.

Подмодул Multiverso используется для включения DataParallelASGD для обучения. Если вам не нужна поддержка DataParallelASGD, добавьте переменную среды CNTK_ENABLE_ASGD и присвойте ей значение false. Например, запустите это в командной строке CMD, а затем снова откройте оболочки CMD и Visual Studio, чтобы получить изменения:

setx CNTK_ENABLE_ASGD false

MKL

Библиотека математики CNTK по умолчанию — это библиотека ядра Intel Math (Intel MKL). Перейдите на эту страницу , чтобы установить ее

MKL-DNN

  • Скачайте исходный код MKL-DNN и выполните сборку с MKL_PATH в качестве целевого пути. Проверка инструкций по сборке в программе установки MKL-DNN в Windows

  • Задайте для переменной MKL_PATH среды каталог, например:

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

MS-MPI

Установите версию 7 (7.0.12437.6) Microsoft MPI (MS-MPI) с этой страницы загрузки, помеченную как "Версия 7" в заголовке страницы. Нажмите кнопку "Скачать", а затем выберите оба msmpisdk.msi и MSMpiSetup.exe.

Повышение

Чтобы установить библиотеку Boost в системе, сделайте следующее:

  • Скачайте и установите Boost версии 1.60 (необходимы двоичные msvc-14.0 файлы) из этого расположения скачивания в Sourceforge.
  • Задайте для переменной BOOST_INCLUDE_PATH среды установку Boost, например:
    setx BOOST_INCLUDE_PATH c:\local\boost_1_60_0-msvc-14.0
  • Задайте для переменной BOOST_LIB_PATH среды библиотеки Boost, например:
    setx BOOST_LIB_PATH c:\local\boost_1_60_0-msvc-14.0\lib64-msvc-14.0
  • Чтобы интегрировать платформу тестирования Boost в Visual Studio, можно установить средство выполнения для тестов Boost в Visual Studio из коллекции Visual Studio.

Protobuf

Вам нужна версия Protobuf 3.1.0, скомпилированная для CNTK. Вы можете скомпилировать эту версию самостоятельно или использовать уже подготовленную (предварительно скомпилированную) версию Protobuf 3.1.0 (описанную на этой странице). Если вы хотите создать библиотеку Protobuf для CNTK в вашей системе, ознакомьтесь с подробными сведениями здесь.

Скачайте ZIP-файл, содержащий предварительно скомпилированную версию Protobuf для CNTK из этого расположения.

Извлеките архив в папку на локальном диске, например C:\local\protobuf-3.1.0-vs15 в переменную PROTOBUF_PATH среды, указывающую на это расположение, например:

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

Пакеты, относящиеся к GPU

В этом разделе описываются пакеты, которые необходимо настроить, чтобы CNTK использовал GPU NVIDIA.

Если вы не планируете использовать какие-либо GPU с CNTK и будете полагаться только на ЦП, вы можете перейти непосредственно к следующему общему разделу. В противном случае перейдите на эту страницу.

Задайте переменную CUDNN_PATH среды, указывающую на это расположение, например:

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

Задайте переменную CUB_PATH среды, указывающую на это расположение, например:

    setx CUB_PATH c:\local\cub-1.7.4\

OPTIONAL. ГЛОТОК.

Если вы хотите воспользоваться преимуществами CNTK из Python, необходимо установить SWIG. SwIG также является обязательным требованием для создания библиотек оценки CNTK (для C#/.NET или Java).

Скачайте версию SWIG 3.0.10 с этого сайта.

Извлеките архив в папку на локальном диске, например C:\local\swigwin-3.0.10 в переменную SWIG_PATH среды, указывающую на это расположение, например:

    setx SWIG_PATH C:\local\swigwin-3.0.10

Быстрая установка: если вы выполнили инструкцию выше и использовали те же пути, команда dir C:\local\swigwin-3.0.10\swig.exe завершится успешно и отобразит один файл.

OPTIONAL. OpenCV

Для CNTK 2.2 требуется установить Компьютерное зрение с открытым кодом (OpenCV), но это необязательно для CNTK 2.3. Чтобы выполнить дальнейшие действия, перейдите на эту страницу .

Задайте переменную OPENCV_PATH_V31 среды, указывающую на папку сборки OpenCV, например.

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

Быстрая установка: если вы выполнили инструкцию выше и использовали те же пути, команда dir C:\local\Opencv3.1.0\build будет выполнена успешно.

OPTIONAL. zlib и libzip

Если планируется создать средство чтения изображений CNTK , вам потребуются библиотеки zlib и libzip .

zlib и libzip

ZLib и LibZip распространяются в исходном коде, вам потребуется перекомпилировать эти пакеты, вы также можете использовать предварительно скомпилированную версию, созданную для удобства (описанную в этом разделе). Чтобы создать библиотеки самостоятельно, вы найдете подробные инструкции здесь.

Скачайте ZIP-файл, содержащий предварительно скомпилированную версию библиотеки сжатия libzip/zlib для CNTK из этого расположения.

Извлеките архив в папку на локальном диске, например C:\local\zlib-vs15 в переменную ZLIB_PATH среды, указывающую на это расположение, например:

    setx ZLIB_PATH c:\local\zlib-vs15

Быстрая установка: если вы выполнили инструкцию выше и использовали те же пути, команда dir C:\local\zlib-vs15\bin завершится успешно и отобразит несколько библиотек DLL.

OPTIONAL. Установка Anaconda Python

Если вы планируете создать CNTK с поддержкой Python, установите SWIG , если это еще не сделано. Кроме того, вам потребуется среда Python. Мы используем Anaconda Python для установки Python по умолчанию.

Если у вас нет установки Anaconda, установите Anaconda Python для Windows. Стандартную конфигурацию можно выполнить в программе установки (InstallationType=JustMe; AddToPath=No; RegisterPython=No). В следующем примере предполагается, что вы установили Python Anaconda3 4.1.1 в C:\local\Anaconda3-4.1.1-Windows-x86_64.

OPTIONAL. Сборка UWP CNTK

Примечание

Новые возможности CNTK версии 2.1.

Если вы хотите создать библиотеку оценки CNTK для UWP, необходимо выполнить дополнительные действия по установке, описанные здесь.

Среды Python CNTK

CNTK поддерживает Python 2.7, Python 3.5 и Python 3.6. Мы рекомендуем создать выделенную среду в установке Python для работы с CNTK. Таким образом, CNTK и установленные вспомогательные пакеты не повлияют на любой другой проект Python. Мы предоставляем несколько файлов (yml-файлов), содержащих описание необходимых пакетов Python. Пакеты находятся в каталоге scripts\install\windows в клоне CNTK. Выберите файл, соответствующий целевой версии Python.

Версия Python имя_файла
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

В качестве примера мы создадим среду Python 3.5 в среде с именем cntk-py35. Если требуется другое имя среды, настройте следующие действия соответствующим образом. Если вы хотите создать среду Python 2.7 или Python 3.6, измените имя YML в соответствии с используемой версией Python.

Ниже предполагается, что вы клонировали исходный код CNTK из GitHub в каталог c:\repos\cntk.

  • Чтобы создать новую среду conda (например cntk-py35, ) и активировать ее, выполните следующие команды из командной оболочки 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

Если у вас есть среда (например, cntk-py35) ее можно обновить с помощью последних необходимых пакетов с помощью следующих команд:

    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 для Python

Перед началом сборки CNTK и сборки библиотек Python для CNTK необходимо задать или определить переменные CNTK_PY.._PATH среды и PYTHONPATH

CNTK_PY.. _PATH

Настройте переменные среды сборки для среды Python (выберите по крайней мере одну из них):

    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]

Если вы последовали за установкой до сих пор, это будет означать

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

Значение переменных CNTK_PY36_PATHCNTK_PY35_PATHсреды или CNTK_PY27_PATH переменных среды можно определить, выполнив команду inconda ..activate cmd.exe [name-or-path-of-your-environment]

PYTHONPATH

PYTHONPATH задает пути к местам, где Python будет искать модули для импорта. При сборке CNTK необходимо добавить выходной путь процесса сборки в эту переменную среды. Если вы клонировали CNTK в c:\repos\cntk это будет

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

OPTIONAL. Java

Чтобы создать привязки Java для библиотеки оценки CNTK, установите средство SWIG , если это еще не сделано. Кроме того, требуется пакет средств разработки Java (JDK). В настоящее время используется 64-разрядная версия JDK 8 (JDK версии 1.8.0_131).

Задайте переменную среды JAVA_HOME, чтобы указать каталог установки Java. В следующем параметре предполагается, что вы установили JDK 1.8.0_131 в C:\local\jdk1.8.0_131:

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

Удаление предыдущих версий CNTK

Если вы ранее установили на компьютере любую версию пакета Python CNTK, удалите ее, удалив все связанные пути CNTK в переменной среды PYTHONPATH. Сделайте: echo %PYTHONPATH% чтобы просмотреть его текущее значение, а затем используйте setx команду, чтобы задать PYTHONPATH таким образом, чтобы пути, связанные с CNTK, исчезли. Если это делает PYTHONPATH пустым, так что будьте в нем.

Выполните удаление: pip uninstall cntk


Это завершает установку. Давайте продолжим создание CNTK


Сборка CNTK

В настоящее время существует проблема совместимости между CUDA 9 и VCTools по умолчанию в Visual Studio 2017. Для создания CNTK с помощью CUDA 9 требуется VCTools 14.11. Для этого выполните указанные далее действия.

  • Открытие командной строки
  • Вызов "%VS2017INSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.11

При этом VCTools будет задана совместимая с CUDA 9 версия. В командной строке запустите CNTK.sln в корне клонированного проекта CNTK из GitHub. Если CNTK.sln выполняется с несовместимой версией VCTools по умолчанию CUDA9, будут возникать ошибки сборки, такие как "1>c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/host_config.h(133): неустранимая ошибка C1189: #error: -- неподдерживаемая версия Microsoft Visual Studio! Поддерживаются только версии 2012, 2013, 2015 и 2017!"

Если вы только что изменили и переменную среды, закройте любой уже открытый экземпляр Visual Studio, в противном случае содержимое измененных переменных среды не будет отражено в Visual Studio.

  • Щелкните правой кнопкой мыши решение CNTK в Обозреватель решений и выберитеProperties
  • В открывшемся окне выберите Configuration Properties и нажмите Configuration Manager... кнопку
  • В Configuration Manager выберите нужную конфигурацию:
    • Отладка или выпуск
    • ТОЛЬКО GPU или ЦП. Конфигурации только для ЦП явно именуются. Все остальные конфигурации подразумевают использование GPU (т. е. Release выпуск ). Режим с поддержкой GPU)
    • Всегда следует выбирать конфигурации только для ЦП, если не установлены компоненты, необходимые для конфигураций GPU.

Создайте решение CNTK. Компоненты, созданные процессом сборки, зависят от установленных предварительных требований. Дополнительные сведения о странице с подробными сведениями о переменных среды Windows следует искать.

Если вы создаете модули Python, обратите внимание:

  • Модули Python создаются только в конфигурации Release
  • При этом будет построен модуль Python CNTK, bindings\python\cntk а также создается пакет (.whl) во вложенной папке Python выходной папки сборки (например, x64\Release\Python)
  • Убедитесь, что путь содержит выходную папку сборки (например, x64\Release), а PYTHONPATH также каталог bindings\python . Это противоречит настройке, показанной для установки пакета Pip, здесь мы загрузим модуль CNTK из клона репозитория CNTK, а не как установленный пакет в среде Python, поэтому также разница в настройке PYTHONPATH.

Проверка функциональности сборки CNTK

Чтобы убедиться, что CNTK работает правильно в системе, можно быстро запустить пример из руководства по Hello World — логистическая регрессия. Этот пример обучает простую сеть и может быть направлен на использование ЦП или GPU, что помогает быстро обеспечить правильную работу CNTK.

Ниже предполагается, что репозиторий CNTK клонирован c:\repos\cntk в и build\x64\release использовался в качестве вложенного каталога для сборки (release).

  • Открытие командной строки
  • Укажите путь к двоичным файлам CNTK (с помощью переменной среды или сеанса командной строки с помощью первой команды ниже) и перейдите в Tutorials\HelloWorld-LogisticRegression каталог:
set PATH=C:\repos\cntk\x64\release;%PATH%
cd C:\repos\cntk\Tutorials\HelloWorld-LogisticRegression

Сначала попробуйте пример:

cntk configFile=lr_bs.cntk makeMode=false

Если пример выполняется, т. е. при отсутствии сообщений об ошибках вы получите выходные данные, связанные сначала с чтением конфигурации, а затем выходными данными фактического обучения сети.

Попробуйте использовать CNTK с GPU

Если вы создали CNTK для использования GPU, попробуйте использовать GPU, выполнив следующую команду:

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

В начале выходных данных должна появиться строка, подтверждающая использование GPU:

Model has 9 nodes. Using GPU 0.

Обратите внимание, что идентификатор GPU может отличаться. Параметр deviceId определяет, какой процессор следует использовать для вычислений.

  • deviceId=-1 означает использование ЦП. Значение по умолчанию
  • deviceId=X где X является целым числом >=0 означает использование GPU X, т. е. означает GPU 0 и т. deviceId=0 д.
  • deviceId=auto означает использование GPU, автоматическое выбор GPU

Пробная версия API Python для CNTK

Предполагается, что вы создали среду Python CNTK (либо с помощью скрипта установки , либо вручную. Откройте командную строку и активируйте среду Python CNTK, например, выполнив команду

activate cntk-py35

В качестве быстрого теста перейдите в папку Tutorials\NumpyInterop и выполните команду python FeedForwardNet.py. После обучения вы увидите выходные данные, аналогичные следующему:

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

Отладка исходного кода CNTK в Visual Studio

  • Если вы хотите использовать инструменты Python, CNTK и Visual Studio, см. здесь
  • Чтобы выполнить отладку BrainScript в CNTK с помощью Visual Studio, выполните действия, описанные здесь.

Участие в коде CNTK

Если вы планируете изменения в коде, ознакомьтесь с информацией о разработке и тестировании.