Si está familiarizado con el aprendizaje profundo, probablemente habrá escuchado más de una vez la frase PyTorch vs. TensorFlow.

PyTorch y TensorFlow son dos de los marcos de aprendizaje profundo más populares. Esta guía presenta una visión global de las características más destacadas de estos dos marcos de trabajo -para ayudarle a decidir qué marco utilizar- para su próximo proyecto de aprendizaje profundo.

En este artículo, primero presentaremos los dos marcos: PyTorch y TensorFlow. Y después resumiremos las características que ofrecen.

Comencemos

¿Qué es PyTorch?

image-92

PyTorch es un marco de trabajo de código abierto para construir modelos de aprendizaje automático y aprendizaje profundo para diversas aplicaciones, incluyendo el procesamiento del lenguaje natural y el aprendizaje automático.

Es un marco Pythonic desarrollado por Meta AI (que Facebook AI) en 2016, basado en Torch, un paquete escrito en Lua.

Recientemente, Meta AI lanzó PyTorch 2.0. La nueva versión ofrece un mejor soporte para el entrenamiento distribuido, la compilación de modelos y las redes neuronales gráficas (GNN), entre otros.

¿Qué es TensorFlow?

tensorflow

Presentado en 2014, TensorFlow es un marco de aprendizaje automático integral de código abierto de Google. Viene repleto de características para la preparación de datos, despliegue de modelos y MLOps.

Con TensorFlow, obtendrá soporte de desarrollo multiplataforma y soporte «out-of-the-box» para todas las etapas del ciclo de vida del aprendizaje automático.

PyTorch vs. TensorFlow

Tanto PyTorch como TensorFlow son marcos súper populares en la comunidad del aprendizaje profundo. Para la mayoría de las aplicaciones en las que desee trabajar, estos dos marcos proporcionan soporte incorporado.

pytorch-vs-tensorflow
Fuente de la imagen: star-history.com

Aquí, vamos a resumir las características clave de ambos PyTorch y TensorFlow y también identificar los casos de uso en los que usted podría preferir un marco sobre el otro.

#1. Biblioteca de conjuntos de datos y modelos preentrenados

Un marco de aprendizaje profundo debería venir con las pilas incluidas. A menudo, no querrá codificar un modelo desde cero. Más bien puede aprovechar modelos preentrenados y ajustarlos a su caso de uso.

Del mismo modo, querríamos disponer fácilmente de conjuntos de datos de uso común. Esto nos permitiría construir modelos experimentales rápidamente sin tener que establecer una canalización de recopilación de datos o importar y limpiar datos de otras fuentes.

Con este fin, querríamos que estos marcos vinieran con conjuntos de datos y modelos preentrenados para que podamos obtener un modelo de referencia mucho más rápido.

Conjuntos de datos y modelos de PyTorch

PyTorch cuenta con bibliotecas como torchtext, torchaudio y torchvision para tareas de PNL, audio y procesamiento de imágenes, respectivamente. Así, cuando trabaje con PyTorch, podrá aprovechar los conjuntos de datos y modelos proporcionados por estas bibliotecas, entre las que se incluyen:

  • torchtext.datasets y torchtext. models para conjuntos de datos y procesamiento para tareas de procesamiento del lenguaje natural
  • torchvision.datasets y torchvision. models proporcionan conjuntos de datos de imágenes y modelos preentrenados para tareas de visión por ordenador
  • torchaudio.datasets y torchaudio. models para conjuntos de datos y pesos de modelos preentrenados y utilidades para el aprendizaje automático sobre audio

Conjuntos de datos y modelos TensorFlow

  • TensorFlowdatasets (oficial) incluye conjuntos de datos que puede utilizar fácilmente con TensorFlow
  • TensorFlowModel Hub y Model Garden tienen modelos preentrenados disponibles para su uso en múltiples dominios

Además, puede buscar modelos tanto de PyTorch como de TensorFlow en el HuggingFace Model Hub.

#2. Soporte para el despliegue

En el debate PyTorch vs. TensorFlow, el soporte para el despliegue suele ocupar un lugar central.

