Inicio Topics Pytorch ¿Qué es PyTorch?
 
Descubra watsonx.ai
Un gráfico que representa un flujo de datos

PyTorch es un marco de deep learning de código abierto basado en software que se utiliza para crear redes neuronales, combinando la biblioteca de aprendizaje automático de Torch con una API de alto nivel basada en Python. Su flexibilidad y facilidad de uso, entre otros beneficios, lo han convertido en el marco de aprendizaje automático líder para las comunidades académicas y de investigación.

PyTorch admite una amplia variedad de arquitecturas de red neuronal, desde algoritmos de regresión lineal simple hasta redes neuronales convolucionales complejas y modelos de transformadores generativos utilizados para tareas como visión por ordenador y procesamiento del lenguaje natural (NLP). Basado en el lenguaje de programación Python, ampliamente conocido, y ofreciendo amplias bibliotecas de modelos preconfigurados (e incluso preentrenados), PyTorch permite a los científicos de datos crear y ejecutar sofisticadas redes de deep learning, al tiempo que minimiza el tiempo y la mano de obra dedicados al código y la estructura matemática.

PyTorch también permite a los científicos de datos ejecutar y probar partes del código en tiempo real, en lugar de esperar a que se implemente todo el código, lo que, para grandes modelos de deep learning, puede llevar mucho tiempo. Esto hace que PyTorch sea una excelente plataforma para la creación rápida de prototipos y también agiliza enormemente el proceso de depuración.

Desarrollado originalmente por Facebook AI Research (ahora Meta), Python se creó de código abierto en 2017 y ha estado bajo la administración de la Fundación PyTorch (que forma parte de la Fundación Linux más grande) desde 2022. La fundación sirve como un espacio neutral para que la comunidad de deep learning colabore en un mayor desarrollo del ecosistema de PyTorch.

En 2023, IBM se convirtió en miembro principal de la Fundación PyTorch, ya colaboró en dos proyectos principales: permitiendo una formación más eficiente de modelos básicos flexibles de IA con miles de millones de parámetros y haciendo que la formación de IA sea considerablemente más rentable. La plataforma watsonx de IBM utiliza PyTorch para proporcionar una pila de software de nivel empresarial para modelos de base de inteligencia artificial, desde la formación integral hasta el ajuste de modelos.

Código abierto @ IBM

De la cadena de bloques a los contenedores, pasando por la inteligencia artificial y los sistemas operativos, nuestros desarrolladores crean proyectos emergentes de código abierto y los rodean de código, documentación y material de apoyo, para que pueda unirse a la innovación.

Contenido relacionado

Suscríbase a los boletines de IBM

¿Cómo funciona PyTorch?

La estructura matemática y de programación de PyTorch simplifica y agiliza los flujos de trabajo de aprendizaje automático, sin limitar la complejidad o el rendimiento de las redes neuronales profundas.

Python

Python es un lenguaje de programación de alto nivel de propósito general ampliamente utilizado en la ciencia de datos, lo que lo convierte en una opción intuitiva para los científicos de datos que amplían su trabajo en el modelado activo de redes de deep learning. La sintaxis simple de Python es fácil de leer, toma relativamente poco tiempo para aprender y puede ejecutarse en cualquier sistema operativo, incluidos Windows, macOS, Linux o Unix. Python ha sido el segundo lenguaje de programación más utilizado en GitHub durante más de tres años, habiendo superado a Java en 2019. Sigue creciendo en popularidad, con un aumento del 22,5 por ciento en 20221.

 Esta flexibilidad y simplicidad ha ayudado a fomentar una sólida comunidad en línea de desarrolladores de Python, colaborando en una amplia gama de bibliotecas y API de Pythoncomo Numerical Python (NumPy) para operaciones matemáticas, Pandas para manipulación de datos o matplotlib para visualizaciones de datos y recursos educativos . Esta comunidad también ha producido un gran volumen de bibliotecas de Pytorch que reducen la monotonía y las conjeturas de codificación para el aprendizaje automático, liberando a desarrolladores y científicos de datos que se centren en la innovación en lugar de rotar la escritura de tareas.

Tensores

