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版本的全面总结:
新特性和改进
-
SDPA CuDNN后端:引入了新的CuDNN后端,为使用H100或更新型号GPU的SDPA用户提供了默认的速度提升。
-
torch.compile的区域编译:允许用户编译重复的
nn.Module
,而无需重新编译,减少了编译延迟并可能轻微降低性能。 -
TorchInductor CPU后端优化:包括CPP后端代码生成和FX融合,支持向量化操作和静态/符号形状,兼容Linux和Windows操作系统。
-
FlexAttention API:一个灵活的API,允许用少量代码实现多种注意力机制,如滑动窗口、因果掩码等,并自动生成反向传播。
-
编译自动微分:作为PT2技术栈的扩展,允许捕获完整的反向传播过程,提高了自动微分的灵活性。
-
飞行记录器:一个调试工具,用于捕获集体操作的信息,帮助快速识别和解决作业卡住的问题。
-
最大自动调优CPU支持:Inductor CPU后端在编译时配置多个操作实现,并选择最佳性能的一个。
-
TorchInductor在Windows上的支持:支持MSVC、clang和Intel编译器。
-
FP16在CPU路径上的支持:支持在CPU上使用FP16数据类型,有助于提升性能。
-
自动加载设备扩展:简化了设备扩展的集成过程,无需手动导入。
-
增强的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
,自动动态形状。
相关文章:

PyTorch 2.5 发布带来一些新特性和改进
官网:https://github.com/pytorch/pytorchGitHub:https://github.com/pytorch/pytorch原文:https://github.com/pytorch/pytorch/releases/tag/v2.5.0 主要亮点 (Highlights)] SDPA CuDNN 后端:为 torch.nn.functional.scaled_d…...

算法:560.和为k的子数组
题目 链接:leetcode链接 思路分析(前缀和) 注意:我们前面讲过滑动窗口可以处理子数组、子串等问题, 但是在这道题目里面注意数据范围 -1000 < nums[i] < 1000 nums[i]可正可负,区间的和没有单调性,使…...

C++之list(2)
list(2) list的迭代器 const迭代器 根据我们之前学过的知识: const int*p1;//修饰的是指向的内容 int *const p2;//修饰的是迭代器本身我们写const迭代器,期望的是指向的内容不能修改。 所以更期望写上面p1的形式 const迭代器与普通迭代器的不同点在于…...

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

位运算题目-Java实现-LeetCode题解:判断字符是否唯一-丢失的数字-两整数之和-只出现一次的数字 II-消失的两个数字
这里是Themberfue 上一篇文章讲完了常见位运算的技巧以及总结 那么本章则通过五道题来运用这些技巧 判定字符是否唯一 题目解析 本题要求判断给定字符串中的字符是否唯一,也就是每个字符是否只出现一次 算法讲解 本题用哈希表遍历每一个字符也可以解决 如果这题使…...

