Compartir a través de


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":

im1

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:

im1

Por último, agregue "Windows 10 SDK (10.0.16299.0) para Desktop C++ [x86 y x64]':

im1

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.

  • Cliente de Escritorio de GitHub

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_PATHvariables de entorno , CNTK_PY35_PATHo 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 seleccioneProperties
  • En la ventana abierta, seleccione Configuration Properties y presione el Configuration 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 subcarpeta Python 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 que PYTHONPATH incluye el bindings\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ón PYTHONPATHde .

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 decir deviceId=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.