当前位置: 首页 > 科技观察

PyTorch1.6:全新自动混合精度训练,Windows版开发维护权移交给微软

时间:2023-03-12 13:47:15 科技观察

刚刚,Facebook通过PyTorch官博宣布:PyTorch1.6正式发布!新版本增加了一个支持原生自动混合精度训练的amp子模块。Facebook还表示,微软已经扩大了对PyTorch社区的参与,现在拥有PyTorch在Windows上的开发和维护所有权。与之前的PyTorch版本相比,即将发布的PyTorch1.6有哪些看点?总体而言,PyTorch1.6版本包括许多新的API、用于性能改进和分析的工具,以及对基于分布式数据并行(DDP)和远程过程调用(RPC)的分布式训练的重大更新。一些亮点包括:在Nvidia的帮助下添加了对自动混合精度(AMP)训练的原生支持,并具有稳定的功能;添加了对TensorPipe的原生支持;在前端API中添加了对复杂张量的支持;提供了新的张量级内存消耗信息分析工具;分布式数据并行(DDP)培训和远程过程调用(RPC)包的众多改进和新功能。PyTorch官博称,从这个版本开始,PyTorch的特性将分为Stable(稳定版)、Beta(测试版)和Prototype(原型版)。请注意,原型功能不包含在二进制包中,但可以通过使用Nightly或通过编译器标志从源代码构建来使用。此外,Facebook还宣布他们将把PyTorchforWindows的开发和维护交给微软。在Windows上运行PyTorch一直是一种不愉快的体验,显然微软看到了这一点。“在PyTorch1.6中,我们通过为核心PyTorch及其域库提供与Linux相同的测试覆盖范围,同时自动化教程测试,提高了Windows的核心质量,”他们在Pytorch博客中说。在PyTorch社区的帮助下,我们将测试覆盖范围添加到三个域库:TorchVision、TorchText和TorchAudio。在PyTorch的后续版本中,我们会不断完善。根据社区的反馈,下一步的改进方向应该集中在分布式训练支持和更好的pip安装体验上。“除了Windows本地体验,在今年的Build2020大会上,微软还宣布了一项为WSL提供GPU计算支持的计划,其中PyTorch将发挥很大的作用。现阶段WSL2已经获得了对GPU的初步支持,其中包括对PyTorch的支持。WSL用户可以直接运行本地PyTorch程序进行机器学习,而无需传统的虚拟机或双启动设置。性能和分析[稳定]自动混合精度(AMP)训练AMP使用户可以轻松地启用自动混合精度训练,在TensorCoreGPU上实现更高的性能和高达50%的内存节省。使用本机支持的??torch.cuda.ampAPI,AMP为混合精度提供了方便的方法,其中一些操作使用torch.float32(float)。其他操作使用torch.float16(half)。一些操作,如线性层和卷积,在float16中要快得多。而其他操作,如归约,通常需要float32的动态范围。混合精度尝试将每个操作与其对应的数据类型相匹配。[BETA]新版本的FORK/JOIN并行性增加了对语言级构造的支持,以及对TorchScript代码中粗粒度并行性的运行时支持。这种支持对于在集成中并行运行模型或并行循环网络的双向组件等情况很有用,它还允许释放并行架构(如多核CPU)的计算能力以实现任务级并行性.TorchScript程序的并行执行是通过两个原语torch.jit.fork和torch.jit.wait实现的。以下示例演示了foo的并行执行:[BETA]内存分析器“torch.autograd.profiler”API现在包含一个内存分析器,可让您检查CPU和GPU模型中不同操作的张量内存开销。API的用法如下所示:DistributedTraining&RPC[BETA]TENSORPIPERPC后端PyTorch1.6为RPC模块引入了一个新的后端,它利用了TensorPipe库,一个张量感知的点对点通信原语,旨在补充PyTorch中用于分布式训练的现有原语)。TensorPipe的成对和异步特性使其能够应用于数据并行之外的新网络范式:客户端-服务器方法以及使用模型和管道进行并行训练。[BETA]DDP+RPCPyTorchDistributed支持两种强大的范例:用于模型完全同步数据并行训练的DDP和用于分布式模型并行性的RPC框架。以前,这两个功能是独立工作的,用户不能混合使用它们来尝试混合并行范例。从PyTorch1.6开始,该框架允许DDP和RPC无缝协同工作,这样用户就可以将两种技术结合起来,实现数据并行和模型并行。[BETA]RPC-AsynchronousUserFunctionRPC异步用户函数(AsynchronousUserFunction)支持在执行用户自定义函数时在服务器端生成和恢复的能力。在此功能之前,当被调用方正在处理请求时,RPC线程将等待直到用户函数返回。前端API更新[BETA]复数Pytorch1.6版本为复数张量提供beta级支持。包括torch.complex64和torch.complex128dtype。复数在数学和工程学中频繁出现,尤其是在信号处理中,复值神经网络是一个活跃的研究领域。复数张量的测试版将支持常见的PyTorch和复数张量函数,以及Torchaudio、ESPne等所需的功能。更新的域库TORCHVISION0.7torchvision0.7引入了两个新的预训练语义分割模型,FCNResNet50和DeepLabV3ResNet50,均经过训练在COCO上使用比ResNet101更小的内存占用。同时引入的还有AMP(AutomaticMixedPrecision),它会自动为不同的GPU运算选择浮点精度,在保持精度的同时提升性能。TORCHAUDIO0.6Torchaudio现在正式支持Windows,微软负责Windows版本。此版本还引入了一个新模块(包括wav2letter)、几个新函数(contrast、cvm、dcshift、overdrive、vad、phaser、flanger、biquad)、新数据集(GTZAN、CMU)和一个新的可选soxpostend,支持TorchScript.