PyTorch es una biblioteca de aprendizaje profundo de código abierto , desarrollada originalmente por Meta Platforms y actualmente con el apoyo de la Linux Foundation . Sucesor de Torch , PyTorch proporciona una API de alto nivel que se basa en implementaciones optimizadas de bajo nivel de algoritmos y arquitecturas de aprendizaje profundo, como Transformer o SGD . Cabe destacar que esta API simplifica el entrenamiento y la inferencia de modelos a unas pocas líneas de código. PyTorch permite la paralelización automática del entrenamiento e implementa internamente enlaces CUDA que aceleran aún más el entrenamiento aprovechando los recursos de la GPU .
PyTorch utiliza el tensor como tipo de dato fundamental , de forma similar a NumPy . El entrenamiento se facilita mediante un sistema de diferenciación automática inversa , Autograd, que construye un grafo dirigido acíclico de las operaciones (y sus argumentos) ejecutadas por un modelo durante su paso hacia adelante. Con una función de pérdida , se lleva a cabo la retropropagación . [ 4 ]
A partir de 2025PyTorch sigue siendo una de las bibliotecas de aprendizaje profundo más populares, junto con otras como TensorFlow y Keras . [ 5 ] Se puede instalar usando los gestores de paquetes Anaconda . [ 6 ] Varios sistemas comerciales de aprendizaje profundo están construidos sobre PyTorch, incluyendo ChatGPT , [ 7 ] Tesla Autopilot , [ 8 ] Pyro de Uber , [ 9 ] y Transformers de Hugging Face . [ 10 ] [ 11 ]
Historia
En 2001, Torch fue escrito y publicado bajo una GPL por el Instituto de Investigación Idiap . [ 12 ] Era una biblioteca de aprendizaje automático escrita en C++ y CUDA, que soportaba métodos que incluían redes neuronales, máquinas de vectores de soporte (SVM), modelos ocultos de Markov , etc. [ 13 ] [ 14 ] [ 15 ] Alrededor de 2010, fue reescrita por Ronan Collobert, Clement Farabet y Koray Kavuckuoglu. Esto se conoció como Torch7 o LuaTorch. Esto fue escrito de manera que el backend estaba en C y el frontend en Lua . [ 16 ] A mediados de 2016, algunos desarrolladores lo refactorizaron para desacoplar el frontend y el backend, con una fuerte influencia de torch-autograd y Chainer . A su vez, torch-autograd fue influenciado por HIPS/autograd. [ 17 ] El desarrollo de Torch7 cesó en 2018 y fue absorbido por el proyecto PyTorch. [ 18 ] [ 19 ]
Meta (anteriormente conocida como Facebook) opera tanto PyTorch como Convolutional Architecture for Fast Feature Embedding ( Caffe2 ), pero los modelos definidos por ambos marcos eran mutuamente incompatibles. El proyecto Open Neural Network Exchange (ONNX) fue creado por Meta y Microsoft en septiembre de 2017 para desacoplar los marcos de aprendizaje profundo de los entornos de ejecución específicos del hardware, lo que permite convertir modelos entre marcos y optimizarlos para proveedores de ejecución como TensorRT de NVIDIA. [ 20 ] Caffe2 se fusionó con PyTorch a finales de marzo de 2018. [ 21 ] En septiembre de 2022, Meta anunció que PyTorch sería gobernado por la Fundación PyTorch, una filial independiente de reciente creación de la Fundación Linux . [ 22 ]
PyTorch 2.0 se lanzó el 15 de marzo de 2023, introduciendo TorchDynamo , un compilador a nivel de Python que hace que el código se ejecute hasta dos veces más rápido, junto con mejoras significativas en el rendimiento de entrenamiento e inferencia en las principales plataformas en la nube . [ 23 ] [ 24 ]
tensores de PyTorch
PyTorch define una clase llamada Tensor( torch.Tensor) para almacenar y operar con matrices rectangulares multidimensionales homogéneas de números. PyTorch admite varios subtipos de matrices multidimensionales, [ 25 ] o tensores. [ 26 ] Los tensores de PyTorch son similares a las matrices de NumPy , pero también pueden ser operados por una GPU NVIDIA compatible con CUDA . PyTorch también ha estado desarrollando soporte para otras plataformas de GPU, por ejemplo, ROCm de AMD [ 27 ] y Metal Framework de Apple. [ 28 ]
Redes neuronales PyTorch
PyTorch define un módulo llamado `nn( torch.nn)` para describir redes neuronales y facilitar su entrenamiento. Este módulo ofrece una amplia colección de bloques de construcción para redes neuronales, incluyendo diversas capas y funciones de activación, lo que permite la construcción de modelos complejos. Las redes se construyen heredando del torch.nnmódulo y definiendo la secuencia de operaciones en la forward()función.
Formato de archivo serializado de PyTorch
PyTorch puede guardar y cargar modelos utilizando su propio formato de archivo, que es un archivo ZIP64 que contiene los pesos del modelo en un archivo pickle de Python , y otra información como el orden de bytes . Las extensiones de archivo .pt y .pth se utilizan comúnmente para estos archivos. [ 29 ]
Ejemplo
El siguiente programa muestra la funcionalidad de bajo nivel de la biblioteca con un ejemplo sencillo.
antorcha de importacióndtype = torch.floatdispositivo = torch.dispositivo ( "cpu" ) # Ejecutar todos los cálculos en la CPU# dispositivo = torch.device("cuda:0") # Ejecuta todos los cálculos en la GPU# Crea un tensor y rellénalo con números aleatorios.a = torch.randn ( 2 , 3 , device = device , dtype = dtype )imprimir ( a )# Salida: tensor([[-1.1884, 0.8498, -1.7129],# [-0,8816, 0,1944, 0,5847]])b = torch.randn ( 2 , 3 , device = device , dtype = dtype )imprimir ( b )# Salida: tensor([[ 0.7178, -0.8453, -1.3403],# [ 1.3262, 1.1512, -1.7070]])imprimir ( a * b )# Salida: tensor([[-0.8530, -0.7183, 2.58],# [-1.1692, 0.2238, -0.9981]])imprimir ( a . suma ())# Salida: tensor(-2.1540)print ( a [ 1 , 2 ]) # Salida del elemento en la tercera columna de la segunda fila (basado en cero)# Salida: tensor(0.5847)imprimir ( a . max ())# Salida: tensor(0.8498)El siguiente bloque de código define una red neuronal con capas lineales utilizando el nnmódulo.
from torch import nn # Importa el submódulo nn de PyTorchclase RedNeural ( nn . Módulo ): # Las redes neuronales se definen como clasesdef __init__ ( self ): # Las capas y variables se definen en el método __init__super () . __init__ () # Debe estar en cada red.self.flatten = nn.Flatten ( ) # Construye una capa de aplanamiento .self.linear_relu_stack = nn.Sequential ( # Construye una pila de capas .nn . Linear ( 28 * 28 , 512 ), # Las capas lineales tienen una forma de entrada y salidann . ReLU (), # ReLU es una de las muchas funciones de activación proporcionadas por nnnn . Lineal ( 512 , 512 ),nn . ReLU (),nn . Lineal ( 512 , 10 ),)def forward ( self , x ): # Esta función define el paso hacia adelante.x = self.aplanar ( x )logits = self.linear_relu_stack ( x )devolver logitsVéase también
Referencias
- ↑ Chintala, Soumith (1 de septiembre de 2016). "Lanzamiento de PyTorch Alpha-1" . GitHub . Archivado del original el 29 de agosto de 2021. Recuperado el 19 de agosto de 2020 .
- ↑ "Versión 2.13.0" . 8 de julio de 2026. Consultado el 9 de julio de 2026 .
- ↑ Claburn, Thomas (12 de septiembre de 2022). "PyTorch recibe un impulso bajo el amparo de The Linux Foundation" . The Register . Archivado del original el 18 de octubre de 2022. Consultado el 18 de octubre de 2022 .
- ↑ "Mecánica de Autograd" . Documentación de PyTorch . Consultado el 13 de noviembre de 2025 .
- ↑ "Los 30 mejores proyectos de código abierto" . github.com . Consultado el 13 de noviembre de 2025 .
- ↑ Mukherjee, Amartya; Dey, Nilanjan (30 de mayo de 2019). Computación inteligente con plataformas de código abierto . CRC Press. pág. 229. ISBN 978-1-351-12032-6.
- ↑ "OpenAI estandariza en PyTorch" . 30 de enero de 2020. Consultado el 8 de enero de 2026 .
- ^ Karpathy, Andrej (6 de noviembre de 2019). "PyTorch en Tesla - Andrej Karpathy, Tesla" . YouTube . Archivado desde el original el 24 de marzo de 2023 . Consultado el 2 de junio de 2020 .
- ↑ "Uber AI Labs publica Pyro, un lenguaje de programación probabilística profunda de código abierto" . Blog de ingeniería de Uber . 3 de noviembre de 2017. Archivado del original el 25 de diciembre de 2017. Consultado el 18 de diciembre de 2017 .
- ↑ PYTORCH-TRANSFORMERS: Implementaciones en PyTorch de transformadores populares de PNL , PyTorch Hub, 1 de diciembre de 2019, archivado del original el 11 de junio de 2023 , consultado el 1 de diciembre de 2019.
- ↑ "Herramientas del ecosistema" . pytorch.org . Archivado del original el 18 de julio de 2023. Consultado el 18 de junio de 2020 .
- ↑ "Licencia de PyTorch – Aviso de derechos de autor" . GitHub . Consultado el 12 de junio de 2026 .
- ^ "Tutorial de la antorcha", Ronan Collobert, IDIAP, 2 de octubre de 2002
- ↑ R. Collobert, S. Bengio y J. Mariéthoz. Torch: una biblioteca de software modular para aprendizaje automático . Informe técnico IDIAP-RR 02-46, IDIAP, 2002.
- ↑ "Biblioteca Torch" . Archivado del original el 31 de octubre de 2001.
- ^ Collobert, Ronan; Kavukcuoglu, Koray; Farabet, Clément (2012), "Implementing Neural Networks Efficiently" , en Montavon, Grégoire; Orr, Geneviève B.; Müller, Klaus-Robert (eds.), Redes neuronales: trucos del oficio: segunda edición , Berlín, Heidelberg: Springer, págs. 537–557 , doi : 10.1007/978-3-642-35289-8_28 , ISBN 978-3-642-35289-8Consultado el 10 de junio de 2025.
- ↑ HIPS/autograd , anteriormente: Harvard Intelligent Probabilistic Systems Group -- Ahora en Princeton, 6 de abril de 2026 , consultado el 6 de abril de 2026
- ↑ torch/torch7, Commit fd0ee3b, 2018-07-02
- ^ Chintala, Soumith (17 de diciembre de 2023). "Los orígenes del diseño de PyTorch" . soumith.ch . Consultado el 7 de febrero de 2026 .
- ↑ Quach, K. (7 de septiembre de 2017). "Microsoft y Facebook se alzan en el campo de la IA para competir con Google" . The Register .
El objetivo es crear un "traductor universal" para la IA... [que permita] a los desarrolladores mover sus modelos entre diferentes marcos y entornos de ejecución de hardware.
- ↑ "Caffe2 se fusiona con PyTorch" . 2 de abril de 2018. Archivado del original el 30 de marzo de 2019. Consultado el 2 de enero de 2019 .
- ↑ Edwards, Benj (12 de septiembre de 2022). "Meta crea una escisión de la Fundación PyTorch para lograr que el marco de IA sea independiente del proveedor" . Ars Technica . Archivado del original el 13 de septiembre de 2022. Recuperado el 13 de septiembre de 2022 .
- ↑ "Descripción general de Dynamo" .
- ↑ "PyTorch 2.0 le da un nuevo impulso al aprendizaje automático de código abierto" . VentureBeat . 15 de marzo de 2023. Archivado del original el 16 de marzo de 2023. Consultado el 16 de marzo de 2023 .
- ↑ "PyTorch Tensor vs NumPy Array" . GeeksforGeeks . 1 de marzo de 2024. Consultado el 7 de abril de 2026 .
- ↑ "Introducción a PyTorch: una biblioteca de aprendizaje profundo sencilla pero potente" . analyticsvidhya.com . 22 de febrero de 2018. Archivado del original el 22 de octubre de 2019. Consultado el 11 de junio de 2018 .
- ↑ "Instalación de PyTorch para ROCm" . rocm.docs.amd.com . 9 de febrero de 2024.
- ↑ "Presentación del entrenamiento acelerado de PyTorch en Mac" . pytorch.org . Archivado del original el 29 de enero de 2024. Consultado el 4 de junio de 2022 .
- ↑ "Formato de archivo serializado de PyTorch" . Biblioteca del Congreso.
Enlaces externos
- Sitio web oficial
- Software de aprendizaje profundo
- Software de Facebook
- Software científico gratuito
- Software libre programado en C
- Software libre programado en Python
- Inteligencia artificial de código abierto
- Bibliotecas científicas de Python (lenguaje de programación)
- Software que utiliza la licencia BSD.
