stringtranslate.com

PyTorch

PyTorch es una biblioteca de aprendizaje automático basada en la biblioteca Torch , [4] [5] [6] utilizada para aplicaciones como visión artificial y procesamiento de lenguaje natural , [7] desarrollada originalmente por Meta AI y ahora parte del paraguas de Linux Foundation . [8] [9] [10] [11] Es uno de los marcos de aprendizaje profundo más populares , junto con otros como TensorFlow y PaddlePaddle [12] [13] , que ofrece software gratuito y de código abierto publicado bajo la licencia BSD modificada . Aunque la interfaz de Python está más pulida y es el foco principal del desarrollo, PyTorch también tiene una interfaz de C++ . [14]

Varios programas de aprendizaje profundo se basan en PyTorch, incluidos Tesla Autopilot , [15] Pyro de Uber , [16] Transformers de Hugging Face , [17] PyTorch Lightning , [18] [19] y Catalyst. [20] [21]

PyTorch proporciona dos características de alto nivel: [22]

Historia

Meta (antes conocida como Facebook) opera tanto con PyTorch como con Caffe2 (Convolutional Architecture for Fast Feature Embedding ), pero los modelos definidos por ambos frameworks eran mutuamente incompatibles. El proyecto Open Neural Network Exchange ( ONNX ) fue creado por Meta y Microsoft en septiembre de 2017 para convertir modelos entre frameworks. Caffe2 se fusionó con PyTorch a fines de marzo de 2018. [23] En septiembre de 2022, Meta anunció que PyTorch sería gobernado por la PyTorch Foundation independiente, una subsidiaria recién creada de la Linux Foundation . [24]

PyTorch 2.0 se lanzó el 15 de marzo de 2023 y presenta TorchDynamo, un compilador de nivel 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 de nube . [25] [26]

Tensores de PyTorch

PyTorch define una clase llamada Tensor ( torch.Tensor) para almacenar y operar sobre matrices rectangulares multidimensionales homogéneas de números. Los tensores de PyTorch son similares a las matrices NumPy , pero también se pueden operar en 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]

PyTorch admite varios subtipos de tensores. [29]

Tenga en cuenta que el término "tensor" aquí no tiene el mismo significado que tensor en matemáticas o física. El significado de la palabra en el aprendizaje automático solo se relaciona superficialmente con su significado original como un cierto tipo de objeto en álgebra lineal . Los tensores en PyTorch son simplemente matrices multidimensionales.

Redes neuronales de PyTorch

PyTorch define un módulo llamado nn( torch.nn) para describir redes neuronales y brindar soporte para el entrenamiento. Este módulo ofrece una colección completa de bloques de construcción para redes neuronales, incluidas varias 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.

Ejemplo

El siguiente programa muestra la funcionalidad de bajo nivel de la biblioteca con un ejemplo simple.

 antorcha de importacióndtype  =  antorcha .floatdispositivo  =  antorcha . dispositivo ( "cpu" )  # Ejecuta todos los cálculos en la CPU# device = antorcha.device("cuda:0") # Ejecuta todos los cálculos en la GPU# Crea un tensor y rellénalo con números aleatoriosa  =  antorcha . randn ( 2 ,  3 ,  dispositivo = dispositivo ,  dtype = dtype )imprimir ( a )# Salida: tensor([[-1.1884, 0.8498, -1.7129],# [-0,8816, 0,1944, 0,5847]])b  =  antorcha . randn ( 2 ,  3 ,  dispositivo = dispositivo ,  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.

 antorcha de importacióndesde  la antorcha  import  nn  # Importa el submódulo nn desde PyTorchclase  NeuralNetwork ( nn.Módulo ): # Las redes neuronales se definen como clases  def  __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 . secuencial (  # Construye una pila de capas. nn . Lineal ( 28 * 28 ,  512 ),  # Las capas lineales tienen una forma de entrada y salida nn . ReLU (),  # ReLU es una de las muchas funciones de activación proporcionadas por nn nn . Lineal ( 512 ,  512 ), nn .ReLU () , nn . Lineal ( 512 ,  10 ),  ) def  forward ( self ,  x ):  # Esta función define el pase hacia adelante. x  =  self . flatten ( x ) logits  =  self .linear_relu_stack ( x )  logits de retorno

Véase también

