🎊 PyTorch v2.8.0 正式发布:量化推理、编译优化与分布式检查点等多项重大更新

PyTorch v2.8.0 正式发布:量化推理、编译优化与分布式检查点等多项重大更新

近日,PyTorch 团队正式发布了 v2.8.0 版本,带来了多项重要功能更新、性能优化和错误修复。本文将详细介绍该版本的主要变化,帮助开发者更好地理解新特性及其影响。

亮点功能• 不稳定版本特性• torch::stable::Tensor• 在 Intel CPU 上利用原生 PyTorch 进行高性能量化大语言模型(LLM)推理• 实验性 Wheel 版本支持• Inductor CUTLASS 后端支持• Inductor CUDA 图的图划分功能• 控制流算子库• HuggingFace SafeTensors 在 PyTorch 分布式 Checkpoint 中的支持• 在 PyTorch C++ Extension API 中提供 SYCL 支持• XPU 设备上的 A16W4 支持• 使用 torch.compile 的分层编译• Intel GPU 分布式后端(XCCL)支持跟踪中的回归问题

• Windows 上使用 CUDA 12.9.1 构建 wheel 时发生栈溢出

由于 CUDA 12.9.1 引入的一个 bug,我们无法在该版本下完成完整的 Windows wheel 构建,因为在编译 torch.segment_reduce() 时会导致构建崩溃。

因此,我们提供了一个不包含 torch.segment_reduce() 的 wheel 版本来规避该问题。

如果你需要 torch.segment_reduce() 的支持,请使用其他版本的 CUDA。向后不兼容的变更(Backwards Incompatible Changes)CUDA 支持• 在 CUDA 12.8 和 12.9 构建中,移除了对 Maxwell 和 Pascal 架构的支持。

由于二进制体积限制,在 PyTorch 2.8.0 中,已移除对 sm50 - sm60 架构 的支持(仅限 CUDA 12.8 和 12.9 版本)。

如果需要支持这些架构,请改用 CUDA 12.6。Python 前端• 当调用算子(op)时,输入的 dtype 不被支持 将抛出 NotImplementedError,而不是 RuntimeError。

请更新异常处理逻辑以反映此变化。在 2.7.0:

代码语言:javascript复制try:

torch.nn.Hardshrink()(torch.randint(0, 5, (10,)))

except RuntimeError:

...在 2.8.0:

代码语言:javascript复制try:

torch.nn.Hardshrink()(torch.randint(0, 5, (10,)))

except NotImplementedError:

...• 为自定义 autograd.Function 增加了缺失的“视图上的就地操作检查”

在 2.8.0 中,如果自定义的 autograd.Function 修改了一个需要梯度的叶子变量(leaf)的视图(view),现在会正确抛出错误。

以前则会静默导致内存泄漏。示例:

代码语言:javascript复制class Func(torch.autograd.Function):

@staticmethod

defforward(ctx, inp):

inp.add_(1)

ctx.mark_dirty(inp)

return inp

@staticmethod

defbackward(ctx, gO):

pass

a = torch.tensor([1.0, 2.0], requires_grad=True)

b = a.view_as(a)

Func.apply(b)2.7.0 版本

运行不报错,但是会内存泄漏。

2.8.0 版本

报错:

代码语言:javascript复制RuntimeError: a view of a leaf Variable that requires grad is being used in an in-place operation• 对 tensordot 的 out 版本 现在会在 requires_grad=True 时正确抛出错误。

以前不会报错,但无法为 out 张量计算梯度。在 2.7.0:

代码语言:javascript复制a = torch.empty((4, 2), requires_grad=True)

b = torch.empty((2, 4), requires_grad=True)

c = torch.empty((2, 2), requires_grad=True)

# 不报错,但无法计算 c 的梯度

torch.tensordot(a, b, dims=([1], [0]), out=c)在 2.8.0:

代码语言:javascript复制# 会报 RuntimeErrortorch.compile• 修正了 mark_dynamic 张量在特定情况下被错误地形状特化的问题

以前,如果在关闭 guard 的情况下测试符号形状,则 guard 可能被遗漏。

已在 2.8 修复。如果新 guard 使 mark_dynamic 的张量被特化,会导致错误。

解决方法:使用 maybe_mark_dynamic 替代 mark_dynamic。• 多个与 torch.compile 相关的配置变量已重命名或移除:• enable_cpp_framelocals_guard_eval 现在无效• rocm.n_max_profiling_configs 弃用 → 请改用 rocm.ck_max_profiling_configs 和 rocm.ck_tile_max_profiling_configs• autotune_fallback_to_aten 弃用 → ATen 回退需显式配置• use_mixed_mm 和 mixed_mm_choice 弃用• descriptive_names = False 弃用 → 请使用 "torch", "original_aten" 或 "inductor_node"• custom_op_default_layout_constraint 从 inductor config 移动到 functorch config• emit_current_arch_binary 弃用• aot_inductor.embed_cubin 重命名为 aot_inductor.embed_kernel_binary• aot_inductor.compile_wrapper_with_O0 重命名为 compile_wrapper_opt_level• 对高阶算子(HigherOrderOperators,如 cond)增加了更严格的别名/突变检查。

