PyTorch 2.5 发布带来一些新特性和改进

  • 官网:https://github.com/pytorch/pytorch
  • GitHub:https://github.com/pytorch/pytorch
  • 原文:https://github.com/pytorch/pytorch/releases/tag/v2.5.0

主要亮点 (Highlights)]

  • SDPA CuDNN 后端:为 torch.nn.functional.scaled_dot_product_attention 提供了新的 CuDNN 后端,可以在 NVIDIA H100 或更新的 GPU 上提供高达 75% 的加速。
  • torch.compile 区域编译:通过 torch._dynamo.config.inline_inbuilt_nn_modules 允许编译重复的 nn.Module(例如大型语言模型中的变换器层)而无需重新编译,从而减少编译延迟。
  • TorchInductor CPU 后端优化:包括 C++ 后端代码生成和 FX 融合,支持向量化和所有 Inductor IR 操作,兼容 Linux 和 Windows 系统。
    在这里插入图片描述

PyTorch 2.5.0版本的发布带来了一系列新特性、改进、性能优化以及bug修复,旨在提升用户体验、增强功能和提高执行效率。以下是对PyTorch 2.5.0版本的全面总结:

新特性和改进

  1. SDPA CuDNN后端:引入了新的CuDNN后端,为使用H100或更新型号GPU的SDPA用户提供了默认的速度提升。

  2. torch.compile的区域编译:允许用户编译重复的nn.Module,而无需重新编译,减少了编译延迟并可能轻微降低性能。

  3. TorchInductor CPU后端优化:包括CPP后端代码生成和FX融合,支持向量化操作和静态/符号形状,兼容Linux和Windows操作系统。

  4. FlexAttention API:一个灵活的API,允许用少量代码实现多种注意力机制,如滑动窗口、因果掩码等,并自动生成反向传播。

  5. 编译自动微分:作为PT2技术栈的扩展,允许捕获完整的反向传播过程,提高了自动微分的灵活性。

  6. 飞行记录器:一个调试工具,用于捕获集体操作的信息,帮助快速识别和解决作业卡住的问题。

  7. 最大自动调优CPU支持:Inductor CPU后端在编译时配置多个操作实现,并选择最佳性能的一个。

  8. TorchInductor在Windows上的支持:支持MSVC、clang和Intel编译器。

  9. FP16在CPU路径上的支持:支持在CPU上使用FP16数据类型,有助于提升性能。

  10. 自动加载设备扩展:简化了设备扩展的集成过程,无需手动导入。

  11. 增强的Intel GPU支持:扩展了对Intel GPU的支持,包括数据中心和客户端GPU。

向后不兼容的变更

  • 分布式处理:移除了一些旧的选项和方法,以反映代码结构的正确性。
  • 导出功能:移除了dynamic_dim()方法,改用Dims来指定动态形状。
  • Inductor:更新了基准测试路径,从使用Triton的基准测试工具转移到内部Inductor工具。

性能优化

  • CUDA:为深度卷积反向操作生成内核,调整了tile启发式规则以提高性能。
  • 分布式:添加了CPU分析器的动态活动切换API。
  • Dynamo:手动实现了nn.Module.__getattr__nn.Module._call_impl,优化了小型元组的guard。
  • Inductor:添加了对BF16->FP32转换的NEON实现,支持了INT8数据类型的masked vectorization。

文档和开发者支持

  • 提供了详细的文档更新,包括新特性的使用说明、API文档的改进和错误信息的优化。

安全性更新

  • Inductor:放宽了对大小符号可以为0的统一检查。

其他改进

  • Autograd前端:支持GradientEdge作为torch.autograd.grad的输出。
  • 分布式:引入了带有分析器的Flight Recorder,用于捕获集体操作的诊断信息。
  • Dynamo:引入了torch._dynamo.config.enable_compiler_collectives,用于跨等级同步编译。
  • 导出功能:支持export_for_training,自动动态形状。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/882236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++标准模板库--vector

vector 介绍 vector(向量)是一种序列容器,表示为可以改变大小的数组。vector中的元素使用连续的存储位置,这意味着也可以使用指向其元素的常规指针偏移量来访问任意元素,且与数组一样高效。但与数组不同的是&#xff…

React Componet类组件详解(老项目)

React类组件是通过创建class继承React.Component来创建的,是React中用于构建用户界面的重要部分。以下是对React类组件的详细解释: 一、定义与基本结构 类组件使用ES6的class语法定义,并继承自React.Component。它们具有更复杂的功能&#…

流量PID控制(开度前馈量计算+辅助PID)

和流体流速(瞬时流量)相关的计算请参考下面文章链接: 1、PLC通过伯努利方程近似计算水箱流量 PLC通过伯努利方程近似计算水箱流量(FC)-CSDN博客文章浏览阅读1.6k次。本文介绍了如何使用PLC通过伯努利方程近似计算水箱中的液体流量,主要涉及流量计算、模型验证、梯形图编程及…

C++学习路线(二十)

项目 模块划分 推箱子游戏 地图初始化 热键控制 推箱子控制 游戏结束 地图初始化 坐标系(650,650) 地图表示: 使用二维数组 游戏道具展示(墙 箱子 箱子目的地 小人 地板) 判断游戏…

