Настройка 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":
Кроме того, на экране отдельных компонентов добавьте в установку набор инструментов VC++ 2017 версии 15.4 версии 14.11 и среду выполнения Visual C++ для UWP:
Наконец, добавьте пакет SDK Windows 10 (10.0.16299.0) для классического C++ [x86 и x64]:
Предварительная установка 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 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_PATH
CNTK_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
Если вы планируете изменения в коде, ознакомьтесь с информацией о разработке и тестировании.