Torch-MUSA
简介
MUSA 概述
MUSA (Metaverse Unified System Architecture) 是摩尔线程公司为摩尔线程 GPU 推出的一种通用并行计算平台和编程模型。它提供了 GPU 编程的简易接口,用 MUSA 编程可以构建基于 GPU 计算的应用程序,利用 GPU 的并行计算引擎来更加高效地解决比较复杂的计算难题。同时摩尔线程还推出了 MUSA 工具箱(MUSA Toolkits),工具箱中包括 GPU 加速库、运行时库、编译器、调试和优化工具等。MUSA Toolkits 为开发人员在摩尔线程 GPU 上开发和部署高性能异构计算程序提供软件环境。
更多详情,参见 MUSA 官方文档。
PyTorch 概述
PyTorch 是一款开源的深度学习编程框架,可以用于计算机视觉,自然语言处理,语音处理等领域。 PyTorch 使用动态计算,这在构建复杂架构时提供了更大的灵活性。PyTorch 使用核心 Python 概念,如 类、结构和条件循环,因此理解起来更直观,编程更容易。此外,PyTorch 还具有可以轻松扩展、快速实现、生产部署稳定性强等优点。
更多详情,参见 PyTorch 官方文档。
torch_musa 概述
为了摩尔线程 GPU 能支持开源框架 PyTorch,摩尔线程公司开发了 torch_musa。在 PyTorch
v2.0.0 基础上,torch_musa 以插件的形式来支持摩尔线程 GPU,最大程度与 PyTorch 代码解耦,便于代码维护与升级。torch_musa 利用 PyTorch 提供的第三方后端扩展接口,将摩尔线程高性能计算库动态注册到 PyTorch 上,从而使得 PyTorch 框架能够利用摩尔线程显卡的高性能计算单元。利用摩尔线程显卡 CUDA 兼容的特性,torch_musa 内部引入了 cuda 兼容模块,使 PyTorch 社区的 CUDA
kernels 经过 porting 后可运行在摩尔线程显卡上,而且 CUDA
Porting 的工作是在编译 torch_musa 的过程中自动进行,这大幅降低了 torch_musa 算子适配的成本,提高模型开发效率。同时,torch_musa 在 Python 前端接口与 PyTorch 社区 CUDA 接口形式上基本保持一致,这极大地降低了用户的学习成本和模型的迁移成本。
本手册主要介绍了基于 MUSA 软件栈的 torch_musa 开发指南。
torch_musa 核心代码目录概述
-
torch_musa/tests测试文件。 -
torch_musa/core主要包含 Python module,提供 amp/device/memory/stream/event 等模块的 Python 前端接口。 -
torch_musa/csrcC++ 侧实现代码;-
csrc/amp提供混合精度模块的 C++ 实现。 -
csrc/aten提供 C++ Tensor 库,包括MUDNN算子适配、CUDA-Porting算子适配等。 -
csrc/core提供核心功能库,包括设备管理、内存分配管理、Stream 管理、Events 管理等。 -
csrc/distributed提供分布式模块的 C++ 实现。
-
m1000_gpu_model_zoo 模型仓库
m1000_gpu_model_zoo旨在演示如何基于 torch_musa 在 MTGPU 进行模型推理加速,帮助开发者在 MTGPU 上快速落地各种 AI 模型推理服务。
环境准备与部署
步骤 1:环境确认
确认操作系统版本
AIOS 1.4.1
确认 musa 和 musa-sdk 版本
musa 5.1.0
musa-sdk 5.1.0
可通过以下指令获得,关注 Version 字段
dpkg -s musa
dpkg -s musa-sdk
步骤 2:驱动更新
执行前提:只有在步骤 1 中检查发现 musa 或 musa-sdk 版本不符合要求时,才需要执行本步骤。如果版本已正确,请跳过步骤 2,直接进入步骤 3。
安装包下载、安装命令和安装验证流程,请参考 MUSA 安装。
步骤 3:安装 torch、torch_musa、triton
安装脚本:
pip install ./torch-<package_version>.whl
pip install ./torch_musa-<package_version>.whl
pip install triton-<package_version>.whl
步骤 4:环境验证
python3 -c "import torch;import torch_musa;print(torch.musa.is_available())"
输出 True 证明 torch_musa 环境安装正确。
可能出现的问题:
输出 mudnn.so 找不到
执行:
export PATH=/usr/local/musa/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/musa/lib:${LD_LIBRARY_PATH}
输出 Error in cpuinfo: prctl(PR_SVE_GET_VL) failed
torch_musa 2.7 之前会存在该问题,不影响使用。
NumPy 报错,如 Failed to initialize NumPy 或者
numpy ModuleNotFoundError: No module named 'numpy'
执行 pip3 install numpy==1.26.4
报错 ImportError: libmccl.so.2: cannot open shared object file: No such file or directory
mccl 库在最新的 musa-sdk 中已经包含,请参考 MUSA 安装,更新 musa-sdk。
报错 MUSA driver initialization failed
设备需要连接显示器,输入用户名密码进入桌面。如果没有安全需求,推荐在"设置"->"用户"界面设置为自动登录。