如果输入与输出间存在不支持的别名或突变,将报错。

解决方法:对有别名的输出调用 .clone()。• guard_or_x 与 definitely_x 接口合并

删除了 definitely_true / definitely_false,请改用 guard_or_true / guard_or_false。torch.export• 移除了 torch.export.export_for_inference,请使用:代码语言:javascript复制torch.export.export_for_training(...).run_decompositions(...)• torch.export.export 和 export_for_training 默认 strict=False(旧版默认是 True)。

如需旧行为,请显式传入 strict=True。ONNX• torch.onnx.export 默认 opset 从 17 升级到 18。

如果需要旧行为,请显式指定 opset_version=17。• 移除了 JitTraceConvertStrategy 支持,当 dynamo=True 时,不再支持 JIT traced/scripted 模块导出到 ONNX。• onnxscript>=0.3.1 是 dynamo=True 的必需版本。构建前端(Build Frontend)• 从 Dispatcher.h 中移除了 torch/types.h 引入

如果 C++ 代码依赖此隐式包含,请升级 torchvision 版本。• DLPack 升级到 1.0,部分枚举值被重命名:• kDLGPU → kDLCUDA• kDLCPUPinned → kDLCUDAHost• NVTX3 相关 CMake 配置位置变更,使用 USE_SYSTEM_NVTX=1 时需显式配置。弃用功能(Deprecations)1. MacOS Ventura 的 MPS 支持将在 2.9 中移除• PyTorch 2.8 是最后一个支持在 MacOS Ventura 上使用 GPU 加速的版本。• 从下一个版本(2.9)开始,需要 MacOS Sonoma(2023 年 9 月发布)或更高版本 才能使用 MPS 后端。2. torch.ao.quantization 已弃用,将在 2.10 中移除迁移方式如下:

Eager 模式量化(torch.ao.quantization.quantize, torch.ao.quantization.quantize_dynamic)

• 权重-only 和动态量化:使用 torchao Eager 模式的 quantize_。• 静态量化:使用 torchao 的 PT2E 量化。FX 图模式量化(torch.ao.quantization.quantize_fx.prepare_fx, torch.ao.quantization.quantize_fx.convert_fx)

• 使用 torchao 的 PT2E 量化(torchao.quantization.quantize_pt2e.prepare_pt2e, torchao.quantization.quantize_pt2e.convert_pt2e)。注意:

• PT2E 量化已经迁移到 torchao 仓库:

📂 torchao.quantization.pt2e• 详细信息请参考:• 相关 issue:pytorch/ao#2259• 快速上手文档:https://docs.pytorch.org/ao/main/quick_start.html#pytorch-2-export-quantization3. torch.onnx.export 的 dynamo=False(当前默认)选项已弃用• 从 PyTorch 2.9 开始,默认值将改为 dynamo=True。• 建议迁移到 dynamo=True 选项,这将使 torch.export.export 成为默认导出路径,取代 TorchScript。如果需要保留旧行为:

• 显式设置 dynamo=False。• 建议同时尝试 fallback=True 选项,这样当 dynamo=True 出错时,导出器会自动回退到 dynamo=False 路径。新功能(New Features)CUDA• 在 CUDAGraphs 中支持捕获事件记录与等待(event record & wait) 以用于计时。torch.compileDynamo• 新增对**分层编译(hierarchical compilation)**的支持,通过 nested_compile_region 实现。• 允许使用自定义过滤函数 guard_filter_fn 来丢弃 guard。• 新增 dont_skip_tracing 装饰器,可绕过大多数 Dynamo skipfiles 规则。Inductor• 支持将一个 Dynamo 计算图映射到多个不同的 Inductor 计算图,这些计算图可被独立优化。torch.export• 新增 draft-export:一种新的导出变体,旨在稳定生成计算图,并生成追踪过程中的调试报告。Ahead-Of-Time Inductor(AOTI,提前编译版 Inductor)• 支持 TorchBind 对象。• 新增配置变量 aot_inductor.model_name_for_generated_files,用于指定生成文件的模型名称。MPS(Apple GPU 后端)• MPSInductor:支持在 Apple GPU 上运行 torch.compile。ONNX• 新增 draft_export 策略,在使用 torch.onnx.export 获取 ExportedProgram 时,如果出现数据相关或约束错误,可提供调试信息。• 在 dynamo=True 导出路径中,新增对**符号算子(symbolic operators)**的支持。• 新增两个算子:torch.onnx.ops.symbolic 和 torch.onnx.ops.symbolic_multi_out,可直接在 PyTorch 模型中创建 ONNX 符号算子。示例:

