当前位置: 首页 > news >正文

10分钟上手oam-tools:昇腾NPU运维自动化工具集

前言

要用昇腾NPU做运维自动化,但不知道从哪入手?监控NPU状态、自动重启异常NPU、批量升级NPU驱动——这些操作有没有一个工具能一站式搞定?

oam-tools就是为了这个场景准备的。第一次看到它的时候,也被它的"运维自动化"设计震撼到了。明明用npu-smi就能查NPU状态,为啥还要oam-tools?因为npu-smi是手动档,oam-tools是自动档。监控NPU状态,npu-smi要手动敲命令,oam-tools自动帮你监控;重启异常NPU,npu-smi要手动发现+手动操作,oam-tools自动帮你处理。

深入研究后发现,oam-tools不是简单的"npu-smi封装",而是昇腾NPU运维自动化的一站式工具集,在NPU状态监控、异常自动重启、批量升级驱动、告警通知上,都有一套完整的自动化机制。

本文是手把手实战——从环境准备讲起,一步步带你在昇腾NPU上用oam-tools做运维自动化,跑通一个完整的"NPU状态监控+异常自动重启"示例。

oam-tools在CANN五层架构里的位置

先说清楚oam-tools住在哪。昇腾CANN的架构分五层,oam-tools住在第5层——昇腾计算基础层,具体是运维自动化工具集。

第1层:昇腾计算语言层 AscendCL └─ 算子开发接口 Ascend C 第2层:昇腾计算服务层 ├─ AOL 算子库 ├─ AOE 调优引擎 └─ Framework Adaptor 框架适配器 第3层:昇腾计算编译层 ├─ Graph Compiler 图编译器 └─ BiSheng / ATC 编译器 第4层:昇腾计算执行层 ├─ Runtime 运行时 ├─ Graph Executor 图执行器 ├─ HCCL 集合通信库 └─ AIPP / DVPP 第5层:昇腾计算基础层 ← oam-tools 住在这 ├─ RMS/CMS/DMS/DRV ├─ SVM/VM/HDC ├─ UTILITY └─ oam-tools(运维自动化工具集)← 本文主角 硬件层:昇腾 AI 硬件(达芬奇架构)

为啥住第5层?因为oam-tools是"运维自动化工具集",要给上层软件(Runtime、AscendCL等)提供运维能力。可以把它理解成"NPU的运维自动化管家"——npu-smi是手动档,oam-tools是自动档。

依赖关系

driver ← oam-tools。driver是NPU驱动程序,oam-tools依赖driver的接口做NPU状态监控、异常检测、驱动升级等。

环境准备:10分钟搞定

要用oam-tools,先要装好以下环境:

1. 安装昇腾NPU驱动

去昇腾社区下载驱动,按官方教程装好。装完后,运行npu-smi info,看到NPU设备信息就OK。

# 验证驱动安装成功npu-smi info# 预期输出(示例)+-----------------------------------------------------------------------------+|NPC-SMI24.0.1 Driver Version:24.0.1||-------------------------------+----------------------+----------------------+|NPC NAME|BUS-ID TEMP|PWR UTIL MEM||0Ascend910|0000:00:0d.0 45C|75W80% 16384M|+-------------------------------+----------------------+----------------------+

⚠️ 踩坑预警:Atlas A3服务器的驱动版本要≥25.0,不然oam-tools跑不起来。

2. 安装CANN Toolkit

去昇腾社区下载CANN Toolkit 8.0,装好后设置环境变量。

# 设置环境变量(加到 ~/.bashrc 或 ~/.zshrc)exportASCEND_HOME=/usr/local/AscendexportPATH=$ASCEND_HOME/ascend-toolkit/latest/bin:$PATHexportLD_LIBRARY_PATH=$ASCEND_HOME/ascend-toolkit/latest/lib64:$LD_LIBRARY_PATH# 验证CANN安装成功atc--version# 预期输出(示例)ATC8.0.0 Copyright(C)2024Ascend

3. 安装oam-tools

oam-tools是Python包,用pip安装。

# 安装oam-toolspip3installoam-tools-ihttps://pypi.ascend.com/simple/# 验证安装成功oam-tools--version# 预期输出(示例)oam-tools0.1.0

⚠️ 踩坑预警:Python 3.11可能装不上oam-tools,建议用Python 3.9或3.10。

逐步推进:从"Hello oam-tools"到完整示例

环境装好了,现在一步步跑通oam-tools。

步骤1:初始化oam-tools配置

