作者​:昇腾实战派
知识地图​:https://blog.csdn.net/Lumos_Lovegood/article/details/161601003

摘要

大模型在昇腾AI平台上训练部署时面临Host-Device协同效率低、算子性能下滑、通信延迟大、模型下发慢等问题。传统调优工具(如MindStudio的msProf、msprof-analyze等)虽强大,但使用门槛高,涉及多维度综合分析。MindStudio团队自研msAgent,提供一站式性能分析解决方案。

一、背景

随着人工智能模型规模的不断扩大及应用场景的日益复杂,在昇腾AI计算平台上进行训练和部署时,面临着Host-Device协同效率不高、重要算子性能下滑、通信延迟增大、模型下发效率低等诸多挑战。因此,深度学习系统的性能提升不仅需要计算能力提升,还需要对硬件平台、软件栈、通信机制以及模型结构之间的协同效率进行全面优化。

*模型执行过程示意图*

过去,MindStudio提供了性能调优工具msProf、集群分析工具msprof-analyze、精度调优工具msProbe、内存调优工具msMemScope、可视化工具msInsight等一系列工具,帮助开发者提高算子性能、设备性能、集群性能。同时,MindStudio也沉淀了计算(算子调优)、通信(快慢卡)、下发(Host下发慢)、IO瓶颈以及服务化等一系列调试调优方法论。

*MindStudio工具链全景图*

这些工具链和方法论的沉淀,让调优专家能更快更准地定位大模型系统中的各种问题。然而,大模型调优本身是一项极其复杂且门槛较高的工程,涉及软件信息、硬件信息的综合分析,需要考虑算子、并行策略、集群负载、模型算法等多个维度。如何降低大模型性能优化门槛,寻找最优调优链路,是一个难度很高且极具价值的工程问题。

在Agent元年,业界用Agent解决了许多实际问题,例如OpenClaw和Claude Code。用Agent来做模型调优是一个极具价值的想法——一个符合直觉的方案是写好对应的Skills,配置好MCP,直接借助Claude Code进行分析。但实际实践下来,该方案可控性偏低安全性无法保证

更重要的是,我们的文件数据庞大,达到GB级别,对上下文管理的要求更高,需要一套专门的机制处理Context过长的问题。

因此,MindStudio团队自研了msAgent,目标是成为MindStudio统一的工具链入口,提供Ascend下性能分析的一站式解决方案。

二、msAgent介绍

msAgent的核心设计理念可以用一句话概括:“发现瓶颈 → 定位根因 → 给出建议”的证据驱动分析闭环。

整体架构

msAgent由四层架构组成:用户交互层、智能体引擎层、Skills与MCP层、配置与存储层。层与层之间的交互如下图所示:

在这里插入图片描述

  1. 用户交互层:提供轻量TUI,面向日常命令行使用场景;支持macOS、Windows、Linux多平台,并支持一键安装。
  2. 智能体引擎层:支持ReAct交互模式,并扩展中间件栈,实现安全审批、沙箱隔离、压缩工具输入与对话历史、观测Token消耗等功能。
  3. Skills层:集成Mindstudio-Skills,将「专家经验包」以Skills形式接入,用户侧开箱即用、一键安装。Tools层提供文件检索、终端命令执行以及联网搜索的能力。MCP层接入msprof-mcp,将msprof-analyze、timeline文件解析等公共函数封装到msprof-mcp中。
  4. 配置与存储层:支持动态配置YAML/JSON运行参数、MCP;SQLite检查点支持多轮会话落盘,按thread管理对话;会话记忆支持Agent虚拟内存、会话恢复以及长期记忆。

Context管理

当msAgent收到用户的分析请求后,首先会定位对应的Skills;Skills再去调用msProf MCP-tools。MCP-tools可以理解为一道“漏斗”,会根据当前Agent的目标对数据做初筛,只把真正相关的结果返回给Agent,帮助它快速拿到后续分析所需的信息。这一层本质上是在做第一轮上下文过滤。

进入分析阶段后,上下文还会持续增长。因为在这个过程中,新的tool call、user prompt以及文件信息会不断累积,Context很容易迅速膨胀。我们设计了三层压缩机制来进行第二轮上下文过滤:

  1. Micro压缩:在每次LLM调用前,对历史上下文做轻量清理:将旧的tool result替换成占位符,只保留必要引用,避免冗长结果长期滞留在上下文中。微压缩每轮都运行,几乎零成本:它截断旧消息中的tool_result块,去除不再需要的冗长命令输出。Micro压缩还有一个时间衰减配置:越旧的工具输出越容易被清除,最近的优先保留。
  2. Macro压缩:当上下文token超过20k阈值时,系统会将完整对话落盘,再调用LLM对历史内容生成摘要,用摘要替代原始长对话,从而显著降低上下文长度。压缩后,系统会从摘要中重新注入关键上下文,比如最近读取的文件内容、已激活的技能指令、MCP的结果等。
  3. 虚拟文件Eviction:对体积过大(超过100K)的工具结果进行驱逐,将其从当前上下文中卸载,转存到文件系统中,只在需要时再回查,减少Context污染。

在这里插入图片描述

三、安装与使用方法

安装:

pip install -U mindstudio-agent

配置模型:

export OPENAI_API_KEY="your-key"
msagent config --llm-provider openai \
  --llm-base-url "https://api.deepseek.com/v1" \
  --llm-model "deepseek-chat"

启动:

msagent

进入交互式会话后,将Profiling数据路径和你的问题一起发给msAgent即可。更多安装方式和配置项,可以参考项目README

四、实战案例

为了更直观地演示msAgent的能力,下面提供了真实调优过程中的一些案例,包括性能诊断、开发效率提升等。

案例1:集群快慢卡诊断

场景:集群训练出现性能抖动,怀疑存在快慢卡问题。

提示词

请分析 /path/to/cluster_profiling/ 中是否存在快慢卡问题,定位异常 rank,并给出可能原因。

过程如下:

在这里插入图片描述

msAgent做了什么

  1. 自动识别为多卡/集群场景
  2. 加载cluster-fast-slow-rank-detector Skill
  3. 调用msprof-mcp进行全局诊断,对比各Rank的计算和通信耗时
  4. 定位出异常Rank,分析是计算瓶颈还是通信瓶颈
  5. 给出具体的优化建议和验证方法

案例2:DB数据自定义导出

场景:需要从Profiling数据库中提取特定维度的数据。

提示词

基于 ascend_pytorch_profiler_0.db,帮我提取各个算子类型的总耗时并按降序输出到 csv。

过程如下:

在这里插入图片描述

msAgent做了什么

  1. 通过msprof-mcp连接.db文件
  2. 构造SQL查询,按算子类型聚合耗时
  3. 排序后导出为CSV文件
  4. 输出结果摘要和文件路径

案例3:Profiling数据完整性检查

场景:采集了一份性能数据,不确定是否采集完整。

提示词

请分析 /path/to/xxx_ascend_pt/ 数据是否采集正常。

过程如下:

在这里插入图片描述

msAgent做了什么

  1. 加载mindstudio_profiler_data_check Skill
  2. 检查目录结构是否完整、关键文件是否存在
  3. 验证profiler配置信息、采集级别
  4. 给出数据完整性报告,指出缺失项和可能原因

案例4:MFU计算

场景:你有一份kernel_details.csv,想快速计算matmul算子在Atlas 800I A2上的MFU。

提示词

请基于 /path/to/kernel_details.csv 计算 matmul 的 MFU(Atlas 800I A2),并说明各项计算依据。

过程如下:

在这里插入图片描述

msAgent做了什么

  1. 自动识别场景,加载op-mfu-calculator Skill
  2. 通过工具读取CSV文件,提取matmul算子的执行时间和shape信息
  3. 从官网获取Atlas 800I A2的算力规格,套用MFU公式逐步计算
  4. 输出结果,包含详细的计算过程和每一项数据来源

不再需要手动翻文档查算力参数、手动写计算脚本——一句话搞定。

案例5:工具使用咨询

场景:不熟悉msprof的编译流程。

提示词

msprof 怎么编译出 run 包?

过程如下:

在这里插入图片描述

msAgent做了什么

  1. 通过github-raw-fetch Skill从msprof的GitHub仓库获取相关文档
  2. 整理出完整的编译步骤和注意事项
  3. 直接给出可执行的命令序列

案例6:文档上手体验审查

场景:根据某个仓库的README检查是否能跑通。

提示词

请帮我体验并审查这个仓库的文档上手体验:https://gitcode.com/Ascend/msmonitor。
本机环境:
- Ubuntu 20.04
- CANN 已安装,环境脚本:/usr/local/Ascend/ascend-toolkit/set_env.sh
- conda 虚拟环境已准备好,请优先使用:msmonitor_ux_review
请输出详细的中文 HTML 报告到 /home/msmonitor,重点说明在上述环境下,新用户能否按文档完成安装并进入可运行状态。

过程比较长,这里不放图片了

msAgent做了什么

  1. 自动识别任务属于“文档上手体验审查”场景,加载document-ux-review Skill。
  2. 从README开始,自动识别直接关联的安装、快速开始和运行文档,而不是只做静态阅读。
  3. 结合用户提供的环境信息,优先复用已有基础环境,例如已准备好的conda环境和已安装的CANN,而不是重复安装。
  4. 按文档中的真实步骤逐步执行,检查命令、依赖、路径、配置和启动流程是否真的能走通。
  5. 如果遇到缺步骤、错误命令、隐含前提、平台差异,或者必须额外去翻脚本、源码、CI、Dockerfile才能继续,都会被记录为文档完整性问题。
  6. 最后输出一份结构化报告,说明哪些步骤成功、哪些步骤阻塞、问题出现在什么位置,以及对应的改进建议;示例文档里还说明可输出中文HTML报告,并给出msmonitor-review-run.html作为参考产物。

五、持续进化:未来规划

msAgent正在快速迭代版本,当前版本为v0.1.2

接下来我们的重点方向是:

  • 开发专用SubAgent:不同的Agent扮演不同的专家,解决不同领域的问题(如性能、精度、量化、内存等)。
  • 更多内置Tools:例如精度、内存等工具,让调优的覆盖面更广,数据来源更多,调优定位更准,扩展Agent的能力边界。
  • 集成更多专家Skills:覆盖更多典型调优场景,例如内存分析、算子调优建议、训练吞吐优化等,提升大家的开发效率。

如果你对msAgent感兴趣,欢迎来项目里看看,Star一下,一起让NPU调优更高效。

本文基于commit 2346ec8f48d0dcfd4fd86c83c6880c6eaa28d14b 对应的代码状态整理。仓库迭代较快,具体能力请以最新README和发布说明为准。

更多推荐