KDD 2016 Tutorial
CNTK: Microsoft's Open-Source Deep-Learning Toolkit
KDD 2016 Hands-On Tutorial de Frank Seide y Amit Agarwal, Microsoft
Diapositivas usadas en el tutorial
Nota: Tendrá que realizar dos descargas grandes, el binario CNTK (~300 MB) y el conjunto de datos CIFAR-10 (170 MB) e instalar los archivos binarios de CNTK y todas las dependencias necesarias en el equipo. Se recomienda hacerlo de antemano, por ejemplo, desde la habitación del hotel. Consulte a continuación para obtener instrucciones.
Entrenar redes neuronales como grupos de productos de Microsoft En este tutorial se presentan las Microsoft Cognitive Toolkit, o CNTK, el kit de herramientas escalable de aprendizaje profundo de código abierto de Microsoft para Windows y Linux. CNTK es un potente kit de herramientas de aprendizaje profundo basado en grafos de cálculo para entrenar y evaluar redes neuronales profundas. Los grupos de productos de Microsoft usan CNTK, por ejemplo, para crear los modelos de voz de Cortana y la clasificación web.
Audiencia objetivo y expectativa
Este tutorial está dirigido a profesionales actuales o futuros de aprendizaje profundo que buscan una herramienta fácil deusar, pero eficaz y escalable en clústeres de GPU de varias máquinas para cargas de trabajo del mundo real.
En el tutorial se da por supuesto el conocimiento básico del aprendizaje profundo. Los participantes obtendrán información sobre los conceptos básicos y el uso de CNTK, y practicarán la ejecución de entrenamientos de red neuronal con CNTK para el reconocimiento de imágenes y el procesamiento de texto. El tutorial será un punto de partida para resolver su propia tarea de aprendizaje profundo del mundo real con CNTK.
Requisitos previos, descarga e instrucciones de configuración
Para realizar las sesiones prácticas de laboratorio en el tutorial, se requiere un equipo portátil o remoto con 64 bits Windows 8.1+ o Linux, y se recomienda una GPU compatible con CUDA (cuanto más rápido sea mejor). Si la máquina ejecuta Mac-OS, puede ejecutar Linux dentro de un contenedor de Docker y realizar la instalación o configuración que se describe a continuación dentro de este contenedor de Docker.
Deberá descargar e instalar el paquete binario CNTK, el conjunto CIFAR-10 y los archivos del tutorial, en total 500 MB. Lo ideal es hacerlo de antemano.
- Descargue e instale los archivos binarios de CNTK:
En esta página se explican las diferentes alternativas para instalar el Microsoft Cognitive Toolkit en la máquina. Para el ámbito de este tutorial, basta con una instalación basada en una instalación binaria de CNTK. No tendrá que compilar CNTK desde el código fuente. para obtener instrucciones de configuración. Solo puede seguir las instrucciones para descargar un paquete de instalación binario desde esa página.
En cualquier caso, asegúrese de que los ejecutables de CNTK se incluyen en su entorno.
Descargue el conjunto CIFAR-10: para el conjunto CIFAR-10, descargue este archivo: http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
Descargue los archivos tutoriales (~12 MB) abriendo este vínculo y haciendo clic en el botón Descargar.
Realizar los tutoriales prácticos en línea
Los dos tutoriales prácticos se han publicado como páginas que se pueden seguir aquí:
- Reconocimiento de imágenes en CIFAR-10: reconocimiento de imágenes en CIFAR-10 con redes convolucionales y residuales
- Language Understanding con ATIS: etiquetado de ranuras y clasificación de intenciones con redes recurrentes
ABSTRACTO
En este tutorial se presentará el Microsoft Cognitive Toolkit, o CNTK, el kit de herramientas de aprendizaje profundo de código abierto de microsoft para Windows y Linux. CNTK es un potente kit de herramientas de aprendizaje profundo basado en grafos de cálculo para entrenar y evaluar redes neuronales profundas. Los grupos de productos de Microsoft usan CNTK, por ejemplo, para crear los modelos de voz de Cortana y la clasificación web. CNTK admite redes de avance de fuente, convolucionales y recurrentes para cargas de trabajo de voz, imagen y texto, también en combinación. Los tipos de red populares se admiten de forma nativa (convolución) o se pueden describir como una configuración de CNTK (LSTM, secuencia a secuencia). CNTK se escala a varios servidores de GPU y está diseñado en torno a la eficacia. En este tutorial se proporciona información general sobre la arquitectura general de CNTK y se describen los métodos y algoritmos específicos que se usan para la diferenciación automática, la inferencia y ejecución de bucles recurrentes, el uso compartido de memoria, la selección aleatoria sobre la marcha de grandes corporas y la paralelización multiservida. A continuación, mostraremos el aspecto de los usos típicos para tareas relevantes, como el reconocimiento de imágenes, el modelado de secuencia a secuencia y el reconocimiento de voz.
ESQUEMA
En el tutorial se tratarán estos temas:
- ¿Qué es CNTK?
- Introducción a la red computacional
- ¿Cómo se ve un uso típico de CNTK?
- Definición de la red computacional
- Configuración de E/S de datos
- Hiperparámetres de SGD
- Flujos de trabajo típicos
- Profundización en tecnologías específicas
- Control implícito del tiempo
- Minibatching de secuencias de longitud variable
- Entrenamiento en paralelo de datos
- Ejemplos prácticos, entre los que se incluyen
- Reconocimiento de imágenes (AlexNet, ResNet)
- Procesamiento de texto (ATIS)
- Versión preliminar: API de la biblioteca de CNTK para Python y C++
BIOGRAFÍAS DEL ORADOR
Frank Seide, nativo de Hamburgo, Alemania, es investigador sénior de Microsoft Research. Su investigación actual se centra en redes neuronales profundas para el reconocimiento de voz conversacional; junto con el coautor Dong Yu, fue el primero en mostrar la eficacia de las redes neuronales profundas para el reconocimiento de la voz conversacional. A lo largo de su carrera, ha estado interesado y trabajado en una amplia gama de temas y componentes del reconocimiento automático de voz, incluidos los sistemas de diálogo hablado, el reconocimiento de chino mandarín y, especialmente, el reconocimiento de vocabulario grande de voz conversacional con la aplicación para la indexación de audio, transcripción y traducción de voz a voz. Su enfoque actual es el kit de herramientas de aprendizaje profundo de CNTK de Microsoft.
Amit Agarwal es un ingeniero de software principal de la división de tecnología e investigación de Microsoft. Su enfoque actual es crear CNTK, la plataforma de aprendizaje profundo distribuido a gran escala de Microsoft, para permitir una escala, velocidad y capacidad sin precedentes para entrenar modelos de aprendizaje profundo masivos en conjuntos de datos enormes, que se usan en una amplia gama de tareas de aprendizaje profundo relacionadas con voz, imagen y texto en Microsoft y en la comunidad. Amit Agarwal trabajó en una amplia gama de productos de Microsoft y en mentor graphics. Posee 7 patentes relacionadas con la programación heterogénea y gpu.
REFERENCES
[1] Amit Agarwal, Eldar Akchurin, Chris Basoglu, Guoguo Chen, Scott Cyphers, Jasha Droppo, Adam Eversole, Brian Guenter, Mark Hillebrand, T. Ryan Hoens, Dockerdong Huang, Zhuheng Huang, Vladimir Ivanov, Alexey Kamenev, Filip Kranen, Oleksii Kuchaiev, Wolfgang Manousek, Avner May, Bhaskar Mitra, Olivier Nano, Gaizka Navarro, Alexey Orlov, Hari Parthasarathi, Baolin Peng, Marko Radmilac, Alexey Reznichenko, Frank Seide, Frank Seide, Michael L. Seltzer, Malcolm Slaney, Andreas Stolcke, Huaming Wang, Yongqiang Wang, Kaisheng Yao, Dong Yu, Yu Zhang, Geoffrey Zweig (en orden alfabético), "An Introduction to Computational Networks and the Computational Network Toolkit", Microsoft Technical Report MSR-TR-2014-112, 2014.
[2] "CNTK",