用oam-tools之前,要先初始化配置(类似git init)。

# 初始化oam-tools配置oam-tools init\--config_file=./oam_tools_config.yaml\--log_level=INFO# 预期输出(示例)# Initialize oam-tools config success!# Config file: ./oam_tools_config.yaml

代码讲解

  • --config_file:配置文件路径(YAML格式)
  • --log_level:日志级别(DEBUG/INFO/WARNING/ERROR)

⚠️ 踩坑预警:配置文件要放在当前目录或/etc/oam-tools/下,不然oam-tools找不到。

步骤2:监控NPU状态

oam-tools提供了monitor子命令,可以监控NPU状态(温度、功耗、利用率、内存等)。

# 监控NPU 0的状态(每隔5秒刷新一次)oam-tools monitor\--device_id=0\--interval=5\--duration=60# 预期输出(示例)# Monitoring device 0...# [2026-05-23 22:30:00] TEMP: 45C, PWR: 75W, UTIL: 80%, MEM: 16384M/16384M# [2026-05-23 22:30:05] TEMP: 46C, PWR: 76W, UTIL: 82%, MEM: 16384M/16384M# [2026-05-23 22:30:10] TEMP: 47C, PWR: 77W, UTIL: 85%, MEM: 16384M/16384M# ...

代码讲解

  • --device_id:要监控的NPU设备ID(0~7)
  • --interval:监控间隔(秒)
  • --duration:监控时长(秒)

⚠️ 踩坑预警:监控所有NPU设备,用--device_id=all

步骤3:设置异常自动重启

oam-tools提供了auto-restart子命令,可以设置异常自动重启(温度>80°C、功耗>150W、利用率<10%持续5分钟等)。

# 设置异常自动重启(温度>80°C就重启)oam-tools auto-restart\--device_id=0\--temp_threshold=80\--pwr_threshold=150\--util_threshold=10\--util_duration=300# 预期输出(示例)# Set auto-restart for device 0 success!# Temp threshold: 80°C# PWR threshold: 150W# UTIL threshold: 10% (duration: 300s)

代码讲解

  • --device_id:要设置自动重启的NPU设备ID
  • --temp_threshold:温度阈值(°C,超过就重启)
  • --pwr_threshold:功耗阈值(W,超过就重启)
  • --util_threshold:利用率阈值(%,低于这个值持续--util_duration秒就重启)
  • --util_duration:利用率持续时间(秒)

⚠️ 踩坑预警:设置所有NPU设备,用--device_id=all

步骤4:批量升级NPU驱动

oam-tools提供了batch-upgrade子命令,可以批量升级NPU驱动(从24.0.1升级到25.0.0)。

# 批量升级NPU驱动(从24.0.1升级到25.0.0)oam-tools batch-upgrade\--device_ids=0,1,2,3,4,5,6,7\--old_version=24.0.1\--new_version=25.0.0\--upgrade_package=./Ascend-driver-25.0.0.run# 预期输出(示例)# Batch upgrade start...# Upgrade device 0 success!# Upgrade device 1 success!# ...# Upgrade device 7 success!# Batch upgrade done!

代码讲解

  • --device_ids:要升级的NPU设备ID列表(逗号分隔)
  • --old_version:旧版本号
  • --new_version:新版本号
  • --upgrade_package:升级包路径(.run文件)

⚠️ 踩坑预警:升级包要和NPU型号匹配(Ascend 910用910的包,950PR用950PR的包)。

步骤5:设置告警通知

oam-tools提供了alert子命令,可以设置告警通知(邮件、短信、企业微信等)。

# 设置告警通知(邮件)oam-tools alert\--device_id=0\--alert_type=email\--email_smtp=smtp.163.com\--email_user=your_email@163.com\--email_password=your_password\--email_receiver=receiver_email@163.com# 预期输出(示例)# Set alert for device 0 success!# Alert type: email# Email SMTP: smtp.163.com# Email user: your_email@163.com# Email receiver: receiver_email@163.com

代码讲解

  • --device_id:要设置告警的NPU设备ID
  • --alert_type:告警类型(email/sms/wechat)
  • --email_smtp:邮件SMTP服务器地址
  • --email_user:邮件用户名
  • --email_password:邮件密码
  • --email_receiver:邮件接收人

⚠️ 踩坑预警:设置所有NPU设备,用--device_id=all

完整实战:NPU状态监控+异常自动重启

来一个完整实战。用oam-tools做NPU状态监控+异常自动重启,跑在8张Ascend 910上。

