Inteligencia artificial
Google
Tecnología

¿Qué es TensorFlow? La biblioteca de aprendizaje automático explicada

Se trata de una biblioteca de código abierto compatible con Python para desarrollar aplicaciones de aprendizaje automático y redes neuronales. Esto es lo que necesita saber sobre TensorFlow.

google tensorflow inteligencia artificial

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

Creada por el equipo de Google Brain y lanzada inicialmente al público en 2015, TensorFlow es una biblioteca de código abierto para computación numérica y aprendizaje automático a gran escala. Agrupa una gran cantidad de modelos y algoritmos de aprendizaje automático y profundo (también conocidos como redes neuronales) y los hace útiles a través de metáforas programáticas comunes. Una cómoda API de interfaz permite a los desarrolladores crear aplicaciones utilizando Python o JavaScript, mientras que la plataforma subyacente ejecuta esas aplicaciones en C++ de alto rendimiento. TensorFlow también proporciona bibliotecas para muchos otros lenguajes, aunque Python tiende a dominar.

TensorFlow, que compite con marcos como PyTorch y Apache MXNet, 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. Lo mejor de todo es que TensorFlow admite la predicción de producción a escala, con los mismos modelos utilizados para la capacitación.

También cuenta con una amplia biblioteca de modelos previamente entrenados disponibles para usar en sus proyectos. El código de TensorFlow Model Garden proporciona ejemplos de mejores prácticas para entrenar sus propios modelos.

 

Cómo funciona TensorFlow

TensorFlow permite a los desarrolladores crear gráficos de flujo de datos, es decir, 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.

Sus aplicaciones se pueden ejecutar en casi cualquier destino: una máquina local, un clúster en la nube, dispositivos iOSy Android, CPU o GPU.

TensorFlow 2.0, lanzado en octubre de 2019, renovó significativamente el marco según los comentarios de los usuarios. El resultado es un marco de aprendizaje automático con el que es más fácil trabajar (por ejemplo, mediante el uso de la relativamente simple  API de Keras para el entrenamiento de modelos) y con mayor rendimiento. La capacitación distribuida es más fácil de ejecutar gracias a una nueva API y la compatibilidad con TensorFlow Lite hace posible implementar modelos en una mayor variedad de plataformas. Sin embargo, el código escrito para versiones anteriores de TensorFlow debe reescribirse (a veces de manera significativa) para aprovechar al máximo las nuevas funciones de TensorFlow 2.0.

Se puede utilizar un modelo entrenado para entregar predicciones como un servicio  a través de un contenedor Docker utilizando API REST o gRPC . Para escenarios de servicio más avanzados, puede utilizar Kubernetes.

 

TensorFlow con Python

Muchos programadores acceden a TensorFlow a través del lenguaje de programación Python. Python es fácil de aprender y trabajar, y proporciona formas convenientes de expresar y acoplar abstracciones de alto nivel. TensorFlow es compatible con las versiones de Python 3.7 a 3.11 y, si bien puede funcionar en versiones anteriores de Python, no se garantiza que lo haga.

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 disponibles a través de TensorFlow están escritas como archivos binarios de C++ de alto rendimiento. Python simplemente dirige el tráfico entre las piezas y proporciona las abstracciones de programación para conectarlas.

El trabajo de alto nivel en TensorFlow (crear nodos y capas y vincularlos) se basa en la biblioteca Keras. La API de Keras es aparentemente simple; puedes definir un modelo básico con tres capas en menos de 10 líneas de código, y el código de entrenamiento para el mismo requiere solo unas pocas líneas más. Pero si desea "levantar el capó" y hacer un trabajo más detallado, como escribir su propio ciclo de entrenamiento, puede hacerlo.

 

TensorFlow con JavaScript

JavaScript también es un lenguaje de primera clase para TensorFlow, y una de las enormes ventajas de JavaScript es que se ejecuta en cualquier lugar donde haya un navegador web.

TensorFlow.js, como se llama la biblioteca JavaScript TensorFlow, utiliza la API WebGL para acelerar los cálculos mediante cualquier GPU que esté disponible en el sistema. También es posible utilizar un backend de WebAssembly para la ejecución. WebAssembly es más rápido que el back-end de JavaScript normal si solo se ejecuta en una CPU, pero es mejor usar GPU siempre que sea posible. Los modelos prediseñados lo ayudan a comenzar a ejecutar proyectos simples y le brindan una idea de cómo funcionan las cosas.

 

