stringtranslate.com

PyTorch

PyTorch es un marco de aprendizaje automático basado en la biblioteca Torch , [4] [5] [6] utilizado para aplicaciones como visión por computadora y procesamiento de lenguaje natural , [7] desarrollado originalmente por Meta AI y ahora parte de la Fundación Linux . [8] [9] [10] [11] Es reconocida como una de las dos bibliotecas de aprendizaje automático más populares junto con TensorFlow , y 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++ . [12]

Varias piezas de software de aprendizaje profundo se construyen sobre PyTorch, incluido Tesla Autopilot , [13] Uber 's Pyro, [14] Hugging Face's Transformers, [15] PyTorch Lightning , [16] [17] y Catalyst. [18] [19]

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

Historia

Meta (anteriormente conocido como Facebook) opera tanto PyTorch como la arquitectura convolucional para la incrustación rápida de funciones ( Caffe2 ), pero los modelos definidos por los dos marcos eran mutuamente incompatibles. El proyecto Open Neural Network Exchange ( ONNX ) fue creado por Meta y Microsoft en septiembre de 2017 para convertir modelos entre marcos. Caffe2 se fusionó con PyTorch a finales de marzo de 2018. [21] En septiembre de 2022, Meta anunció que PyTorch estaría gobernado por la Fundación PyTorch, una organización independiente de nueva creación, una subsidiaria de la Fundación Linux . [22]

PyTorch 2.0 se lanzó el 15 de marzo de 2023. [23]

Tensores de PyTorch

PyTorch define una clase llamada Tensor ( torch.Tensor) para almacenar y operar en matrices de números rectangulares multidimensionales homogéneas. Los tensores PyTorch son similares a los NumPy Arrays, pero también pueden funcionar en una GPU NVIDIA compatible con CUDA . PyTorch también ha estado desarrollando soporte para otras plataformas GPU, por ejemplo, ROCm de AMD y Metal Framework de Apple . [24]

PyTorch admite varios subtipos de tensores. [25]

Diferencias con los "tensores" físicos.

Un tensor en física es similar a un tensor de PyTorch, en el sentido de que es principalmente una matriz multidimensional. La única característica adicional del tensor de un físico que falta en un tensor de PyTorch es que al indexar sus entradas, algunos de los índices se escriben en subíndice o superíndice, como . El número de superíndices y subíndices en un tensor físico se denomina tipo de tensor. Debería ser fácil entender que el tipo del tensor anterior es (2,3). Un índice en superíndice se denomina índice contravariante y un índice en subíndice se denomina índice covariante . El tensor de un físico admite cuatro operaciones fundamentales:

  1. Suma
  2. Producto tensorial
  3. Contracción
  4. cambio de base

De estos, la distinción de co/contravarianza sólo afecta a la operación de cambio de base. Las otras tres operaciones no se ven afectadas por la co/contravarianza y, por lo tanto, son fáciles de implementar para los tensores de PyTorch. Por lo tanto, si un "tensor" de PyTorch merece ser llamado tensor es una cuestión de opinión.

El tensor de un matemático también es sutilmente diferente del tensor de un físico, pero la diferencia es tan pequeña que no tiene ningún efecto en las aplicaciones. En aras de la exhaustividad, para un matemático, un tensor de tipo (m,n) sobre un espacio vectorial es un elemento del espacio vectorial . Las primeras tres de las cuatro operaciones anteriores se pueden expresar de forma independiente de la base, haciendo innecesaria la cuarta. El tensor de un físico resulta entonces de elegir una base para , lo que convierte el tensor de un matemático en una matriz multidimensional. Dado que la elección de la base fue arbitraria , necesitamos una operación de cambio de base para eliminar esta arbitrariedad, que termina siendo nuestra operación 4.

Redes neuronales PyTorch

PyTorch define una clase llamada nn ( torch.nn) para describir redes neuronales y respaldar 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, que permiten la construcción de modelos complejos.

Ejemplo

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

importar  antorchatipo d  =  antorcha . flotardispositivo  =  antorcha . dispositivo ( "cpu" )  # Esto ejecuta todos los cálculos en la CPU# dispositivo = torch.device("cuda:0") # Esto ejecuta todos los cálculos en la GPU# Creación de un tensor y llenado de un tensor con números aleatoriosa  =  antorcha . randn ( 2 ,  3 ,  dispositivo = dispositivo ,  dtipo = dtipo )print ( a )  # Salida del tensor A# Salida: tensor([[-1.1884, 0.8498, -1.7129],# [-0,8816, 0,1944, 0,5847]])# Creación de un tensor y llenado de un tensor con números aleatoriosb  =  antorcha . randn ( 2 ,  3 ,  dispositivo = dispositivo ,  dtipo = dtipo )print ( b )  # Salida del tensor B# Salida: tensor([[ 0.7178, -0.8453, -1.3403],# [1,3262, 1,1512, -1,7070]])print ( a * b )  # Salida de una multiplicación de los dos tensores# Salida: tensor([[-0.8530, -0.7183, 2.58],# [-1,1692, 0,2238, -0,9981]])print ( a . sum ())  # Salida de la suma de todos los elementos en el tensor A# Salida: tensor (-2.1540)print ( a [ 1 , 2 ])  # Salida del elemento en la tercera columna de la segunda fila (basada en cero)# Salida: tensor (0,5847)print ( a . max ())  # Salida del valor máximo en el tensor A# Salida: tensor (0.8498)

