CNTK ofrece tres versiones diferentes:

  • La de solo CPU que utiliza la biblioteca de código abierto Math Kernel para redes neuronales profundas (Deep Learning) de Intel.  MKLML ofrece un alto rendimiento para aplicaciones de Deep Learning en la arquitectura Intel.
  • La versión de GPU utiliza bibliotecas NVIDIA (como CUB y cuDNN) que están altamente optimizadas y permiten realizar entrenamiento distribuido en múltiples GPU inclusive con máquinas múltiples.
  • La versión 1bit-SGD es una versión especial de GPU de CNTK que habilita los algoritmos de entrenamiento paralelos SGD desarrollados por MSR 1-quantized SGD y block-momentum, que permiten un entrenamiento distribuido incluso más rápido.

Es importante tener actualizados los drivers de nuestra placa de video a la última versión si estamos utilizando la versión gpu o 1bit-SGD .

Instalar Microsoft Cognitive Toolkit

Se puede instalar Microsoft Cognitive Toolkit (CNTK) en Windows 64-bit y Linux 64-bit.  En este caso vamos a estar explicando cómo instalarlo en Windows a partir de las distribuciones binarias (compiladas).

Si bien es posible realizar la instalación a partir del código fuente (compilándolo), el proceso es más complejo y el resultado es el mismo. Por lo tanto, y a menos que realicen sus propias modificaciones al código fuente de CNTK recomiendo utilizar alguna de las alternativas que voy a explicar en este post.

Existen tres alternativas posibles documentadas por Microsoft para instalar el Microsoft Cognitive Toolkit:

  • Instalación manual
  • Instalación mediante script (Python y BrainScript)
  • Instalación en Python mediante pip

Vamos a concentrarnos en los detalles de la instalación manual, ya que es la que nos permite entender todos los componentes que contienen la infraestructura. Sí utilizan la opción de instalar los componente mediante el script, se debe tomar en cuenta que manualmente tenemos más alternativas como por ejemplo instalarlo con la última versión de Anaconda3.

Instalar Microsoft Cognitive Toolkit mediante script

El primer paso para poder realizar la instalación es descargar el archivo comprimido (ZIP) que contiene la distribución binaria de Microsoft Cognitive Toolkit. Pueden encontrar los archivos binarios compilados de CNTK en este link:

https://github.com/Microsoft/CNTK/releases

NOTA: existen actualizaciones periódicas del Microsoft Cognitive Toolkit, por lo cual sugiero siempre instalar o actualizar la instalación que tienen a la última versión.

Una vez realizado esto, se debe crear una carpeta en donde será descomprimido el archivo zip. La documentación de Microsoft sugiere utilizar la carpeta “c:\local\CNTK-X-Y\” donde X es la versión mayor e Y es la versión menor. Por ejemplo al momento de escribir este artículo la carpeta sería “c:\local\CNTK-2-4\”. Esta recomendación es para que no se mezclen los archivos de una versión CNTK con otra.

Una vez realizado este paso se debe lanzar el script de instalación “install.bat” que se encuentra en la sub carpeta “c:\local\CNTK-2-4\cntk\Scripts\install\windows”.

El script luego de revisar la máquina, va a determinar cuáles son los prerrequisitos que se deben instalar para que funcione. Luego notificará sobre los pasos siguientes y la ubicación de instalación de estos prerrequisitos. Sí se desea cambiar estos valores como por ejemplo la carpeta de instalación de Anaconda3 el script puede ser iniciado con parámetros.  Se pueden encontrar los detalles de los parámetros del script en la siguiente página.

Setup Windows binary script options

Como el script descargará los componentes faltantes desde la web, se requiere una conexión a Internet. Luego al instalar estos componentes el UAC pedirá confirmación. Se debe tener en cuenta que algunos de los componentes como Anaconda3 son bastante voluminosos y su descarga e instalación pueden demorar dependiendo de la conexión a Internet.

Estos son los prerrequisitos que instala el script y que en el caso de realizar la instalación manualmente debemos también tenerlos instalados.

  • VS2017 Runtime
  • MSMPI
  • Anaconda3