Un modelo de aprendizaje automático que funciona muy bien en su entorno de desarrollo local es un buen punto de partida. Sin embargo, para obtener valor de los modelos de aprendizaje automático, es importante desplegarlos en producción y supervisarlos continuamente.

En esta sección, echaremos un vistazo a las características que tanto PyTorch como TensorFlow ofrecen para desplegar modelos de aprendizaje automático a producción.

TensorFlow Extendido (TFX)

TensorFlow Extended, abreviado como tfx, es un marco de despliegue que se basa en TensorFlow. Proporciona funcionalidades que le ayudan a orquestar y mantener pipelines de aprendizaje automático. Proporciona funciones para la validación y transformación de datos, entre otras.

Con TensorFlow Serving, puede desplegar modelos de aprendizaje automático en entornos de producción.

TorchServe

Existe la opinión generalizada de que PyTorch es popular en la comunidad investigadora, mientras que TensorFlow lo es en la industria. Sin embargo, recientemente, ambos marcos han encontrado un uso generalizado.

Al igual que TensorFlow Serving, PyTorch proporciona TorchServe, un marco fácil de usar que facilita servir modelos PyTorch en producción. Además, también puede utilizar TensorFlow Lite para desplegar modelos de aprendizaje automático en dispositivos móviles y otros dispositivos de borde.

A pesar de que ambos marcos proporcionan soporte de despliegue, TensorFlow soporta de forma nativa el despliegue de modelos. Por lo tanto, es la opción preferida en entornos de producción.

#3. Características para la interpretabilidad de modelos

Puede construir modelos de aprendizaje profundo para aplicaciones utilizadas en dominios como la sanidad y las finanzas. Pero si los modelos son cajas negras que emiten una etiqueta o predicción determinada, existe el reto de interpretar las predicciones del modelo.

Esto llevó al aprendizaje automático interpretable (o ML explicable) a idear enfoques para explicar el funcionamiento de las redes neuronales y otros modelos de aprendizaje automático.

Por lo tanto, la interpretabilidad es superimportante para el aprendizaje profundo y para comprender mejor el funcionamiento de las redes neuronales. Y vamos a ver qué características ofrecen PyTorch y TensorFlow para lo mismo.

PyTorch Captum

PyTorch Captum, la biblioteca de interpretabilidad de modelos para PyTorch, ofrece varias características para la interpretabilidad de modelos.

Estas características incluyen métodos de atribución como

  • Gradientes integrados
  • LIME, SHAP
  • DeepLIFT
  • GradCAM y variantes
  • Métodos de atribución de capas

TensorFlow Explain (tf-explain)

Tensorflow Expl ain (tf-explain) es una biblioteca que proporciona funcionalidades para la interpretabilidad de redes neuronales, incluyendo:

  • Gradientes integrados
  • GradCAM
  • SmoothGrad
  • Gradientes Vanilla y más.

Hasta ahora, hemos visto las funcionalidades para la interpretabilidad. Pasemos a otro aspecto importante: la privacidad.

#4. Soporte para el aprendizaje automático con preservación de la privacidad

La utilidad de los modelos de aprendizaje automático depende del acceso a los datos del mundo real. Sin embargo, esto viene con el inconveniente de que se pierde la privacidad de los datos. Recientemente, se han producido avances significativos en torno a las técnicas de aprendizaje automático que preservan la privacidad, como la privacidad diferencial y el aprendizaje federado.

PyTorch Opacus

El entrenamiento de modelos con privacidad diferencial garantiza que los registros individuales sigan aprendiendo información útil sobre el conjunto de datos en su conjunto.

image-97

Y PyTorch Opacus le permite entrenar modelos con privacidad diferencial. Para aprender a implementar el entrenamiento de modelos diferencialmente privados, consulte la introducción a Opacus.

TensorFlow Federado

El aprendizaje federado elimina la necesidad de una entidad centralizada de recopilación y procesamiento de datos. En un entorno federado, los datos nunca salen del propietario o de las instalaciones. Por lo tanto, el aprendizaje federado facilita una mejor gobernanza de los datos.