Mongodb重装

一 卸载MongoDB 1 停止 MongoDB 服务 首先停止正在运行的 MongoDB 服务: sudo systemctl stop mongod2 卸载 MongoDB 包 使用 yum 命令删除 MongoDB 相关的包: sudo yum remove mongodb-org3 删除数据目录和日志文件(根据实际情况操作,留…

Linux之例行性工作

at --一次性的任务计划 命令详解 命令格式:at [参数] [时间] 参数: -m 当任务完成之后,即使没有标准输出,将给用户发送邮件 -l atq的别名,可列出目前系统上面的所有该用户的at调度 -d atrm的别名,可以取消一个在at…

java基于SpringBoot+Vue+uniapp微信小程序的自助点餐系统的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

学习的文档10/14

为什么不推荐使用外键与级联? 【强制】不得使用外键与级联,一切外键概念必须在应用层解决。 说明: 以学生和成绩的关系为例,学生表中的 student_id 是主键,那么成绩表中的 student_id 则为外键。如果更新学生表中的 student_id&#xff0c…

LeetCode377:组合总和IV

题目链接&#xff1a;377. 组合总和 Ⅳ - 力扣&#xff08;LeetCode&#xff09; 代码如下 class Solution { public:int combinationSum4(vector<int>& nums, int target) {vector<int> dp(target 1, 0);dp[0] 1;for(int i 0; i < target; i){for(int…

【H∞鲁棒控制】状态反馈、输出反馈、混合灵敏度H∞控制器设计

最近在学H∞鲁棒控制&#xff0c;因为后面项目中可能要用到此控制方法&#xff0c;所以提前进行了学习&#xff0c;刚开始接触感觉看不太懂&#xff0c;涉及的数学专业知识较深&#xff0c;而且网上资料也比较零星且局限&#xff0c;摸爬了好几天才搞懂了点&#xff0c;现自己总…

「Java服务」快速接入SkyWalking方法指南

一、背景 背景&#xff1a;Apache SkyWalking 是一个开源的分布式应用性能监控&#xff08;APM&#xff09;系统&#xff0c;主要用于监控微服务、云原生和容器化应用的性能。接入SkyWalking可以排查以智能投放服务为主的服务响应问题 技术架构 SkyWalking 的核心架构包括以…

Spring Boot 集成 Elasticsearch入门教学

一、什么是 Elasticsearch (ES)? Elasticsearch 是一个分布式搜索引擎&#xff0c;用来处理大规模数据的存储、搜索和分析。它是基于 Apache Lucene 构建的&#xff0c;具备高效的全文搜索功能。ES 可以在海量数据中快速找到匹配的内容&#xff0c;并且支持复杂的查询逻辑&am…

银河麒麟V10系统+Windows10双系统启动顺序正确修改方法

***正确可行方法***&#xff0c;测试OK且稳定&#xff1b; 银河麒麟桌面操作系统V10是一款适配国产软硬件平台并深入优化和创新的新一代图形化桌面操作系统&#xff0c;同源支持国内外主流处理器架构&#xff0c;并不断使能GPU、桥片、网卡等各种新硬件&#xff0c;提供更优的软…

vue3学习之插槽slot

关于slot web组件内部的占位符&#xff0c;可以使用自己的标记填充这个占位符 &#xff0c;具名插槽就是在slot标签上添加name属性&#xff08;https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/slot&#xff09; vue3官方文档&#xff1a;https://cn.vuejs.org/gui…

深入解析Java 22:专栏介绍

深入解析Java 22&#xff1a;专栏介绍 Java&#xff0c;作为一种广泛使用的编程语言&#xff0c;一直以来都在不断地发展和改进。2024年3月19日&#xff0c;Java 22的GA版本正式发布&#xff0c;带来了众多令人瞩目的新特性和性能优化。本专栏将深入解析Java 22&#xff0c;带…

AD9680(adc直采芯片)使用说明

写这篇文章之前我是没有使用过AD9680的芯片&#xff0c;但是使用过GMS011芯片&#xff08;是国内24S&#xff09;下的公司出来的芯片&#xff0c;寄存器和管脚全对标。 在这里我就大概说一下芯片的说用方法 一、硬件设计 该芯片支持双通道射频直采 支持协议JESD204B 14位 采样…

leetcode二叉树(五)-二叉树层序遍历

题目 102.二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7…

MySQL中FIND_IN_SET(),IN()和LIKE区别

在 MySQL 中&#xff0c; FIND_IN_SET() 和 LIKE 都可以用于字符串的匹配查找&#xff0c;但它们有以下不同&#xff1a; 一、语法及功能 1. FIND_IN_SET(str,strlist) &#xff1a; 用于在以逗号分隔的字符串列表中查找特定字符串&#xff0c;并返回其位置。如果未找到则返…

【网络篇】计算机网络——网络层详述(笔记)

目录 一、网络层 1. 网络传输流程简述 2. 转发和路由选择 3. 控制平面&#xff1a;SDN 方法 二、路由器工作原理 1. 概述 &#xff08;1&#xff09;输入端口 &#xff08;2&#xff09;交换结构 &#xff08;3&#xff09;输出端口 &#xff08;4&#xff09;路由选…