pytorch v2.7.0震撼发布!Blackwell GPU支持+编译性能狂飙,AI开发
重点内容
测试版(Beta):
- o Torch.Compile 支持 Torch 函数模式
- o Mega 缓存
原型(Prototype):
- o 支持 NVIDIA Blackwell 架构
- o PyTorch 原生上下文并行
- o 增强 Intel GPU 加速能力
- o FlexAttention 大型语言模型(LLM)首个 token 在 X86 CPU 上的处理
- o FlexAttention 大型语言模型(LLM)在 X86 CPU 上的吞吐量模式优化
- o Foreach Map 操作
- o 推理用 Flex Attention
- o Inductor 中的 Prologue 融合支持
追踪中的回归问题
NCCL 初始化时在 12.2 驱动下出现 CUDA “无效参数”失败
部分使用 12.2 CUDA 驱动(版本 535)的用户报告在 NCCL 或对称内存初始化过程中遇到“CUDA 驱动错误:无效参数”的问题。该问题正在调查中,详情见 #150852。如果您是从源码编译的 PyTorch,已知的解决方法是使用 CUDA 12.2 工具包重新编译 PyTorch。否则,您可以尝试升级系统中的 CUDA 驱动。
向后不兼容的变更
- o 不再支持 Triton 版本低于 2.2.0。
- o 移除了对 CUDA 12.4 和 Anaconda 在 CI/CD 环境中的支持。
- o 在 CI/CD 中移除了对 CUDA 12.4 的支持,转而支持 CUDA 12.8。
- o 移除了 CI/CD 中对 Anaconda 的支持。
- o 不再支持 Triton 低于 2.2.0 的版本(没有 ASTSource 支持的版本)。
- o 修改了 torch.Tensor.new_tensor() 的行为,默认会在当前 Tensor 所在设备上创建新 Tensor。
- o 之前该函数始终在 "cpu" 设备上建立新 Tensor,现在将和其他 .new_* 方法保持一致,使用当前 Tensor 的设备。
- o 以后发布的 Linux 轮子包(wheel)构建将使用 Manylinux 2.28 和 CXX11_ABI=1。
- o 迁移到 manylinux_2_28(基于 AlmaLinux 8)后,不再支持使用 glibc 2.26 的操作系统发行版,包含 Amazon Linux 2 和 CentOS 7 等。
- o torch.onnx.dynamo_export 现在使用 ExportedProgram 的逻辑路径。
- o 使用 torch.onnx.dynamo_export API 的用户可能会发现某些 ExportOptions 不再被支持(例如 diagnostic_options、fake_context 和 onnx_registry 被移除或忽略),仅保留 dynamic_shapes。
- o 建议用户迁移到使用 torch.onnx.export(..., dynamo=True),并通过 dynamic_shapes 参数指定模型动态形状。
- o 版本差异:
- o 2.6.0 版本:torch.onnx.dynamo_export(model, *args, **kwargs)
- o 2.7.0 版本:torch.onnx.export(model, args, kwargs=kwargs, dynamo=True)
- o 完成对 LRScheduler.print_lr() 及 LRScheduler 构造函数中 verbose 参数的废弃。
- o 这两个 API 从 2.2 版本开始已被废弃,建议改用 LRScheduler.get_last_lr() 获取学习率。
- o print_lr 和 verbose 参数用法混乱且文档不足,使用率低,因此彻底移除。
- o 2.6.0 版本示例中仍可使用 verbose 并调用 print_lr,2.7.0 版本改为调用 get_last_lr()。
- o libtorch_python.so 的符号默认改为不可见(除了 Apple 平台)。
- o 之前 libtorch_python.so 中的符号均默认可见,现在改为仅显式标记的符号为公开,其余均隐藏。
- o 部分使用私有符号的扩展可能因此导致链接失败。
- o 用于 PyTorch 2 导出量化的 capture_pre_autograd_graph 已被废弃,建议改用 torch.export.export(相关问题 #139505)。
- o 2.6.0 版本中使用 capture_pre_autograd_graph 的示例代码,2.7.0 版本改为使用 export,XNNPACK 量化器请从 executorch 项目获取。
- o 新增 torch.fx.passes.graph_transform_observer.GraphTransformObserver 接口,用于启用更细粒度的节点级别追踪。
- o 旧版重写 on_node_creation 和 on_node_erase 的方式改为在 with 语句块中通过注册新钩子函数实现。
- o torch.ao.quantization.pt2e.graph_utils.get_control_flow_submodules 不再作为公共 API。
- o 此函数被标记为私有,建议使用 _get_control_flow_submodules 代替。
- o 示例:
- o 2.6 版本:from torch.ao.quantization.pt2e.graph_utils import get_control_flow_submodules
- o 2.7 版本:该导入将报错,应改为 from torch.ao.quantization.pt2e.graph_utils import _get_control_flow_submodules (私有调用)
弃用内容(Deprecations)部分请留意官方最新公告。
弃用说明
- o torch.onnx.dynamo_export 已被废弃。
用户应改用 torch.onnx.export 并设置参数 dynamo=True。版本差异: - o 2.6.0 版本调用方式:
torch.onnx.dynamo_export(model, *args, **kwargs)
- o 2.7.0 版本调用方式:
torch.onnx.export(model, args, kwargs=kwargs, dynamo=True)
- o XNNPACKQuantizer 在 PyTorch 中已废弃,并迁移到 ExecuTorch 项目。
请改用 executorch.backends.xnnpack.quantizer.xnnpack_quantizer,不要再使用 torch.ao.quantization.quantizer.xnnpack_quantizer。
该量化器最初在 PyTorch 中用于初期开发,但因其不属于核心量化流程,已移至 ExecuTorch。版本差异示例: - o 2.6.0 版本:
from torch._export import capture_pre_autograd_graph
from torch.ao.quantization.quantize_pt2e import prepare_pt2e
from torch.ao.quantization.quantizer.xnnpack_quantizer import (
XNNPACKQuantizer,
get_symmetric_quantization_config,
)
quantizer = XNNPACKQuantizer().set_global(
get_symmetric_quantization_config()
)
m = capture_pre_autograd_graph(m, *example_inputs)
m = prepare_pt2e(m, quantizer)
- o 2.7.0 版本:
from torch.export import export
from torch.ao.quantization.quantize_pt2e import prepare_pt2e
# 请从 executorch 获取 xnnpack 量化器(https://github.com/pytorch/executorch/)
from executorch.backends.xnnpack.quantizer.xnnpack_quantizer import (
XNNPACKQuantizer,
get_symmetric_quantization_config,
)
quantizer = XNNPACKQuantizer().set_global(
get_symmetric_quantization_config()
)
m = export(m, *example_inputs)
m = prepare_pt2e(m, quantizer)
新特性
发布工程
- o 在CI/CD中新增对CUDA 12.8的支持
- o 在CI/CD中新增对Python 3.13和3.13t的支持
- o 为pytorch-triton包新增aarch64支持
- o 新增对Windows XPU的CI/CD支持
- o 新增对ROCm MI300的CI/CD支持
- o 新增对PEP585中标准集合类型提示泛型的支持
- o 新增Windows Arm64每夜构建版本
Python前端
- o 引入新的torch.utils.serialization.config命名空间,用于所有序列化相关配置
- o 新增torch.serialization.config.save.use_pinned_memory_for_d2h选项,用于加速传入GPU设备时的torch.save操作
- o 新增torch.utils.serialization.config.load.calculate_storage_offsets选项,可以减少随机读取,显著提升对随机访问性能差的storage的加载性能
- o 支持dtype参数上的__torch_function__处理器,类似于子类对象
C++扩展
- o 支持与libtorch无关的扩展,保持稳定的torch ABI兼容性
分布式
上下文并行
- o 提供了Context Parallel API,帮助用户在序列维度上并行计算torch.nn.functional.scaled_dot_product_attention。实现了Ring Attention和基于AllGather方法,通过先执行all-gather后等待完成,再执行本地SDPA。支持三种SDPA内核:SDPBackend.FLASH_ATTENTION、SDPBackend.EFFICIENT_ATTENTION和SDPBackend.CUDNN_ATTENTION,并提供用户API选择所需方法。该实现与其他并行方案及torch.compile兼容。
c10d
- o 实现了ncclCommInitRankScalable
分布式检查点(DCP)
- o 缓存保存计划,减少规划步骤开销
- o 构建HF格式的存储读取器/写入器,用于写入检查点
CUDA
- o Blackwell架构支持已覆盖本地内核、CUDA数学库和torch.compile
- o 公开torch.cuda.gds API
MPS
- o Metal后端原型支持torch.compile
- o 通过Python提供Metal内核编写能力
ROCm
- o CK高效内存注意力增加注意力偏置支持
- o CK闪电注意力后端
- o 增强Windows上ROCm的PyTorch支持
- o 支持gfx1102架构(Navi33)的wheel构建
- o hipblaslt行级f8 gemm支持
XPU
- o 为Intel GPU添加AOT Inductor支持
- o 支持Windows平台上XPU的torch.compile
- o 支持使用torch.utils.cpp_extension API的SYCL
- o 提升Intel GPU在PyTorch 2导出后训练量化的性能
- o 启用Windows Kineto性能分析器
- o 基于oneDNN后端,为XPU支持TF32
torch.compile
Dynamo
- o 支持在Dynamo中追踪contextlib.contextmanager
- o 提供nonstrict_trace逃逸舱,用于复杂代码的非严格追踪
- o 支持动态形状的延迟编译
- o 支持追踪生成器
- o 支持通过白名单指定源文件应用动态形状
- o 支持追踪列表子类
Inductor
- o FlexAttention支持非2的乘方head_dim
- o 新增FlexAttention内核参数调优选项:num_warps和num_stages
- o FlexAttention CPU端支持score和mask的向量化
- o ConfigFuzzer新增调试工具,用于发现Torch编译配置中的错误组合
- o 支持将点位运算融合入模板序言,启用环境变量TORCHINDUCTOR_PROLOGUE_FUSION即可
- o CUTLASS后端增加生成配置的实例级别(TORCHINDUCTOR_CUTLASS_INSTANTIATION_LEVEL),详见config.py
- o CUTLASS后端添加L2 Swizzle配置:cuda.cutlass_max_profiling_swizzle_options
- o 在AOT Inductor指定package_cpp_only时输出CMakeLists.txt
- o 一张Dynamo图可映射到多张Inductor图,支持使用graph_partition配置启用
性能分析器
- o 增加重载名称支持
- o 通过experimentalConfig启用所有线程性能分析
量化
- o 支持KleidAI的内核,运行4bit对权重进行对称量化(可使用按通道或组的方式,组大小为32的倍数),激活动态量化为int8,权重在运行时从int4提升到int8以执行int8的矩阵乘法。动态量化由torch.ops.aten._dyn_quant_matmul_4bit完成,权重及可选偏置打包通过torch.ops.aten._dyn_quant_pack_4bit_weight。示例代码如下,使用torchao:
from torchao.dtypes import PlainLayout
from torchao.experimental.packed_linear_int8_dynamic_activation_intx_weight_layout import (
PackedLinearInt8DynamicActivationIntxWeightLayout,
)
from torchao.experimental.quant_api import (
int8_dynamic_activation_intx_weight,
)
from torchao.quantization.granularity import (
PerGroup,
PerRow,
)
from torchao.quantization.quant_api import quantize_
from torchao.quantization.quant_primitives import MappingType
my_model = Model()
quantize_(
my_model,
int8_dynamic_activation_intx_weight(
weight_dtype=torch.int4,
granularity=PerGroup(32), # 也支持PerRow()
has_weight_zeros=True, # 应设置为True
weight_mapping_type=MappingType.SYMMETRIC_NO_CLIPPING_ERR, # 也可用MappingType.SYMMETRIC,但误差更大
layout=PackedLinearInt8DynamicActivationIntxWeightLayout(target="aten"),
),
)
ONNX
- o 新增torch.onnx.verification.verify_onnx_program接口,用于验证导出ONNX模型的数值准确性。可通过compare_intermediates选项识别中间张量数值差异的算子,并可用model-explorer等工具可视化验证结果
- o 支持通过dynamic_shapes添加自定义轴名称
- o torch.onnx.export(dynamo=True)现在默认优化导出模型
改进项
发布工程
- o 新增TorchCache基准测试
- o 升级ROCm持续集成至版本6.3
- o 将cufile添加到CUDA 12.x构建的依赖列表,默认启用
- o 为ROCm wheel包和libtorch构建添加gfx1102和gfx12支持
Python前端
- o torch.addcmul新增对CPU标量支持
- o 对使用py_limited_api=True的cpp扩展设置-DPy_LIMITED_API标志
- o weights_only序列化新增uintx/intx支持
- o torch.jit.load新增警告提示
- o 允许torch.save中配置record/storage对齐方式
- o 支持torch.Stream的with语句管理
自动求导
- o 允许torch.autograd.graph.GradientEdge作为torch.autograd.backward的输出
- o 为torch.linalg.lstsq的残差实现梯度
- o reflection_pad2d_backward新增确定性内核
- o 改进softmax反向传播的CUDA本地实现
- o 改进AutoAC的帕累托前沿图
数据加载器
- o 当in_order为False时,数据加载器按工人空闲分配任务
- o 更新pin memory相关API,不再传递device参数。device和pin_memory_device未来将被弃用
线性代数
- o 改善torch.cum{min,max}对空输入dim参数的验证
- o 对复数排序操作抛出正确错误
嵌套张量(NJT)
- o 支持NJT在batch维上的chunk()反向传播
- o 支持NJT剩余的*_like工厂函数
- o 改进NJT与稠密张量的matmul,与反向传播支持
torch.nn
- o 为nn.Module.set_submodule方法添加strict参数,修复非点分字符串的bug
- o 改善reflection_pad1d、reflection_pad2d和reflection_pad3d的输入维度检查
torch.optim
- o AdamW重构为继承自Adam
- o SGD和Adam(W)支持可微学习率和权重衰减
构建前端
- o 通过HomeBrew安装的PyTorch启用OpenMP支持
- o 在pytorch中为ppc64le架构启用onednn
- o 启用对Blackwell GPU家族的构建支持
- o 通过分片代码生成文件,解决RaspberryPi构建时的内存溢出问题
C++前端
- o 新增isAcceleratorExcluded API
分布式
c10d
- o 简化abort和shutdown,将其添加至Backend和ProcessGroup对象
- o 非CUDA设备上使用new_group代替split_group
- o 移除c10d的pybind对象初始化中的call_guard
- o 在指定XCCL后端时,启用XPU上的合并路径并调度到XPU张量屏障
- o 在函数式集合操作中保持PyWork的Python引用计数
- o 当TCPStore中agent存储处于活动时,启用软失败绑定
- o 优化getDefaultBackend的容错性
分布式数据并行(DDP)
- o 新增init_sync选项控制初始化期间的集合操作
- o Python reducer与编译模式解耦
FullyShardedDataParallel2(FSDP2)
- o 延迟初始化中对reduce_dtype进行限制
- o 启用XPU设备上的FSDP2
- o 增强反向传播后条件的鲁棒性
- o 在FSDP2库代码中启用MTIA设备
- o 避免在inference_mode时重置all_gather_output的版本计数器
- o 支持FSDP2忽略部分参数
- o 在XPU设备上启用FSDP相关测试
- o 启用HPU设备上的FSDP2
DTensor
- o 添加aten.amin/amax至linear_reduction_strategy
- o distribute_tensor API新增src_data_rank参数
- o 为_scaled_mm添加调度策略
- o 添加aten.view.dtype操作支持
- o 启用切分传播支持跨mesh计算
- o 为DTensor新增CuDNN SDPA操作支持
- o 优化shard_dim_alltoall,改用alltoall_single实现
- o 弃用_shard_tensor,默认使用src_data_rank=None
- o 针对aten.minimum添加点位操作策略
TensorParallel
- o TP API中增加src_data_rank参数传递
Torch Elastic
- o 新增在杀死worker时终止当前进程的逻辑
- o 使etcd_rendezvous可公开导入
- o 暴露rendezvous的keepalive参数
流水线
- o 新增generate_stage_to_rank_mapping实用工具
- o 移除调度中的stage_index_to_group_rank
CPU
通用
- o 在向量化ATen后端(SVE)实现float、double、int的blend操作
- o 升级oneDNN子模块至v3.7.1
x86
- o 添加对int8 brgemm的支持
CUDA
- o 优化CUDA流优先级管理
- o 向Python暴露sharedMemPerMultiprocessor设备属性
- o 完善sharedMem cudaDeviceProps的Python暴露
- o 为embedding_bag增加输入索引非负范围检查
- o 修复代码风格检查警告
- o 修改内存固定(pin memory)行为,避免无CUDA上下文时自动初始化
- o 为SM 10.0(Blackwell)添加行级缩放矩阵乘积的cutlass内核
- o 新增CUDA后端的get_stream_from_external接口
- o 更新cuDNN-frontend子模块至1.10.0,支持cuDNN卷积和SDPA集成
MPS
- o 支持多个操作符:angle、entr、spherical_bessel_j0、xlog1py、sinc、round.decimals、linalg.det、cholesky.ex、bilineard2d_aa、linalg.solve、zeta、cholesky、fused_rms_norm、lu_unpack、lu_factor_ex、slogdet和logdet
- o 扩展数据类型支持:angle和atan2支持long类型,torch.special.sinc支持复数类型,torch.mm/torch.bmm支持整型
- o 支持torch.accelerator.synchronize()在MPS上调用
- o 增加内核调度时错误检测
- o MPSInductor改进:
- o 修复转置索引生成
- o 修复多范围变量内核调用
- o 优化内核编译失败时的错误信息
- o 修复大规模乘
错误修复
Python 前端
- o 修复 torch.lerp 的类型提升问题
- o 修复当同时使用 slots 和 Python 垃-圾回收时 torch.Tensor 的内存泄漏
- o 修复 cuda_array_interface 对 torch.bfloat16 的支持
- o 修复罕见的就地操作导致返回的 torch.Tensor 不正确的调度器错误
- o 停止在 CPU 上使用 MKL 生成随机数
- o 将加速器检测移至构建时进行
- o 修复 FakeTensorMode 下 torch.load 创建的 FakeTensor 设备不正确问题(针对普通张量)
- o 修复在 CPU 上 torch.acos、torch.asin、torch.atan、torch.exp、torch.sigmoid、torch.div 对复数类型支持的问题
自动求导
- o 修复 inplace foreach 操作中 torch.autograd.graph.allow_mutation_on_saved_tensors 的问题
- o 修复 hardswish 反向传播的边界条件
- o CPU 上 batchnorm 反向传播回退实现中 Half 类型求和使用 float 类型
- o 修复 torch.compile + ddp + 非重入 AC pack hook 触发计数错误
线性代数
- o 修复 eigh 中的工作区计算
嵌套张量(NJT)
- o 修复 NJT min/max 反向传播在非锯齿形归约时的问题
- o 修复 NJT frexp() 同时处理两个输出的问题
- o 修复 NJT fill.Scalar 对连续输入的支持
- o 修复无嵌套特定内核的复合隐式操作的推理模式
- o 修复 SDPA 的浮点运算计数器和测试
torch.nn
- o 修复 flex-attention 反向传递过程中损坏的 meta 函数
构建前端
- o 修复 VecLib 中不平衡的 #pragma diagnostic pop
- o 通过调整编译标志修复 ARMv8-A(树莓派 4)原子操作兼容性
- o 使 PyTorch 能被 CMake 4.x 版本构建
C++ 前端
- o 修复 Apple Clang 构建时使用 -march=armv8.6a 导致的内部编译器错误
- o 通过禁用树向量化修复 aarch64 neoverse-v1 下使用 gcc10.2 的 Inductor 回归问题
分布式
分布式检查点(DCP)
- o 修复 dcp gather_object/scatter_object_list 问题
分布式(c10d)
- o 修正 CudaEventCache 的悬挂引用
- o 在 distributed.nn.all_reduce 中确保 all-reduce 输入连续
- o 移除 PyTorch 通用 all_to_all 的 Alltoallv 特化
- o 增加 TCPStore 处理远程对端关闭连接的情况
- o 修复关闭时的内存泄漏
- o 修复函数式集合操作在编译时不强制 FX 步幅的问题
- o 关联张量分配支持与 NCCL 版本匹配
- o 修改 API 以通过 torch.device 获取设备字符串
- o 修复 Windows 上 dist.init_process_group 的问题
- o 修复 isend 和 irecv 的可捕获性问题
DistributedStateDict(DSD)
- o 修复 DDP 中 strict=False 的情况
- o 修复存在无参数进程组时的问题
- o 修复优化器 state_dict 在使用扁平命名空间时共享参数不匹配的问题
FullyShardedDataParallel2(FSDP2)
- o 修复 FP8 张量的根节点问题
- o 增加 fix 来修复无根参数时 buffer_dtype 的问题
- o 支持在 FSDP 单元间使用自定义 all_reduce 钩子
- o 修复无参数的 FSDP 包装模块错误
DTensor
- o 修复 torch.distributed._functional_collectives.AsyncCollectiveTensor 对 aten.to 支持的问题
- o 推迟 DTensor RNG 状态同步,直到首次随机操作或手动设置种子调用,以支持更灵活的 OffsetBasedRNGTracker 初始化
- o 修复 _scaled_dot_product_flash_attention 分片问题
- o 修正 all-reduce 重新分配成本
流水线
- o 修复模型输出为视图时 backward_one_chunk 的问题
- o 修复 ZB 和 compile 时抛出的错误
- o 修复 FSDP+PP 流同步错误
- o 修复 PP 梯度缩放问题
- o 禁止单阶段调度中 num_microbatches 大于 num_stages
- o 修复 V 调度的形状推断问题
CPU
通用
- o 使用 SLEEF 实现 CPP 后端 asinh 的代码生成
x86
- o 限制 Conv/Linear + 广播加法融合中另一个张量的形状
CUDA
- o 使 PYTORCH_NO_CUDA_MEMORY_CACHING 只有在值为 1 时生效
- o 修复 cuda 初始化中的竞争条件
- o 修复几个 64 位索引问题,复杂128扫描中正确计算线程数
- o 修正 topk 中的资源获取模式,确保内存模型正确
- o 修复 UpSampleNearest3D 的 int64 索引问题
- o 修复某些断言触发时GPU数量打印问题
- o 更新 avg_pool2d 反向传播时 SM 10.0 的线程数,防止运行时崩溃
- o 只针对 SM 9.0 使用 f8f8bf16 行级缩放矩阵乘法
- o 修复 Upsample2D 的 64 位索引问题
- o 修复 _preload_cuda_deps 中的路径查找
- o 支持 Blackwell 架构:再次修正 sm100、sm120 的反向启动边界
MPS
- o 针对 MPS 后端 gather_out 的变通方案
- o 修复标量参数的 fmin/fmax
- o 修复混合数据类型调用 mm 时崩溃
- o 修复 torch.add(x,y, alpha=2) 崩溃
- o 修复不同数据类型下的 nllnd_loss_backward 崩溃
- o 确保 MPSStream 可由 C++ 使用
- o 确保 MPSProfiler 可由 C++ 使用
- o 修复连续非连续位运算的回归问题
- o 修复大批量张量的 lu 分解
- o 确保 _scaled_dot_product_attention_math_mps 输入为 4 维
- o 修复空输入的 cholesky_ex
- o 修复超过 4 维张量的注意力操作
- o 修复 smooth l1 loss 的空占位符错误
- o 修复 torch.chalf 的 sqrt 及其它问题
- o 修复 unary_kernel_strided 逻辑
- o 修复标量到张量的位移操作
- o 修复非连续张量的多项式采样
- o 修复超过 3 维张量的三角形操作
- o 修复 lstm_mps 中缺失自动释放导致的内存泄漏
- o 修复 runUniqueGraph 缺失自动释放池导致内存泄漏
- o 变通方案修复 5 维张量的随机数生成错误
- o 修复 Wreorder-init-list
- o 修复 libfmt 调用中的无效格式字符串
- o 修复 M4 上 c10::metal::log_gamma 的正确性
- o 修复非连续张量的 lu 分解
性能
发布工程
- o 新增H100的性能测试
稀疏前端
- o 移除代码库中不必要的张量复制
分布式
分布式检查点(DCP)
- o 引入基于进程的异步检查点机制
c10d
- o 将TCPStore的ALLOC_BUFFER_SIZE从4000调整为4096(2的幂次)以提升性能
- o 通过在删除ExpandableSegments对象时释放IpcMutex和在WorkNCCL析构时释放GIL,提升IPC张量释放性能
CPU
通用优化
- o 简化vec128的bfloat16/half浮点乘加操作
- o 排序操作并行化
x86架构优化
- o 当mkldnn_convolution_pointwise不需要梯度时,设置prop_kind为forward_inference
- o 支持add和max的reduce操作
- o 使用零点来决定卷积输入零点掩码
CUDA
- o 使PYTORCH_NO_CUDA_MEMORY_CACHING仅在设为1时生效
- o 修复CUDA初始化中的竞态条件
- o 修复部分64位索引问题,调整complex128扫描时的线程数量
- o 修正topk中的内存行为以符合内存模型的正确性
- o 修复UpSampleNearest3D的64位索引问题
- o 解决某些断言触发时GPU数量打印错误
- o 为SM 10.0架构调整avg_pool2d反向的线程数,防止运行时崩溃
- o 仅在SM 9.0上使用f8f8bf16行级缩放矩阵乘法
- o 修复Upsample2D中的64位索引问题
MPS
- o 加快整数批量矩阵乘法性能
- o 实现linear1d着色器
- o Metal单元核实现sqrt操作
- o 加速带stride的张量上的一元操作
- o 新增strides一元操作
- o 以着色器实现masked_fill_scalar
- o 实现bilineard2d着色器
- o 优化Cholesky操作
- o 提升插值速度
ROCm
- o 改善stride不为1时的反向索引性能
- o 优化向量化元素级内核
- o 在tl.load中跳过单次使用的缓冲区L1缓存
- o 提升3D形状reduce sum运算性能
- o 为BFloat16和Half启用_load_dwordx4指令集扩展
- o 优化低CU数量下的reduce sum计算
- o 调优非最快维度的3D张量求和性能
- o 优化stride为1的反向索引内核
- o 针对块基数排序使用IPT=8
- o 调整首选BLAS库默认值
XPU
- o 优化SDPA推理性能
- o 改进零点内存创建
- o 避免非连续目标张量或输入广播时的不必要复制
文档更新
Python前端
- o 修正了torch.addbmm()中输入参数的描述
- o 修正了numpy文档引用
- o 添加了torch.cat类型提升的文档说明
- o 补充了torch.topk中重复值时索引稳定性的详细说明
- o 为torch.diagonal文档添加了重载说明
- o 移除了torch.{min,max}文档中不正确的警告信息
- o 更新了addbmm、addmm、addmv和baddbmm的描述
- o 修正torch.max中可选参数dim和keepdim的描述
- o 更新了torch.bucketize的文档
- o 修正了推荐的张量操作顺序中低效写法
结语
PyTorch 2.7.0将效率与灵活性推向新高度,无论是大模型训练还是边缘设备部署,这次更新都值得立即尝鲜!
·
我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。
欢迎关注“福大大架构师每日一题”,让AI助力您的未来发展。
·