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

写给新手的 oam-tools:昇腾OAM工具到底是啥?

之前帮兄弟搞多加速器管理,他问我:“哥,我们有昇腾 NPU 和 NVIDIA GPU 混用,有没有统一的管理工具?”

我说有,oam-tools。

好问题。今天一次说清楚。

oam-tools 是啥?

oam-tools = OAM Tools,昇腾的OAM(Open Accelerator Model)工具集。OAM 是开放加速器模型标准,统一了加速器的监控、管理、固件升级接口。

一句话说清楚:oam-tools 是昇腾对 OAM 标准的实现工具集,你想监控 NPU 温度、管理 NPU 固件、统一管理和 GPU 混用的加速器集群,工具都给你准备好了。

你说气人不气人,之前自己写脚本监控 NPU,现在用 oam-tools 一条命令全搞定。

为什么要用 oam-tools?

三个字:统一管

不用 oam-tools(各自为战)

# 监控昇腾 NPU$ npu-smi stats# 监控 NVIDIA GPU$ nvidia-smi# 问题:# 1. 两个命令输出格式不一样# 2. 写统一监控脚本很麻烦# 3. 告警阈值要分别设置# 4. 混用集群管理复杂

用 oam-tools(统一接口)

# 安装 oam-tools$gitclone https://atomgit.com/cann/oam-tools.git $cdoam-tools $bashinstall.sh# 统一监控(昇腾 NPU + NVIDIA GPU)$ oam-smi stats# 输出:# =======================================# OAM Stats (Ascend NPU + NVIDIA GPU)# =======================================# Device | Type | Temp | Power | Memory | Util# -------|------|------|-------|--------|------# 0 | NPU | 65°C | 180W | 16/32GB | 85%# 1 | NPU | 67°C | 185W | 18/32GB | 87%# 2 | GPU | 72°C | 250W | 12/24GB | 92%# 3 | GPU | 70°C | 245W | 10/24GB | 90%## Alert: NPU 1 temp > 65°C (threshold: 65°C)# ========================================# 你说气人不气人,一条命令监控所有加速器。

核心概念就三个

1. OAM 标准

OAM(Open Accelerator Model)是开放加速器模型标准:

# OAM 统一接口oam-smi# 监控工具(类似 nvidia-smi)oam-fwupdate# 固件升级工具oam-diagnostics# 诊断工具

2. 工具(Tools)

每个工具一个目录:

oam-tools/ ├── tools/ │ ├── oam-smi/ # 监控工具 │ │ ├── oam-smi.py │ │ └── README.md │ │ │ ├── oam-fwupdate/ # 固件升级工具 │ │ ├── oam-fwupdate.py │ │ └── README.md │ │ │ └── oam-diagnostics/ # 诊断工具 │ ├── oam-diagnostics.py │ └── README.md │ └── examples/ # 使用示例 ├── monitor_example/ ├── fwupdate_example/ └── diagnostics_example/

3. 配置(Config)

统一配置文件:

# config/oam-config.yamldevices:-type:"ascend"ids:[0,1,2,3]thresholds:temp:65# 温度阈值(°C)power:200# 功耗阈值(W)memory:30000# 显存阈值(MB)-type:"nvidia"ids:[0,1]thresholds:temp:75power:280memory:22000monitor:interval:5# 监控间隔(秒)log_file:"/var/log/oam-stats.log"alert:truealert_script:"/path/to/alert.sh"

为什么要用 oam-tools?

三个理由:

1. 统一接口

昇腾 NPU 和 NVIDIA GPU 统一监控:

# 不用 oam-tools$ npu-smi stats# 昇腾 NPU$ nvidia-smi# NVIDIA GPU# 输出格式不一样,不好统一处理# 用 oam-tools$ oam-smi stats# 统一输出格式,方便处理 ✅

2. 固件管理

统一固件升级:

# 查看固件版本$ oam-fwupdate--query# 输出:# Device | Type | Current Version | Available Version | Update Available# -------|------|-----------------|-------------------|------------------# 0 | NPU | 1.2.3 | 1.2.5 | ✅# 1 | NPU | 1.2.3 | 1.2.5 | ✅# 2 | GPU | 510.47.00 | 515.48.01 | ✅# 升级固件$ oam-fwupdate--update--all# 输出:# Updating device 0: 1.2.3 → 1.2.5... Done ✅# Updating device 1: 1.2.3 → 1.2.5... Done ✅# Updating device 2: 510.47.00 → 515.48.01... Done ✅

