2024 · 579 citations · 15 references
ComputingComputer EngineeringComputer ScienceCompilersMachine LearningProgramming LanguagesData-flow AnalysisDeep LearningGraph-based LearningGraphics Processing Unit ArchitectureGraphics Processing Unit ComputingGraphics Processing UnitsCompiler Backend DesignCompiler SupportDeep Learning AccelerationDeep Learning On GpusGpu Compiler OptimizationGraph CompilationMachine Learning AccelerationOverhead Reduction
This paper introduces two extensions to the popular PyTorch machine learning framework, TorchDynamo and TorchInductor, which implement the torch.compile feature released in PyTorch 2. TorchDynamo is a Python-level just-in-time (JIT) compiler that enables graph compilation in PyTorch programs without sacrificing the flexibility of Python. It achieves this by dynamically modifying Python bytecode before execution and extracting sequences of PyTorch operations into an FX graph, which is then JIT compiled using one of many extensible backends. TorchInductor is the default compiler backend for TorchDynamo, which translates PyTorch programs into OpenAI's Triton for GPUs and C++ for CPUs. Results show that TorchDynamo is able to capture graphs more robustly than prior approaches while adding minimal overhead, and TorchInductor is able to provide a 2.27× inference and 1.41× training geometric mean speedup on an NVIDIA A100 GPU across 180+ real-world models, which outperforms six other compilers. These extensions provide a new way to apply optimizations through compilers in eager mode frameworks like PyTorch.
15
Yangqing Jia, Evan Shelhamer, Jeff Donahue et al. · 2014 · 11.2K citations
In-Datacenter Performance Analysis of a Tensor Processing Unit
Norman P. Jouppi, Cliff Young, Nishant Patil et al. · 2017 · 4.4K citations
SymPy: symbolic computing in Python
Aaron Meurer, Christopher P. Smith, Mateusz Paprocki et al. · PeerJ Computer Science · 2017 · 1.6K citations · Full text
Jonathan Ragan‐Kelley, Connelly Barnes, Andrew Adams et al. · 2013 · 895 citations