¿Qué es PyTorch?
 
Descubra watsonx.ai
Gráfico de flujo de datos

PyTorch es un marco de aprendizaje profundo de código abierto basado en software que se utiliza para crear redes neuronales, combinando la biblioteca de aprendizaje automático back-end de Torch con una API de alto nivel basada en Python. Su flexibilidad y facilidad de uso, entre otras ventajas, lo han convertido en el principal marco de aprendizaje automático para las comunidades académicas y de investigación.

PyTorch admite una amplia variedad de estructuras de redes neuronales, desde simples algoritmos de regresión lineal hasta complejas redes neuronales convolucionales y modelos transformadores generativos utilizados para tareas como la visión artificial y el procesamiento de lenguaje natural (NLP). PyTorch, que se basa en el lenguaje de programación Python y ofrece amplias bibliotecas de modelos preconfigurados (e incluso preentrenados), permite a los científicos de datos crear y ejecutar sofisticadas redes de aprendizaje profundo minimizando el tiempo y el trabajo 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 los grandes modelos de aprendizaje profundo, puede llevar mucho tiempo. Esto convierte a PyTorch en una plataforma excelente para el desarrollo rápido de prototipos, y también agiliza enormemente el proceso de depuración.

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

En 2023, IBM se convirtió en miembro principal de la Fundación PyTorch, habiendo ya colaborado en dos grandes proyectos: permitir un entrenamiento más eficiente de los modelos flexibles de fundamentos de IA con miles de millones de parámetros, y hacer que el punto de control para el entrenamiento de IA sea considerablemente más rentable. La plataforma watsonx de IBM utiliza PyTorch con el objetivo de proporcionar software empresarial para modelos básicos de inteligencia artificial, desde el entrenamiento integral hasta el ajuste de los modelos.

Open Source @ IBM

Desde blockchain hasta 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ódigos, documentación y material de respaldo, 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 ni el rendimiento de las redes neuronales profundas.

Python

Python es un lenguaje de programación de propósito general y alto nivel 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 al modelado activo de redes de aprendizaje profundo. La sencilla sintaxis de Python es fácil de leer, lleva relativamente poco tiempo aprenderla 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 al superar a Java en 2019. Su popularidad sigue creciendo, con un aumento del 22,5 % en 2022.1.

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

Tensores

En cualquier algoritmo de aprendizaje automático, incluso los aplicados a información aparentemente no numérica como sonidos o imágenes, los datos deben representarse numéricamente. En PyTorch, esto se consigue 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ática. Lingüísticamente, “tensor” funciona como un término genérico que incluye algunas entidades matemáticas más familiares:

  • Un escalar es un tensor cero dimensional que contiene un solo número.
  • Un vector es un tensor unidimensional que contiene diversos 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 tensores con tres o más dimensiones, como los tensores tridimensionales utilizados para representar imágenes RGB en algoritmos de visión artificial, se denominan colectivamente tensores N-dimensionales.

Los tensores de PyTorch funcionan de manera similar a las matrices utilizadas en Numpy, pero a diferencia de las matrices, que solo pueden ejecutarse en unidades centrales de procesamiento (CPU), los tensores también pueden ejecutarse en unidades de procesamiento gráfico (GPU). Las GPU permiten realizar cálculos mucho más rápidos que las CPU, lo que supone una gran ventaja dados los enormes volúmenes de datos y el procesamiento paralelo típicos del aprendizaje profundo.

Además de codificar las entradas y salidas de un modelo, los tensores de 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 los modelos de aprendizaje profundo, lo que permite la construcción rápida y directa de redes neuronales sin el tedioso trabajo de codificar manualmente cada algoritmo.