El scrip también realiza las siguientes acciones:

  • Crea el entorno CNTK-PY35 en la instalación de Anaconda
  • Instala el módulo de Python CNTK en el entorno CNTK-PY35 recién creado
  • Crea un archivo batch que activa el entorno CNTK-PY35 de Python recién creado con las variables de entorno que necesita para poder ejecutar correctamente

 

Instalar Microsoft Cognitive Toolkit manualmente

Al igual que la instalación mediante script, la instalación manual de Microsoft Cognitive Toolkit (CNTK) está basada en la distribución binaria. No se requiere utilizar el código fuente. Esta opción está destinada a aquellos usuarios que desean tener una instalación personalizada.

Al igual que con la instalación mediante script, se debe descargar el paquete de instalación binario comprimido correspondiente a la versión de Python y a la versión de Microsoft CognitiveToolkit que se desea utilizar.

Al igual que la instalación mediante script se debe crear una carpeta en la cual se descomprimirá el archivo zip. Por simplicidad y para no confundir a los lectores vamos a utilizar la misma carpeta que utiliza la documentación “c:\local”. Sin embargo, puede utilizarse cualquier otra carpeta.

Instalar requisitos previos

CNTK en Windows requiere tener instalado los siguientes componente previamente porque estamos realizando la instalación manualmente:

El paquete redistribuible de Visual C ++ para Visual Studio 2017

Se puede instalar desde

  • c:\local\cntk\prerequisites\VS2017\VC_redist.x64.exe.

También se puede descargar desde la siguiente dirección:

https://support.microsoft.com/es-ar/help/2977003/the-latest-supported-visual-c-downloads

 

Microsoft MPI Versión 7 (7.0.12437.6)

Se puede instalar desde:

  • c:\local\cntk\prerequisites\MsMPiSetup.exe.

También puede descargar desde la siguiente dirección:

https://www.microsoft.com/en-us/download/details.aspx?id=49926

Si no se encuentra previamente instalado, debe tenerse en cuenta la recomendación de Microsoft con respecto a la versión de MSMPI (7.0.12437.6), ya que esta es la versión que actualmente utilizan en las pruebas.

NOTA:  En mi caso particular, en mi máquina, ya tenía estos componentes instalados y en en el caso del Microsoft MPI tenía una versión más actualizada, por lo cual no fue necesario que los instalara.

 

Para los sistemas con GPU

Lo recomendable es tener el último controlador NVIDIA.

Configuración de CNTK para BrainScript

Para configurar manualmente el CNTK para correr scripts de configuracion de BrainScript se debe agregar al PATH el directorio binario del CNTK (por ejemplo, c:\local\CNTK\cntk). Esto puede hacerse permanente mediante la configuración de la variable de entorno PATH.

En mi caso y dado que la cantidad de caracteres de la variable de entorno PATH es limitada, prefiero modificarla al abrir la ventana de comandos para usar BainScript. Por lo tanto, voy a agregar la carpeta en el entorno de ejecución de comandos que voy a estar utilizando.  Para eso creo el archivo “C:\Local\Cntk-BrainScript.bat” con el siguiente contenido:

 

 
@ECHO OFF
SET path=%path%;c:\local\cntk\cntk\;
CLS
@echo CNTK BrainScript command promt
  

Luego de crear el archivo BAT creo un acceso directo con la siguiente línea de comandos.

 
%comspec% /k ""C:\Local\Cntk-BrainScript.bat""
 

 

Como vemos, el archive bat agrega el path del Microsoft CognitiToolkit a nuestro entorno y el acceso directo nos deja una línea de comandos con esta modificación. Luego para utilizarlo solo necesitamos hacer un doble clic en el acceso directo.

Para validar si funciona podemos ejecutar el comando CNTK el cual nos deberá informar la versión instalada.

Cntk-BrainScript Version

Cntk-BrainScript Version

 

Instalar Microsoft Cognitive Toolkit en Python

