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_creationon_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助力您的未来发展。

·

相关文章

【STM32F103ZET6开发板】第1-4讲:开发板程序下载

IK-ZET6开发板程序下载内容本文档描述了IK-ZET6开发板常用的3种下载程序的方式:ISP一键下载:IK-ZET6开发板上设计了一键下载电路,一根USB线即可下载程序。JLINK仿真器下载:需要...

【分享】keil显示内存和存储占用百分比进度条工具

简介[Keil5_disp_size_bar]以进度条百分比来显示keil编译后生成的固件对芯片的内存ram和存储flash的占用情况,并生成各个源码文件对ram和flash的占比整合排序后的map信...

零代码编程:用ChatGPT批量提取flash动画swf文件中的mp3

文件夹:C:\迅雷下载\有声绘本_flash[淘宝-珍奥下载]\有声绘本 flash,里面有多个flash文件,怎么转换成mp3文件呢?可以使用swfextract工具从Flash动画中提取音频,下载...

做了个DAPLINK下载器,高速!附烧录教程

我做了一个基于CH32V305FBP6的高速DAPLINK。当初做这个项目是为了烧录原厂的wch-linke固件。后来发现原厂的linke固件只支持USBFS,而且CDC串口最大只能921600波特率...

阿波罗 STM32F767 开发板资料连载第四十六章 NAND FLASH 实验

1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自《STM32F7 开发指南(HAL 库版)》关注官方微信号公众号,获取更多资料:正点原子第四十六章 NAND FLASH 实验...

AB PLC固件提取与逆向分析

01、概 述在前面的文章中,我们重点对罗克韦尔AB PLC进行了硬件拆解,探讨了CIP通信协议中存在的安全问题。在本篇文章中,我们将进一步深入分析,从硬件层面入手,对Micro850 PLC进行固件提...