Los módulos pueden contener, y a menudo contienen, otros módulos anidados. Además de permitir la creación de redes neuronales multicapa más elaboradas, esto también permite guardar fácilmente los complejos modelos de aprendizaje profundo como un único módulo con nombre y transferirlos entre diferentes máquinas, CPU o GPU. Los modelos PyTorch pueden ejecutarse incluso en entornos que no sean Python, como C++, utilizando Torchscript (el enlace se encuentra fuera de ibm.com) , lo que ayuda a salvar la distancia entre los prototipos de investigación y la implementación en la producción.

En términos generales, hay tres clases principales de módulos utilizados para construir y optimizar modelos de aprendizaje profundo en PyTorch:

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

  • El módulo autograd proporciona una forma sencilla de calcular automáticamente los gradientes, utilizados para optimizar los parámetros del modelo mediante el descenso del gradiente, para cualquier función gestionada dentro de una red neuronal. Agregar cualquier tensor con require_grad=True indica a autograd que cada operación en ese tensor debe rastrearse, 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 del gradiente estocástico (SGD) o la propagación de la raíz cuadrada media (RMSprop), para adaptarse a necesidades específicas de optimización.

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 aprendizaje profundo en PyTorch. En términos abstractos, los gráficos de cálculo mapean el flujo de datos entre las diferentes operaciones de un sistema matemático: en el contexto del aprendizaje profundo, 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 los diferentes niveles de la red (la disposición de los 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 utilizados en PyTorch) de los gráficos de cálculo estáticos (como los utilizados en TensorFlow) es que los DCG aplazan la especificación exacta de los cálculos y las relaciones entre ellos hasta el momento de la ejecución. En otras palabras, mientras que un gráfico de cálculo estático requiere que la estructura de toda la red neuronal esté completamente determinada y compilada para poder ejecutarse, los DCG pueden repetirse y modificarse sobre la marcha.

Esto hace que los DCG sean especialmente útiles para la depuración y el desarrollo de prototipos, ya que partes específicas del código de un modelo pueden modificarse o ejecutarse de forma aislada sin tener que reiniciar todo el modelo, lo que, en el caso de los modelos de aprendizaje profundo de gran tamaño utilizados para tareas sofisticadas de visión artificial y procesamiento de lenguaje natural (NLP), puede suponer una pérdida tanto de tiempo como de recursos informáticos. 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.

Aunque su estructura fija puede potenciar una mayor eficiencia en los cálculos, los gráficos de cálculos estáticos tienen una flexibilidad limitada: por ejemplo, construir un modelo que utilice una cantidad variable de niveles en función de los datos de entrada, como una red neuronal convolucional (CNN) que pueda procesar imágenes de distintos tamaños, resulta extremadamente difícil con gráficos estáticos.

Diferenciación automática

Un método muy utilizado para entrenar redes neuronales, sobre todo en el aprendizaje supervisado, es la retropropagación. En primer lugar, en un paso hacia delante, se alimenta a un modelo con algunas entradas (x) y se predicen 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 derivado, se puede usar descenso del gradiente para ajustar los pesos en la red neural, un nivel a la vez.

El módulo autograd de PyTorch potencia su técnica de diferenciación automática mediante una fórmula de cálculo denominada regla de la cadena, en la cual se calcula los derivados complejos, los divide en derivados más simples y luego los combina. Autograd calcula y registra automáticamente los gradientes de todas las operaciones ejecutadas en un gráfico de cálculo, lo que reduce enormemente el trabajo de la retropropagación.

Cuando se ejecuta un modelo que ya se ha entrenado, el autograd se convierte en un uso innecesario de recursos de cálculo. Agregar cualquier operación tensorial con requires_grad=Falso indicará a PyTorch que deje de rastrear gradientes.

Conjuntos de datos y cargadores de datos

Trabajar con los grandes conjuntos de datos necesarios para entrenar modelos de aprendizaje profundo puede ser complejo y exigente desde el punto de vista de los cálculos. PyTorch proporciona dos primitivos de datos, conjuntos de datos y cargadores de datos para facilitar su carga 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 facilitar el 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 (el enlace se encuentra fuera de ibm.com)  desarrolladas por miembros de la comunidad de 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 conjunto de herramientas que contiene módulos, estructuras de red y conjuntos de datos para diversas tareas de clasificación de imágenes, detección de objetos y segmentación de imágenes.

