11月28日消息,摩尔线程正式推出PyTorch深度学习框架的最新版MUSA扩展库——Torch-MUSA v2.7.0,该版本在功能整合、性能提升以及硬件适配方面均取得了新的进展。
值得一提的是,在短短一个月内,Torch-MUSA就连续完成了v2.5.0、v2.7.0两次版本更新。
另一个变化是,从v2.5.0版本开始,Torch-MUSA的版本号将与PyTorch主版本号保持同步,这样能让开发者更方便地进行版本识别和管理。
v2.7.0版本进一步集成了muSolver、muFFT等计算加速库,显著提升复杂计算任务的执行效率;
新增支持统一内存设备(Unified Memory)的UMM,有效优化内存使用效率。
继续保持与最新MUSA SDK的兼容性,支持使用MUSA SDK 4.2.0至4.3.0及更高版本进行编译。
目前,Torch-MUSA专属支持的算子数量已突破1050个,系统在性能与稳定性上均取得了进一步优化,为大模型的训练和推理工作提供了更为高效、可靠的底层技术支撑。
下一次版本更新将推出v2.9.0,我们会进一步优化性能与功能,持续建设并完善基于MUSA架构的国产全功能GPU深度学习生态。
▼ Torch-MUSA开源地址:
https://github.com/MooreThreads/torch_musa
v2.7.0版本主要更新内容
新增特性
▼ 动态双精度转换(Dynamic Double Cast)
用户能够通过设置环境变量export TORCH_USE_MUSA_DOUBLE_CAST=1,来启用Float64数据类型算子的动态转换功能,此时torch_musa会采用float32作为计算数据类型。
▼ 分布式检查点(Distributed Checkpoint)
支持从多个rank并行加载和保存模型,显著加速检查点的保存与加载过程。目前已支持分布式检查点的异步保存功能。
功能增强
▼ 新添加了Poisson、binomial、_standard_gamma、_sample_dirichlet、vdot、upsample(含1d、2d、3d及aa模式)、flash_attention、transformer_encoder_layer等一众实用算子,MUSA专属支持的算子总量已超过1050个。
▼ 通过升级PyTorch底层支持,torch.compile与AOTInductor功能进一步增强;
▼ 默认启用TF32计算模式,提升浮点运算效率;
▼ 优化性能分析工具Kineto的稳定性,并将其适配版本升级至2.7.0;
▼ 继续优化FSDP2流水线并行策略,进一步降低内存占用。
v2.5.0版本主要更新内容
新增特性
▼ 新增muFFT与muSolver库集成,大幅扩展计算能力;
在面向边缘计算的SoC设备中,我们引入了统一内存管理机制。该机制依托Arm架构的UMA(统一内存寻址)设计思路,让GPU与CPU能够共用同一块物理内存区域,从而大幅削减模型运行时的内存消耗。具体体现在以下几个方面:
消除GPU端重复内存分配;
减少主机与设备间的内存拷贝;
GPU可直接访问由CPU分配器申请的内存空间。
算子扩展与性能优化
▼ 新增支持的算子包括ilshift、irshift、replication_pad1d_bwd、angle、ctcLossTensor、ctcLossTensorBwd、logit、amin/amax/prod.dim_int、glu_bwd等多个;
▼ 新增基础 Sparse(CSR) 操作支持;
▼ 扩充量化算子支持范围;
▼ 修复torch.norm形状错误问题;
▼ 支持reduce_sum的uint8输入与int64输出;
▼ C++扩展新增支持tensor.is_musa方法;
▼ 修复空输入下argmax/argmin的异常行为;
▼ 优化var/std、pad、convolution3d、layer_norm等操作的执行效率。
系统功能增强
▼ 开放torch.musa.mccl.version接口;
▼ 支持getCurrentMUSABlasHandle和getCurrentMUSABlasLtHandle这两个接口;
▼ 优化FSDP2流水线并行策略,降低训练内存占用。