复合泊松过程
复合泊松过程的均值、方差与特征函数 复合泊松过程的定义 复合泊松过程 ( Y(t) ) 是一种常见的随机过程,通常定义为: Y ( t ) ∑ k 1 N ( t ) X k Y(t) \sum_{k1}^{N(t)} X_k Y(t)k1∑N(t)Xk 其中: ( N(t) ) 是一个强度为 ( \lambd…...

[week1] newstar ctf ezAndroidStudy
本题主要考查对 APK 基本结构的掌握 查看 AndroidManifest.xml 可以发现 activity 只有 Homo 和 MainActivity 我们用 Jadx 打开 work.pangbai.ezandroidstudy.Homo 就可以获得 flag1 打开 resources.arsc/res/value/string.xml 搜索 flag2 即可 按描述到 /layout/activity_ma…...

TCP——Socket
应用进程只借助Socket API发和收但是不关心他是怎么进行传和收的 数据结构 图示Socket连接 捆绑属于隐式捆绑...
OpenStack服务Swift重启失效(已解决)
案例分析Swift重启失效 1. 报错详情 在重新启动 VMware 虚拟机后,我们发现 OpenStack 的 Swift 服务出现了 503 Service Unavailable 错误。经过排查,问题根源在于 Swift 服务所使用的存储挂载是临时挂载,而非永久挂载。 Swift 服务依赖于…...
System.Text.Json类库进行json转化时ValueKind:Object问题
当你的使用的Json库是System.Text.Json,而不是Newtonsoft.Json库的时候,你可能遇到以下问题及其解决办法。通常的解决办法是进行一些对应的配置。此外就需要根据情况使用自定义转换器实现你的需求。以下是通常遇到的使用自定义转换器解决的例子: Q1.当遇…...

免费Excel工作表同类数据合并工具
下载地址:https://pan.quark.cn/s/81b1aeb45e4c 在 Excel 表格里,当我们试图手动将多行同类数据合并为一行时,会遭遇诸多棘手的困难以及繁杂的操作流程。在确定哪些数据属于可合并的同类数据时,单纯依靠人工进行对比,极…...

如何在算家云搭建Video-Infinity(视频生成)
一、模型介绍 Video-Infinity是一个先进的视频生成模型,使用多个 GPU 快速生成长视频,无需额外训练。它能够基于用户提供的文本或图片提示,创造出高质量、多样化的视频内容。 二、模型搭建流程 1.大模型 Video-Infinity 一键使用 基础环境…...
LeetCode搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 …...

UE5学习笔记24-添加武器弹药
一、给角色的武器添加弹药 1.创建界面,根据笔记23的界面中添加 2.绑定界面控件 UPROPERTY(meta (Bindwidget))UTextBlock* WeaponAmmoAmount;UPROPERTY(meta (Bindwidget))UTextBlock* CarriedAmmoAmount; 3.添加武器类型枚举 3.1创建武器类型枚举头文件 3.2创建文…...
限制游客在wordpress某分类下阅读文章的数量
在WordPress中实现某个分类下的内容限制游客只能阅读前5篇文章,注册用户可以阅读更多文章的功能,可以通过以下步骤来完成: 1. 安装和激活插件 首先,你可以使用一个插件来简化这个过程。一个常用的插件是 “MemberPress” 或 “R…...

Oracle云主机申请和使用教程:从注册到SSH连接的全过程
今天我要和大家分享如何成功申请Oracle云主机,并进行基本的配置和使用。我知道很多同行的朋友在申请Oracle云主机时都遇到了困难(疑惑abc错误),可能试了很多次都没有成功。现总结一下这些年来的一些注册流程经验,或许你们也能成功申请到自己的…...

芯知识 | NVH-FLASH语音芯片支持平台做语音—打造音频IC技术革新
随着科技的飞速发展,人们对于电子产品的音频性能要求越来越高。在这种背景下,NVH-FLASH系列语音芯片应运而生,作为音频IC领域的一次重大技术革新,NVH-FLASH系列语音芯片凭借其卓越的性能与灵活的支持平台,正逐步引领着…...
机器学习——解释性AI与可解释性机器学习
解释性AI与可解释性机器学习: 理解机器学习模型背后的逻辑 随着人工智能技术的广泛应用,机器学习模型越来越多地被用于决策过程。然而,这些模型,尤其是深度学习模型,通常被视为“黑箱”,难以理解其背后的决策逻辑。解…...
中国全国省市区县汇总全国省市区json省市区数据2024最新
简介 包含全国省市区县数据,共3465个。 全国总共有23个省、5个自治区、4个直辖市、2个特别行政区。 ——更新于2024年10月16日,从2017年开始,已经更新坚持7年 从刚开始1000个左右的城市json,到现在全国省市区县3465个。 本人感觉应该是目前最完善的~ 每年都在更新中,…...

[Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器
目录 一. IP协议头格式 学习任何协议前的两个关键问题 IP 报头与有效载荷分离 分离方法 为什么需要16位总长度 如何交付 二. 网络通信 1.IP地址的划分理念 2. 子网管理 3.网络划分 CIDR(无类别域间路由) 目的IP & 当前路由器的子网掩码 …...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...