PyTorch1。13正式发布CUDA升级集成多个库M1芯片
原创:PyTorch开发者社区
近日,PyTorch团队在官方博客宣布Pytorch1。13发布。本文将详细围绕新版本的4大亮点展开介绍。
据官方介绍,PyTorch1。13中包括了BetterTransformer的稳定版,且不再支持CUDA10。2及11。3,并完成了向CUDA11。6及11。7的迁移。此外Beta版还增加了对AppleM1芯片及functorch的支持。
functorch是PyTorch中的一个库提供可组合的vmap(向量化)和autodiff转换
PyTorch1。13不可错过的亮点汇总:
1。BetterTransformer功能集(featureset)支持一般的Transformer模型在推理过程中,无需修改模型即可进行fastpath执行。
此外改进还包括对Transformer模型中常用size进行加速的addmatmul线性代数内核,现已默认启用嵌套Tensor。
2。不再支持旧的CUDA版本,引入Nvidia推出的最新CUDA版本。这使得PyTorch和新的NVIDIAOpenGPU内核模块得以支持C17。
3。functorch从单独软件包变为可直接通过importfunctorch导入PyTorch使用,无需再单独安装。
4。测试为M1芯片Mac提供本地构建,并提供更好的PyTorchAPI支持。
StableFeatures
1。BetterTransformerAPI
BetterTransformer功能集(featureset)支持一般的Transformer模型在推理过程中,无需修改模型即可进行fastpath执行。
作为补充,PyTorch1。13中还针对Transformer模型中常用的size,加速了addmatmul线性代数内核。
为了提升NLP模型性能,PyTorch1。13中的BetterTransformer默认启用嵌套Tensor(NestedTensor)。在兼容性方面,执行maskcheck确保能提供连续mask。
TransformerEncoder中srckeypaddingmask的maskcheck可以通过设置maskcheckFalse屏蔽。该设置可以加快处理速度,而非仅提供对齐的mask。
最后,提供了更好的报错信息,简化错误输入的诊断,同时为fastpathexecution错误提供了更佳的诊断方法。
BetterTransformer直接集成到PyTorchTorchText库中,这使得TorchText用户能够更轻松地利用BetterTransformer的速度及效率性能。
Betterformfast的fastpath执行现已稳定可用并默认启用嵌套张量表示的稀疏优化
2。引入CUDA11。6和11。7,不再支持CUDA10。2和11。3
CUDA11是第一个支持C17的CUDA版本,不再支持CUDA10。2是推进PyTorch支持C17的重要一步,还能通过消除遗留的CUDA10。2特定指令,来改进PyTorch代码。
CUDA11。3的退出和11。7的引入,使得PyTorch对NVIDIAOpenGPU内核模块的兼容性更好,另一个重要的亮点是对延迟加载(lazyloading)的支持。
CUDA11。7自带cuDNN8。5。0,包含大量优化,可加速基于Transformer的模型,库的size减少30,并对runtimefusionengine进行了各种改进。
BetaFeatures
1。functorch
与GoogleJAX类似,functorch是PyTorch中的一个库,提供可组合的vmap(矢量化)和autodiff转换。它支持高级的autodiff用例(在PyTorch中难以表达),包括:
模型集成modelensembling
高效计算Jacobian和Hessians
计算persamplegradients或其他persamplequantities
PyTorch1。13内置functorch库,无需单独安装。通过conda或pip安装PyTorch后,就可以在程序中importfunctorch了。
2。集成英特尔VTuneProfiler及ITT
PyTorch用户如果希望在英特尔平台上用底层性能指标来分析每个算子的性能时,可以在英特尔VTuneProfiler中可视化PyTorch脚本执行的算子级timeline。
3。NNC:增加BF16和Channelslast支持
通过在NNC中增加Channelslast和BF16的支持,TorchScript在x86CPU上的graphmode推理性能得到了显著提升。
在英特尔CooperLake处理器上,通过这两项优化,可以使得视觉模型性能达到2倍以上的提升。
通过现有的TorchScript、Channelslast以及BF16AutocastAPI,可以实现性能提升。如下所示,NNC中的优化将迁移到新的PyTorchDLCompilerTorchInductor中:
4。增加对M1芯片苹果设备的支持
自1。12版本以来,PyTorch一直致力于为苹果M1芯片提供原生构建。PyTorch1。13进一步改进了相关API。
PyTorch1。13在M1macOS12。6实例上进行了除torch。distribution之外的所有子模块测试。这些改进后的测试,可以修复cpp扩展以及某些输入的convolutioncorrectnes等功能。
注意:该功能要求M1芯片的macOS12或更高版本,并使用原生Python(arm64)。
PrototypeFeatures
1。针对AWSGraviton的ACL后端支持
PyTorch1。13通过ArmComputeLibrary(ACL)在aarch64CPU上实现了CV和NLP推理的实质性提升,这使得ACL后端得以支持PyTorch及torchxla模块。亮点包括:
启用mkldnnacl作为aarch64torchwheel的默认后端
为arch64BF16设备启用mkldnnmatmuloperator
将TensorFlowxlaacl功能引入torchxla。
2。CUDASanitizer
启用后,Sanitizer将开始分析因用户的PyTorch代码而调用的底层CUDAoperation,以检测数据争用报错(dataraceerror)。
注:这些报错是由源自不同CUDAStream的不同步数据访问而导致的。
与ThreadSanitizer类似,定位到的报错会与错误访问的堆栈trace一起打印出来。
机器学习应用中损坏的数据很容易被忽略,报错有时候也并不显现,因此用于检测并定位错误的CUDASanitizer就格外重要了。
3。部分支持Python3。11
用户可通过pip下载支持Python3。11的Linux二进制文件。不过这个功能只是一个preview版,Distributed、Profiler、FX和JIT等功能并未完全支持。
从0到1,学习PyTorch官方教程
OpenBayes。com现已上线多个中文PyTorch官方教程,包括但不限于NLP,CV,DL等多个实例,您可以访问控制台,在公开资源中搜索查看。
运行PyTorch中文教程,点击文末阅读原文,或访问以下链接:
https:openbayes。comconsolepublictutorials
完