Introducción
La Inteligencia Artificial es por lejos el área que concita mayor interés en los últimos años y hay fuertes razones para ello.
Para empezar, en la próxima década alrededor del 40% de los puestos de trabajo actuales serán automatizados o reemplazados por sistemas de inteligencia artificial. También está el fuerte interés de los inversores en proyectos de IA en varias áreas clave: Gestión de la Cadena de Suministro, Ventas, Marketing, Operaciones, IT o Finanzas por ejemplo.
Si bien el campo de la IA tiene diferentes especializaciones, Deep Learning es quizás el área más fértil desde el punto de vista de las aplicaciones prácticas. A modo de introducción, los algoritmos de DL imitan las conexiones neuronales del cerebro humano, siendo capaces de crear modelos de reconocimiento de patrones alimentando datos y sus correspondientes tags.
El reconocimiento de imágenes, la visión por computador, el procesamiento del habla y el lenguaje han sido en gran parte abordados por la técnica de Deep Learning y sólo se puede esperar magia en los próximos años a medida que se descubran nuevas aplicaciones y continue la evolución esperaba del área.
En particular en la plataforma iOS hay tres participantes fundamentales en esta área: Tensorflow Lite, Core ML y PyTorch, cada uno con sus propios méritos y limitaciones.
Acompáñanos a revisar los 3 principales frameworks de Deep Learning para iOS, en este análisis introductorio.
En un mundo adecuadamente automatizado y educado, entonces, las máquinas pueden demostrar ser una influencia verdaderamente humanizadora. Puede ser que las máquinas hagan el trabajo que hace posible la vida y que los seres humanos hagan todas las otras cosas que hacen la vida agradable y que la misma valga la pena.
Isaac Asimov, Robot Visions
TensorFlow Lite
TensorFlow es el marco más popular y maduro para los proyectos de Deep Learning, cuenta con la mayor comunidad y la mayor base de código de ejemplos. Es a la vez un modelo de formación y una herramienta de inferencia, mientras que TensorFlow Lite es un framework diseñado especialmente para la inferencia en dispositivos móviles y de baja potencia de computación.
Se comienza entrenando el modelo bajo TensorFlow, y luego se aplica el convertidor para obtener el modelo optimizado.
Algunas de las desventajas de Tensorflow Lite son inherentes al reducido espacio de almacenamiento y potencia de cálculo de los dispositivos móviles, como el esperado compromiso de precisión en comparación con los modelos completos.
En el lado positivo de las cosas, los modelos convertidos son compatibles tanto con iOS como con Android, e incluso con dispositivos de IoT, siendo capaces de realizar inferencias fuera de línea con baja latencia sin necesidad de servicios API externos.
Cuando se compara Tensorflow Lite con CoreML (conjunto de bibliotecas y componentes de Apple ML), es inevitable suponer que el primero no alcanzará el rendimiento del Framework nativo de Apple, pero Tensorflow Lite ha sido optimizado para hacer uso del hardware de IA de iOS, y funciona mejor en los dispositivos con el chip A12 de Apple (iPhone XS) o superior que cuentan con unidades NPU incorporadas. Ser capaz de generar un único modelo e importarlo a múltiples plataformas es una ventaja adicional.
PyTorch
PyTorch es una biblioteca de aprendizaje de máquinas de código abierto basada en Torch. Proporciona un estilo de programación imperativo e inspirado en Python, que soporta “código como modelo”, facilita la depuración y es consistente con otras librerías de computación científica populares, mientras que sigue siendo eficiente y soporta aceleradores de hardware como GPUs y NPUs.
Con esta biblioteca, los cálculos se ejecutan inmediatamente, lo que significa que el usuario no necesita escribir el código completo antes de comprobar si funciona o no. Podemos ejecutar eficientemente una parte del código e inspeccionarlo en tiempo real.
La biblioteca está basada en Python como comentábamos anteriormente y está construida para proporcionar flexibilidad como una plataforma de desarrollo de Deep Learning.
PyTorch tiene una API accesible que facilita el aprendizaje y entrenar el nuevo modelo. Si tu equipo tiene conocimientos de Python, encontrarás útil que PyTorch se integre sin problemas con el stack de Data Science disponible. De hecho, PyTorch es similar a NumPy, así que si ya lo estás usando, te sentirás como en casa.
El framework proporciona grafos de computo dinámico, una característica para construir grafos sobre la marcha, e incluso cambiarlos durante el tiempo de ejecución en lugar de grafos predefinidos con funcionalidades específicas. Este servicio es valioso para situaciones en las que se desconocen los requisitos de memoria para crear una red neuronal.
Otras fortalezas clave del framework PyTorch incluyen:
TorchScript: Proporciona una transición sin problemas entre el modo grafo y el modo eager para acelerar el camino hacia la producción.
Entrenamiento distribuido: Backend distribuido. Torch permite la optimización del rendimiento en la investigación y la producción a través del entrenamiento distribuido y escalable.
Herramientas y bibliotecas: Un vibrante ecosistema de herramientas y bibliotecas amplía PyTorch y apoya el desarrollo en visión por computador, NLP y más.
Core ML
Core ML es la incursión de Apple en la disciplina de Machine Learning. Proporciona un medio para ejecutar la inferencia en modelos exclusivamente en el ecosistema de Apple, aprovechando su arquitectura ARM personalizada y las extensiones de NPU, proporcionando un gran rendimiento y un bajo consumo de CPU, y se complementa con Create ML para poder entrenar modelos sin tener que recurrir a frameworks de terceros tales como TensorFlow.
Mientras que TensorFlow Lite hace uso de los modelos creados por TensorFlow, Core ML puede convertir y utilizar modelos multiplataforma TensorFlow o PyTorch, o utilizar directamente los modelos creados por Create ML, dándole total flexibilidad sobre el modelo de origen.
Create ML por otra parte proporciona una interfaz gráfica que lo convierte quizás en el entrenador de modelos más intuitivo disponible a la fecha. Una de sus principales desventajas es tal vez una serie limitada de algoritmos de entrenamiento en comparación con TensorFlow o PyTorch.
Dependiendo del escenario particular a implementar, Create ML podría ser suficiente o por el contrario quedarse corto debiéndose recurrir a otros de los frameworks mencionados.
Cuadrícula de diferenciación para cada alternativa
TensorFlow | PyTorch | Create ML + Core ML | |
Multiplatforma | Sí | Sí | No |
Lenguaje de programación | C++ / Python | Python | ObjC / Swift |
Facilidad de uso | Complejo | Medio | Amigable |
Tamaño de comunidad | Muy grande | Grande | Mediano |
Licencia | Código abierto | Código abierto | Propietario |
Desarrollador | Apple |
Conclusión
En Overactive creemos que para cada proyecto de software de cierta complejidad, la elección de las herramientas correctas y la composición adecuada del equipo de desarrolladores, basado en los requisitos técnicos es el primer paso para lograr una entrega exitosa.
El tipo de problemas que pueden ser resueltos con Deep Learning requiere un enfoque científico, estadístico y empírico basado en el ensayo y error, y la continua verificación de hipótesis.
Los frameworks como Create ML que favorecen la creación de prototipos u ofrecen entornos de tipo playground en contraposición a los que requieren un tedioso proceso de programación para empezar a validar la inferencia del modelo, seguramente serán útiles para obtener una primera aproximación al problema rápidamente.
Por otro lado, si el proyecto requiere tipos de modelos complejos, TensorFlow es el marco a elegir, ya que tiene el soporte de modelos más amplio de la industria, y también concentra la mayoría de los cursos, documentos y muestras de código.
Agradecimientos especiales a Laureano De Andrea y Damian Pintos del Mobile Hub.