Ir al contenido principal

TensorFlow

Prueba Databricks gratis

En noviembre de 2015, Google lanzó su framework de código abierto para el aprendizaje automático y lo llamó TensorFlow. Admite el aprendizaje profundo, las redes neuronales y los cálculos numéricos generales en CPU, GPU y clústeres de GPU. Una de las mayores ventajas de TensorFlow es su comunidad de código abierto de desarrolladores, científicos de datos e ingenieros de datos que contribuyen a su repositorio. La versión actual de TensorFlow se puede encontrar en GitHub junto con las notas de la versión. TensorFlow es, por lejos, el motor de IA más popular que se usa en la actualidad.

¿Qué es TensorFlow?

TensorFlow es una biblioteca de código abierto para la computación numérica, el aprendizaje automático a gran escala, el aprendizaje profundo y otras cargas de trabajo de análisis predictivo y estadístico. Este tipo de tecnología hace que sea más rápido y fácil para los desarrolladores implementar modelos de aprendizaje automático, ya que ayuda en el proceso de adquisición de datos, la entrega de predicciones a escala y el refinamiento de los resultados futuros.

Bien, entonces, ¿qué hace TensorFlow exactamente? Puede entrenar y ejecutar redes neuronales profundas para tareas como la clasificación de dígitos escritos a mano, el reconocimiento de imágenes, las inserciones de palabras y el procesamiento del lenguaje natural (NLP). El código contenido en sus bibliotecas de software se puede agregar a cualquier aplicación para ayudarla a aprender estas tareas.

Las aplicaciones de TensorFlow pueden ejecutarse en CPU (unidades centrales de procesamiento) convencionales o en GPU (unidades de procesamiento de gráficos de alto rendimiento). Como TensorFlow fue desarrollado por Google, también funciona en las unidades de procesamiento de tensores (TPU) propias de la empresa, que están diseñadas específicamente para acelerar los trabajos de TensorFlow.

Quizás también te preguntes: ¿en qué lenguaje está escrito TensorFlow? Aunque usa Python como una API de frontend para compilar aplicaciones con el framework, en realidad, tiene wrappers en varios lenguajes, incluidos C++ y Java. Esto significa que puedes entrenar e implementar tu modelo de aprendizaje automático rápidamente, independientemente del lenguaje o la plataforma que uses.

Haz clic aquí para ver más preguntas frecuentes sobre el desarrollo de modelos de TensorFlow.

Historia de TensorFlow

Google lanzó TensorFlow por primera vez en 2015 bajo la licencia Apache 2.0. Su predecesor fue un framework de código cerrado de Google llamado DistBelief, que proporcionaba un banco de pruebas para la implementación del aprendizaje profundo.

Las primeras TPU de Google se detallaron públicamente en 2016 y se usaron internamente junto con TensorFlow para potenciar algunas de las aplicaciones y los servicios en línea de la empresa. Esto incluyó el algoritmo de búsqueda RankBrain de Google y la tecnología de mapas Street View.

A principios de 2017, Google TensorFlow alcanzó el estado de Release 1.0.0. Un año después, Google puso la segunda generación de TPU a disposición de los usuarios de Google Cloud Platform para entrenar y ejecutar sus propios modelos de machine learning.

Google lanzó la versión más reciente, TensorFlow 2.0, en octubre de 2019. Google tuvo en cuenta los comentarios de los usuarios para realizar varias mejoras en el framework y facilitar el trabajo con él; por ejemplo, ahora usa la API de Keras, que es relativamente simple, para el entrenamiento de modelos.

¿Quién creó TensorFlow?

Como ya sabes, Google desarrolló TensorFlow y sigue siendo el propietario y mantenedor del framework. Fue creado por el equipo de investigadores de Google Brain, que lleva a cabo investigación fundamental para avanzar en áreas clave de la inteligencia artificial y promover una mejor comprensión teórica del deep learning.

El equipo de Google Brain diseñó TensorFlow para que pudiera funcionar independientemente de la propia infraestructura informática de Google, pero obtiene muchas ventajas al estar respaldado por un gigante comercial. Además de financiar el rápido desarrollo del proyecto, a lo largo de los años Google también ha mejorado TensorFlow para garantizar que sea fácil de implementar y usar.

Google decidió convertir TensorFlow en un framework de código abierto con el objetivo de acelerar el desarrollo de la IA. Como proyecto comunitario, todos los usuarios pueden ayudar a mejorar la tecnología y todos comparten los beneficios.

