Swift
Trending

Swift para Tensorflow, el siguiente paso del Machine Learning

Chris Lattner, creador del lenguaje y que actualmente trabaja en el equipo Google Brain, presenta la solución que llevará el Machine Learning a otro nivel de la mano de Swift.

Resumen del artículo

  • El equipo de Tensorflow, comandado por Chris Lattner, creador del lenguaje Swift, ha presentado un nuevo y excitante proyecto: Swift para Tensorflow, que dará soporte al lenguaje para todo el uso de Machine Learning con la librería más popular, permitiéndole compilar todo el ML y usar Python interoperado.

Hablar de Machine Learning (o aprendizaje automático) hoy día es hablar de una de las tecnologías de mayor peso del actual mercado. Infinidad de dispositivos hacen uso de él e incorporan procesadores diseñados para él (como los últimos A11 Bionic). ¿Pero, qué es Machine Learning? Algoritmos con la capacidad de deducir respuestas y aprender de su propio uso.

Para entenderlo fácilmente: un algoritmo normalmente tiene un comportamiento fijo, como una sentencia if. Si a es mayor de 10 haz Z, y si no, haz Y. Pase lo que pase, vaya el mundo por donde quiera: si a es mayor de 10 mi algoritmo siempre hará Z y si no Y. ¿Por qué? Porque así lo he programado yo. El Machine Learning va más allá. Son algoritmos que pueden cambiar su comportamiento a otro para el que no fue programado. Tal vez en las primeras ejecuciones, si a es mayor que 10 haga Z, pero puede llegar un punto a partir de la propia repetición del algoritmo, que este “aprenda” que para hacer Z debe hacerlo cuando sea mayor de 9 y no de 10. Yo no le he programado ese cambio de comportamiento: lo ha aprendido solo mediante una serie de procesos. Eso, a grandes rasgos, es Machine Learning.

La forma más práctica y fácil de ver un ejemplo es con el reconocimiento de imágenes. A un algoritmo, mediante aprendizaje asistido, le enseñamos fotos con y sin coches. A base de repetir preguntas que nosotros contestaremos, de si hay o no un coche en una foto, este comenzará a detectar los patrones de datos que tiene una imagen con un coche. Una vez lancemos el algoritmo con ese aprendizaje, yo no le he enseñado a que identifique nada: él buscará los patrones que conoce y dará un resultado identificando fotos con coches en base a lo aprendido. Como un niño pequeño al que le enseñas por tarjetas. Es el mismo concepto.

Machine Learning, el problema de los scripts

El aprendizaje automático o Machine Learning tiene una premisa para trabajar con él y entrenar modelos: sus procesos normalmente se ejecutan como scripts: es decir, se interpretan. En programación tenemos dos tipos de lenguajes, los que se compilan y los que se interpretan. Los que se compilan son los que se procesan antes que generar el ejecutable y permiten detectar errores en todo su conjunto y los que se interpretan, ejecutan secuencialmente una serie de instrucciones y solo cuando se llega a una línea con error se provoca este, por lo que no es detectado -normalmente- con antelación.

