当前位置: 首页 > 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.rkmt.cn/news/1373520.html

相关文章:

  • 量子核函数方差分析:诊断与规避Barren Plateau的实用指南
  • 使用 vcpkg 为OpenHarmony(鸿蒙PC)构建 OpenSSH 命令行工具
  • 单硬盘 vs 双硬盘:为你的电脑量身定制Ubuntu 18.04双系统分区方案
  • 统信UOS自带的文本编辑器,比你想的强多了!手把手教你从双击到命令行的N种打开方式
  • 随记-关于当下大学生就业现状的个人感想
  • CAXA 基准代号
  • 5秒音频也能玩转AI?手把手教你用ESC-50数据集入门环境声音分类
  • CAXA 引出说明
  • ChatGPT iOS/Android双端深度对比:37项指标实测,谁才是真正的生产力神器?
  • git设置git bash命令行的默认打开位置
  • 从NASA电池的‘容量增生’说起:聊聊IC曲线分析前,数据清洗与滤波的那些事儿(附Python代码)
  • AOE 调优引擎原理与应用
  • 从Science顶刊到实战:手把手教你用10X单细胞数据做eQTL分析(附代码避坑)
  • 2026年至今,谁在引领PET瓶胚专用机的技术革新? - 2026年企业推荐榜
  • 002-AI客服-RAG优化分析
  • 麒麟服务器等保三级配置实战:从SSH双因子到kysec策略落地
  • UPS不间断电源不工作如何确定是否损坏
  • 扩散模型量化技术:AQUATIC-Diff方法解析与应用
  • 智能3D头像生成技术:模块化AI代理与多模态输入实践
  • QSqlTableModel结合Table View控件MYSQL数据增删操作
  • 保姆级教程:在Deepin V23 Beta3上彻底禁用Nouveau并安装指定版本NVIDIA驱动(附卸载残留清理指南)
  • C#零基础通关第五篇:吃透属性、继承与多态,彻底精通面向对象三大特性
  • 2026品牌认证ENF级生态板定制家居推荐指南:精材艺匠全屋定制、精材艺匠实木多层板、精材艺匠家具板、精材艺匠香杉双筋超平生态板选择指南 - 优质品牌商家
  • JavaScript——对象
  • Linux系统启动卡住了?手把手教你用systemd-analyze和dmesg诊断UEFI启动各阶段耗时
  • 2026烟台发电机出租:龙口发电机出租、威海发电机出租、日照发电机出租、枣庄发电机出租、柴油机发电机出租、泰安发电机出租选择指南 - 优质品牌商家
  • 从缺页异常看Linux内存管理精髓:写时复制、延迟分配与交换机制
  • 旧电脑别扔!用VMware虚拟机20分钟搞定FydeOS,秒变安卓/Linux双系统学习机
  • 告别跨平台烦恼:手把手教你将Mac上的APFS硬盘/U盘无损转回ExFAT(附磁盘工具分区方案详解)
  • 2026年Q2西南老小区电梯加装服务商排行:加装一台电梯多少钱、四川电梯加装、四川电梯安装公司、家用电梯加装、成都电梯加装费用选择指南 - 优质品牌商家