Para poder utilizar el Microsoft Cognitive Toolkit en Python es necesario tener previamente instalado todos los componentes necesarios. Si bien el CNTK funciona con las versiones 2.7 y 3.5 de Python yo recomiendo utilizar esta última.

Instalar Anaconda3

En la documentación se indica que es recomendable tener instalado la versión de Anaconda3 4.1.1 de 64 bits. La ventaja que tiene utilizar Anaconda3 es que no es necesario desinstalar versiones más viejas de Python como la 2.7 si estas se encuentran previamente instaladas en el equipo, ya que pueden convivir sin inconvenientes en la misma máquina.

En mi caso preferí instalar la última versión de Anaconda3 a pesar de que es más nueva que la sugerida por Microsoft, y por el momento no he encontrado inconvenientes. Para descargar la última versión de Anaconda3 pueden acceder al siguiente link:

https://www.anaconda.com/download/

Al momento de escribir este post la última versión de Anaconda3 disponible en esta página de descargas era la 3.6.

Si aun prefieren instalar la versión sugerida en la documentación de Microsoft pueden acceder al siguiente link:

https://repo.continuum.io/archive/Anaconda3-4.1.1-Windows-x86_64.exe

Una vez descargado el instalador, y luego de ejecutarlo, nos solicita aceptar la licencia y se debe tomar la decisión si se instala solo para el usuario actual o para todos los usuarios del equipo (se requieren permisos de administrador). Dependiendo del antivirus puede llegar a ser necesario desactivarlo. En mi caso lo pude instalar sin inconvenientes y no lo tuve que desactivar. El siguiente paso es seleccionar la carpeta en la cual se va a instalar Anaconda3. Por comodidad y facilidad, y dado que requiere que la carpeta no contenga espacios en blanco o caracteres especiales, sugiero instalarlo en la carpeta “ C:\local\Anaconda3\”

En el siguiente paso se debe seleccionar si se agrega el directorio de instalación a la variable de entorno PATH. En mi caso utilice la opción recomendada por anaconda de no agregarlo, en cuyo caso es necesario utilizar el Anaconda Navigator o el Anaconda Prompt que se encuentran disponibles en el menú inicio que crea el instalador de Anaconda3 para poder correr los scripts de Python o comando de Conda.

El siguiente paso permite decidir si se registra a Anaconda3 como su versión predeterminada de Python. Como en mi caso utilizo varias versiones de Python desmarque esta opción y proseguí con la instalación.

Al terminar nos ofrece la posibilidad de instalar el Visual Studio Code.

Instalar CNTK en Python

Dependiendo de la versión de Python y la versión de cognitive Toolkit (CPU, GPU, 1bit-SGD) existen diferente archivos wheel (.whl)  para instalar. En la siguiente página podrán encontrar el detalle de cuál es el archivo que deben instalar de acuerdo al hardware y software que tienen instalado:

https://docs.microsoft.com/en-us/cognitive-toolkit/setup-windows-python

Instalando CNTK sin un entorno (environment)

Cuando realizamos esta instalación el CNTK es instalado dentro del entorno de Python y no hace falta activarlo.

Lo primero que tenemos que hacer es abrir la línea de comandos de Anaconda3 mediante el enlace que nos ha creado el instalador de Anaconda3 en el menú de inicio. Si no hacemos esto no tenemos disponible la configuración y ejecutar el siguiente commando.

 
pip install <url>
 

Donde <url> es la correspondiente URL al archivo Wheel.

Por ejemplo para instalar la versión 2.3.1 CPU para Python 3.6 debemos ejecutar:

 
pip install https://cntk.ai/PythonWheel/CPU-Only/cntk-2.3.1-cp36-cp36m-win_amd64.whl
 

 

Si ya tenenos instalado el CNTK podemos hacer una actualización a una versión más nueva sobre la instalación actual mediante las opciones –upgrade y –no-deps

 
pip install --upgrade --no-deps <url>
 

Donde <url> es la correspondiente URL al archivo Wheel.

Ejemplo para actualizar a CNTK 2.4 (solo CPU para Python 3.6):

 
pip install --upgrade --no-deps https://cntk.ai/PythonWheel/CPU-Only/cntk-2.4-cp36-cp36m-win_amd64.whl
 

 