TensorFlow Lite

Los modelos de TensorFlow entrenados también se pueden implementar en dispositivos móviles o de computación de punta, como sistemas iOS o Android. El conjunto de herramientas TensorFlow Lite optimiza los modelos de TensorFlow para que funcionen bien en dichos dispositivos, permitiéndole elegir compensaciones entre el tamaño y la precisión del modelo. Un modelo más pequeño (es decir, 12 MB frente a 25 MB, o incluso más de 100 MB) es menos preciso, pero la pérdida es generalmente pequeña y está más que compensada por la velocidad y la eficiencia energética del modelo.

 

Por qué los desarrolladores usan TensorFlow

La mayor ventaja de 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 conectar la salida de una función a la entrada de otra, 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. Cada operación del gráfico se puede evaluar y modificar por separado y de forma transparente, en lugar de construir el gráfico completo como un único objeto opaco y evaluarlo todo a la vez. Este llamado "modo de ejecución ansiosa", que se proporcionaba como opción en versiones anteriores de TensorFlow, ahora es estándar.

El conjunto de visualización TensorBoard le permite inspeccionar y perfilar cómo se ejecutan los gráficos a través de un panel interactivo basado en web. El proyecto de código abierto TensorBoard reemplaza a TensorBoard.dev y puede usarse para alojar proyectos de aprendizaje automático.

TensorFlow también obtiene muchas ventajas del respaldo de un equipo comercial de primer nivel en Google. Google impulsó el rápido ritmo de desarrollo detrás del proyecto y creó muchas ofertas importantes que hacen que TensorFlow sea más fácil de implementar y usar. El silicio TPU para un rendimiento acelerado en la nube de Google es sólo un ejemplo.

 

Entrenamiento de modelo determinista con TensorFlow

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 reciben exactamente los mismos datos. Las razones de esta variación son escurridizas: una es cómo y dónde se siembran los números aleatorios; otro está relacionado con comportamientos no deterministas al utilizar GPU. La rama 2.0 de TensorFlow tiene una opción para habilitar el determinismo en todo un flujo de trabajo, lo que puedes hacer con un par de líneas de código. Sin embargo, esta característica tiene un costo de rendimiento y solo debe usarse al depurar un flujo de trabajo.

 

TensorFlow frente a PyTorch, CNTK y MXNet

TensorFlow compite con una variedad de otros marcos de aprendizaje automático. PyTorch, CNTK y MXNet son tres competidores importantes que abordan muchas de las mismas necesidades. Echemos un vistazo rápido a dónde se destaca cada uno y se queda corto frente a TensorFlow:

  • PyTorch está construido con Python y 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 proyectos que deben estar en funcionamiento en poco tiempo, pero TensorFlow gana para proyectos más grandes y flujos de trabajo más complejos.

  • CNTK , Microsoft Cognitive Toolkit es como TensorFlow en el uso de una estructura gráfica para describir el flujo de datos, pero se centra principalmente 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 no es tan fácil de aprender o implementar como TensorFlow. Además, solo está disponible bajo la licencia GNU GPL 3.0, mientras que TensorFlow está disponible bajo la licencia Apache, más liberal. Y CNTK no está desarrollado de manera tan agresiva; el último lanzamiento importante fue en 2019.
  • Apache MXNet , adoptado por Amazon como el principal marco de aprendizaje profundo en AWS, puede escalar casi linealmente en múltiples GPU y máquinas. MXNet también admite una amplia gama de API de lenguajes (Python, C++, Scala, R, JavaScript, Julia, Perl, Go), aunque no es tan agradable trabajar con sus API nativas como las de TensorFlow. También tiene una comunidad mucho más pequeña de usuarios y desarrolladores.

 



Contenido Patrocinado

Forma parte de nuestra comunidad

 

¿Te interesan nuestras conferencias?

 

 
Cobertura de nuestros encuentros
 
 
 
 
Lee aquí nuestra revista de canal

DealerWorld Digital