Chainer - Enciclopedia
Chainer es un framework de aprendizaje profundo de código abierto escrito completamente en Python, sobre las bibliotecas Python NumPy y CuPy. Su desarrollo es liderado por la empresa japonesa de venture capital Preferred Networks, en colaboración con IBM, Intel, Microsoft y Nvidia.
Chainer es notable por su adopción temprana del esquema "define-by-run", así como por su rendimiento en sistemas a gran escala. La primera versión fue lanzada en junio de 2015 y desde entonces ha ganado gran popularidad en Japón. Además, en 2017, fue incluido en la lista de KDnuggets como uno de los 10 proyectos de aprendizaje automático de código abierto en Python más destacados.
En diciembre de 2019, Preferred Networks anunció la transición de sus esfuerzos de desarrollo de Chainer a PyTorch y solo proporcionará parches de mantenimiento después del lanzamiento de la versión v7.
Define-by-run
Chainer fue el primer framework de aprendizaje profundo en introducir el enfoque define-by-run. El procedimiento tradicional para entrenar una red consistía en dos fases: definir las conexiones fijas entre las operaciones matemáticas (como la multiplicación de matrices y las activaciones no lineales) en la red, y luego ejecutar los cálculos de entrenamiento reales. Esto se conoce como el enfoque define-and-run o de grafo estático. Theano y TensorFlow son entre los marcos destacados que adoptaron este enfoque. Por el contrario, en el enfoque define-by-run o de grafo dinámico, la conexión en una red no se determina cuando se inicia el entrenamiento. La red se determina durante el entrenamiento a medida que se realizan los cálculos reales.
Una de las ventajas de este enfoque es que es intuitivo y flexible. Si la red tiene flujos de control complicados, como condicionales y bucles, en el enfoque define-and-run, se necesitan operaciones especialmente diseñadas para tales construcciones. Por otro lado, en el enfoque define-by-run, se pueden usar las construcciones nativas del lenguaje de programación, como las instrucciones if y los bucles for, para describir tales flujos. Esta flexibilidad es especialmente útil para implementar redes neuronales recurrentes.
Otra ventaja es la facilidad de depuración. En el enfoque define-and-run, si ocurre un error (como un error numérico) en los cálculos de entrenamiento, a menudo es difícil inspeccionar el fallo, ya que el código escrito para definir la red y el lugar real del error están separados. En el enfoque define-by-run, se puede suspender el cálculo con el depurador integrado del lenguaje y inspectar los datos que fluyen a través del código de la red.
El enfoque define-by-run ha ganado popularidad desde su introducción por Chainer y ahora se implementa en muchos otros marcos, incluyendo PyTorch y TensorFlow.
Bibliotecas de extensión
Chainer tiene cuatro bibliotecas de extensión, ChainerMN, ChainerRL, ChainerCV y ChainerUI. ChainerMN permite utilizar Chainer en múltiples GPUs con un rendimiento significativamente más rápido que otros marcos de aprendizaje profundo. Un supercomputador que ejecuta Chainer en 1024 GPUs procesó 90 épocas del conjunto de datos ImageNet en la red ResNet-50 en 15 minutos, lo que es cuatro veces más rápido que el récord anterior detenido por Facebook. ChainerRL añade algoritmos de aprendizaje reforzado de vanguardia, y ChainerUI es una herramienta de gestión y visualización.
Aplicaciones
Chainer se utiliza como framework para PaintsChainer, un servicio que realiza la colorización automática de dibujos en blanco y negro, de línea solo y de bocetos con la entrada del usuario mínima.
Ver también
Comparación de software de aprendizaje profundo
Aprendizaje automático
Red neuronal artificial
Referencias
[1] [2] [3]
Enlaces externos
Sitio web oficial