代码语言:javascript复制def forward(self, x: torch.Tensor) -> torch.Tensor:

# 可以选用 is_in_onnx_export 来控制 ONNX 导出时期的行为

if torch.onnx.is_in_onnx_export():

# 在 "custom_domain" 域中创建名为 "CustomOp" 的 ONNX 符号算子

# 输出张量将具有给定的 dtype 和 shape

return torch.onnx.ops.symbolic(

"custom_domain::CustomOp",

(x,),

dict(attr_key="attr_value"),

dtype=x.dtype,

shape=x.shape,

version=1,

)

else:

return xPython 前端• 新增广义帕累托分布(Generalized Pareto Distribution, GPD)。量化(Quantization)• 新增数据类型 torch.float4_e2m1fn_x2。XPU(Intel GPU/加速器)• 支持 Intel 分布式后端 XCCL。• 支持通过 C++ 扩展运行 SYCL 内核。改进内容构建前端(Build Frontend)• 移除了 TORCH_CUDA_ARCH_LIST 的过时警告• 将 Eigen 改为可选构建依赖• 将 CUTLASS 更新到 3.9.2可组合性(Composability)• 为自定义算子增强了支持,包括可序列化的算子配置文件和虚拟注册覆盖C++ 前端(C++ Frontend)• 为 torch::nn::functional::grid_sample 添加了 Bicubic 模式CUDA• 为自定义 CUDA 扩展的 load_inline() 引入 no_implicit_headers 模式• 在 SDPA 内存高效注意力后端中支持大批量(large batch)计算• 修复了 SDPA 内存高效注意力反向传播中的非法索引问题• 在 sm121(DGX Spark)架构上支持 SDPA 注意力后端• 为 sm12x(GeForce Blackwell)添加 FP8 行级缩放矩阵乘(row-wise scaled-mm)支持cuDNN• 将 cuDNN 前端版本更新至 1.12分布式(Distributed)c10d• 为 TCPStore 增强了克隆和队列功能• 为 NCCL 通信添加了集合操作(collective)时间估算器• 提升 getDefaultBackend 的容错性,不再依赖异常• 指定 MPS(Apple GPU)的默认 PyTorch 分布式后端• 在 TCPStoreLibUvBackend 中支持 masterListenFd• 在 gloo 中使用共享 store• 提升故障恢复(FR)转储的健壮性,改进广播等待、降低转储超时并缩小锁范围• 记录每个被合并的 collective• 实现更安全的 NCCL 通信器(communicator)资源管理• 明确 TORCH_NCCL_USE_TENSOR_REGISTER_ALLOCATOR_HOOK 的行为• 允许在 mempool 中注册未来的 NCCL 分配• 当使用 group_rank 时跳过 global_rank 计算• 通过不安全 API 从 ProcessGroupNCCL 暴露 NCCL 通信器• 为不均匀 all2all 带宽计算添加 split size 信息转储• 让 FR 成为与厂商无关的实现,使其他后端(如 gloo)也能使用• 在 functional collective 中添加 needs_contiguous_strides 标签• 让 split_group 支持非 NCCL 后端• 使用 new_subgroups_by_enumeration() 简化 new_subgroups()• 在 ProcessGroupNCCL 中仅让当前线程分配池内资源• 让 gloo 支持 c10::Half• 在 PG 析构函数中释放 GIL• 让 get_process_group_ranks() 支持 group=None• 若已注册,跳过更新默认设备分布式后端• 启用查询构建与运行时的 NCCL 版本• 在确定性模式下禁用 NCCL NVLS• 让 init_process_group 支持仅索引的设备 ID• 支持按 ProcessGroup 启用/禁用 NaN 检测• 在 ProcessGroupGloo 中增加 reduce_scatter 和 ReduceOp::AVG 支持• 在 ProcessGroupNCCL 中添加 FP8 支持• 在 gloo 中添加 ibverbs 后端,并在支持 GPUDirect 的后端下启用 gloo CUDADeviceMesh• 改进了设备选择逻辑DDP(DistributedDataParallel)• 增加选项允许跳过对未使用参数的 all reduce 操作• 增加接收数据检查,以避免 DDP reducer 中的段错误• 将 use_python_reducer 从 Python 传递到 C++ reducerDSD(DistributedStateDict)• 支持 write_size 中的非张量数据• 在 meta 设备张量时跳过弹出DTensor• 让 StridedShard 支持非均匀切分• 为 torch.cumsum 增加支持• 增加 DTensor 重分布前/后数据类型转换,以支持 SimpleFSDP 混合精度训练• 为 torch.distributed.tensor.debug.visualize_sharding 增加详细支持FSDP2(Fully Sharded Data Parallel 2)• 在 FSDP collective 中添加 PrivateUse1 后端支持,并将设备类型传递给 pre forward hook• 添加 set_reshard_after_forward• 允许无梯度的模型参数使用不同的数据类型• 当 reshard_after_forward=True 且为根模型时,保留根未分片• 增加选项强制 FSDP2 始终使用 SUM 规约• 仅在非 CPU 设备时断言 all_reduce_event• 为 FSDP2 启用 NCCL 零拷贝(用户缓冲注册)管道并行(Pipeline Parallelism)• 添加调度可视化工具• 允许在 ZeroBubble 路径中传递未使用的 kwargs• 添加 get_pipeline_order() 支持 Gpipe 和 1F1B分片张量(ShardedTensor)• 支持 0 尺寸 ShardedTensor,并通过 all_gather 重新计算元数据张量并行(TensorParallel)• 添加 ParallelStyle PrepareModuleInputOutputtorchelastic• 当 worker 离开时,不关闭 rendezvoustorch.compileDynamo