¿Cómo funciona TensorFlow?

TensorFlow combina varios modelos y algoritmos de aprendizaje automático y aprendizaje profundo (o redes neuronales) y los hace útiles por medio de una interfaz común.

Permite a los desarrolladores crear grafos de flujo de datos con nodos computacionales que representan operaciones matemáticas. Cada conexión entre nodos representa vectores o matrices multidimensionales, lo que crea lo que se conoce como tensores.

Si bien Python proporciona la API de frontend para TensorFlow, las operaciones matemáticas reales no se realizan en Python. En su lugar, los binarios de C++ de alto rendimiento realizan estas operaciones en segundo plano. Python dirige el tráfico entre las piezas y las une a través de abstracciones de programación de alto nivel.

Las aplicaciones de TensorFlow se pueden ejecutar en casi cualquier destino que sea conveniente, incluidos los dispositivos iOS y Android, las máquinas locales o un clúster en la nube, así como en CPU o GPU (o las TPU personalizadas de Google si usas Google Cloud).

TensorFlow incluye conjuntos de API de alto y bajo nivel. Google recomienda las API de alto nivel para simplificar el desarrollo de canalizaciones de datos y la programación de aplicaciones, pero las API de bajo nivel (llamadas TensorFlow Core) son útiles para la depuración de aplicaciones y la experimentación.

¿Para qué se usa TensorFlow? ¿Qué puedes hacer con TensorFlow?

TensorFlow está diseñado para optimizar el proceso de desarrollo y ejecución de aplicaciones de análisis avanzado para usuarios como científicos de datos, estadísticos y modeladores predictivos.

Empresas de diversos tipos y tamaños usan ampliamente el framework para automatizar procesos y desarrollar nuevos sistemas, y es particularmente útil para aplicaciones de procesamiento en paralelo a muy gran escala, como las redes neuronales. También se ha utilizado en experimentos y pruebas para vehículos autónomos.

Como es de esperar, la empresa matriz de TensorFlow, Google, también lo utiliza para operaciones internas, como mejorar las capacidades de recuperación de información de su motor de búsqueda y para potenciar aplicaciones de generación automática de respuestas de correo electrónico, clasificación de imágenes y reconocimiento óptico de caracteres.

Una de las ventajas de TensorFlow es que proporciona abstracción, lo que significa que los desarrolladores pueden centrarse en la lógica general de la aplicación mientras el framework se encarga de los detalles. También es conveniente para los desarrolladores que necesitan depurar y obtener introspección en las apps de TensorFlow.

La suite de visualización TensorBoard tiene un dashboard interactivo basado en la web que te permite inspeccionar y perfilar cómo se ejecutan los grafos. También hay un modo de ejecución eager que te permite evaluar y modificar cada operación del grafo de forma separada y transparente, en lugar de crear todo el grafo como un único objeto opaco y evaluarlo todo a la vez.

Databricks Runtime para Machine Learning incluye TensorFlow y TensorBoard, por lo que puedes usar estas bibliotecas sin necesidad de instalar ningún paquete.

Ahora veamos cómo usar TensorFlow.

Cómo instalar TensorFlow

Las instrucciones y los tutoriales completos están disponibles en tensorflow.org. pero estos son los conceptos básicos.

Requisitos del sistema:

  • Python 3.7+
  • pip 19.0 o posterior (requiere compatibilidad con manylinux2010, y TensorFlow 2 requiere una versión más reciente de pip)
  • Ubuntu 16.04 o posterior (64 bits)
  • macOS 10.12.6 (Sierra) o posterior (64 bits) (sin compatibilidad con GPU)
  • Windows 7 o posterior (64 bits)

Requisitos de hardware:

  • A partir de TensorFlow 1.6, los binarios usan instrucciones AVX que pueden no ejecutarse en CPU más antiguas.
  • La compatibilidad con GPU requiere una tarjeta compatible con CUDA® (Ubuntu y Windows)

#1. Instala el entorno de desarrollo de Python en tu sistema

Verifica si tu entorno de Python ya está configurado:

python3 - -version

pip3 - -version

Si estos paquetes ya están instalados, pasa al siguiente paso.

De lo contrario, instala Python, el administrador de paquetes pip y venv.

Si no estás en un entorno virtual, usa python3 -m pip para los siguientes comandos. Esto garantiza que actualices y uses el pip de Python en lugar del pip del sistema.