El siguiente bloque de código muestra un ejemplo de la funcionalidad de nivel superior proporcionada por el nnmódulo. En el ejemplo se define una red neuronal con capas lineales.

importar  antorchafrom  torch  import  nn  # Importa el submódulo nn de 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 ( NeuralNetwork ,  self ) . __init__ ()  # Debe estar en todas las redes. ser . aplanar  =  nn . Aplanar ()  # Definir una capa de aplanamiento. ser . linear_relu_stack  =  nn . Secuencial (  # Definiendo 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  =  yo . aplanar ( x ) logits  =  yo . pila_relu_lineal ( x )  logits de retorno

Ver también

Referencias

  1. ^ Chintala, Soumith (1 de septiembre de 2016). "Lanzamiento de PyTorch Alpha-1".
  2. ^ "Versión 2.2.0". 30 de enero de 2024 . Consultado el 20 de febrero de 2024 .
  3. ^ Claburn, Thomas (12 de septiembre de 2022). "PyTorch se enciende bajo la Fundación Linux". El registro .
  4. ^ Yegulalp, Serdar (19 de enero de 2017). "Facebook lleva el aprendizaje automático basado en GPU a Python". InfoMundo . Consultado el 11 de diciembre de 2017 .
  5. ^ Lorica, Ben (3 de agosto de 2017). "Por qué los investigadores de inteligencia artificial y aprendizaje automático están comenzando a adoptar PyTorch". Medios O'Reilly . 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. ^ "Procesamiento del lenguaje natural (PLN) con PyTorch - PNL con documentación de PyTorch". dl4nlp.info . Consultado el 18 de diciembre de 2017 .
  8. ^ Patel, Mo (7 de diciembre de 2017). "Cuando dos tendencias se fusionan: PyTorch y los sistemas de recomendación". Medios O'Reilly . 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 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, Sofía (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. ^ "La interfaz de C ++". Documentación maestra de PyTorch . Consultado el 29 de julio de 2019 .
  13. ^ Karpatía, Andrej. "PyTorch en Tesla - Andrej Karpathy, Tesla".
  14. ^ "Pyro de código abierto de Uber AI Labs, un lenguaje de programación probabilístico profundo". Blog de ingeniería de Uber . 2017-11-03 . Consultado el 18 de diciembre de 2017 .
  15. ^ PYTORCH-TRANSFORMERS: implementaciones de PyTorch de transformadores de PNL populares, PyTorch Hub, 2019-12-01 , consultado el 1 de diciembre de 2019
  16. ^ PYTORCH-Lightning: el contenedor PyTorch liviano para investigadores de aprendizaje automático. Escala tus modelos. Escriba menos texto repetitivo, Lightning-Team, 2020-06-18 , consultado el 2020-06-18
  17. ^ "Herramientas del ecosistema". pytorch.org . Consultado el 18 de junio de 2020 .
  18. ^ GitHub - equipo-catalizador/catalizador: DL y RL acelerados, Equipo-catalizador, 2019-12-05 , consultado el 5 de diciembre de 2019
  19. ^ "Herramientas del ecosistema". pytorch.org . Consultado el 4 de abril de 2020 .
  20. ^ "PyTorch - Acerca de". pytorch.org . Archivado desde el original el 15 de junio de 2018 . Consultado el 11 de junio de 2018 .
  21. ^ "Caffe2 se fusiona con PyTorch". 2018-04-02.
  22. ^ Edwards, Benj (12 de septiembre de 2022). "Meta se deriva de la Fundación PyTorch para hacer que el proveedor del marco de IA sea neutral". Ars Técnica .
  23. ^ "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 .
  24. ^ "Presentación de la formación acelerada de PyTorch en Mac". pytorch.org . Consultado el 4 de junio de 2022 .
  25. ^ "Introducción a PyTorch: una biblioteca de aprendizaje profundo simple pero potente". https://analyticsvidhya.com/ . 2018-02-22 . Consultado el 11 de junio de 2018 .

enlaces externos