• 改进了对 Python set、实现了 __torch_function__ 的张量子类,以及 namedtuple 子类的追踪支持• 消除了 Compiled Autograd 在动态形状 下的所有重新编译,从而减少编译时间• 为 torch.compiler.disable 添加了 reason 字段• 移除了顶层 torch 命名空间函数中 lru_cache 的警告Inductor• 为 CPU 上的 FlexAttention 添加了 块稀疏(block sparse)支持• 引入了新的配置选项:• aot_inductor.custom_ops_to_c_shims 和 aot_inductor.custom_op_libs:允许指定自定义算子的 C shim• max_fusion_buffer_group_pairwise_attempts:限制融合的最大节点距离• cuda.cutlass_enabled_ops:控制 CUTLASS 算子的选择• triton.cudagraph_capture_sizes:指定在哪些形状下捕获 CUDAGraph,并跳过其他形状的捕获• use_static_cuda_launcher:启用对编译后 triton 的静态启动以提升冷启动性能• assume_unaligned_fallback_output:允许 inductor 跟踪未对齐的输出• cuda.cutlass_tma_only:控制是否只使用 TMA 兼容的 CUTLASS 内核• static_launch_user_defined_triton_kernels:启用静态启动用户自定义 triton 内核• precompilation_timeout_seconds:控制预编译的超时时间• disable_decompose_k:禁用新的 DecomposeK GEMM 内核• min_num_split:设置分块归约(split reduction)的最小分块数• max_autotune_flex_search_space:指定 flex attention 自动调优的搜索空间大小• 引入了 LOG_AUTOTUNE_RESULTS 环境变量,用于自动调优日志记录• 提高了 CPU Welford 归约 在归一化操作中的数值稳定性torch.export• 改进了对内置算子(min、max、math.pow)的处理• 为 dim hints 添加了 min/max 范围• 允许通过 pytree.register_dataclass 注册普通类• 允许将整型输入指定为动态输入• 内联(inline)jit.scripted 函数到 export 结果中• 改进 graph signature 的美化打印Ahead-Of-Time Inductor (AOTI)• 支持设备端 TMA• 在 AOTIModelPackageLoader 中添加了 num_runners 参数FX• 更新了代码生成中的比较运算符为 ==• 在常量折叠子模块时,将名称映射到操作数索引• 改进了追踪时的堆栈追踪信息• 在 normalize_function 中支持边缘方言(edge dialect)算子• 修复了 minifier 中路径命名问题• 添加了 graph_code_verbose_log 用于 FX passes• 提升缓存键图打印的性能• 在 fx.passes.split_module 中添加参数以规范化输入名称线性代数前端• 为 cross 添加了张量重叠检查MPS (Apple Metal 加速)• 为大量 torch.special 操作(以及 index_copy、hardshrink、rsub、col2im、isin)添加了支持• 扩展了以下操作的数据类型支持:• index_put 支持半精度浮点• ConvTranspose3D 支持 FP32 和复数• log1p 和 sigmoid 支持 int64• 以浮点精度计算激活内核嵌套张量(Nested Tensor, NJT)• 修复了嵌套张量字符串表示的连续性问题torch.nn• 当模块的完整反向钩子(full backward hook)无输入需要梯度时添加警告• 为 CPU 添加 weight_norm 的 FP16 支持ONNX• 升级 ONNX 到 1.18• 在 dynamo=True 时支持 opset 18-23• 添加 float4 支持• 支持 ONNX 原生算子 Attention-23 和 RotaryEmbedding-23• 支持 torch.scan• 在动态维度下支持 0/1 大小的样例输入• 从 opset 21 添加 group_norm 支持• 为 VerificationInfo 类添加 asdict 方法• 支持在 ONNX Runtime 中运行 bfloat16 模型• 改进 ONNX 文档格式和鲁棒性• 更新 dynamic_shapes 行为以使用 torch.export.dim.DYNAMIC• 在节点生产时设置值的名称• 改进符号操作符(sym_float, sym_not, sym_min, sym_max)支持优化器• 为 CPU 上的融合 Adagrad 添加 TensorLR 版本• 在优化器正常工作时自动将张量 lr 转换为 0 维• 在 MultiplicativeLR 中增加 lr_lambda 类型检查性能分析(Profiler)• 支持按需内存快照• 在可视化器中添加 PT2 编译上下文• 将 PT2 纳入内存快照• 添加切换全局/本地注解回调的开关• 将重载名称传递给 Kineto• 对未完成的 CPU 事件将持续时间设置为 -1• 从事件最多的索引开始显示Python 前端• 引入 torch.AcceleratorError• 实现 Size.__radd__()• 更新 get_default_device() 以支持 torch.device 上下文管理器量化(Quantization)• 改进 x86 PT2E 量化支持,新增 uint8 操作(逐点乘/加/add_relu 和 batch_norm2d)、qconv1d-relu 融合,以及 lowering pass• 支持 CUDA 上 torch.fused_moving_avg_obs_fake_quant 的布尔张量发布工程• 在 manylinux 镜像中将 gcc11 升级到 gcc13• 升级到 cmake 3.27.2ROCm• 允许用户覆盖 cpp_extension 的默认编译标志• 启用了对稀疏压缩的 mm / bmm / addmm 操作的支持Sparse 前端• 为 PrivateUse1 扩展 启用了稀疏压缩张量的不变性检查torch.func• 添加了以下算子的批处理规则(batching rules):• torch.Tensor.scatter_add_• torch.matrix_expXPU(Intel GPU 支持)• 在 Intel GPU 上支持:• 安全 softmax• GQA(Grouped Query Attention)• fp32 因果掩码(causal mask)用于 SDP(Scaled Dot-Product Attention)• 将最大 head dim 从 256 提升到 576• 在内存分析器(Memory Profiler)中为 Intel GPU 添加内存报告功能• 支持切换 Intel GPU 性能分析器的功能• 支持在 Intel GPU 上集成分布式内存跟踪器• 改进 Intel GPU CMake 文件中的错误处理和报告• 在 AOTI 中支持 embed_cubin 和 multi_arch_kernel_binary 选项,用于 Intel GPU• 在 UserDefineClass 中添加通用及 Intel GPU 专用的 Stream 和 Event 接口• 在 Intel GPU 上支持 int4 WOQ GEMM(权重量化 GEMM)Bug 修复构建前端(Build Frontend)• 支持使用 CMake-4.x 进行构建)• 修复在 gcc-12+ 下 fbgemm 的构建问题• 在 Windows 上添加 /permissive- 标志以强制构建符合 C++ 标准组合性(Composability)• 修复自定义算子返回 1 元素 tuple 时的支持问题• 避免在标量输入的 torch.norm 中发生溢出CPU (x86)• 修复 log_softmax 降精度 FP 内核中明显的复制粘贴错误CUDA• 修复广播情况下确定性索引的问题• 修复在使用 cuBLASLt 时 torch.backends.cuda.matmul.allow_fp16_accumulation 崩溃问题• 在 Blackwell 上启用 AsyncMM• 修复 torch.cuda.MemPool 在多线程用例中的问题• 修复在 layer_norm 中对默认构造的 gamma / beta 调用 sum() 的问题• 为分组 GEMM 负偏移量或 K=0 情况报错,避免挂起• 在 mempool 上下文中 empty_cache 不再报错分布式(Distributed)c10d