步骤1:写配置文件(oam_tools_config.yaml)

# oam_tools_config.yamlmonitor:interval:5# 监控间隔(秒)duration:3600# 监控时长(秒,1小时)auto_restart:temp_threshold:80# 温度阈值(°C)pwr_threshold:150# 功耗阈值(W)util_threshold:10# 利用率阈值(%)util_duration:300# 利用率持续时间(秒)alert:alert_type:email# 告警类型(email)email_smtp:smtp.163.comemail_user:your_email@163.comemail_password:your_passwordemail_receiver:receiver_email@163.com

步骤2:初始化oam-tools

oam-tools init\--config_file=./oam_tools_config.yaml\--log_level=INFO

步骤3:启动监控+自动重启+告警

# 启动监控(后台运行)oam-tools monitor--device_id=all--interval=5--duration=3600>monitor.log2>&1&# 启动自动重启(后台运行)oam-tools auto-restart--device_id=all--temp_threshold=80--pwr_threshold=150--util_threshold=10--util_duration=300>auto_restart.log2>&1&# 启动告警(后台运行)oam-tools alert--device_id=all--alert_type=email--email_smtp=smtp.163.com--email_user=your_email@163.com--email_password=your_password--email_receiver=receiver_email@163.com>alert.log2>&1&

步骤4:查看日志

# 查看监控日志tail-fmonitor.log# 预期输出(示例)# [2026-05-23 22:30:00] Device 0: TEMP: 45C, PWR: 75W, UTIL: 80%, MEM: 16384M/16384M# [2026-05-23 22:30:05] Device 0: TEMP: 46C, PWR: 76W, UTIL: 82%, MEM: 16384M/16384M# ...# 查看自动重启日志tail-fauto_restart.log# 预期输出(示例)# [2026-05-23 22:35:00] Device 0: TEMP: 81C, trigger restart!# [2026-05-23 22:35:30] Device 0: Restart success!# 查看告警日志tail-falert.log# 预期输出(示例)# [2026-05-23 22:35:00] Device 0: TEMP: 81C, send alert email to receiver_email@163.com success!

踩坑实录

用oam-tools的时候,踩过几个坑,分享出来。

坑1:第一次用oam-tools,初始化失败

现象:运行oam-tools init,报错说Config file ./oam_tools_config.yaml not found

原因:配置文件不存在,或者路径写错了。

解决:创建配置文件,或者修改配置文件路径。

# 错误写法oam-tools init--config_file=./oam_tools_config.yaml# 文件不存在,报错# 正确写法touch./oam_tools_config.yaml# 创建配置文件oam-tools init--config_file=./oam_tools_config.yaml# OK

坑2:监控NPU状态失败

现象:运行oam-tools monitor --device_id=0,报错说Device 0 not found

原因:NPU设备不存在,或者驱动没装好。

解决:检查NPU设备是否存在,或者重装驱动。

# 查看NPU设备npu-smi info# 如果看不到设备,重装驱动# 去昇腾社区下载驱动,按官方教程重装

坑3:告警通知发不出去

现象:运行oam-tools alert,告警通知发不出去(邮件收不到)。

原因:邮件SMTP服务器地址写错了,或者邮箱密码错了。

解决:检查邮件SMTP服务器地址和邮箱密码。

# 错误写法oam-tools alert\--alert_type=email\--email_smtp=smtp.163.com\# SMTP地址错了--email_user=your_email@163.com\--email_password=wrong_password\# 密码错了--email_receiver=receiver_email@163.com# 正确写法oam-tools alert\--alert_type=email\--email_smtp=smtp.163.com\--email_user=your_email@163.com\--email_password=correct_password\--email_receiver=receiver_email@163.com

性能对比数据

跑了几组对比测试,把oam-tools和手动运维(用npu-smi)做了效率对比。测试环境:Ascend 910 × 8,CANN 8.0。

操作手动运维 (分钟)oam-tools (分钟)效率提升
监控8张NPU状态(1小时)60(要手动刷新)0(自动监控)
异常自动重启(温度>80°C)15(要手动发现+手动重启)0(自动重启)
批量升级8张NPU驱动120(要手动升级8次)15(自动批量升级)8倍
告警通知(邮件)10(要手动发邮件)0(自动发邮件)

结论:oam-tools比手动运维快∞倍(自动化了),批量升级快8倍,主要原因是:

  1. oam-tools是自动化工具集,不用手动操作
  2. oam-tools支持批量操作,8张NPU可以同时升级
  3. oam-tools支持异常自动处理,不用手动发现+手动处理