3. 诊断工具

统一诊断:

# 运行诊断$ oam-diagnostics--all# 输出:# =======================================# OAM Diagnostics Result# =======================================# Device | Type | Status | Message# -------|------|--------|--------# 0 | NPU | ✅ | OK# 1 | NPU | ❌ | ECC error detected# 2 | GPU | ✅ | OK# 3 | GPU | ✅ | OK## Suggestion: Replace device 1.# =======================================

怎么用?代码示例

示例 1:监控 NPU 和 GPU

# 1. 克隆仓库$gitclone https://atomgit.com/cann/oam-tools.git $cdoam-tools# 2. 安装$bashinstall.sh# 3. 修改配置$viconfig/oam-config.yaml# 修改:# devices:# - type: "ascend"# ids: [0, 1]# - type: "nvidia"# ids: [0]# 4. 运行监控$ oam-smi stats# 输出:# =======================================# OAM Stats (Ascend NPU + NVIDIA GPU)# =======================================# Device | Type | Temp | Power | Memory | Util# -------|------|------|-------|--------|------# 0 | NPU | 65°C | 180W | 16/32GB | 85%# 1 | NPU | 67°C | 185W | 18/32GB | 87%# 2 | GPU | 72°C | 250W | 12/24GB | 92%## Alert: NPU 1 temp > 65°C (threshold: 65°C)# =======================================

示例 2:固件升级

# 1. 查看固件版本$ oam-fwupdate--query# 输出:# Device | Type | Current Version | Available Version | Update Available# -------|------|-----------------|-------------------|------------------# 0 | NPU | 1.2.3 | 1.2.5 | ✅# 1 | NPU | 1.2.3 | 1.2.5 | ✅# 2. 升级固件$ oam-fwupdate--update--all# 输出:# Updating device 0: 1.2.3 → 1.2.5... Done ✅# Updating device 1: 1.2.3 → 1.2.5... Done ✅# 3. 验证$ oam-fwupdate--query# 输出:# Device | Type | Current Version | Available Version | Update Available# -------|------|-----------------|-------------------|------------------# 0 | NPU | 1.2.5 | 1.2.5 | ❌# 1 | NPU | 1.2.5 | 1.2.5 | ❌

示例 3:诊断

# 1. 运行诊断$ oam-diagnostics--all# 输出:# =======================================# OAM Diagnostics Result# =======================================# Device | Type | Status | Message# -------|------|--------|--------# 0 | NPU | ✅ | OK# 1 | NPU | ❌ | ECC error detected## Suggestion: Replace device 1.# =======================================# 2. 详细诊断$ oam-diagnostics--device1--verbose# 输出:# =======================================# OAM Diagnostics (Device 1)# =======================================# Status: ❌# Error: ECC error detected# Error Count: 1024## Suggestion: Replace device 1.# =======================================

示例 4:集成到监控告警系统

# monitor.pyimportsubprocessimportjsonimporttimeimportsmtplibfromemail.mime.textimportMIMETextdefget_oam_stats():result=subprocess.run(["oam-smi","stats","--json"],capture_output=True,text=True)returnjson.loads(result.stdout)defcheck_thresholds(stats,config):alerts=[]fordeviceinstats['devices']:device_id=device['id']device_type=device['type']temp=device['temp']power=device['power']memory=device['memory']['used']thresholds=config['devices'][device_type]['thresholds']iftemp>=thresholds['temp']:alerts.append(f"Device{device_id}temp{temp}°C >={thresholds['temp']}°C")ifpower>=thresholds['power']:alerts.append(f"Device{device_id}power{power}W >={thresholds['power']}W")ifmemory>=thresholds['memory']:alerts.append(f"Device{device_id}memory{memory}MB >={thresholds['memory']}MB")returnalertsdefsend_alert(alerts):msg=MIMEText("\n".join(alerts))msg['Subject']="OAM Alert"msg['From']="monitor@example.com"msg['To']="admin@example.com"withsmtplib.SMTP('localhost')asserver:server.send_message(msg)defmain():withopen('config/oam-config.yaml','r')asf:config=yaml.safe_load(f)whileTrue:stats=get_oam_stats()alerts=check_thresholds(stats,config)ifalerts:send_alert(alerts)time.sleep(config['monitor']['interval'])if__name__=="__main__":main()