• 修复 barrier 产生额外 CUDA 上下文的问题• 修复在可能情况下优先使用组内 rank 而不是全局 rank 的逻辑• 修复 all_to_all 的 ET trace 收集问题• 禁用合并 col 时的开始事件记录并改进性能分析标题• 修复 TCP store 中的连接重置问题• 修复 new_subgroups() 中未使用的 group 输入参数问题• 修复使用端口 0 时的 TCP 初始化问题• 使用向量暂时保存 future 对象引用,以避免在 Flight Recorder 内部阻塞分布式检查点(DCP)

• 修复 broadcast_object 工具函数中使用全局协调器 rank 的问题分布式数据并行(DDP)

• 修复 DDPOptimizer 在静态张量索引下的问题DTensor

• 修复多线程下的 local_map• 修复 redistribute 中 new_local_tensor 为 None 的情况• 修复用 rich 可视化 1D 张量的错误流水线并行(Pipeline Parallelism)

• 通过提前释放输出内存优化内存使用RPC

• 在无 TensorPipe 编译时仍允许 import torch分片张量(ShardedTensor)

• 修复在某些 rank 的本地张量为空时分片张量的聚合问题张量并行(TensorParallel)

• 将异步 TP 适用性断言改回静默跳过torch.compileDynamo

• 修复了编译自动求导(Compiled Autograd)初始 trace 中的静默错误• 修复包括 einops、dict(mapping_proxy)、FlexAttention HOP 在内的多种 tracing 错误• 修复检查点与卸载中节省内存的 unpack hook 语义• 修复 dataclass 默认值和 lru_cache 方法的来源问题• 修复传入无效 TORCH_LOGS 参数时的刷屏错误Inductor