En cualquier algoritmo de aprendizaje automático, incluso en los que se aplican a información aparentemente no numérica, como sonidos o imágenes, los datos deben representarse numéricamente. En PyTorch, esto se logra a través de tensores, que sirven como unidades fundamentales de datos utilizadas para el cálculo en la plataforma.

En el contexto del aprendizaje automático, un tensor es una matriz multidimensional de números que funciona como un dispositivo de contabilidad matemático. Lingüísticamente hablando, "tensor" funciona como un término genérico que incluye algunas entidades matemáticas más conocidas:

  • Un escalar es un tensor de dimensión cero, que contiene un solo número.
  • Un vector es un tensor unidimensional que contiene varios escalares del mismo tipo. Una tupla es un tensor unidimensional que contiene diferentes tipos de datos.
  • Una matriz es un tensor bidimensional que contiene varios vectores del mismo tipo.
  • Los sensores con tres o más dimensiones, como los tensores tridimensionales utilizados para representar imágenes RGB en algoritmos de visión informática, se denominan colectivamente tensores N-dimensionales.

Los tensores de PyTorch funcionan de manera similar a los ndarrays que se usan en NumPy, pero a diferencia de los ndarrays, que solo se pueden ejecutar en unidades centrales de procesamiento (CPU), los tensores también se pueden ejecutar en unidades de procesamiento de gráficos (GPU). Las GPU permiten un cálculo mucho más rápido que las CPU, lo que supone una gran ventaja dado que los volúmenes masivos de datos y el procesamiento paralelo son típicos del deep learning.

Además de codificar las entradas y salidas de un modelo, los tensores PyTorch también codifican los parámetros del modelo: los pesos, sesgos y gradientes que se "aprenden" en el aprendizaje automático. Esta propiedad de los tensores permite la diferenciación automática, que es una de las características más importantes de PyTorch.

Módulos

PyTorch utiliza módulos como bloques de construcción de modelos de aprendizaje profundo, lo que permite la construcción rápida y sencilla de redes neuronales sin el tedioso trabajo de codificar manualmente cada algoritmo.

 Los módulos pueden contener y, a menudo, otros módulos anidados. Además de permitir la creación de redes neuronales multicapa más elaboradas, esto también permite que estos complejos modelos de deep learning se guarden fácilmente como un único módulo con nombre y se transfieran entre diferentes máquinas, CPU o GPU. Los modelos PyTorch incluso se pueden ejecutar en entornos que no sean Python, como C++, utilizando Torchscript  (enlace externo a ibm.com), ayudando a cerrar la brecha entre los prototipos de investigación y la implementación de producción.

 En términos generales, hay tres clases principales de módulos que se utilizan para crear y optimizar modelos de deep learning en PyTorch:

  • nn módulos se implementan como capas de una red neuronal. El paquete torch.nn contiene una gran biblioteca de módulos que realizan operaciones comunes como convoluciones, agrupación y regresión. Por ejemplo, torch.nn.Linear(n,m) llama a un algoritmo de regresión lineal con n entradas y m salidas (cuyas entradas y parámetros iniciales se establecen en las siguientes líneas de código).

  • El módulo autograd proporciona una forma sencilla de calcular automáticamente los gradientes, utilizado para optimizar los parámetros del modelo a través del descenso del gradiente, para cualquier función operada dentro de una red neuronal. Añadir cualquier tensor con requires_grad=True indica a autograd que cada operación en ese tensor debe ser rastreada, lo que permite la diferenciación automática.

  • Los módulos optim aplican algoritmos de optimización a esos gradientes. Torch.optim proporciona módulos para varios métodos de optimización, como el descenso estocástico del gradiente (SGD) o la propagación cuadrática media (RMSprop), para adaptarse a necesidades de optimización específicas.

Gráficos de cálculo dinámico

Los gráficos de cálculo dinámico (DCG) son la forma en que se representan los modelos de deep learning en PyTorch. En términos abstractos, los gráficos de computación mapean el flujo de datos entre las diferentes operaciones en un sistema matemático: en el contexto del deep learning, esencialmente traducen el código de una red neuronal en un diagrama de flujo que indica las operaciones realizadas en cada nodo y las dependencias entre las diferentes capas de la red, la disposición de pasos y secuencias que transforman los datos de entrada en datos de salida.

