手动编译pytorch
IT之家 3 月 19 日消息,PyTorch 2.0 稳定版现已发布。跟先前 1.0 版本相比,2.0 有了颠覆式的变化。在 PyTorch 2.0 中,最大的改进主要是 API 的 torch.compile,新编译器比先前「eager mode」所提供的即时生成代码的速度快得多,性能得以进一步提升。
IT之家附官网地址:https://pytorch.org/
GitHub 地址:https://github.com/pytorch/pytorch/releases
新版本更新之处包括稳定版的 Accelerated Transformers(以前称为 Better Transformers);Beta 版包括作为 PyTorch 2.0 主要 API 的 torch.compile、作为 torch.nn.functional 一部分的 scaled_dot_product_attention 函数、MPS 后端、torch.func 模块中的 functorch API;以及其他跨越各种推理、性能和训练优化功能的 GPU 和 CPU 的 Beta / Prototype 改进。
关于 torch.compile 的全面介绍和技术概况请见 2.0 入门页面。
除了 PyTorch 2.0,研发团队还发布了 PyTorch 域库的一系列 Beta 更新,包括 in-tree 的库和 TorchAudio、TorchVision、TorchText 等独立库。此外,TorchX 转向社区支持模式。
概括:
torch.compile 是 PyTorch 2.0 的主要 API,它能包装并返回编译后的模型。这个是一个完全附加(和可选)的功能,因此 PyTorch 2.0 根据定义是 100% 向后兼容的。
作为 torch.compile 的基础技术,TorchInductor 与 Nvidia / AMD GPU 将依赖于 OpenAI Triton 深度学习编译器来生成性能代码并隐藏低级硬件细节。OpenAI triton 生成的内核则实现了与手写内核和专用 cuda 库 (如 cublas) 相当的性能。
Accelerated Transformers 引入了对训练和推理的高性能支持,使用自定义内核架构实现缩放点积注意力 (SPDA)。API 与 torch.compile () 集成,模型开发人员也可以通过调用新的 scaled_dot_product_attention () 运算符直接使用缩放点积注意力内核。
Metal Performance Shaders (MPS) 后端能在 Mac 平台上提供 GPU 加速的 PyTorch 训练,并增加了对前 60 个最常用运算符的支持,覆盖 300 多个运算符。
Amazon AWS 优化了 AWS Graviton3 上的 PyTorch CPU 推理。与之前的版本相比,PyTorch 2.0 提高了 Graviton 的推理性能,包括针对 ResNet-50 和 BERT 的改进。
其他一些跨 TensorParallel、DTensor、2D parallel、TorchDynamo、AOTAutograd、PrimTorch 和 TorchInductor 的新 prototype 功能和方法。
要查看公开的 2.0、1.13 和 1.12 功能完整列表,请点击此处。
稳定功能PyTorch 2.0 版本包括 PyTorch Transformer API 新的高性能实现,以前称为「Better Transformer API」,现在更名为 「Accelerated PyTorch 2 Transformers」。
研发团队表示他们希望整个行业都能负担得起训练和部署 SOTA Transformer 模型的成本。新版本引入了对训练和推理的高性能支持,使用自定义内核架构实现缩放点积注意力 (SPDA)。
与「快速路径(fastpath)」架构类似,自定义内核完全集成到 PyTorch Transformer API 中 —— 因此,使用 Transformer 和 MultiHeadAttention API 将使用户能够:
明显地看到显著的速度提升;
支持更多用例,包括使用交叉注意力模型、Transformer 解码器,并且可以用于训练模型;
继续对固定和可变的序列长度 Transformer 编码器和自注意力用例使用 fastpath 推理。
为了充分利用不同的硬件模型和 Transformer 用例,PyTorch 2.0 支持多个 SDPA 自定义内核,自定义内核选择逻辑是为给定模型和硬件类型选择最高性能的内核。除了现有的 Transformer API 之外,模型开发人员还可以通过调用新的 scaled_dot_product_attention () 运算来直接使用缩放点积注意力内核。
要使用您的模型,同时受益于 pt2 编译的额外加速 (用于推断或训练),请使用 model = torch.compile (model) 对模型进行预处理。
我们通过使用自定义内核和 torch.compile () 的组合,使用 Accelerated PyTorch 2 transformer 实现了训练 transformer 模型的大幅加速,特别是大语言模型。
从官方数据可以看到,PyTorch 2.0 的编译效率比 1.0 实现了大幅提高。
这个数据来自 PyTorch 基金会在 Nvidia A100 GPU 上使用 PyTorch 2.0 对 163 个开源模型进行的基准测试,其中包括图像分类、目标检测、图像生成等任务,以及各种 NLP 任务。
这些 Benchmark 分为三类:TIMM、TorchBench、HuggingFace Tranformers。
据 PyTorch 基金会称,新编译器在使用 Float32 精度模式时运行速度提高了 21%,在使用自动混合精度(AMP)模式时运行速度提高了 51%。在这 163 个模型中,torch.compile 可以在 93% 模型上正常运行。
值得一提的是,官方在桌面级 GPU(如 NVIDIA 3090)上测量到的加速能力低于服务器级 GPU(如 A100)。到目前为止,PyTorch 2.0 默认后端 TorchInductor 已经支持 CPU 和 NVIDIA Volta 和 Ampere GP,暂不支持其他 GPU、XPU 或旧的 NVIDIA GPU。
","gnid":"926d4cddc729d4c38","img_data":[{"flag":2,"img":[{"desc":"","height":"628","title":"","url":"https://p0.ssl.img.360kuai.com/t012e24efed730eb207.jpg","width":"1200"},{"desc":"","height":"471","title":"","url":"https://p0.ssl.img.360kuai.com/t0136baa3cb09213c3c.jpg","width":"1169"},{"desc":"","height":"794","title":"","url":"https://p0.ssl.img.360kuai.com/t01ce417be40effb185.jpg","width":"1440"},{"desc":"","height":"536","title":"","url":"https://p0.ssl.img.360kuai.com/t01cea121b75b3324d9.jpg","width":"936"}]}],"original":0,"pat":"art_src_1,sexf,sex4,sexc,fts0,sts0","powerby":"hbase","pub_time":1679214360000,"pure":"","rawurl":"http://zm.news.so.com/0ecb86fb207014cebb127a6fa0a9c84d","redirect":0,"rptid":"cb1bde3e2e3aaa34","rss_ext":[],"s":"t","src":"IT之家","tag":[{"clk":"ktechnology_1:gpu","k":"gpu","u":""},{"clk":"ktechnology_1:cpu","k":"cpu","u":""}],"title":"PyTorch 2.0 现已发布:编译器性能大幅提升,100% 向后兼容
融应送764C#如何编译dll -
盖哪刚15829223856 ______ 一般是在创建工程的时候选择创建“Class Library”类型的工程,也可以在工程属性(菜单Project-Properties)中将输出类型(Output type)选择为“Class Library”,重新编译即可.
融应送764怎么改变java虚拟机默认字符集 -
盖哪刚15829223856 ______ 1、JVM的字符集编码取的是操作系统默认的字符集编码: win xp 中文版中:一般是GBK. win server中文版中:一般是GB18030(猜测). Linux 中看本地语言环境配置文件怎么设置. IBM的AIX的中文字符集有:GB18030.2、当使用eclipse...
融应送764pytorch怎么安装 -
盖哪刚15829223856 ______ 下载pip到/usr/local/src # cd /usr/local/src # wget " " --no-check-certificate 如果提示:-bash: wget: command not found 那么安抄装wget,执行zhidao如下: # yum -y install wget 解夺安装pip # tar -xzvf pip-1.5.4.tar.gz # cd pip-1.5.4 # python setup.py install
融应送764java编译命令怎么配置?
盖哪刚15829223856 ______ 1.编译:打开高级--工具配置,在命令行下面输入javac %n%e,工作目录下输入%p ,在菜单项目名称下输入编译Java(可随意取名,只要自己喜欢),还有下面的checkbox中要选中保存活动文件,这样才在编译的时候先保存活动文件,在DOS...
融应送764为什么 PyTorch 这么火 -
盖哪刚15829223856 ______ pytorch动态计算图有什么好处 数据计算160; Torch 自称为神经网络界的 Numpy, 因为他能将 torch 产生的 tensor 放在 GPU 中加速运算 (前提是你有合适的 GPU), 就像 Numpy 会把 array 放在 CPU 中加速运算.Torch和Numpy之间可以进行...
融应送764PyTorch和TensorFlow到底哪个更好 -
盖哪刚15829223856 ______ TensorFlow有性能问题,非常占用显存
融应送764菜鸟求高手解答:如何用手机py编程循环语句实现某个动作的循环?
盖哪刚15829223856 ______ while 1:这就是一个死循环、把你需要循环的语句写在后面、注意缩进
融应送764如何交叉编译Python到ARM - Linux平台 -
盖哪刚15829223856 ______ 没有用过,建议有两条思路:1. 办法1,用交叉编译 ,需要下载相应的交叉编译工具包(又叫工具链),比如在linux下编译arm需要arm-linux-gcc等工具链2. 办法2,找一个性能好的arm平台,直接在arm平台下编译.比如树莓派的操作系统编译就是程序用多台高性能的arm平台单板机,分工合作共同编译完成的.
融应送764java:.classpath和.project文件是做什么的?
盖哪刚15829223856 ______ 那两个文件是Eclipse工具中自动生成的,当然可以直接用命令行. 前者保存项目路径,后者保存项目的完整描述.详细请参考: http://book.51cto.com/art/201005/201446.htm