Configuración de CNTK en Windows
Si desea compilar manualmente CNTK a partir del código fuente en Windows con Visual Studio 2017, esta página es para usted.
Si busca cualquier otro tipo de soporte técnico para configurar un entorno de compilación de CNTK o instalar CNTK en el sistema, debe ir aquí en su lugar.
Nota
En esta página se supone que está intentando compilar la rama maestra de CNTK.
Sistema operativo de 64 bits
CNTK requiere una instalación de Windows de 64 bits. Hemos probado el proceso de compilación en Windows 8.1, Windows 10 y Windows Server 2012 R2 y versiones posteriores. Otros entornos no se admiten oficialmente. Para problemas de compatibilidad, compruebe la configuración de compilación y prueba de CNTK Production.
Variables de entorno y componentes
La creación de CNTK en el sistema requiere la definición y configuración de varias variables de entorno. En esta página encontrará información general sobre las variables de entorno que usa la compilación de Windows de CNTK. Además, en esta página se proporciona información general sobre los componentes necesarios y opcionales para compilar CNTK, así como su ubicación de instalación predeterminada.
Visual Studio 2017
Instale Microsoft Visual Studio 2017 para Windows. Puede encontrar un vínculo a la descarga aquí.
La versión de la comunidad de Visual Studio 2017 es suficiente para compilar CNTK.
Durante el proceso de instalación, seleccione "Plataforma universal de Windows development", ".NET desktop development", "Desktop development with C++" (Desarrollo de escritorio con C++) y cargas de trabajo "Desarrollo de Python":
Además, en la pantalla de componentes individuales, asegúrate de agregar "VC++ 2017 versión 15.4 v14.11 toolset" y "Tiempo de ejecución de Visual C++ para UWP" a la instalación:
Por último, agregue "Windows 10 SDK (10.0.16299.0) para Desktop C++ [x86 y x64]':
Instalación preexistente de Visual Studio 2017
Debe tener instalado el conjunto de herramientas "VC++ 2017 versión 15.4 v14.11", "Tiempo de ejecución de Visual C++ para UWP" y "SDK de Windows 10 (10.0.16299.0) para Desktop C++ [x86 y x64]". Para comprobar que Windows "Panel de control -> Programas -> Programas y características" y seleccione "Visual Studio Community 2017" en la lista de programas instalados. Esto iniciará la instalación de Visual Studio de nuevo y le permitirá asegurarse de que los componentes mencionados están instalados en el sistema (consulte la imagen anterior).
Nota
Si VS2017INSTALLDIR
el instalador de Visual Studio no estableció la variable de entorno, establézcala manualmente. El directorio de instalación exacto depende de la versión (2017 en este caso) y de la oferta (Community, Enterprise, etc.) de Visual Studio, según el siguiente patrón: C:\Program Files (x86)\Microsoft Visual Studio\<version>\<offering>
.
Para Visual Studio 2017 Enterprise Edition, ejecute:
setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise"
Para Visual Studio 2017 Community Edition, ejecute:
setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community"
Git
Git es necesario para trabajar con la base de código CNTK. Puede usar las siguientes herramientas:
Git para Windows Este es el cliente de línea de comandos estándar para Git, que usaremos en esta página para describir la inscripción en el repositorio de CNTK.
Un cliente git está disponible como parte de la instalación de Visual Studio 2017. Lea la entrada de blog Administración del ciclo de vida de las aplicaciones de Microsoft sobre el uso del cliente git integrado.
Inscripción en el repositorio de GitHub de CNTK
Aquí se supone que ha instalado Git para Windows. Se supone que ha instalado Git con las opciones predeterminadas en el instalador de Git (especialmente "Usar Git desde el símbolo del sistema de Windows" y con la opción "Desprotección de finales de línea de estilo UNIX, confirmación de finales de estilo UNIX" en el símbolo del sistema "Configuración de finales de línea" habilitado.
Cree un clon del código fuente de CNTK en c:\repos\cntk
el directorio. Si prefiere una ubicación diferente, deberá ajustar los comandos en consecuencia.
Abra un shell de comandos de Windows estándar y ejecute este comando.
c: && md \repos && cd \repos
git clone --recursive https://github.com/Microsoft/cntk
cd cntk
Esto coloca todo el código fuente necesario para una compilación estándar en el sistema. Si tiene previsto realizar modificaciones en el código CNTK, debe leer la información sobre desarrollo y pruebas.
El submódulo Multiverso se usa para habilitar DataParallelASGD para el entrenamiento. Si no necesita compatibilidad con DataParallelASGD, agregue la variable de entorno CNTK_ENABLE_ASGD y establezca su valor en false. Por ejemplo, ejecute esto en un símbolo del sistema de CMD y vuelva a abrir los shells de CMD y Visual Studio para seleccionar el cambio:
setx CNTK_ENABLE_ASGD false
MKL
La biblioteca matemática de CNTK predeterminada es la Biblioteca intel math kernel (Intel MKL). Siga esta página para instalarla.
MKL-DNN
Descargue el origen MKL-DNN y compile con MKL_PATH como ruta de acceso de destino. Consulte las instrucciones de compilación del programa de instalación de MKL-DNN en Windows.
Establezca la variable
MKL_PATH
de entorno en el directorio, por ejemplo:
setx MKL_PATH c:\local\mklml-mkldnn-0.14
MS-MPI
Instale la versión 7 (7.0.12437.6) de Microsoft MPI (MS-MPI) desde esta página de descarga, marcada simplemente como "Versión 7" en el título de la página. Haga clic en el botón Descargar y, a continuación, seleccione msmpisdk.msi
y MSMpiSetup.exe
.
Aumentar de nivel
Siga estos pasos para instalar boost Library en el sistema:
- Descargue e instale Boost versión 1.60 (necesita los
msvc-14.0
archivos binarios) desde esta ubicación de descarga en Sourceforge. - Establezca la variable
BOOST_INCLUDE_PATH
de entorno en la instalación de Boost, por ejemplo:
setx BOOST_INCLUDE_PATH c:\local\boost_1_60_0-msvc-14.0
- Establezca la variable
BOOST_LIB_PATH
de entorno en las bibliotecas boost, por ejemplo:
setx BOOST_LIB_PATH c:\local\boost_1_60_0-msvc-14.0\lib64-msvc-14.0
- Para integrar el marco de pruebas boost en Visual Studio, puede instalar un ejecutor para mejorar las pruebas en Visual Studio desde la Galería de Visual Studio.
Protobuf
Necesita una versión de Protobuf 3.1.0 compilada para CNTK. Puede compilar esta versión por su cuenta o usar una versión preparada ya (precompilada) de Protobuf 3.1.0 (descrita en esta página). Si desea compilar la biblioteca protobuf para CNTK en el sistema, puede encontrar los detalles aquí.
Descargue el archivo ZIP que contiene la versión precompilada de Protobuf para CNTK desde esta ubicación.
Extraiga el archivo en una carpeta del disco local, por ejemplo, en C:\local\protobuf-3.1.0-vs15
y establezca la variable PROTOBUF_PATH
de entorno que apunta a esa ubicación, por ejemplo:
setx PROTOBUF_PATH c:\local\protobuf-3.1.0-vs15
Paquetes específicos de GPU
En esta sección se describen los paquetes que necesita configurar para que CNTK aproveche las GPU de NVIDIA.
Si no tiene intención de usar ninguna GPU con CNTK y confiará solo en la CPU, puede ir directamente a la siguiente sección general. De lo contrario, continúe con esta página.
Establezca la variable CUDNN_PATH
de entorno que apunta a esa ubicación, por ejemplo:
setx CUDNN_PATH C:\local\cudnn-9.0-v7.0\cuda
Establezca la variable CUB_PATH
de entorno que apunta a esa ubicación, por ejemplo:
setx CUB_PATH c:\local\cub-1.7.4\
OPCIONAL. TRAGO.
Si quiere aprovechar CNTK de Python, deberá instalar SWIG. SWIG también es un requisito para compilar las bibliotecas de evaluación de CNTK (para C#/.NET o Java).
Descargue la versión SWIG 3.0.10
de este sitio.
Extraiga el archivo en una carpeta del disco local, por ejemplo, en C:\local\swigwin-3.0.10
y establezca la variable SWIG_PATH
de entorno que apunta a esa ubicación, por ejemplo:
setx SWIG_PATH C:\local\swigwin-3.0.10
Comprobación de instalación rápida: si ha seguido las instrucciones anteriores y ha usado las mismas rutas de acceso, el comando dir C:\local\swigwin-3.0.10\swig.exe
se realizará correctamente y mostrará un archivo.
OPCIONAL. OpenCV
CNTK 2.2 requiere que se instale open source Computer Vision (OpenCV), pero es opcional para CNTK 2.3. Siga esta página para obtener más pasos.
Establezca la variable OPENCV_PATH_V31
de entorno que apunta a la carpeta de compilación de OpenCV, por ejemplo.
setx OPENCV_PATH_V31 c:\local\Opencv3.1.0\build
Comprobación de instalación rápida: si ha seguido la instrucción anterior y ha usado las mismas rutas de acceso, el comando dir C:\local\Opencv3.1.0\build
se realizará correctamente.
OPCIONAL. zlib y libzip
Si tiene previsto compilar el Lector de imágenes de CNTK , necesita bibliotecas zlib y libzip .
zlib y libzip
ZLib y LibZip se distribuyen en código fuente, tendrá que volver a compilar estos paquetes, también puede usar una versión precompilada que creamos para su comodidad (que se describe en esta sección). Para compilar las bibliotecas usted mismo, encontrará instrucciones detalladas aquí.
Descargue el archivo ZIP que contiene la versión precompilada de la biblioteca de compresión libzip/zlib para CNTK desde esta ubicación.
Extraiga el archivo en una carpeta del disco local, por ejemplo, en C:\local\zlib-vs15
y establezca la variable ZLIB_PATH
de entorno que apunta a esa ubicación, por ejemplo:
setx ZLIB_PATH c:\local\zlib-vs15
Comprobación de instalación rápida: si ha seguido las instrucciones anteriores y ha usado las mismas rutas de acceso, el comando dir C:\local\zlib-vs15\bin
se realizará correctamente y mostrará un par de archivos DLL.
OPCIONAL. Instalación de Anaconda Python
Si planea compilar CNTK con compatibilidad con Python, instale SWIG si aún no lo ha hecho. Además, necesitará un entorno de Python. Usamos Anaconda Python para la instalación predeterminada de Python.
Si no tiene una instalación de Anaconda: instale Anaconda Python para Windows.
Puede seguir la configuración estándar dada en el programa de instalación (InstallationType=JustMe; AddToPath=No; RegisterPython=No). En lo siguiente se supone que ha instalado Python Anaconda3 4.1.1
en C:\local\Anaconda3-4.1.1-Windows-x86_64
.
OPCIONAL. Compilación de UWP de CNTK
Nota
Novedades de CNTK versión 2.1.
Si quieres compilar la biblioteca de evaluación de CNTK para UWP, debes seguir los pasos de instalación adicionales que se describen aquí.
Entornos de Python de CNTK
CNTK admite Python 2.7, Python 3.5 y Python 3.6. Se recomienda crear un entorno dedicado en la instalación de Python para trabajar con CNTK. De este modo, CNTK y los paquetes auxiliares instalados no afectarán a ningún otro proyecto de Python. Proporcionamos varios archivos (yml
-files) que contienen la descripción de los paquetes de Python necesarios. Los paquetes se encuentran en el directorio dentro del scripts\install\windows
clon de CNTK. Seleccione el archivo que coincida con la versión de Python de destino.
Versión de Python | Filename |
---|---|
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 |
Como ejemplo, se crea un entorno de Python 3.5 en un entorno denominado cntk-py35
. Si desea un nombre de entorno diferente, ajuste los pasos siguientes en consecuencia. Si desea crear un entorno de Python 2.7 o Python 3.6, ajuste el nombre de YML para que coincida con la versión de Python que quiere usar.
A continuación se supone que ha clonado el código fuente de CNTK de GitHub en el directorio c:\repos\cntk
.
- Para crear un nuevo entorno de Conda (por ejemplo
cntk-py35
, ) y activarlo, ejecute los siguientes comandos desde el shell de comandos de 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
Si tiene un entorno (por ejemplo cntk-py35
, ) puede actualizarlo con los paquetes necesarios más recientes con los siguientes comandos:
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
Variables de entorno de CNTK para Python
Antes de iniciar la compilación de CNTK y compilar las bibliotecas de Python para CNTK, debe establecer o definir variables CNTK_PY.._PATH
de entorno y PYTHONPATH
CNTK_PY.. _PATH
Configure variables de entorno de compilación para el entorno de Python (elija al menos una que se aplique):
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]
Si ha seguido la instalación hasta ahora, esto significaría
setx CNTK_PY35_PATH C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35
El valor de las CNTK_PY36_PATH
variables de entorno , CNTK_PY35_PATH
o CNTK_PY27_PATH
se puede determinar mediante la ejecución en conda ..activate cmd.exe [name-or-path-of-your-environment]
PYTHONPATH
PYTHONPATH
establece las rutas de acceso a los lugares donde Python buscará los módulos que se van a importar. Si compila CNTK, debe agregar la ruta de acceso de salida del proceso de compilación a esta variable de entorno. Si ha clonado CNTK en c:\repos\cntk
esto será
setx PYTHONPATH c:\repos\cntk\bindings\python;%PYTHONPATH%
OPCIONAL. Java
Para compilar los enlaces de Java para la biblioteca de evaluación de CNTK, instale la herramienta SWIG si aún no lo ha hecho. Además, se requiere un kit de desarrollo de Java (JDK). Actualmente usamos JDK 8 de 64 bits (JDK versión 1.8.0_131).
Establezca la variable de entorno JAVA_HOME para que apunte al directorio de la instalación de Java. En la configuración siguiente se supone que ha instalado JDK 1.8.0_131 en C:\local\jdk1.8.0_131:
setx JAVA_HOME "c:\local\jdk1.8.0_131"
Desinstalación de versiones anteriores de CNTK
Si instaló previamente cualquier versión del paquete de Python de CNTK en la máquina, desinstálela quitando primero las rutas de acceso relacionadas con CNTK en la variable de entorno PYTHONPATH. Haga lo siguiente: echo %PYTHONPATH%
para ver su valor actual y, a continuación, use el setx
comando para establecer PYTHONPATH de modo que las rutas de acceso relacionadas con CNTK hayan desaparecido. Si eso hace que PYTHONPATH esté vacío, así que sea.
Realice la desinstalación: pip uninstall cntk
Esto concluye la parte de instalación. Vamos a continuar con la creación de CNTK
Creación de CNTK
Actualmente hay un problema de compatibilidad entre CUDA 9 y VCTools predeterminado en Visual Studio 2017. CNTK requiere VCTools 14.11 para compilar con CUDA 9. Para ello:
- Abrir el símbolo del sistema
- llame a "%VS2017INSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.11
Esto establecerá VCTools en la versión compatible con CUDA 9. En el símbolo del sistema, inicie CNTK.sln en la raíz del proyecto CNTK clonado desde GitHub. Si CNTK.sln se ejecuta con la versión predeterminada compatible con CUDA9 de VCTools, habrá errores de compilación como "1>c:\archivos de programa\nvidia gpu computing toolkit\cuda\v9.0\include\crt/host_config.h(133): error irrecuperable C1189: #error: -- versión de Microsoft Visual Studio no compatible! Solo se admiten las versiones 2012, 2013, 2015 y 2017!"
Si acaba de cambiar y la variable de entorno, debe cerrar cualquier instancia de Visual Studio ya abierta; de lo contrario, el contenido de las variables de entorno modificadas no se reflejará dentro de Visual Studio.
- Haga clic con el botón derecho en la solución CNTK en Explorador de soluciones y seleccione
Properties
- En la ventana abierta, seleccione
Configuration Properties
y presione elConfiguration Manager...
botón - En Configuration Manager seleccione la configuración deseada:
- Depuración o versión
- Solo GPU o CPU. Las configuraciones de solo CPU se denominan explícitamente. Todas las demás configuraciones implican el uso de GPU (es decir,
Release
liberar . Modo habilitado para GPU) - Siempre debe seleccionar configuraciones de solo CPU si no ha instalado los componentes necesarios para las configuraciones de GPU.
Compile la solución CNTK. Los componentes creados por el proceso de compilación dependen de los requisitos previos instalados, para obtener más información sobre la página que detalla las variables de entorno de Windows deben consultarse.
Si compila módulos de Python, tenga en cuenta lo siguiente:
- Los módulos de Python solo se crean en la
Release
configuración - Esto compilará el módulo de Python de CNTK dentro
bindings\python\cntk
de y también generará un paquete (.whl
) en una subcarpetaPython
de la carpeta de salida de compilación (por ejemplo,x64\Release\Python
). - Asegúrese de que la ruta de acceso incluye la carpeta de salida de compilación (por ejemplo,
x64\Release
) y quePYTHONPATH
incluye elbindings\python
directorio . Esto es contrario a la configuración que se muestra para la instalación del paquete pip, aquí cargaremos el módulo CNTK desde el clon del repositorio de CNTK, no como un paquete instalado en el entorno de Python, por lo que también la diferencia en la configuraciónPYTHONPATH
de .
Prueba de la funcionalidad de compilación de CNTK
Para asegurarse de que CNTK funciona correctamente en el sistema, puede ejecutar rápidamente un ejemplo del tutorial Hola mundo - Regresión logística. En este ejemplo se entrena una red sencilla y se puede dirigir para usar CPU o GPU, lo que ayuda a garantizar rápidamente que CNTK funciona correctamente.
A continuación se supone que el repositorio de CNTK se clona c:\repos\cntk
en y build\x64\release
se usó como un subdirectorio para la compilación (Release).
- Abrir el símbolo del sistema
- Proporcione la ruta de acceso a los archivos binarios de CNTK (a través de variable de entorno o para la sesión del símbolo del sistema mediante el primer comando siguiente) y cambie al
Tutorials\HelloWorld-LogisticRegression
directorio:
set PATH=C:\repos\cntk\x64\release;%PATH%
cd C:\repos\cntk\Tutorials\HelloWorld-LogisticRegression
En primer lugar, pruebe el ejemplo:
cntk configFile=lr_bs.cntk makeMode=false
Si el ejemplo se ejecuta, es decir, si no hay ningún mensaje de error, obtendrá una salida relacionada primero con la lectura de la configuración, seguida de la salida del entrenamiento de red real.
Prueba de CNTK con GPU
Si ha compilado CNTK para el uso de GPU, pruebe a usar GPU ejecutando el siguiente comando:
cntk configFile=lr_bs.cntk makeMode=false deviceId=auto
Cerca del principio de la salida debería ver una línea que confirma que se usó una GPU:
Model has 9 nodes. Using GPU 0.
Tenga en cuenta que el identificador de GPU puede ser diferente. El deviceId
parámetro define qué procesador se va a usar para el cálculo.
-
deviceId=-1
significa usar CPU. Valor predeterminado -
deviceId=X
donde X es un entero >=0 significa usar GPU X, es decirdeviceId=0
, GPU 0, etc. -
deviceId=auto
significa usar GPU, seleccionar GPU automáticamente
Prueba de la API de Python de CNTK
Se supone que ha creado un entorno de Python de CNTK (ya sea a través del script de instalación o manualmente. Abra un símbolo del sistema y active el entorno de Python de CNTK, por ejemplo, ejecutando
activate cntk-py35
Como cambio de prueba rápida en la Tutorials\NumpyInterop
carpeta y ejecute python FeedForwardNet.py
. Después del entrenamiento, debería ver una salida similar a la siguiente:
Finished Epoch [1]: loss = 0.297748 * 25600 2.383s (10742.8 samples per second)
error rate on an unseen minibatch 0.040000
Depuración del código fuente CNTK en Visual Studio
- Si quiere usar herramientas de Python, CNTK y Visual Studio, consulte aquí.
- Para depurar BrainScript en CNTK con Visual Studio, siga estos pasos.
Contribución al código CNTK
Si planea modificaciones en el código, debe leer la información sobre desarrollo y pruebas.