Articulo de referencia

PyTorch

{{cite web|url=https://github.com/pytorch/pytorch/releases/tag/v0.1.1|title=PyTorch Alpha-1 release|last=Chintala|first=Soumith|website=[[GitHub]]|date=1 September 2016|access-d...

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 logits

Véase también

Referencias

  1. 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 .
  2. "Versión 2.13.0" . 8 de julio de 2026. Consultado el 9 de julio de 2026 .
  3. 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 .
  4. "Mecánica de Autograd" . Documentación de PyTorch . Consultado el 13 de noviembre de 2025 .
  5. "Los 30 mejores proyectos de código abierto" . github.com . Consultado el 13 de noviembre de 2025 .
  6. 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.
  7. "OpenAI estandariza en PyTorch" . 30 de enero de 2020. Consultado el 8 de enero de 2026 .
  8. ^ 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 .
  9. "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 .
  10. 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.
  11. "Herramientas del ecosistema" . pytorch.org . Archivado del original el 18 de julio de 2023. Consultado el 18 de junio de 2020 .
  12. "Licencia de PyTorch – Aviso de derechos de autor" . GitHub . Consultado el 12 de junio de 2026 .
  13. ^ "Tutorial de la antorcha", Ronan Collobert, IDIAP, 2 de octubre de 2002
  14. 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.
  15. "Biblioteca Torch" . Archivado del original el 31 de octubre de 2001.
  16. ^ 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.
  17. HIPS/autograd , anteriormente: Harvard Intelligent Probabilistic Systems Group -- Ahora en Princeton, 6 de abril de 2026 , consultado el 6 de abril de 2026
  18. torch/torch7, Commit fd0ee3b, 2018-07-02
  19. ^ Chintala, Soumith (17 de diciembre de 2023). "Los orígenes del diseño de PyTorch" . soumith.ch . Consultado el 7 de febrero de 2026 .
  20. 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.
  21. "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 .
  22. 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 .
  23. "Descripción general de Dynamo" .
  24. "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 .
  25. "PyTorch Tensor vs NumPy Array" . GeeksforGeeks . 1 de marzo de 2024. Consultado el 7 de abril de 2026 .
  26. "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 .
  27. "Instalación de PyTorch para ROCm" . rocm.docs.amd.com . 9 de febrero de 2024.
  28. "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 .
  29. "Formato de archivo serializado de PyTorch" . Biblioteca del Congreso.
  • Sitio web oficial