Upgrade CNTK Anaconda Prompt

Upgrade CNTK Anaconda Prompt

 

Instalar en un entorno (environment) de Conda

En ocasiones es preferible crear un entorno de Anaconda3 para tener aislado del resto de los entornos. Podemos crear un entorno con el nombre que queramos. Por ejemplo, podríamos crear el entorno cntk-py36 e instalar el CNTK sólo dentro de este entorno. Para eso nuevamente debemos abrir la consola de Anaconda3 y ejecutar los siguientes comandos para crear el entorno y luego activarlo.

 
conda create --name cntk-py36 python=3.6 numpy scipy h5py jupyter
 
activate cntk-py36
 

Después de crearlo y de activarlo podemos realizar la instalación dentro de este entorno con exactamente el mismo comando que antes.

 
pip install https://cntk.ai/PythonWheel/CPU-Only/cntk-2.3.1-cp36-cp36m-win_amd64.whl
 

Verificar que funciona el CNTK en Python

Para verificar que todo está correctamente instalado desde la consola de Anaconda3 podemos ejecutar el siguiente comando que nos debe devolver la versión de CNTK que se encuentra instalado en nuestro entorno de Python:

  
python -c "import cntk; print(cntk.__version__)"
 

 

 


2 Comentarios

Clavivs · 05/05/2018 en 11:56

No me queda claro si esta entrada hay que leerla secuencialmente o dependiendo de la opción elegida, entiendo que es lo segundo, pero en ese caso me resulta muy difícil saber por donde continuar.
En cuanto a los comandos no me queda nada claro si hay que ejecutarlos en algún editor especial (ya sea el de anaconda o de la CNTK) o directamente en el cmd de windows, donde siempre me dice que que no reconoce esa instrucción.
Le agradecería que dejara más claras las instrucciones para novatos torpes como yo. Muchas gracias y saludos.

    Jose Mariano Alvarez · 06/05/2018 en 11:40

    La entrada explica con más detalle como instalar el CNTK manualmente, pero al comienzo explica que hay otras alternativas como:
    • Donde dice Instalar Microsoft Cognitive Toolkit mediante script: Es la instalación automatizada
    • Donde dice Instalar Microsoft Cognitive Toolkit manualmente: Es la instalación de la versión BrianScript (instala también otros componentes como tutoriales, ejemplos, manuales, etc.)
    • Donde dice Instalar Microsoft Cognitive Toolkit en Python: Es la instalación que se usa en Python (no requiere de las otras, pero si los prerrequisitos).

    Si decides instalar manualmente el CNTK para usar con Python debes tener en cuenta que Anaconda es una distribución que contiene muchos de los componentes necesarios para hacer ciencia de datos y te facilita la instalación, actualización y configuración de los componentes que te falten por ejemplo CNTK.

    Una de las ventajas de usar ANACONDA es que puedes crear los entornos para poder hacer pruebas, aislando los cambios de un entorno respecto del resto de los entornos. Cuando lo instalas tienes no solo interfaces gráficas para manejar entornos y aplicaciones, sino que también tienes el “Anaconda Prompt” o entorno de líneas de comandos que no es ni mas ni menos que un entorno Shell de Windows con la configuración necesaria (PATH, variables de ambiente, etc.) para que puedas usar tanto los componentes de Conda como los componentes instalados (por ejemplo, Python).

    El acceso directo que sugiero crear en el post está por fuera de la instalación de Conda y solo es usado en el caso de que quieras utilizar el modelo de programación de BrianScript en CNTK desde el Shell de Windows sin necesidad de usar lo que te ofrece Conda.

    Debes usar el Anaconda Prompt si decides ejecutar un script de Python sin una herramienta que te permita usar Python. Yo instalé el Visual Studio Code para los casos que no quiero usar Jupyter Notebooks y utilizo el entorno sin necesidad de acceder al Shell de Windows.

Dejá un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

This site uses Akismet to reduce spam. Learn how your comment data is processed.