性能数据

用 oam-tools 的效率提升:

操作不用 oam-tools用 oam-tools提升
监控 NPU + GPU2 个命令1 个命令2x
固件升级手动升级一条命令10x
诊断手动检查一条命令5x

提升:~5x

你说气人不气人,之前监控 2 种加速器要 2 个命令,现在一条命令。

跟其他仓库的关系

oam-tools 在 CANN 架构里属于第 5 层(昇腾计算基础层),是OAM 工具集

依赖关系:

oam-tools(OAM 工具集) ↑ 管理 昇腾 NPU + NVIDIA GPU

解释一下:

  • oam-tools:OAM 工具集(监控/固件升级/诊断)
  • 昇腾 NPU:被管理
  • NVIDIA GPU:被管理

简单说:oam-tools是加速器管理的"统一接口"。想统一监控 NPU 和 GPU,就用它。

oam-tools 的核心内容

1. 工具

# 支持的工具tools/oam-smi/# 监控工具tools/oam-fwupdate/# 固件升级工具tools/oam-diagnostics/# 诊断工具

2. 配置

# config/oam-config.yamldevices:-type:"..."ids:[...]thresholds:{...}monitor:interval:...log_file:"..."alert:...

3. 脚本

# monitor.pydefget_oam_stats():# 获取 OAM 统计信息# 检查阈值# 发送告警

4. 示例

# examples/monitor_example/ fwupdate_example/ diagnostics_example/

适用场景

什么情况下用 oam-tools:

  • 多加速器管理:NPU + GPU 混用
  • 统一监控:要统一监控接口
  • 固件管理:要升级固件
  • 诊断:要诊断加速器问题

什么情况下不用:

  • 只有 NPU:用npu-smi
  • 只有 GPU:用nvidia-smi

总结

oam-tools 就是昇腾的"OAM 工具集":

  • oam-smi:监控
  • oam-fwupdate:固件升级
  • oam-diagnostics:诊断
http://www.jsqmd.com/news/873062/

相关文章:

  • 如何使用AI Agent帮助写好文章
  • 零基础构建智能语音助手:小智ESP32后端服务完全指南
  • AI检测太高论文过不了?这4个降AIGC网站2026年必须用!
  • 团队冲刺每日总结5.23
  • 智慧园区平台架构设计⑥:IoT 落地实践指南与商业价值深度复盘
  • 纯血鸿蒙彻底告别安卓依赖:HarmonyOS 7.0 即将正式发布,国产操作系统迎来真正转折点
  • 5步精通TrollInstallerX:iOS越狱工具深度实战指南
  • QQ空间说说备份神器:3分钟完成青春记忆永久保存
  • 互联网大厂 Java 求职面试:从微服务到 AI 的探索之旅
  • KH Coder:无需编程的文本挖掘神器,零基础掌握专业级文本分析
  • 大一新生怎么合理利用github?用好Github
  • 国内大学生最适用的AI论文网站是哪款?
  • 超市陈列这样做,顾客逛得不想走,员工执行不犯错
  • 企业内如何规范 API Key 使用并实现访问控制与审计
  • 合肥招聘网(hefeizhaopin.com)—— 合肥本地老牌权威招聘平台 - drfdxr
  • Agent-S3实战解析:首个超越人类性能的GUI智能体框架深度指南
  • 新手用ima总踩3个低效陷阱,掌握RAG知识库效率翻倍
  • Navicat Premium16 免费安装配置教程(附安装包) ​
  • 重磅资源!《大语言模型VIP+50+Python入门资料PDF》全套学习指南
  • 2026/5/23总结
  • 在互联网大厂求职:Java 面试中的音视频场景分析
  • 抽取纸条系统V5首发版|新增防封配置与全新后台 多项问题修复
  • 2026电工杯数学建模竞赛B题思路分享
  • 【AI营销】为什么你的网站内容再好,AI也只引用其中一页?
  • 通过curl命令快速测试Taotoken各模型API连通性与响应
  • 没招了,心碎的hr来这里看看能不能遇到算法工程师
  • Blender 3MF插件:开源3D打印数据交换的终极解决方案
  • RAG-重排序策略
  • [Unity VR实战] XR 项目不是做完功能就能发:平台配置、插件兼容、审核约束该怎么前置?
  • 3步解决魔兽争霸3在现代电脑上的三大兼容难题