TensorFlow Feder ated proporciona funcionalidad para entrenar modelos de aprendizaje automático en datos descentralizados.

#5. Facilidad de aprendizaje

PyTorch es un marco de aprendizaje profundo pitónico. Codificar cómodamente en PyTorch requiere un dominio intermedio de Python, incluyendo una buena comprensión de los conceptos de programación orientada a objetos, como la herencia.

Por otro lado, con TensorFlow, puede utilizar la API Keras. Esta API de alto nivel abstrae algunos de los detalles de implementación de bajo nivel. Como resultado, si usted está empezando con la construcción de modelos de aprendizaje profundo, puede encontrar Keras más fácil de usar.

PyTorch vs. TensorFlow: Una visión general

Hasta ahora, hemos discutido las características de PyTorch y TensorFlow. He aquí una comparación exhaustiva:

CaracterísticaPyTorchTensorFlow
Conjuntos de datos y modelos preentrenados en torchtext, touch audio y torchvisionBiblioteca de conjuntos de datos y modelos preentrenadosConjuntos de datos y modelos preentrenados en torchtext, torchaudio y torchvision
DespliegueTorchServe para servir modelos de aprendizaje automático TensorFlow Serving y TensorFlow Lite para el despliegue de modelos
Interpretabilidad de modelosPyTorch Captumtf-explain
Aprendizaje automático con preservación de la privacidadPyTorch Opacus para el entrenamiento diferencialmente privado de modelosTensorFlow Federated para el aprendizaje automático federado
Facilidad de aprendizajeRequiere un dominio intermedio de Python Relativamente más fácil de aprender y utilizar

Recursos de aprendizaje

Por último, vamos a concluir nuestra discusión repasando algunos recursos útiles para aprender PyTorch y TensorFlow. Esta no es una lista exhaustiva, sino una lista de recursos seleccionados que le pondrán al día rápidamente con estos frameworks.

#1. Aprendizaje profundo con PyTorch: A 60-Minute Blitz

El tutorial bl itz de 60 minutos en el sitio web oficial de PyTorch es un excelente recurso para principiantes para aprender PyTorch.

Este tutorial le ayudará a ponerse en marcha con los fundamentos de Pytorch, como tensores y autógrafos, y a construir una red neuronal básica de clasificación de imágenes con PyTorch.

#2. Aprendizaje profundo con PyTorch: De cero a GANs

Aprendizaje profundo con PyTorch: Zero to GANs de Jovian.ai es otro recurso completo para aprender aprendizaje profundo con PyTorch. En el transcurso de unas seis semanas, podrá aprender

  • Conceptos básicos de PyTorch: tensores y gradientes
  • Regresión lineal en PyTorch
  • Construcción de redes neuronales profundas, ConvNets y ResNets en PyTorch
  • Construcción de redes generativas adversariales (GANs)

#3. Curso completo de TensorFlow 2.0

Si quiere familiarizarse con TensorFlow, el Curso Completo de TensorFlow 2.0 en el canal de la comunidad de freeCodeCamp le será de gran ayuda.

#4. TensorFlow – Python Deep Learning Neural Network API por DeepLizard

Otro gran curso de TensorFlow para principiantes es de DeepLizard. En este curso de TensorFlow para principiantes, aprenderá los fundamentos del aprendizaje profundo, incluyendo:

  • Carga y preprocesamiento de conjuntos de datos
  • Construcción de redes neuronales vainilla
  • Creación de redes neuronales convolucionales (CNN)

Conclusión

En resumen, este artículo le ha ayudado a obtener una visión general de alto nivel de PyTorch y TensorFlow. Elegir el marco de trabajo óptimo dependerá del proyecto en el que esté trabajando. Además, para ello deberá tener en cuenta el soporte para el despliegue, la explicabilidad, etc.

¿Es usted un programador de Python que busca aprender estos frameworks? Si es así, puede considerar explorar uno o más de los recursos compartidos anteriormente.

Y si le interesa la PNL, eche un vistazo a esta lista de cursos de procesamiento del lenguaje natural que puede realizar. ¡Feliz aprendizaje!