Swift for TensorFlow en Deep Learning

TensorFlow 2 y Swift

Iniciar al lector en el Deep Learning a través de Keras en la edición de la PRIMERA PARTE del libro Deep Learning  en el 2018 fue claramente una buena decisión dado que nos ha llevado sin esfuerzo al universo TensorFlow, sin duda el entorno para implementar redes neuronales que goza de mayor popularidad y soporte en estos momentos especialmente después de la versión 2.0, presentada en el último TensorFlow Dev Summit 2019.

Y todo ello con Python como lingua franca. No hay duda que Python ha sido y es el lenguaje principal en el ecosistema de TensorFlow (y en otras plataformas importantes en el área como PyTorch). Pero ya indicábamos en la introducción de esta SEGUNDA PARTE que TensorFlow se está abriendo a otros lenguajes, como JavaScript, gracias a  la incorporación de la librería TensorFlow.js. En esta línea de apertura, en  esta última edición del TensorFlow Dev Summit 2019 se anunció Swift para TensorFlow.

Pues bien, creo que debemos estar atentos a lo que se va a desarrollar alrededor de Swift para TensorFlow porque pienso que puede ser el siguiente gran avance que se va  a producir en el entorno de TensorFlow y deberíamos seguirlo atentamente si queremos “verlas venir”.

Aunque Python es un lenguaje excelente, tiene muchas limitaciones que son difíciles de superar, y en la comunidad TensorFlow se trató el tema. Después de una larga deliberación que consideró otros lenguajes, finalmente se optó por incorporar Swift. Swift fue creado por Chris Lattner cuando trabajaba en Apple; ahora Lattner trabaja para Google, hecho que me permite pensar lo en serio que Google se está tomando un proyecto como este.

Swift for Tensorflow (cuyo acrónimo es S4TF) no es una librería más, sino es un lenguaje en sí mismo, con características integradas que admiten todas las funciones necesarias para TensorFlow. Por ejemplo, S4TF tiene incorporado un sistema de diferenciación automática  muy potente, esencial para calcular gradientes (en Python la diferenciación automática no es un componente central del lenguaje). Aunque por el momento, mientras no se tengan todas las librerías requeridas en Swift (recordemos que las librerías disponibles en Python son enormes), podemos usar cualquier librería de Python simplemente importándola en Swift.

Pero para mí la razón principal que me hace pensar que Swift va a ser el lenguaje que puede hacer sombra a Python, es que Swift funciona tan rápido como C en el cálculo numérico, y como recordarán de la PRIMERA PARTE del libro, la rapidez en la computación es fundamental para poder ejecutar redes neuronales, y disponer de potencia de computación fue lo que despertó nuevamente en el 2012 esta nueva época dorada que vive el área. Además, Swift nos permite ir a bajo nivel, algo que se requiere cuando se quiere investigar qué está pasando en realidad en el código. Es decir, recordaremos que TensorFlow en Python en realidad es una librería de código C y por tanto cuando tratamos de analizar que pasa a bajo nivel, siempre nos encontramos que no está escrito en Python, y la inspección se hace más difícil debido al cambio de lenguaje y librerías.