Explorar Torchvision
TorchText

TorchText proporciona recursos como conjuntos de datos, transformaciones básicas de procesamiento de textos y modelos preentrenados para su uso en el procesamiento de lenguaje natural (NLP).

Explorar TorchText
Intercambio de redes neuronales abiertas

El Intercambio de redes neuronales abiertas (ONNX) garantiza la interoperabilidad entre marcos de IA, lo que permite a los usuarios trasladar fácilmente sus modelos de PyTorch a otras plataformas.

Explorar ONNX
Tutoriales

En PyTorch.org encontrarás muchos tutoriales útiles. Por ejemplo, este tutorial intermedio (el enlace se encuentra fuera de ibm.com)  enseña los fundamentos del aprendizaje profundo por refuerzo entrenando a una IA para que juegue un videojuego.

Explorar los tutoriales de PyTorch
Instalar y ejecutar PyTorch

PyTorch puede instalarse y ejecutarse en diferentes configuraciones tanto en sistemas locales como en plataformas en la nube.

Ejecutar PyTorch localmente requiere instalar Python, ya sea con el administrador de paquetes de Anaconda, Homebrew (el enlace se encuentra fuera de ibm.com) o con la página web de Python (el enlace se encuentra fuera de ibm.com) .

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

PyTorch también puede ejecutarse en plataformas en la nube, como Amazon Web Services, Google Cloud y Microsoft Azure.

Se recomienda (aunque no es obligatorio) trabajar con las GPU de NVIDIA para aprovechar el soporte de PyTorch para la Arquitectura unificada de dispositivos informáticos (CUDA), que ofrece un entrenamiento y un rendimiento mucho más rápidos que los que pueden proporcionar las CPU.

Soluciones relacionadas
watsonx.ai

Entrene, valide, ajuste y despliegue IA generativa, modelos básicos y capacidades de aprendizaje automático con facilidad, y cree aplicaciones de IA en una fracción del tiempo con un fragmento de los datos.

Explore watsonx.ai

Servicios de consultoría de IA

Reimagine su forma de trabajar con IA: nuestro equipo global y diverso de más de 20 000 expertos puede ayudarle a diseñar y escalar la IA y la automatización en su empresa con rapidez y confianza, 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 los servicios de consultoría de IBM sobre IA.

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 de la industria que es abierto, híbrido y gestionado.

Explore watsonx.data
Recursos de PyTorch Primeros pasos 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 y demostraciones prácticas en las que construirá modelos y los utilizará en aplicaciones.

Guía para principiantes de Python

Presentaremos los conceptos básicos que debe conocer para dar los primeros pasos en este sencillo lenguaje de programación, desde la ejecución de cálculos algebraicos hasta la generación de salidas gráficas a partir de sus datos.

PyTorch: recursos y herramientas

Explore artículos, investigaciones, entradas de blog, tutoriales y videos para ampliar sus conocimientos sobre el ecosistema de PyTorch.

Dé el siguiente paso

Capacítese, valide, ajuste y despliegue IA generativa, modelos básicos y capacidades de aprendizaje automático con facilidad, y desarrolle aplicaciones de IA en una fracción de tiempo utilizando un fragmento de los datos con IBM Watsonx.ai, un estudio empresarial de nueva generación para desarrolladores de IA.

Inicie su prueba gratuita Reserve una demostración en vivo
Notas de pie de página

1 Octoverse 2022: los principales lenguajes de programación (el enlace se encuentra fuera de ibm.com) , Github, 17 de noviembre de 2022
2 PyTorch: Comenzar – Empezar a nivel local (el enlace se encuentra fuera de ibm.com)