¿Qué es TensorFlow? Explicación de la biblioteca de aprendizaje automático

El aprendizaje automático es una disciplina compleja. Pero implementar modelos de aprendizaje automático es mucho menos abrumador y difícil de lo que solía ser, gracias a los marcos de aprendizaje automático, como TensorFlow de Google, que facilitan el proceso de adquisición de datos, modelos de entrenamiento, entrega de predicciones y refinamiento de resultados futuros.

Creado por el equipo de Google Brain, TensorFlow es una biblioteca de código abierto para el cálculo numérico y el aprendizaje automático a gran escala. TensorFlow agrupa una gran cantidad de modelos y algoritmos de aprendizaje automático y aprendizaje profundo (también conocido como redes neuronales) y los hace útiles a través de una metáfora común. Utiliza Python para proporcionar una API frontal conveniente para crear aplicaciones con el marco, mientras ejecuta esas aplicaciones en C ++ de alto rendimiento.

TensorFlow puede entrenar y ejecutar redes neuronales profundas para clasificación de dígitos escritos a mano, reconocimiento de imágenes, incrustaciones de palabras, redes neuronales recurrentes, modelos de secuencia a secuencia para traducción automática, procesamiento de lenguaje natural y simulaciones basadas en PDE (ecuación diferencial parcial). Lo mejor de todo es que TensorFlow admite la predicción de producción a escala, con los mismos modelos que se usan para el entrenamiento.

Cómo funciona TensorFlow

TensorFlow permite a los desarrolladores crear gráficos de flujo de datos: estructuras que describen cómo se mueven los datos a través de un gráfico o una serie de nodos de procesamiento. Cada nodo en el gráfico representa una operación matemática y cada conexión o borde entre nodos es una matriz de datos multidimensional, o tensor .

TensorFlow proporciona todo esto para el programador a través del lenguaje Python. Python es fácil de aprender y trabajar con él, y proporciona formas convenientes de expresar cómo se pueden combinar abstracciones de alto nivel. Los nodos y tensores en TensorFlow son objetos de Python, y las aplicaciones de TensorFlow son en sí mismas aplicaciones de Python.

Sin embargo, las operaciones matemáticas reales no se realizan en Python. Las bibliotecas de transformaciones que están disponibles a través de TensorFlow están escritas como binarios de C ++ de alto rendimiento. Python simplemente dirige el tráfico entre las piezas y proporciona abstracciones de programación de alto nivel para unirlas.

Las aplicaciones de TensorFlow se pueden ejecutar en casi cualquier destino que sea conveniente: una máquina local, un clúster en la nube, dispositivos iOS y Android, CPU o GPU. Si usa la propia nube de Google, puede ejecutar TensorFlow en el silicio personalizado de la Unidad de procesamiento TensorFlow (TPU) de Google para una mayor aceleración. Sin embargo, los modelos resultantes creados por TensorFlow se pueden implementar en la mayoría de los dispositivos donde se usarán para entregar predicciones.

TensorFlow 2.0, lanzado en octubre de 2019, renovó el marco de muchas maneras en función de los comentarios de los usuarios, para que sea más fácil trabajar con él (por ejemplo, mediante el uso de la API de Keras relativamente simple para el entrenamiento de modelos) y más rendimiento. El entrenamiento distribuido es más fácil de ejecutar gracias a una nueva API y la compatibilidad con TensorFlow Lite permite implementar modelos en una mayor variedad de plataformas. Sin embargo, el código escrito para versiones anteriores de TensorFlow debe reescribirse, a veces solo ligeramente, a veces de manera significativa, para aprovechar al máximo las nuevas funciones de TensorFlow 2.0.

Beneficios de TensorFlow

El mayor beneficio que ofrece TensorFlow para el desarrollo del aprendizaje automático es la abstracción. En lugar de lidiar con los detalles esenciales de la implementación de algoritmos, o descubrir formas adecuadas de unir la salida de una función a la entrada de otra, el desarrollador puede concentrarse en la lógica general de la aplicación. TensorFlow se encarga de los detalles detrás de escena.

TensorFlow ofrece comodidades adicionales para los desarrolladores que necesitan depurar y obtener introspección en las aplicaciones de TensorFlow. El modo de ejecución ávida le permite evaluar y modificar cada operación de gráfico por separado y de forma transparente, en lugar de construir el gráfico completo como un solo objeto opaco y evaluarlo todo a la vez. El paquete de visualización TensorBoard le permite inspeccionar y perfilar la forma en que se ejecutan los gráficos a través de un panel interactivo basado en la web.

TensorFlow también obtiene muchas ventajas del respaldo de un equipo comercial de primera en Google. Google no solo ha impulsado el rápido ritmo de desarrollo detrás del proyecto, sino que ha creado muchas ofertas importantes en torno a TensorFlow que hacen que sea más fácil de implementar y usar: el silicio de TPU mencionado anteriormente para un rendimiento acelerado en la nube de Google; un centro en línea para compartir modelos creados con el marco; encarnaciones del marco en el navegador y en dispositivos móviles; y mucho más.

Una advertencia: algunos detalles de la implementación de TensorFlow dificultan la obtención de resultados de entrenamiento de modelos totalmente deterministas para algunos trabajos de entrenamiento. A veces, un modelo entrenado en un sistema variará ligeramente de un modelo entrenado en otro, incluso cuando se alimentan exactamente con los mismos datos. Las razones de esto son escurridizas, por ejemplo, cómo se siembran los números aleatorios y dónde, o ciertos comportamientos no deterministas al usar GPU). Dicho esto, es posible solucionar esos problemas, y el equipo de TensorFlow está considerando más controles para afectar el determinismo en un flujo de trabajo.

Vídeo relacionado: aprendizaje automático e inteligencia artificial descifrados

Rompiendo con el bombo publicitario en torno al aprendizaje automático y la inteligencia artificial, nuestro panel habla sobre las definiciones e implicaciones de la tecnología.

TensorFlow frente a la competencia

TensorFlow compite con una gran cantidad de otros marcos de aprendizaje automático. PyTorch, CNTK y MXNet son tres marcos principales que abordan muchas de las mismas necesidades. A continuación, noté dónde se destacan y se quedan cortos frente a TensorFlow.

  • PyTorch , además de estar construido con Python, tiene muchas otras similitudes con TensorFlow: componentes acelerados por hardware bajo el capó, un modelo de desarrollo altamente interactivo que permite el trabajo de diseño sobre la marcha y muchos componentes útiles ya incluidos. PyTorch es generalmente una mejor opción para el desarrollo rápido de proyectos que necesitan estar listos y en ejecución en poco tiempo, pero TensorFlow gana para proyectos más grandes y flujos de trabajo más complejos.

  • CNTK , el kit de herramientas cognitivas de Microsoft, como TensorFlow, utiliza una estructura gráfica para describir el flujo de datos, pero se centra más en la creación de redes neuronales de aprendizaje profundo. CNTK maneja muchos trabajos de redes neuronales más rápido y tiene un conjunto más amplio de API (Python, C ++, C #, Java). Pero CNTK no es actualmente tan fácil de aprender o implementar como TensorFlow.

  • Apache MXNet , adoptado por Amazon como el principal marco de trabajo de aprendizaje profundo en AWS, puede escalar casi linealmente en múltiples GPU y múltiples máquinas. También admite una amplia gama de API de lenguaje (Python, C ++, Scala, R, JavaScript, Julia, Perl, Go), aunque no es tan agradable trabajar con sus API nativas como las de TensorFlow.