#2. Crea un entorno virtual (recomendado)

Los entornos virtuales de Python se usan para aislar la instalación de paquetes del sistema.

#3. Instala el paquete pip de TensorFlow

Elige uno de los siguientes paquetes de TensorFlow para instalar desde PyPI:

  • tensorflow: la versión estable más reciente con compatibilidad para CPU y compatibilidad con GPU (Ubuntu y Windows)
  • tf-nightly: compilación preliminar (inestable). Ubuntu y Windows incluyen soporte para GPU.
  • tensorflow==1.15 —La versión final de TensorFlow 1.x.

Verifica la instalación. Si se devuelve un tensor, has instalado TensorFlow correctamente.

Nota: Algunos mecanismos de instalación requieren la URL del paquete de Python de TensorFlow. El valor que especifiques depende de tu versión de Python.

Cómo actualizar TensorFlow

El administrador de paquetes pip ofrece un método sencillo para actualizar TensorFlow, independientemente del entorno.

Requisitos previos:

  • Python 3.6-3.9 instalado y configurado (comprueba la versión de Python antes de empezar).
  • TensorFlow 2 instalado.
  • El administrador de paquetes pip versión 19.0 o superior (verifica la versión de pip y actualízala si es necesario).
  • Acceso a la línea de comandos/terminal o al entorno de notebook.

Para actualizar TensorFlow a una versión más nueva:

#1. Abre la terminal (CTRL+ALT+T).

#2. Verifica la versión de TensorFlow que está instalada actualmente:

pip3 show tensorflow

El comando muestra información sobre el paquete, incluida la versión.

#3. Actualiza TensorFlow a una versión más reciente con:

pip3 install - -upgrade tensorflow==<version>

Asegúrate de seleccionar una versión compatible con tu versión de Python, de lo contrario, la versión no se instalará. Para el entorno de notebook, usa el siguiente comando y reinicia el kernel cuando finalice:

!pip install - -upgrade tensorflow==<version>

Esto elimina automáticamente la versión anterior junto con las dependencias e instala la actualización más reciente.

#4. Comprueba la versión actualizada ejecutando:

pip3 show tensorflow

¿Qué es TensorFlow Lite?

En 2017, Google presentó una nueva versión de TensorFlow llamada TensorFlow Lite. TensorFlow Lite está optimizado para su uso en dispositivos móviles e integrados. Es un marco de aprendizaje profundo de código abierto, listo para la producción y multiplataforma que convierte un modelo de TensorFlow preentrenado a un formato especial que puede optimizarse para la velocidad o el almacenamiento.

Para asegurarte de que usas la versión correcta para un escenario determinado, necesitas saber cuándo usar TensorFlow y cuándo usar TensorFlow Lite. Por ejemplo, si necesitas implementar un modelo de aprendizaje profundo de alto rendimiento en un área sin una buena conexión de red, usarías TensorFlow Lite para reducir el tamaño del archivo.

Si estás desarrollando un modelo para dispositivos perimetrales, es necesario que sea ligero para que utilice un espacio mínimo y aumente la velocidad de descarga en redes con menor ancho de banda. Para lograr esto, se necesita optimización para reducir el tamaño del modelo o mejorar la latencia, lo que TensorFlow Lite hace mediante la cuantización y la poda de pesos.

Los modelos resultantes son lo suficientemente ligeros como para implementarse para la inferencia de baja latencia en dispositivos perimetrales, como teléfonos celulares con Android o iOS, o dispositivos integrados basados en Linux, como las Raspberry Pi o los microcontroladores. TensorFlow Lite también utiliza varios aceleradores de hardware para la velocidad, la precisión y la optimización del consumo de energía, que son importantes para ejecutar inferencias en el borde.

¿Qué es una capa densa en TensorFlow?

Las capas densas se utilizan en la creación de redes neuronales tanto superficiales como profundas. Las redes neuronales artificiales son arquitecturas similares a un cerebro, compuestas por un sistema de neuronas, y son capaces de aprender a través de ejemplos en lugar de ser programadas con reglas específicas.

En el aprendizaje profundo, se utilizan múltiples capas para extraer características de nivel superior de la entrada sin procesar; cuando la red se compone de varias capas, se denomina red neuronal apilada. Cada una de estas capas está formada por nodos, que combinan la entrada de los datos con un conjunto de coeficientes llamados pesos que amplifican o atenúan la entrada.

