PyTorch 2.0 发布,一行代码将训练提速 76%!( 三 )


官方的目标是定义两个运算符集:
Primops包含约250个相对底层的运算符 , 因为足够底层 , 所以这些运算符更适用于编译器 , 开发者需要将这些算子进行融合 , 才能获得良好的性能 。
ATenops包含约750个典型运算符(canonicaloperator) , 适合于直接输出 。 这些运算符适用于已经在ATen级别上集成的后端 , 或者没有经过编译的后端 , 才能从底层运算符集(如Primops)恢复性能 。
动态形状
在研究支持PyTorch代码通用性的必要条件时 , 一个关键要求是支持动态形状 , 并允许模型接受不同大小的张量 , 而不会在每次形状变化时引起重新编译 。 目前为止 , 对动态形状的支持有限 , 并且正在进行中 。 它将在稳定版本中具有完整的功能 。 在不支持动态形状的情况下 , 常见的解决方法是将其填充到最接近的2次方 。 然而 , 正如我们从下面的图表中所看到的 , 它产生了大量的性能开销 , 同时也带来了明显更长的编译时间 。 现在 , 有了对动态形状的支持 , PyTorch2.0也就获得了比Eager高出了最多40%的性能 。 PyTorch 2.0 发布,一行代码将训练提速 76%!
文章图片
简而言之 , 就是PyTorch2.0stable版本预计明年3月发布 , PyTorch2.0在保留原有优势的同时 , 大力支持编译 , torch.compile为可选功能 , 只需一行代码即可运行编译 , 还有4项重要技术:TorchDynamo、AOTAutograd、PrimTorch以及TorchInductor , PyTorch1.x代码无需向2.0迁移 , 更多用户体验以及Q&A , 大家可以查看下方链接中原文呦~
参考链接:
PyTorch 2.0 发布,一行代码将训练提速 76%!】https://pytorch.org/get-started/pytorch-2.0/
PyTorch 2.0 发布,一行代码将训练提速 76%!
文章图片
??