• 支持 AMD Triton 配置中的特殊 kwargs• 修复在多个 Python 运行时时的 minifier• 修复 int8 GEMM 补偿 epiloguetorch.export

• 修复以下算子的追踪:aten.is_nonzero、torch.bincount()、aten.div、切片(#150104)、attn_mask、aten.to、标量张量构造• 修复 dynamic_shapes 在 kwargs 下的规范问题• 修复 unflattener 中的输入错误• 修复 functools.partial 和高阶算子的非严格跟踪• 修复 None 输入、math 模块、call_torchbind、枚举类型的序列化/反序列化问题• 修复 run_decompositions 中 state_dict 被修改的问题• 修复子类访问自定义算子错误Ahead-Of-Time Inductor (AOTI)

• 修复 AOTI 的 update_constant_buffer 问题• 修复 model_package_loader 中的内存泄漏• 当权重不存在时不在 AOTIModel 中分配• 修复常量折叠(ConstantFolding)的状态• 修复可选张量返回值的索引偏移问题• 修复 float8 min/max 打印问题线性代数前端(Linear Algebra Frontend)• 修复 LAPACK 返回工作区大小为浮点数的兼容问题• 修复 dot 和 gemv 的累积类型• 修复 torch.lobpcg 计算结果与 scipy、numpy.linalg.eig 一致性问题• 修复 ReducedPrecisionGemV 中 32 位索引溢出MPS• 修复多种算子支持问题,包括:• 输入元素 > 2**32 的一元/二元算子• 不同 dtype 的二元算子• 复数标量输入• Cholesky 分解• floor_divide 类型提升• 大输入的 index_kernel• 复数输入下的 lerp• logit 对半精度/bfloat16 输入• SDPA 内存泄漏• torch.special.entr• tri[ul]• N>1024 时的矩阵求逆• 非连续条件下的 wheretorch.nn• 修复 nn.LazyLinear 的 load_state_dict 行为ONNX• 修复 ONNX 程序可调用对象中的 bfloat16 支持• 在 IR TorchTensor 中产生正确的 bf16/f8 dtype• 在回退时保留所有旧版导出器参数• 修复 SDPA 的 4D 张量转换优化器(Optimizer)• 修复当 last_epoch > -1 时 lr_scheduler 意外调用 step() 的问题• 修复 CosineAnnealingWarmRestarts 中 T_cur 重置问题性能分析器(Profiler)• 修复 Python tracer 中空 C 调用队列• 删除 Python tracer 中 Python 上下文的 decref• 在 CUPTI Range Profiler 模式下启用所有已配置的活动Python 前端(Python Frontend)• 修复在将 Numpy 字符串张量转换时出现的段错误• 为空张量列表添加检查• 修复 MixtureSameFamily 分布的采样验证• 修复多次创建 Wishart 或 Uniform 分布会修改第一个分布约束的错误• 正确导出 torch::utils::tensor_to_numpy 符号• 修复 torch.[con]cat[enate] 在空输入时的崩溃• 统一 torch.tensor 和 torch.ops.aten.scalar_tensor 的行为版本发布工程(Release Engineering)• 发布源码包时检出可选子模块• 修复 macOS 在 Python 3.12+ 中的多进程挂起问题• 修复在 MSVC 中使用模块的静态函数问题• 修复由 VS2022 导致的 AVX512 非法指令问题ROCm• 修复在新编译器下启用 opportunistic fastatomics 的构建错误可调算子(TunableOp)• 增加更多 TF32 支持• 修复 ScaledGEMM 的离线调优问题• 修复按行的 ScaledGEMM• 支持 ROCm 的离线调优中使用子矩阵Vulkan• 修复 Mac 上 torch.is_vulkan_available() 的检测XPU• 修复当 offset > 0 时 matmul 的精度问题• 修复 torch.xpu.is_bf16_supported 正确报告 Intel GPU 支持情况• 修复 SYCL C++ 扩展中的 AOT 编译问题性能优化Autograd(自动求导)• 改进了 autograd 流的同步性能CPU(AArch64)• 使用更高效的定义计算 ELU(0)CUDA• 提升了 cat 和 index_select 的性能Dataloader 前端• 在 SubsetRandomSampler 中通过迭代列表而不是张量来减少内存使用torch.compileInductor• 提高了 GEMM 的性能• 增加了配置选项 cpp.use_small_dequant_buffer,以便在 WOQ int4 GEMM 中使用较小的反量化缓冲区• 支持对自定义算子进行图分区• 优化了 CPU 上并行归约的启发式策略torch.export• 缓存未展开的图模块JIT(即时编译)• 改进了大型计算图的无用代码消除(DCE)编译时间线性代数前端• 为 torch.dot 在 float16/bfloat16 类型下引入了快速路径MPS(Metal Performance Shaders)• 提升了 LayerNorm、mm / bmm、sum / prod 归约、算术运算、二元内核、SDPA、linear 以及 cumsum / cumprod 的性能Python 前端• 优化了 SVE 嵌入的性能• 提升了 torch.tensordot 在缩约为标量时的性能ROCm• 提升了 softmax、NLLLoss、就地加法求和、最大池化反向 / 归约(NHWC 格式输入)、最大池化、多维归约以及非向量化逐元素内核的性能• 提升 MI250X 上 scatter add 的性能• 将向量化逐元素内核扩展到更多异构张量类型• 使用 HipSparseLT 进一步加速半结构化(如 2:4)稀疏计算稀疏前端• 当从外部存储加载稀疏张量时,跳过稀疏张量的不变性验证XPU(Intel GPU)• 为 oneDNN 卷积启用后处理融合• 通过消除无意义 API 调用减少 Intel GPU 的主机端开销• 为 Intel GPU 优化 INT4 WOQ GEMM,引入缓存机制进一步减少 oneDNN 集成开销• 改进在 addmm、baddmm 中标量张量的处理,降低 Intel GPU 上 oneDNN 集成的额外开销文档(Documentation)Autograd• 在关于扩展 autograd 的说明中,增加了更多细节,解释了 ctx.save_for_backward 为什么重要• 更新了 torch.autograd.graph.saved_tensors_hooks 的文档,避免引用循环(refcycle)• 更新了 torch.amin 和 torch.amax 的梯度行为说明CUDA• 修复了文档中已弃用的 AMP API• 在正确的模块中记录了设备内存 API• 添加了关于 非 PyTorch CUDA 内存分配 及如何查询的方法文档分布式(Distributed)c10d• 记录了 对象集合(object collectives) 的限制• 更新了 NCCLConfig 文档,增加了 QOS 变量• 记录了 get_default_backend_for_deviceFullyShardedDataParallel2 (FSDP2)• 更新了 ignored_params 的文档字符串并增加了单元测试• 添加了指向 torchtitan 的参考• 在 world size = 1 时添加了关于梯度结果不正确的警告torch.export• 添加了 溯源(provenance)跟踪 的迷你教程• 更新了 Dims 和 ExportGraphSignature 的文档线性代数前端(Linear Algebra Frontend)• 解决了文档中关于 torch.linalg.norm() 的 ord 参数值为 +2 和 -2 的歧义torch.nn• 改进了关于 Transformer 相关层、nn.RNN、nn.functional 损失函数、interpolate 饱和类型转换行为、ConvTranspose2d 的 stride / output_size 参数 以及 register_full_backward_hook 的文档• 修正了 nn.Sequential 和 nn.LazyModuleMixin 的示例• 在 nn.modules.padding 和 AvgPoolND 中记录了 padding 大小的限制ONNX• 将 .rst 文档文件转换为 Markdown• 改进了 ONNX 符号操作(symbolic ops) 的文档字符串• 为注意力(attention)操作的符号函数添加了注释• 添加了 ONNX Dynamo 元数据 文档优化器(Optimizer)• 添加了用于生成学习率调度器(LRScheduler)曲线的脚本• 在优化器的 capturable 参数文档中加入了其他加速器的信息• 更新了 SGD 的文档,使其与实现一致,并说明 SGD 第一步会跳过 dampening• 修正了 CosineAnnealingLR 文档,使其准确反映递归学习率调度• 修正了 Adafactor 文档中作者引用错误• 添加了关于在 lr_scheduler 中使用 load_state_dict 时调用顺序的提示Python 前端(Python Frontend)• 使 torch.Library 的 kind 无默认值,以与代码保持一致• 添加了 32 位复数类型(complex)的 dtype 说明• 明确了 当整数 dtype 与 requires_grad=True 一起使用 在 tensor.to() 中的行为• 优化了 cdist 参数描述• 更新了序列化(serialization)文档• 修复示例中的 Example: 显示为 Example:: 错误• 在文档中指出 将 inf 转换为 int 是未定义行为• 更新了 as_strided() 的文档• 修复 keepdim 参数的可选性描述• 明确 torch.trapezoid 中 x 和 dx 参数互斥• 记录了 GEMM 运算的 out_dtype 参数• 修正了 torch.min()、torch.max()、torch.all()、torch.any() 的基本说明• 添加了 torch.triu_indices、torch.tril_indices 的 dtype 描述• 优化了 torch.equal 的描述量化(Quantization)• 修正了 prepare_qat_fx 文档中 get_default_qat_qconfig 错误发布工程(Release Engineering)• 迁移到新主题XPU• 改进了 Intel GPU 入门 文档中的硬件要求与注意事项Developers(开发者更新)Distributed(分布式)• 为 uniqueID 的广播和全收集(allgather)添加了参数记录功能• 为 PGNCCL 增加了日志配置和更多日志内容,例如 nccl_version 以及线程名称/ID,以便飞行记录(flight record)• 在为 DumpPipe 解除链接并创建命名管道时,暴露错误类型• 改进了 tcpstore 远程关闭时的日志• 在 new_subgroups() 中,当世界大小不可整除时增强错误日志记录• 为所有 NCCL 集合(collectives)添加了完成时的耗时日志记录器• 更新了 get_backend() 错误信息,增加更多细节FullyShardedDataParallel (FSDP1)• 调试 FlatParamHandle 时打印完整限定名称(FQN)FullyShardedDataParallel2 (FSDP2)• 添加 FSDP2 日志记录RPC• 正确地将 rpc_init 中抛出的异常传递给 CPythontorchelastic• 添加 torch elastic workers 启动的日志记录• 将事件日志处理器传递给函数调用记录器• 为 torch.distributed.run 添加选项,用于提供事件日志的存储位置torch.export• 添加 TracingContext• Monkeypatch 模拟模式(fake mode),在自定义无效操作时报错• 修复 torch.export 文档中的 preserve_module_call_signature 描述• 改进反序列化自定义 triton 运算符时的错误信息• 改进 lift_constants_pass 的类型注解• 修复 detect_attr_assignment 中的 bugAhead-Of-Time Inductor (AOTI)• 为 Intel GPU 重构 AOTInductor 运行时 API• 改进稳定库 API• 添加基础 shim 和 stable::Tensor is_contiguous APIFX• 当块模式(block mode)中没有差异时,优雅地退出 minimizerOptimizer• 改进优化器子类的装饰器类型• 优化 lr_scheduler.py 中的类型注解• 修复 step() 默认值的类型提示Release Engineering(发布工程)• 在 CI/CD 中添加对 CUDA 12.9 的支持• 在 CI/CD 中添加对 ROCm 6.4 的支持• 将 CI 从 Ubuntu 20.04 镜像迁移至 Ubuntu 22.04 和 24.04• 将 CI 迁移至 CUDA 12.8• 在 CI 中启用 MI300 测试• 在 CI 中启用 H100 测试• 启用 Windows Arm64 的 CD(持续交付)• 在 CI/CD 中启用二进制 Docker 构建测试• 添加冒烟测试(smoke test)以验证 PyPI 包中的 NCCL 和 cuDNN 版本• 改进 macOS 上的基准测试与性能测试• 在 Mac 测试中使用 setup-python• 在 CI/CD 中移除对 CUDA 11.8 和 12.4 的支持• 在 CI/CD 中移除对 Anaconda 的支持总结PyTorch 2.8.0 在推理性能、编译优化和分布式训练等方面带来了多项重要更新。开发者需注意部分向后不兼容的变更,并及时调整代码逻辑。建议在升级前充分测试现有代码,确保兼容性和稳定性。

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。

欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

🎈 相关推荐

方舟生存进化手游巨型袋鼠吃什么 方舟生存进化手游巨型袋鼠介绍
王者荣耀宫本武藏为什么被削弱 策划爆出原因
🏷️ 365dni是什么

王者荣耀宫本武藏为什么被削弱 策划爆出原因

📅 06-30 👀 6064
怎样才能进剧组进剧组的途径
🏷️ 中爱365APP

怎样才能进剧组进剧组的途径

📅 07-08 👀 1768
其实,我们被考研假骗了好久......
🏷️ 中爱365APP

其实,我们被考研假骗了好久......

📅 07-18 👀 5534
自制年糕(糯米粉、粘米粉版)
🏷️ 中爱365APP

自制年糕(糯米粉、粘米粉版)

📅 08-03 👀 1688
就决定是你了!《流放之路》全新赛季开启猎魔玩法
🏷️ 谁有365bet网址

就决定是你了!《流放之路》全新赛季开启猎魔玩法

📅 08-21 👀 3068