Page 474 - 《软件学报》2025年第8期
P. 474

王昊天 等: MTTorch: 面向  MT-3000  芯片和  Transformer 模型的  PyTorch  算子库实现与优化            3897


                 pong  algorithm  for  multi-core  DSP,  significantly  improving  the  computational  performance  of  the  operators.  MTTorch  also  has  good
                 generality  as  it  can  be  loaded  as  a  dynamic  link  library  for  different  versions  of  PyTorch  without  changing  the  native  implementation  of
                 PyTorch.  Extensive  experiments  show  that  the  core  operators  implemented  in  this  study  have  excellent  performance  on  MT-3000  chip,
                 achieving  8  times  acceleration  on  a  single  DSP  cluster.  Using  MTTorch  for  training  tasks  on  multiple  nodes  achieves  nearly  linear
                 acceleration, greatly improving the training efficiency of Transformer-based models on MT-3000 chip.
                 Key words:  PyTorch; high performance computing; Transformer model; Tianhe supercomputer; CPU+DSP heterogeneous computing; software
                         ecology

                    随着深度学习技术的发展, 深度神经网络取得了长足的进步, 模型的参数量以及训练数据也在飞速增长. 2020
                                                               [1]
                 年, OpenAI 发布的全球最大的预训练语言模型——GPT-3 参数量甚至达到了惊人的                        1 750  亿, 2022  年发布的
                        [2]
                 ChatGPT 更是把大模型提升到了全新的高度. 当前的大语言模型都是在                     Transformer 模型  [3,4] 的基础上改进而来.
                 然而, Transformer 模型的大规模训练需要巨大的计算资源. 因此, 如何合理利用已有计算设备, 尤其是国产大规模
                 计算集群, 提高计算效率成为了一个关键问题              [5,6] .
                    为了提高深度学习模型对于计算设备的利用率以及简化模型搭建流程, 让研究人员更专注于模型设计, 众多
                 知名互联网公司设计了多种机器学习框架. PyTorch              是一个基于    Python  的机器学习框架, 由    Facebook  开发并维
                 护, 其采用命令式编程, 可见及所得, 接口相对比较统一, 使得用户能够更加灵活地构建和训练深度学习模型. 同
                 时, PyTorch  还提供了丰富的工具包和       API, 使得用户能够轻松地进行数据处理、性能分析和调试等操作, 因而在
                 工业界和学术界都得到了广泛的运用. 然而, 当前                PyTorch  官方只支持   CUDA (compute unified device arch-
                 itecture) 和 [7]  ROCm (radeon open compute) (https://rocmdocs.amd.com/en/latest/), 故而只能使用英伟达和  AMD  生产
                 的  GPGPU  进行计算, 导致众多异构计算集群无法高效运行               PyTorch  任务, 令其在人工智能领域的巨大潜力难以
                 发挥.
                    出于能源和功耗方面的考虑, 最先进的高性能计算平台往往采用低功耗嵌入式架构, 如数字信号处理器
                                               [8]
                 (digital signal processor, DSP). MT-3000 是国防科技大学研发的一款用于高性能计算的异构多区域处理器, 搭载
                 了  4  个  DSP  簇. 与  CPU、GPU  和  TPU  等设备不同, MT-3000  采用超长指令集 (very long instruction word, VLIW)
                 和加速阵列微架构, 每个加速器核心以            VLIW  的方式工作, 每   16  个加速器核心和一个控制核心被组织成一个加速
                                                                          [9]
                 阵列. 同时其也集成了直接存储器取存引擎 (direct memory access, DMA)  用于内存操作. 基于              MT-3000  搭建的
                 天河新一代超算系统       [10] 在高性能计算和深度学习领域都有着巨大的潜能. 同时, MT-3000              具备了完整的编程工具
                 链和向量    C  语言支持, 使得用户可以在       C  语言层面充分利用      VLIW  和加速阵列微体系架构的组合潜力. 研究表
                 明, 只有软件能够充分利用硬件特性, 加速器才能释放其潜力                  [11,12] . 因此, 面向新一代  DSP  加速设备开发  PyTorch
                 支持是利用众多高性能计算平台进行模型训练的必要一步.
                    本文面向    MT-3000  芯片的体系架构特点, 实现了一个         PyTorch  的扩展库——MTTorch. 由于    PyTorch  中包含
                 的算子数量庞大, 结合训练大语言模型的需求, 本文聚焦于                 Transformer 类模型, 对模型训练过程中的       15  个核心算
                 子在  CPU+DSP  异构环境下进行精心优化.
                    本文的创新点和贡献如下.
                    (1) 提出并实现了面向      MT-3000  异构加速器的    PyTorch  扩展库——MTTorch. 结合    MT-3000  的体系结构特
                 点, MTTorch  对  Transformer 类模型训练中的核心算子进行了实现和并行优化, 为新一代天河超算支持大模型训练
                 打下了坚实的基础.
                    (2) 针对  MT-3000  体系结构的特点, 提出了面向多核 DSP 的高性能规约算法; 利用核内                 DMA  和计算部件异
                 步执行特性设计了乒乓算法. 基于上述优化策略, 并结合 DSP 上的向量寄存器特性, 有效提升了计算效率.
                    (3) 设计实现了面向     DSP  的设备管理模块以及线程组管理模块, 基于单例模式有效避免了                    DSP  簇重复启闭造
                 成的额外开销.
                    (4) 通过一系列实验, 验证了 MTTorch 所优化实现的算子均能正确运行, 并且获得了 2–8 倍的性能提升. 同时,
                 基于 MTTorch 的大模型训练任务展现出了接近线性的加速比.
   469   470   471   472   473   474   475   476   477   478   479