Para su versión 2.0, TensorFlow ha adoptado una API de aprendizaje profundo llamada Keras, que se ejecuta sobre TensorFlow y proporciona una serie de capas preconstruidas para diferentes arquitecturas y propósitos de redes neuronales. Una capa densa es una de estas: tiene una conexión profunda, lo que significa que cada neurona recibe la entrada de todas las neuronas de su capa anterior.

Las capas densas se usan normalmente para cambiar las dimensiones, la rotación, el escalamiento y la traslación de los vectores que genera. Tienen la capacidad de aprender atributos a partir de todos los atributos combinados de la capa anterior.

¿Cuál es la diferencia entre TensorFlow y Python?

TensorFlow es un framework de aprendizaje automático de código abierto y Python es un lenguaje de programación de computadoras popular. Es uno de los lenguajes utilizados en TensorFlow. Python es el lenguaje recomendado para TensorFlow, aunque también usa C++ y JavaScript.

Python se desarrolló para ayudar a los programadores a escribir código claro y lógico para proyectos tanto pequeños como grandes. A menudo se utiliza para crear sitios web y software, automatizar tareas y realizar análisis de datos. Esto hace que aprender TensorFlow sea relativamente sencillo para los principiantes.

Una pregunta útil es: ¿qué versión de Python admite TensorFlow? Ciertas versiones de TensorFlow solo son compatibles con versiones específicas de Python, y la 2.0 requiere de Python 3.7 a 3.10. Asegúrate de revisar los requisitos antes de instalar TensorFlow.

¿Qué son PyTorch y TensorFlow?

TensorFlow no es el único framework de machine learning que existe. Existen otras opciones, como PyTorch, que tienen similitudes y cubren muchas de las mismas necesidades. Entonces, ¿cuál es la diferencia real entre TensorFlow y PyTorch?

PyTorch y TensorFlow son solo dos de los frameworks desarrollados por empresas de tecnología para el entorno de deep learning de Python, que ayudan a las computadoras similares a los humanos a resolver problemas del mundo real. La diferencia clave entre PyTorch y TensorFlow es la forma en que ejecutan el código. PyTorch está más estrechamente integrado con el lenguaje Python.

Como hemos visto, TensorFlow tiene sólidas capacidades de visualización, opciones de implementación listas para producción y compatibilidad con plataformas móviles. PyTorch no está tan consolidado, pero sigue siendo popular por su simplicidad y facilidad de uso, así como por sus grafos computacionales dinámicos y el uso eficiente de la memoria.

En cuanto a la pregunta de cuál es mejor, TensorFlow o Pytorch, realmente depende de lo que quieras lograr. Si tu objetivo es compilar productos relacionados con la IA, TensorFlow será una buena opción para ti, mientras que PyTorch es más adecuado para los desarrolladores que se orientan a la investigación. PyTorch es una buena opción para poner en marcha proyectos en poco tiempo, pero TensorFlow tiene capacidades más sólidas para proyectos más grandes y flujos de trabajo más complejos.

Empresas que usan TensorFlow

Según el sitio web de TensorFlow, varias otras empresas de renombre usan el marco de trabajo, además de Google. Entre ellas se encuentran Airbnb, Coca-Cola, eBay, Intel, Qualcomm, SAP, Twitter, Uber, el desarrollador de Snapchat, Snap Inc., y la empresa de consultoría deportiva STATS LLC.

Las cinco mejores alternativas a TensorFlow

1. DataRobot

DataRobot es un framework de machine learning basado en la nube, diseñado para ayudar a las empresas a ampliar sus capacidades de ciencia de datos mediante la implementación de modelos de machine learning y la creación de aplicaciones avanzadas de IA.

El framework te permite usar y optimizar las técnicas de modelado de código abierto más valiosas de R, Python, Spark, H2O, VW y XGBoost. Al automatizar el análisis predictivo, DataRobot ayuda a los científicos y analistas de datos a producir modelos predictivos más precisos.

Hay una biblioteca cada vez mayor de las mejores características, algoritmos y valores de parámetros para construir cada modelo, y con el ensemblado automatizado, los usuarios pueden encontrar y combinar fácilmente múltiples algoritmos y prototipos preconstruidos para la extracción de características y la preparación de datos (sin necesidad de recurrir al método de prueba y error).

2. PyTorch

