3 Dec 2019 | Adam Paszke, Sam Gross, Francisco Massa, Adam Lerer, James Bradbury, Gregory Chanan, Trevor Killeen, Zeming Lin, Natalia Gimelshein, Luca Antiga, Alban Desmaison, Andreas Köpf, Edward Yang, Zach DeVito, Martin Raison, Alykhan Tejani, Sasank Chilamkurthy, Benoit Steiner, Lu Fang, Junjie Bai, Soumith Chintala
PyTorch is a machine learning library that combines usability and performance, offering an imperative and Pythonic programming style. It supports code as a model, making debugging easy and aligning with other scientific computing libraries while maintaining efficiency and supporting hardware accelerators like GPUs. The paper details the principles behind PyTorch's implementation, emphasizing that every aspect is a regular Python program under user control. Key components are designed to work together for compelling performance, and the efficiency of individual subsystems and overall speed on common benchmarks are demonstrated. PyTorch's success stems from balancing speed and ease of use, with a focus on Pythonic design, researcher productivity, pragmatic performance, and simplicity. It supports dynamic eager execution, automatic differentiation, and GPU acceleration, making it popular in the research community. The design principles include treating deep learning models as Python programs, ensuring interoperability and extensibility, and optimizing performance through an efficient C++ core, separate control and data flow, custom caching tensor allocator, and multiprocessing. Performance evaluations show competitive results compared to other deep learning frameworks. PyTorch's adoption is measured by its frequent mentions in arXiv papers, indicating its growing popularity. Future work includes improving speed, scalability, and support for distributed computation.PyTorch is a machine learning library that combines usability and performance, offering an imperative and Pythonic programming style. It supports code as a model, making debugging easy and aligning with other scientific computing libraries while maintaining efficiency and supporting hardware accelerators like GPUs. The paper details the principles behind PyTorch's implementation, emphasizing that every aspect is a regular Python program under user control. Key components are designed to work together for compelling performance, and the efficiency of individual subsystems and overall speed on common benchmarks are demonstrated. PyTorch's success stems from balancing speed and ease of use, with a focus on Pythonic design, researcher productivity, pragmatic performance, and simplicity. It supports dynamic eager execution, automatic differentiation, and GPU acceleration, making it popular in the research community. The design principles include treating deep learning models as Python programs, ensuring interoperability and extensibility, and optimizing performance through an efficient C++ core, separate control and data flow, custom caching tensor allocator, and multiprocessing. Performance evaluations show competitive results compared to other deep learning frameworks. PyTorch's adoption is measured by its frequent mentions in arXiv papers, indicating its growing popularity. Future work includes improving speed, scalability, and support for distributed computation.