Referencias

  1. ^ Chintala, Soumith (1 de septiembre de 2016). "Lanzamiento de PyTorch Alpha-1". GitHub .
  2. ^ "Lanzamiento de PyTorch 2.5.0, backend SDPA CuDNN, Flex Attention". 17 de octubre de 2024. Consultado el 17 de octubre de 2024 .
  3. ^ Claburn, Thomas (12 de septiembre de 2022). "PyTorch se enciende bajo la Fundación Linux". The Register .
  4. ^ Yegulalp, Serdar (19 de enero de 2017). «Facebook incorpora el aprendizaje automático basado en GPU a Python». InfoWorld . Consultado el 11 de diciembre de 2017 .
  5. ^ Lorica, Ben (3 de agosto de 2017). "Por qué los investigadores de IA y aprendizaje automático están empezando a adoptar PyTorch". O'Reilly Media . Consultado el 11 de diciembre de 2017 .
  6. ^ Ketkar, Nikhil (2017). "Introducción a PyTorch". Aprendizaje profundo con Python . Apress, Berkeley, CA. págs. 195-208. doi :10.1007/978-1-4842-2766-4_12. ISBN . 9781484227657.
  7. ^ Moez Ali (junio de 2023). "PNL con PyTorch: una guía completa". datacamp.com . Consultado el 1 de abril de 2024 .
  8. ^ Patel, Mo (7 de diciembre de 2017). "Cuando dos tendencias se fusionan: PyTorch y los sistemas de recomendación". O'Reilly Media . Consultado el 18 de diciembre de 2017 .
  9. ^ Mannes, John. "Facebook y Microsoft colaboran para simplificar las conversiones de PyTorch a Caffe2". TechCrunch . Consultado el 18 de diciembre de 2017. FAIR está acostumbrado a trabajar con PyTorch, un marco de aprendizaje profundo optimizado para lograr resultados de vanguardia en la investigación, independientemente de las limitaciones de recursos. Desafortunadamente, en el mundo real, la mayoría de nosotros estamos limitados por las capacidades computacionales de nuestros teléfonos inteligentes y computadoras.
  10. ^ Arakelyan, Sophia (29 de noviembre de 2017). "Los gigantes tecnológicos están utilizando marcos de código abierto para dominar la comunidad de IA". VentureBeat . Consultado el 18 de diciembre de 2017 .
  11. ^ "PyTorch fortalece su gobernanza al unirse a la Fundación Linux". pytorch.org . Consultado el 13 de septiembre de 2022 .
  12. ^ "Los 30 mejores proyectos de código abierto". Proyecto de código abierto Velocity de CNCF . Consultado el 12 de octubre de 2023 .
  13. ^ "Bienvenido a PaddlePaddle GitHub". Repositorio oficial de PaddlePaddle en GitHub . Consultado el 28 de octubre de 2024 .
  14. ^ "El frontend de C++". Documentación maestra de PyTorch . Consultado el 29 de julio de 2019 .
  15. ^ Karpathy, Andrej (6 de noviembre de 2019). "PyTorch en Tesla - Andrej Karpathy, Tesla". YouTube .
  16. ^ "Uber AI Labs abre el código fuente de Pyro, un lenguaje de programación probabilístico profundo". Blog de ingeniería de Uber . 2017-11-03 . Consultado el 2017-12-18 .
  17. ^ PYTORCH-TRANSFORMERS: Implementaciones de PyTorch de los populares Transformers de PNL, PyTorch Hub, 2019-12-01 , consultado el 2019-12-01
  18. ^ PYTORCH-Lightning: El contenedor ligero de PyTorch para investigadores de ML. Escala tus modelos. Escribe menos código repetitivo, Lightning-Team, 2020-06-18 , consultado el 2020-06-18
  19. ^ "Herramientas del ecosistema". pytorch.org . Consultado el 18 de junio de 2020 .
  20. ^ GitHub - catalyst-team/catalyst: DL y RL acelerados, Catalyst-Team, 2019-12-05 , consultado el 2019-12-05
  21. ^ "Herramientas del ecosistema". pytorch.org . Consultado el 4 de abril de 2020 .
  22. ^ "PyTorch – Acerca de". pytorch.org . Archivado desde el original el 2018-06-15 . Consultado el 2018-06-11 .
  23. ^ "Caffe2 se fusiona con PyTorch". 2 de abril de 2018.
  24. ^ Edwards, Benj (12 de septiembre de 2022). "Meta se separa de PyTorch Foundation para que el marco de IA sea neutral respecto de los proveedores". Ars Technica .
  25. ^ "Descripción general de Dynamo". {{cite web}}: La cita tiene un parámetro desconocido vacío: |1=( ayuda )
  26. ^ "PyTorch 2.0 aporta un nuevo impulso al aprendizaje automático de código abierto". VentureBeat . 15 de marzo de 2023 . Consultado el 16 de marzo de 2023 .
  27. ^ "Instalación de PyTorch para ROCm". rocm.docs.amd.com . 2024-02-09.
  28. ^ "Presentación del entrenamiento acelerado de PyTorch en Mac". pytorch.org . Consultado el 4 de junio de 2022 .
  29. ^ "Introducción a PyTorch: una biblioteca de aprendizaje profundo sencilla pero potente". analyticsvidhya.com . 2018-02-22 . Consultado el 2018-06-11 .

Enlaces externos