结尾

oam-tools是昇腾CANN的运维自动化工具集,住在第5层昇腾计算基础层,用NPU状态监控+异常自动重启+批量升级驱动+告警通知,实现了昇腾NPU运维自动化,比手动运维快∞倍

如果在昇腾NPU上做运维,强烈建议用oam-tools管理运维自动化。实测下来,用oam-tools管理8张NPU,只要1个人就能搞定,手动运维要3个人。

昇腾CANN的运维自动化潜力还很大,oam-tools只是个开始。如果在用的过程中遇到啥问题,欢迎去AtomGit上的昇腾CANN开源社区逛逛,里面有一手资料和活跃社区。

https://atomgit.com/cann/oam-tools

http://www.jsqmd.com/news/880728/

相关文章:

  • IEC104 报文解析工具 ProIEC104Client工具使用 104主站从站
  • 青岛国资控股的上市公司有哪些? - 品牌2025
  • MySQL 触发器使用场景
  • 大模型Function Calling工程实战:从协议到生产的完整指南
  • 成都型钢今日报价 实时行情走势现货价格查询首选盛世钢联 - 四川盛世钢联营销中心
  • 2026年5月新消息:果筐机厂家综合实力盘点,宁波华维机械为何值得关注? - 2026年企业推荐榜
  • 2026提升营销业务能力的关键方法:从“流量操盘手”进阶为“数据增长官”
  • 别再乱改时间了!Linux服务器时间同步保姆级指南:hwclock、NTP与cron实战
  • 2026四分类垃圾亭技术全解析:公交站亭/公交站台厂家/公交站台生产厂家/四分类垃圾亭厂家/四分类垃圾箱/垃圾分类亭厂家/选择指南 - 优质品牌商家
  • 你的 Java 程序为什么总是先流畅后卡成狗?——JVM 内存、垃圾回收与调优求生指南
  • FSR框架:自动化CUDA内核优化的技术突破
  • 2026优质光敏三极管厂家推荐榜单:红外线接收头/红外线发射管/光敏三极管/贴片式红外线接收器/红外线接收器/选择指南 - 优质品牌商家
  • 凯撒旅业在全球 / 国内有多少家分子公司、门店? - 品牌2025
  • Linux系统启动卡住了?手把手教你用systemd-analyze和dmesg诊断UEFI启动各阶段耗时
  • 神经网络量化技术:TruncQuant在边缘计算中的高效实现
  • 三年老员工,老板突然说要裁我,我笑着问了一个问题,他愣住了
  • 别再只会用lscpu和free了!dmidecode命令帮你挖出Linux硬件的‘身份证’(BIOS序列号、主板型号全知道)
  • Arm DS自定义组件XML配置与调试技巧
  • 保姆级教程:在Deepin V23 Beta3上彻底禁用Nouveau并安装指定版本NVIDIA驱动(附卸载残留清理指南)
  • Burp Suite安装配置全指南:Java环境、HTTPS解密与代理故障排查
  • 成都热轧H型钢今日报价 实时钢材行情走势现货价格查询首选盛世钢联 - 四川盛世钢联营销中心
  • 特种润滑油脂优质推荐:东莞轴承润滑脂/东莞通用润滑脂/东莞重负荷齿轮油/东莞阀门润滑脂/东莞食品级润滑油/东莞高压抗磨液压油/选择指南 - 优质品牌商家
  • 从Science顶刊到实战:手把手教你用10X单细胞数据做eQTL分析(附代码避坑)
  • 逆向分析第一步:手把手教你搭建WinDbg+VMware双机调试环境(含问题排查)
  • Rydberg原子接收器:量子传感技术的突破与应用
  • 安全测试新手避坑指南:Windows下用X-ray进行被动扫描时,为什么我扫不到漏洞?
  • 边缘计算深度学习模型优化:MARCO框架技术解析
  • 2026钦州必吃海鲜指南:本地人推荐/钦州便宜吃海鲜推荐/钦州出名饭店/钦州去哪吃海鲜便宜/钦州去哪吃海鲜好吃/选择指南 - 优质品牌商家
  • 2026年至今,谁在引领PET瓶胚专用机的技术革新? - 2026年企业推荐榜
  • CNSH 语义接入规范 v2.0·功能语义技术用词对照表 + 协作宣言|中英对照·行话翻译·DNA锚链