Lo que diferencia a los gráficos de cálculo dinámico (como los que se usan en PyTorch) de los gráficos de cálculo estáticos (como los que se usan en TensorFlow) es que los DCG aplazan la especificación exacta de los cálculos y las relaciones entre ellos hasta el tiempo de ejecución. En otras palabras, mientras que un gráfico de cálculo estático requiere que la arquitectura de toda la red neuronal esté completamente determinada y compilada para poder ejecutarse, los DCG se pueden iterar y modificar sobre la marcha.

Esto hace que los DCG sean particularmente útiles para la depuración y la creación de prototipos, ya que partes específicas del código de un modelo se pueden modificar o ejecutar de forma aislada sin tener que restablecer todo el modelo, lo que, para los modelos de deep learning muy grandes utilizados para tareas sofisticadas de visión por ordenador y NLP, puede ser una pérdida de tiempo y recursos computacionales. Las ventajas de esta flexibilidad se extienden al entrenamiento de modelos, ya que los gráficos de cálculo dinámico se generan fácilmente a la inversa durante la retropropagación.

Si bien su estructura fija puede permitir una mayor eficiencia computacional, los gráficos computacionales estáticos tienen una flexibilidad limitada: por ejemplo, crear un modelo que utilice un número variable de capas según los datos de entrada, como una red neuronal convolucional (CNN) que puede procesar imágenes de diferentes tamaños, es prohibitivamente difícil con los gráficos estáticos.

Diferenciación automática

Un método muy utilizado para entrenar redes neuronales, especialmente en el aprendizaje supervisado, es la retropropagación. En primer lugar, en una pasada hacia adelante, un modelo recibe algunas entradas (x) y predice algunas salidas (y); trabajando hacia atrás desde esa salida, se utiliza una función de pérdida para medir el error de las predicciones del modelo en diferentes valores de x. Al diferenciar esa función de pérdida para encontrar su derivada, se puede utilizar el descenso del gradiente para ajustar los pesos en la red neuronal, una capa a la vez.

El módulo de autograd de PyTorch potencia su técnica de diferenciación automática mediante una fórmula de cálculo llamada regla de la cadena, que calcula derivadas complejas dividiéndolas en derivadas más simples y combinándolas posteriormente. Autograd calcula y registra automáticamente los gradientes de todas las operaciones ejecutadas en un gráfico computacional, lo que reduce considerablemente el trabajo preliminar de la retropropagación. 

Al ejecutar un modelo que ya se ha entrenado, el autograd se convierte en un uso innecesario de los recursos computacionales. Agregar cualquier operación de tensor con requires_grad=False indicará a PyTorch que deje de rastrear los gradientes.

Conjuntos de datos y cargadores de datos

Trabajar con los grandes conjuntos de datos necesarios para entrenar modelos de deep learning puede ser complejo y exigente computacionalmente. PyTorch proporciona dos primitivas de datos, datasets y dataloaders, para facilitar la carga de datos y hacer que el código sea más fácil de leer.

  • torch.utils.data.Dataset almacena muestras de datos y sus etiquetas correspondientes
  • torch.utils.data.Dataloader encapsula un iterable (un objeto sobre el que se puede operar) alrededor del conjunto de datos para permitir un fácil acceso a las muestras

 

Ecosistema de PyTorch

Las características principales de PyTorch se complementan con un sólido ecosistema de herramientas, bibliotecas y extensiones  (enlace externo a ibm.com) desarrollado por miembros de la comunidad PyTorch. Para complementar la biblioteca torch preinstalada, existen muchas bibliotecas adicionales de código abierto que contienen módulos específicos, redes neuronales preconfiguradas e incluso modelos preentrenados.

Torchvision

Torchvision es un kit de herramientas que contiene módulos, arquitecturas de red y datasets para diversas tareas de clasificación de imágenes, detección de objetos y segmentación de imágenes.

Explore Torchvision
TorchText

TorchText proporciona recursos como datasets, transformaciones básicas de procesamiento de texto y modelos preentrenados para su uso en NLP.