Algunos de los lenguajes compilados más conocidos son todos los Cs (como C, C++, Objective-C o C#), Swift o Java… y entre los lenguajes de script o scripting tenemos los conocidos Javascript, Ruby o Python.

Programar algoritmos de Machine Learning se puede hacer con muchos lenguajes y librerías, pero si hay una que ha destacado por encima del resto, esa es sin duda Tensorflow. Detrás de ella está Google, es muy versátil y está hecha en C++ y Python. La librería tiene APIs para ser usada en múltiples lenguajes, no solo Python o C++, sino Rust, Go, Java o Haskell. Pero la API de Python es, sin duda, la más popular de todas.

El problema es que Python es interpretado, no compilado. Y esto al final es un problema en su rendimiento y en su estabilidad de cara a los errores. Porque al ser interpretado tendrá muchas más capas hasta llegar al hardware y no estará tan bien optimizado, y por otro lado, un algoritmo en Python con errores necesita de una prueba completa del mismo en todas sus ramas de ejecución para asegurar que esté libre de fallos.

Chris Lattner, Director de Ingeniería de TensorFlow en Google Brain

Por este motivo, el equipo de Google Brains, con Chris Lattner a la cabeza en este proyecto (como Director de Ingeniería de la librería), han creado la capa que necesita para ir más allá: darle a Tensorflow, como estándar en Machine Learning, la capacidad de ser compilado y no interpretado. Y el lenguaje que van a usar para ello no es otro que Swift.

Swift para Tensorflow

Tensorflow es una librería de código abierto especialmente diseñada para conseguir un alto rendimiento en cálculo computacional. Está pensada para ser usada en sistemas completamente escalables, de forma que podemos usar desde una simple CPU convencional hasta un conjunto de GPU, TPU, servidores en la nube, escritorio, clusters

Tal es su popularidad, que en estos días se ha celebrado la Tensorflow Dev Summit 2018 en el Museo de Historia de la Computación en Mountain View, California, y en ese contexto se han presentado cosas muy interesantes que llevan a Tensorflow, como librería especializada en procesos de cálculo computacional (y por ende de Machine Learning) a nuevos niveles.

Y uno de ellos es la necesidad de llevar Tensorflow más allá incorporando un proceso de compilación para la propia librería. Un proceso que pasa por usar la arquitectura de compilación LLVM e integrar a Tensorflow para ser soportado por un lenguaje de primera clase con soporte de compilación. No solo para ganar en rendimiento, si no en estabilidad.

Con ese propósito, el lenguaje elegido es Swift. Así que el equipo de Chris Lattner en Google Brain está trabajando en una implementación con Swift, de código abierto, que además no solo permite un soporte nativo de Tensorflow y todas las librerías que hay disponibles para él: además incorporará interoperabilidad de APIs con Python de forma nativa.

Esto permitirá a la librería innovar en áreas que normalmente están fuera del alcance de los procesos de Machine Learning y proporcionar una experiencia de usuario mucho más allá. Y además, la capacidad de detectar de forma anticipada cualquier de error en el código. Y un extra muy importante: cualquier API de Python será interoperable con Swift a nivel de especificación, como ya lo es Objective-C. Esto permitirá trabajar de forma nativa con cualquier API creada hasta la fecha para Tensorflow.

Y alguno dirá, ¿por qué no usar cualquiera de las otras APIs de Tensorflow? Porque no estamos hablando de una API, hablamos de dar soporte al actual Tensorflow con Python, de una forma rápida y eficiente en Swift. Permitir, a través de Swift, que Tensorflow y Python sean compilables.

La idea es ampliar las actuales opciones de construcción de gráficos y de ejecución rápida, incorporando una capa de compilación que procese las gráficas en tiempo de compilación, las pegue a binario y les de mayor potencial además de validar el código Python. Por otro lado, también se incorporará el formato playground que tanto conocemos en Swift en lo que Google ha dado por llamar Notebook Test. De esta forma, podremos probar en tiempo real los resultados y ver los gráficos en tiempo real, lo que dará nueva vida a los prototipos de Machine Learning con el uso de Swift.

Esto, sin lugar a dudas, va a dar un potencial sin precedentes a Swift como lenguaje de programación destacado en el panorama actual, al ser el primero en ganar soporte de compilación para la librería que se ha convertido en un estándar de facto para el aprendizaje automático: Tensorflow.

Incluso podremos crear procesos en Swift que usen TPUs en la nube, con añadir una simple instrucción que derive el procesamiento de los modelos a la nube y procese las respuestas de forma asíncrona. Actualmente Tensorflow para Swift funciona con la actual versión beta 4.2 del lenguaje y está en fase previa de lanzamiento. Veremos todo el proyecto a lo largo de abril publicado. Iremos informando de más novedades al respecto. Un saludo y Good Apple Coding.

Fuente
Swift for Tensorflow
Etiquetas

Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Artículos relacionados

Close
Close