pymtml:摩尔线程 GPU 管理库的 Python 绑定
许多 AI 推理与训练项目使用 NVIDIA 的 pynvml 来查询 GPU 设备数量、显存占用、温度、功耗等信息,或用于多卡拓扑与 P2P 检测。在摩尔线程 GPU 上,底层管理库是 MTML(Moore Threads Management Library),对应 C 库为 libmtml.so。pymtml 是 MTML 的 Python 绑定,不仅封装了全部原生 MTML API,还提供 pynvml 兼容层:只需将 import pynvml 改为 import pymtml as pynvml,现有监控与拓扑代码即可在摩尔线程 GPU 上运行,无需修改其余逻辑。
本文基于 pymtml 的安装与使用手册,介绍其项目简介、环境与安装、快速上手、原生 API 与 NVML 兼容层、上下文管理器与错误处理,以及常见问题。
什么是 pymtml?
pymtml 是摩尔线程 GPU 管理库 (MTML) 的 Python 绑定,通过 ctypes 动态加载 libmtml.so 共享库,提供对摩尔线程 GPU 设备的监控与管理能力。项目开源在 GitHub:MooreThreads/mthreads-ml-py。
为什么需要 pymtml?
在摩尔线程 GPU 上做显存/温度/功耗监控、多卡拓扑与 P2P 检测时,若直接使用 pynvml,会依赖 NVIDIA 驱动与 NVML,无法在摩尔线程环境中工作。pymtml 一方面提供完整的 原生 MTML API,可访问设备信息、GPU/Memory/VPU 子组件、MtLink 互连、ECC、风扇、MPC、虚拟化等;另一方面提供 NVML 兼容层,使依赖 pynvml 的既有代码(如 sglang 等 AI 推理框架)只需改一行 import 即可在摩尔线程平台上运行。
核心特性
| 特性 | 说明 |
|---|---|
| 原生 MTML API | 直接封装 libmtml.so C 库函数 |
| NVML 兼容层 | 提供 pynvml 的替代接口,支持一行替换 |
| 上下文管理器 | 提供 with 语句管理 GPU/Memory/VPU 子组件生命周期 |
| 多 GPU 支持 | 支持多卡拓扑查询、P2P 状态检测、MtLink 互连检测 |
| 框架兼容 | 兼容 sglang 等 AI 推理框架的 NVML 调用 |
能力一览
| 能力 | 说明 |
|---|---|
| 库与设备 | mtmlLibraryInit / ShutDown,按索引/UUID/PCI 获取设备 |
| 设备信息 | 名称、UUID、PCI、功耗、VBIOS/MtBIOS、核心数、路径、属性 |
| GPU 监控 | 利用率、温度、时钟、各引擎(几何/2D/3D/计算)利用率 |
| 显存监控 | 总量/已用/空闲、利用率、时钟、带宽、总线宽度、类型、供应商 |
| VPU | 时钟、编解码利用率与容量 |
| 多卡 | MtLink 规格与状态、拓扑层级、P2P 读写状态 |
| 其他 | ECC、风扇、MPC、虚拟化、CPU 亲和性、日志配置 |