10月21日晚,PyTorch1.10终于发布了!此更新包含自1.9版以来来自426位贡献者的3,400多次提交。该更新主要侧重于改进PyTorch训练、性能和开发人员可用性。集成CUDAGraphsAPI,减少调用CUDA时的CPU开销;FX、torch.special和nn.ModuleParametrization等多个前端API已从测试版变为稳定版;除了GPU,JITCompiler还支持Automaticfusion(自动融合)支持,现在也支持CPU;AndroidNNAPI支持已经在测试版中可用。前端APIFX更稳定。FX是一个Pythonic平台,可用于改造和减少PyTorch程序。它有助于在函数和nn.Module实例中进行Python到Python的转换。FX工具包的目的是支持Python语言的一个子集以便于转换,而不是整个Python语言。FX随着1.10的发布而趋于稳定。添加了一个类似于SciPy的特殊模块torch.special,目前已经稳定。该模块包含30个操作,包括伽玛、贝塞尔和高斯误差函数。nn.Module参数化允许用户在不修改nn.Module本身的情况下参数化任何参数。该版本还增加了权重归一化(weight_norm)、正交参数化(矩阵约束和部分剪枝),允许用户更灵活地创建自己的参数化。在测试版中,PyTorch集成了CUDAGraphsAPI,以减少调用CUDA时的CPU开销;CUDAGraphs大大降低了CPU-boundcuda(CPU绑定的cuda)工作负载的CPU开销,从而通过提高GPU利用率来提高性能。对于分布式工作负载,CUDAGraphs还可以减少抖动,并且由于并行工作负载必须等待最慢的worker,因此减少抖动可以提高整体并行效率。这种集成允许CUDA图形捕获的网络部分与由于图形限制而无法捕获的网络部分之间的无缝互操作性。PyTorch的复数张量共轭(torch.conj())现在消耗常数时间O(1)操作,并返回输入张量的共轭位的视图,通过调用torch.is_conj()可以验证。这利用了矩阵乘法、点积等和各种其他PyTorch操作来融合共轭,该操作导致CPU和CUDA的性能显着提高,并且需要更少的内存。分布式训练在1.10版本中,torch.distributed包中的很多功能从测试版转移到了稳定版。Remote模块允许用户像使用本地模块一样进行远程操作,RPC对用户是透明的;DDP通信挂钩允许用户覆盖DDP在过程中如何同步梯度;ZeroredUndanyOptimizer可以与DistributedDataParallel一起使用,以减少每个进程的优化器状态大小。有了这个稳定版本,它现在还可以处理不同数据并行woker的不均匀输入。性能优化工具TorchScript严格要求源代码具有类型注释才能成功编译。长期以来,用户只能通过试错的方式添加缺失或不正确的类型注解,即通过逐一修复Torch.Jit.Script产生的类型检查错误来解决bug,既费时又低效。现在,PyTorch1.10利用现有工具(如MonkeyType)为torch.jit.script启用配置文件导向的类型,这使得该过程更容易、更快、更高效。PyTorch1.10为CPU添加了一个基于LLVM的JIT编译器,可以将Torch库调用序列融合在一起以提高性能。虽然以前的版本在GPU上具有此功能,但1.10版首次将编译带到了CPU。PyTorchProfiler,其目标是找到代码中时间或内存成本最高的执行步骤,并将GPU和CPU之间的工作负载分布可视化。目前的1.10版本主要包含以下功能:增强的内存视图:这有助于用户更好地了解内存使用情况,主要是通过显示程序运行中各个点的活动内存分配来帮助开发人员避免内存错误;增强的内核视图:额外的列显示网格和块大小以及每线程共享内存使用和寄存器,这些工具可以向开发人员推荐批量大小更改、TensorCore、内存减少技术等;分布式训练:Gloo现在支持分布式训练作业;TensorCore:该工具展示了TensorCore(TC)的使用,并为数据科学家和Framework开发人员提供建议;NVTX:对NVTX标记的支持是从旧的autograd分析器移植的;支持移动设备分析:PyTorch分析器现在更好地与TorchScript和移动后端集成,并支持移动工作负载的跟踪收集。移动端上的PyTorch去年,PyTorch发布了对AndroidNeuralNetworkAPI(NNAPI)的原型支持。NNAPI的作用是让Android应用程序使用手机芯片中效率最高的部分来运行神经网络。处理单元)和NPU(专用神经处理单元)。在新版本中,PyTorch增加了更多的运算符(op)覆盖范围,包括在加载时支持更灵活的形状,以及在主机上运行模型进行测试的能力。此外,迁移学习已添加到对象检测示例中。
