Resumen
TensorFlow es una biblioteca de software para aprendizaje automático e inteligencia artificial. Puede utilizarse en una variedad de tareas, pero se usa principalmente para el entrenamiento e inferencia de redes neuronales. Es uno de los marcos de aprendizaje profundo más populares, junto con otros como PyTorch. TensorFlow es software libre y de código abierto publicado bajo la Licencia Apache 2.0.
Historia
DistBelief
A partir de 2011, Google Brain construyó DistBelief como un sistema de aprendizaje automático propietario basado en redes neuronales profundas. Su uso creció rápidamente en diversas empresas de Alphabet tanto en aplicaciones de investigación como comerciales. Google asignó a varios informáticos, incluido Jeff Dean, a simplificar y refactorizar el código de DistBelief para convertirlo en una biblioteca de grado de aplicación más rápida y robusta, que se convirtió en TensorFlow. En 2009, el equipo, liderado por Geoffrey Hinton, había implementado la retropropagación generalizada y otras mejoras, que permitieron generar redes neuronales con una precisión sustancialmente mayor, por ejemplo, una reducción del 25% en errores en el reconocimiento de voz.
TensorFlow
TensorFlow es el sistema de segunda generación de Google Brain. La versión 1.0.0 se lanzó el 11 de febrero de 2017. Si bien la implementación de referencia se ejecuta en dispositivos individuales, TensorFlow puede ejecutarse en múltiples CPU y GPU (con extensiones opcionales CUDA y SYCL para computación de propósito general en unidades de procesamiento gráfico). TensorFlow está disponible en Linux de 64 bits, macOS, Windows y plataformas de computación móvil, incluidas Android e iOS. Su arquitectura flexible permite una fácil implementación de la computación en una variedad de plataformas (CPU, GPU, TPU), y desde escritorios hasta clústeres de servidores, hasta dispositivos móviles y de borde. Las computaciones de TensorFlow se expresan como gráficos de flujo de datos con estado. El nombre TensorFlow deriva de las operaciones que dichas redes neuronales realizan sobre matrices de datos multidimensionales, que se denominan tensores. Durante la Conferencia Google I/O en junio de 2016, Jeff Dean declaró que 1,500 repositorios en GitHub mencionaban TensorFlow, de los cuales solo 5 eran de Google. En marzo de 2018, Google anunció TensorFlow.js versión 1.0 para aprendizaje automático en JavaScript. En enero de 2019, Google anunció TensorFlow 2.0, que estuvo disponible oficialmente en septiembre de 2019. En mayo de 2019, Google anunció TensorFlow Graphics para aprendizaje profundo en gráficos por computadora.
Unidad de procesamiento tensorial (TPU)
En mayo de 2016, Google anunció su unidad de procesamiento tensorial (TPU), un circuito integrado de aplicación específica (ASIC) construido específicamente para aprendizaje automático y adaptado para TensorFlow. Una TPU es un acelerador de IA programable diseñado para proporcionar un alto rendimiento de aritmética de baja precisión (por ejemplo, de 8 bits), y orientado a usar o ejecutar modelos en lugar de entrenarlos. Google anunció que había estado ejecutando TPU dentro de sus centros de datos durante más de un año, y que habían encontrado que ofrecían un rendimiento optimizado por vatio un orden de magnitud mejor para el aprendizaje automático. En mayo de 2017, Google anunció las TPU de segunda generación, así como su disponibilidad en Google Compute Engine. Las TPU de segunda generación ofrecen hasta 180 teraflops de rendimiento y, cuando se organizan en clústeres de 64 TPU, proporcionan hasta 11.5 petaflops. En mayo de 2018, Google anunció las TPU de tercera generación que ofrecen hasta 420 teraflops de rendimiento y 128 GB de memoria de alto ancho de banda (HBM). Los Pods Cloud TPU v3 ofrecen más de 100 petaflops de rendimiento y 32 TB de HBM. En febrero de 2018, Google anunció que estaba poniendo las TPU a disposición en versión beta en la Google Cloud Platform.
Edge TPU
En julio de 2018, se anunció la Edge TPU. Edge TPU es el chip ASIC de propósito específico de Google diseñado para ejecutar modelos de aprendizaje automático de TensorFlow Lite en pequeños dispositivos informáticos de cliente, como teléfonos inteligentes, conocido como computación de borde.
TensorFlow Lite
En mayo de 2017, Google anunció TensorFlow Lite como una pila de software para admitir modelos de aprendizaje automático para dispositivos móviles y embebidos, y en noviembre de 2017, proporcionó la vista previa para desarrolladores. En enero de 2019, el equipo de TensorFlow lanzó una vista previa para desarrolladores del motor de inferencia GPU móvil con OpenGL ES 3.1 Compute Shaders en dispositivos Android y Metal Compute Shaders en dispositivos iOS. En mayo de 2019, Google anunció que su TensorFlow Lite Micro (también conocido como TensorFlow Lite para Microcontroladores) y el uTensor de ARM se fusionarían. Se renombró como LiteRT en 2024.
TensorFlow 2.0
A medida que la cuota de mercado de TensorFlow entre los artículos de investigación disminuía en favor de PyTorch, el equipo de TensorFlow anunció el lanzamiento de una nueva versión principal de la biblioteca en septiembre de 2019. TensorFlow 2.0 introdujo muchos cambios, siendo el más significativo TensorFlow eager, que cambió el esquema de diferenciación automática del gráfico computacional estático al esquema "Define-by-Run" popularizado originalmente por Chainer y posteriormente por PyTorch. Otros cambios importantes incluyeron la eliminación de bibliotecas antiguas, la compatibilidad cruzada entre modelos entrenados en diferentes versiones de TensorFlow y mejoras significativas en el rendimiento en GPU.
Características
AutoDiferenciación
La autoDiferenciación es el proceso de calcular automáticamente el vector de gradiente de un modelo con respecto a cada uno de sus parámetros. Con esta característica, TensorFlow puede calcular automáticamente los gradientes de los parámetros de un modelo, lo cual es útil para algoritmos como la retropropagación que requieren gradientes para optimizar el rendimiento. Para ello, el marco debe realizar un seguimiento del orden de las operaciones realizadas sobre los tensores de entrada en un modelo y luego calcular los gradientes con respecto a los parámetros apropiados.
Ejecución eager
TensorFlow incluye un modo de "ejecución eager", lo que significa que las operaciones se evalúan inmediatamente en lugar de agregarse a un gráfico computacional que se ejecuta más tarde. El código ejecutado de manera eager puede examinarse paso a paso mediante un depurador, ya que los datos se aumentan en cada línea de código en lugar de más tarde en un gráfico computacional. Este paradigma de ejecución se considera más fácil de depurar debido a su transparencia paso a paso.
Distribución
Tanto en la ejecución eager como en la de gráficos, TensorFlow proporciona una API para distribuir la computación entre múltiples dispositivos con diversas estrategias de distribución. Esta computación distribuida a menudo puede acelerar la ejecución del entrenamiento y la evaluación de modelos de TensorFlow y es una práctica común en el campo de la IA.
Pérdidas
Para entrenar y evaluar modelos, TensorFlow proporciona un conjunto de funciones de pérdida (también conocidas como funciones de costo). Algunos ejemplos populares incluyen el error cuadrático medio, la entropía cruzada categórica y la pérdida de bisagra. Estas funciones miden la diferencia entre los valores predichos y reales, guiando el proceso de optimización durante el entrenamiento.
Métricas
TensorFlow incluye un módulo de métricas que proporciona funciones para evaluar el rendimiento del modelo, como precisión, exhaustividad y área bajo la curva ROC. Estas métricas se utilizan comúnmente para monitorear el progreso del entrenamiento y la validación.
Optimizadores
TensorFlow ofrece una variedad de optimizadores para actualizar los parámetros del modelo durante el entrenamiento, incluidos el descenso de gradiente estocástico (SGD), Adam, RMSProp y Adagrad. Estos optimizadores implementan diferentes reglas de actualización para minimizar la función de pérdida de manera eficiente.
Keras
TensorFlow se integra con Keras, una API de redes neuronales de alto nivel que simplifica la construcción y el entrenamiento de modelos. Keras proporciona una interfaz fácil de usar para definir capas, modelos y bucles de entrenamiento, lo que lo hace accesible tanto para principiantes como para expertos.
TensorBoard
TensorBoard es una herramienta de visualización incluida con TensorFlow que permite a los usuarios monitorear métricas de entrenamiento, visualizar gráficos de modelos e inspeccionar incrustaciones. Ayuda a depurar y comprender el comportamiento del modelo.
TensorFlow Serving
TensorFlow Serving es un sistema de servicio flexible y de alto rendimiento para modelos de aprendizaje automático, diseñado para entornos de producción. Admite versionado de modelos, implementación gradual y puede manejar múltiples modelos simultáneamente.
TensorFlow Hub
TensorFlow Hub es una biblioteca para módulos de aprendizaje automático reutilizables. Permite a los usuarios compartir y descubrir componentes de modelos preentrenados, facilitando el aprendizaje por transferencia y reduciendo la necesidad de entrenar modelos desde cero.
TensorFlow Extended (TFX)
TensorFlow Extended (TFX) es una plataforma de extremo a extremo para implementar pipelines de ML en producción. Incluye componentes para validación de datos, preprocesamiento, entrenamiento y servicio, lo que permite flujos de trabajo de ML escalables y confiables.
Aplicaciones
TensorFlow se utiliza en una amplia gama de aplicaciones, incluido el reconocimiento de imágenes, el procesamiento del lenguaje natural, el reconocimiento de voz y los sistemas de recomendación. También se emplea en la investigación y la industria para tareas como la detección de objetos, el análisis de sentimientos y el modelado generativo. Su flexibilidad y escalabilidad lo hacen adecuado tanto para la experimentación como para la implementación a gran escala.
Véase también
- Inteligencia artificial
- Aprendizaje automático
- Aprendizaje profundo
- Red neuronal
- Modelo de lenguaje grande
- Transformador
- OpenAI
- Google DeepMind
- IA generativa
- PyTorch
Referencias
- Documentación oficial de TensorFlow
- Wikipedia: TensorFlow
- Google AI Blog
- Notas de lanzamiento de TensorFlow