Desarrollado por el equipo de Facebook y publicado como código abierto en GitHub.com en 2017, PyTorch es uno de los frameworks de deep learning más recientes. Como mencionamos anteriormente, tiene varias similitudes con TensorFlow, incluidos los componentes acelerados por hardware y un modelo de desarrollo altamente interactivo que permite diseñar sobre la marcha.

PyTorch también optimiza el rendimiento al aprovechar el soporte nativo para la ejecución asíncrona de Python. Los beneficios incluyen grafos dinámicos integrados y una comunidad más fuerte que la de TensorFlow.

Sin embargo, PyTorch no proporciona un framework para implementar modelos entrenados directamente en línea y se necesita un servidor API para la producción. También requiere un tercero (Visdom) para la visualización, y sus características son bastante limitadas.

3. Keras

Keras es una biblioteca de redes neuronales de código abierto y de alto nivel diseñada para ser fácil de usar, modular y fácil de extender. Está escrita en Python y admite varios motores de computación de redes neuronales de backend; aunque su backend principal (y predeterminado) es TensorFlow, y su principal patrocinador es Google.

Ya mencionamos la API de alto nivel TensorFlow Keras, y Keras también se ejecuta sobre Theano. Tiene varios módulos independientes que se pueden combinar, que incluyen capas neuronales, funciones de costo, optimizadores, esquemas de inicialización, funciones de activación y esquemas de regularización.

Keras brinda soporte para una amplia gama de opciones de implementación de producción y un sólido soporte para múltiples GPU y entrenamiento distribuido. Sin embargo, el soporte de la comunidad es mínimo y la biblioteca se usa normalmente para conjuntos de datos pequeños.

4. MXNet

Apache MXNet es un framework de software de aprendizaje profundo de código abierto que se utiliza para definir, entrenar e implementar redes neuronales profundas en una amplia gama de dispositivos. Tiene el honor de haber sido adoptado por Amazon como el principal framework de deep learning en AWS.

Puede escalar casi de forma lineal en varias GPU y varias máquinas, lo que permite un entrenamiento de modelos rápido, y admite un modelo de programación flexible que permite a los usuarios mezclar la programación simbólica y la imperativa para obtener la máxima eficiencia y productividad.

MXNet también admite API de múltiples lenguajes de programación, incluidos Python, C++, Scala, R, JavaScript, Julia, Perl y Go (aunque sus API nativas no son tan adaptables a las tareas como las de TensorFlow).

5. CNTK

CNTK, también conocido como el Microsoft Cognitive Toolkit, es un kit de herramientas de aprendizaje profundo unificado que usa una estructura de grafos para describir el flujo de datos como una serie de pasos computacionales (al igual que TensorFlow, aunque no es tan fácil de aprender o implementar).

Se centra en gran medida en la creación de redes neuronales de deep learning y puede realizar estas tareas con rapidez. CNTK permite a los usuarios implementar y combinar fácilmente tipos de modelos populares, como DNN de tipo feed-forward, redes convolucionales (CNN) y redes recurrentes (RNN/LSTM).

CNTK tiene un amplio conjunto de API (Python, C++, C#, Java) y puede incluirse como una biblioteca en tus programas de Python, C# o C++; o bien, usarse como una herramienta de aprendizaje automático independiente a través de su propio lenguaje de descripción de modelos (BrainScript). Admite sistemas operativos Linux de 64 bits o Windows de 64 bits.

Nota: La versión 2.7 fue la última versión principal de CNTK y no hay planes para el desarrollo de nuevas características.

¿Debería usar TensorFlow?

TensorFlow tiene muchas ventajas. El framework de machine learning de código abierto proporciona un excelente soporte arquitectónico, que permite el fácil despliegue de frameworks computacionales en una variedad de plataformas. Se beneficia de la reputación de Google y varias grandes empresas han adoptado TensorFlow para realizar tareas de inteligencia artificial.

Por otro lado, algunos detalles de la implementación de TensorFlow dificultan la obtención de resultados de entrenamiento de modelos totalmente deterministas para alcuni trabajos de entrenamiento, pero el equipo está considerando más controles para afectar al determinismo en un flujo de trabajo.

Empezar es sencillo, especialmente con TensorFlow by Databricks, una integración lista para usar a través de Databricks Runtime para Machine Learning. Puedes poner en marcha clústeres en segundos y beneficiarte de una gama de API de bajo y alto nivel.

Recursos adicionales

Volver al glosario