Explore TorchText
Intercambio de redes neuronales abiertas

El Open Neural Network Exchange (ONNX) garantiza la interoperabilidad entre los marcos de IA, lo que permite a los usuarios realizar fácilmente la transición de sus modelos de PyTorch a otras plataformas.

Explore ONNX
Tutoriales

Hay muchos tutoriales útiles disponibles en PyTorch.org. Por ejemplo, este tutorial intermedio  (enlace externo a ibm.com) enseña los fundamentos del aprendizaje de refuerzo profundo formando una IA para jugar a un videojuego.

Explore tutoriales de PyTorch
Instalación y ejecución de PyTorch

PyTorch se puede instalar y ejecutar en diferentes configuraciones, tanto en sistemas locales como en plataformas en la nube.

La ejecución local de PyTorch requiere la instalación de Python, utilizando el administrador de paquetes de Anaconda, Homebrew (enlace externo a ibm.com) o el sitio web de Python  (enlace externo a ibm.com).

PyTorch se puede instalar localmente a través de Anaconda   (enlace externo a ibm.com) usando el comando conda install pytorch torchvision -c pytorch, o mediante pip  (enlace externo a ibm.com) usando el comando pip3 install torch torchvision. Se recomienda Anaconda, ya que proporciona todas las dependencias de PyTorch (incluido Python) en una instalación en espacio aislado2.

PyTorch también se puede ejecutar en plataformas en la nube, incluidos Amazon Web Services, Google Cloud y Microsoft Azure.

Se recomienda (pero no es obligatorio) trabajar con GPU NVIDIA para aprovechar el soporte de PyTorch para CUDA (Compute Unified Device Architecture), que ofrece entrenamiento y rendimiento dramáticamente más rápidos que los que pueden ofrecer las CPU. 

Soluciones relacionadas
watsonx.ai

Entrenar, validar, ajustar e implementar IA generativa, modelos fundacionales y capacidades de aprendizaje automático con facilidad y crear aplicaciones de IA en una fracción del tiempo con una fracción de los datos.

Explore watsonx.ai

Servicios de consultoría de IA

Reimagine su forma de trabajar con la IA: nuestro equipo diverso y global de más de 20 000 expertos en IA puede ayudarle a diseñar y escalar la IA y la automatización de forma rápida y segura en toda su empresa, trabajando con nuestra propia tecnología IBM watsonx y un ecosistema abierto de socios para ofrecer cualquier modelo de IA, en cualquier nube, guiado por la ética y la confianza.

Explore servicios de consultoría de IA de IBM

watsonx.data

Escale las cargas de trabajo analíticas y de IA para todos sus datos, en cualquier lugar, con watsonx.data, el único almacén de datos del sector que es abierto, híbrido y con gobierno.

Explore watsonx.data
Recursos de PyTorch Comience con el aprendizaje automático

Esta ruta de aprendizaje está diseñada para cualquier persona interesada en ponerse al día rápidamente con el aprendizaje automático, con tutoriales paso a paso con demostraciones prácticas en las que creará modelos y los utilizará en aplicaciones.

Guía para principiantes de Python

Presentaremos los conceptos básicos que necesita saber para comenzar con este lenguaje de programación sencillo, desde ejecutar cálculos algebraico hasta generar resultados gráficos de sus datos.

PyTorch: recursos y herramientas

Explore artículos, investigaciones, publicaciones de blog, tutoriales y vídeos para ampliar sus conocimientos sobre el ecosistema de PyTorch.

Dé el siguiente paso

Entrene, valide, ajuste e implemente IA generativa, modelos básicos y capacidades de aprendizaje automático con facilidad y cree aplicaciones de IA en una fracción del tiempo utilizando una fracción de los datos con IBM® Watsonx.ai, un estudio empresarial de próxima generación para constructores de IA.

Comience su prueba sin coste Reserve una demostración en directo
Notas a pie de página

1 de octubre de 2022: los principales lenguajes de programación  (enlace externo a ibm.com), Github, 17 de noviembre de 2022
2 PyTorch: Comenzar – Comience localmente  (enlace externo a ibm.com)