oam-tools 性能剖析报告 UI 契约:架构图、重复层、TraceView 与 HBM 证据的渲染规范 📅 发布时间:2026/9/18 20:48:48 👁 浏览次数: oam-tools 性能剖析报告 UI 契约架构图、重复层、TraceView 与 HBM 证据的渲染规范【免费下载链接】oam-tools本项目为开发者提供故障定位工具包含故障信息收集软硬件信息展示AI core error报错分析等能力提升故障问题定位效率文档可在昇腾社区搜索“故障处理简介”选择社区版。项目地址: https://gitcode.com/cann/oam-tools本篇技术文章以 oam-tools 仓库cann-perf-breakdown工作流第三阶段3-generate-ui-json-report中的 UI 契约文档为主体系统讲解交互式 Profiling 报告在架构图、重复层导航、Inspector/算子列表、TraceView、HBM 证据与整体布局语言六个方面的强制渲染规则并结合报告模板与校验脚本的源码实现说明这些约定如何被落实与验证。读完本篇后你能掌握这份 UI 契约的完整约束语义理解“只渲染事实、不虚构事实”的设计边界并能对照源码定位每条规则的实现位置。契约在 Skill 工作流中的位置在cann-perf-breakdown三阶段流水线中Stage 1 负责性能分解分析Stage 2cann-perf-breakdown-to-ui-json产出架构图、overlay 与 trace bindingsStage 3generate-ui-json-report则消费这些产物生成经过校验的交互式 HTML 报告运行时。Stage 3 的输入与职责边界定义在 数据契约 中Skill 3 拥有呈现、交互、布局、语言/主题行为、选择同步、本地数据搬运与校验但绝不允许修复后端事实。架构只能从model_architecture_graph.v1的根节点与边渲染性能与 Trace 交互只对显式映射的后端节点开放纯源码节点保持“无指标、无 Trace”状态。整体阶段划分见 工作流指南技能入口见 SKILL_en.md。UI 契约正是第三阶段针对“呈现层”的行为规范它回答的不是“数据从哪里来”而是“每一类事实必须以什么视觉与交互形式呈现且哪些形式被禁止”。以下按契约原文的六大章节逐条展开。架构图Architecture graph架构图是报告的核心视图契约对其布局、边路由、着色与 MoE 呈现给出强制约束自顶向下的语义数据流端口在下向上。并行兄弟节点要么由“已声明的独立分支”表达要么采用同行布局串行后继必须占据逐行递增的布局行。禁止靠节点先后顺序猜测数据流——这一点与数据契约中“绝不允许从层级、源码顺序、kernel 顺序、Timeline 顺序或 Trace Flow 推断边”的规定一脉相承。投影边身份必须全部保留。当折叠collapse把多条边映射到相同端点时每条被投影的边身份都要保留已声明的 fan-out/fan-in 分支必须彼此可区分。仓库中 test-projected-fanout.mjs 正是针对这一规则生成的确定性测试数据契约中expectedGraphFeatures声明的fanOutMin、fanInMin等最小图证据若上游声明了这些特征则空测试不得蒙混通过。残差边residual edge走稳定的虚线外左正交通道带圆角且长参数/状态输入必须绕开无关节点与翻页器pager严禁合成缺失的边。从源码结构看architecture-data.js 对semanticEdgeType residual的边单独计算residualRouting生成routingPolicy: residual_outer_left与残差通道聚类 id并匹配“固定左侧端口 一条稳定通道”的处理方式对应的虚线样式落在 model-graphviz 图案的 pattern.css 的is-residual选择器中。边使用中性灰、可读、继承固定尺寸箭头端点与节点边框保持间距。帧frame要扩展以容纳测量出的长标题与折叠控件对“仅有装饰性的单根结构壳”要隐藏其外观但不删除其元数据——呈现可以折叠事实不能丢失。纯源码节点与无性能数据的当前 Layer 节点一律中性化处理无指标徽章、无性能热力着色。时间份额热力默认开启且全报告共用一个对数域 Turbo 色域节点徽章、Operator List 徽章、图例与 Layer 圆点必须使用同一 domain缺失值保持灰色。这一“单一色域”要求保证跨面板读数的可比性。叶子 Op 只渲染一个居中的名字泛型类型细节留给 Inspector展开/折叠控件保持风格一致。Expert Inventory专家清单只应用于显式打了角色标签的 MoE 结构兼容旧角色别名呈现 Router、代表性路由专家、外部 Shared Expert 与 Combine当专家执行是融合fused的不得虚构逐专家耗时。重复层Repeated layers大模型报告的核心交互难题在于一个模板化 decoder 层会被实例化为几十个具体层。契约为此定义了身份分离与状态同步规则模板node_id与具体的layer_index/structure_instance_node_id是两种不同的身份。源码侧同样严格区分这两者app.js 从graphLayerNavigation或 repeat item 中取instanceIndices归一化为数字数组供后续选中态判断使用。在整个渲染事务中维持唯一的“活跃 Layer 上下文”架构图、Inspector、Operator List、Sequence、Trace 与 Flow 六处视图同步更新。模型层级只渲染一个 pager运行时/MTP 迭代索引永远不得进入 decoder 的 Layer pager。以每个模板声明的instanceIndices为准成员重叠、声明层未被认领、图/分析/性能三方口径不一致均判定为错误而非静默修正。architecture-data.js 中的 repeat plan 逻辑据此构造{ hostId, instanceIndices, suppressedIds, templates }并用template.instanceIndices.includes(selectedLayerIndex)决定选中层归属。标题与 pager 分两行摆放圆点点击目标不小于 24px带耗时 tooltip 与当前层热力pager 操作不得改变图变换transform。选中某 Layer 后只渲染其所属的兄弟模板模板内普通子模块保持保留仅桥接bridge因呈现过滤而被隐藏的已声明顶层路径。跨同构兄弟模板按精确相对路径保持选中的算子若不存在精确对应项则保留语义选择并显示“指标不可用”而不是跳到别的算子或直接清空。wall、busy union、kernel sum、total cost、算子数、时间份额、徽章与热力必须从当前层事件重新计算绝不允许把聚合指标复制到每一层。这是最容易出错的规则——test-layer-report-metrics.mjs 专门验证 Layer 作用域指标的正确性切换三个不相邻的 Layer 后scoped 图徽章、Inspector 指标、Sequence 事件与 Flow 必须更新而算子身份保持不变。Inspector 与算子列表Operator ListInspector 与 Operator List 是“点选一个算子后看到什么”的规范不渲染 Evidence 区块也不重复展示已映射汇总 chips——避免信息冗余。前四位核心指标固定为wall_ms、busy_union_ms、kernel_sum_ms、total_cost_ms并展示当前运算数/公式wall time 用中性的 Primary Metric 标签标识不使用与选中色一致的着色防止“选中主指标”的视觉误导。随后是一个全宽内联卡片展示时间份额再是Operators / HBM 估算 / MFU INT8 / MFU BF16 四张等宽卡片不可得的事实一律用–占位不填空值、不编造。指标 tooltip 解释精确定义与证据边界禁止使用原生title属性保证样式与本地化一致。Operator List 以本地化的 “All Layers” 为初始作用域支持聚合或具体 Layer 作用域。采用紧凑居中的Operator Summary与Operator Sequence两个 tabSequence 行保持单行复用 TraceView 的按泳道#N编号、稳定的原始源身份、Stream/Layer 标签、精确耗时以及悬停/选中态。行点击或 Trace 点击选择的是同一个具体事件且不收窄列表再次点击或点击列表空白处只清除事件选择。架构与 Sequence 的 tooltip 使用一致的field: value行ID/序号、名称、Stream、耗时/份额、类型、Shape、Dtype 与语义/来源字段上游缺失值显示–。节点级诊断结论只在后端数据确实携带时显示永不虚构建议或空占位提示。TraceViewTraceView 是原始 Chrome Trace 的呈现层契约强调“完整保留 共享交互模式”保留全部有效的原始元数据、duration/counter/flow 事件与全部物理泳道——不允许按架构语义裁剪原始 Trace。任务条通过共享 PTO 图案渲染泳道高 22px、任务条高 18px只抑制真正重叠的内联标签绝不抑制任务条与 tooltip。这一像素规格与模板样式文件中的尺寸常量保持一致如 app.css 中的 22px 泳道/徽章规格具体泳道渲染逻辑位于 trace-view.js。在完整的 PID/TID 泳道内分配稳定的从 1 开始的序号不得使用全局op_index作为可见序号——因为全局序号跨泳道不单调会误导读者对同一线程内先后关系的判断。Flow 只为“选中映射后端节点的严格上下游端点”渲染清空选择或选中纯源码节点时隐藏 Flow。通过共享图案支持跨泳道时间选择、精确事件选择、Ctrl/Command 滚轮缩放、键盘平移、fit、focus 与选择重置。节点 focus 目标约为泳道视口的二分之一保留横纵滚动所有泳道保持可见无关事件调暗dim而非移除。HBM 与可选证据HBM 与 AICore 频率属于“可选能力”契约为其规定了降级与真实性约束本地化的 HBM 区块标题保持可见当有效带宽或占用率缺失时默认折叠仅在展开时显示本地化的“未采集”说明。数据契约同步要求可选工件缺失时降级为空值而不是报错或填充。有数据时从完整源数组渲染相互独立的连续 Read、Write 与占用率曲线在窄的联动区间附近保留五个样本间隔只在可见边界处插值。不得基于粗粒度采样宣称地址热力图或精确的逐算子带宽归属——这是对“呈现不得升级证据级别”的典型约束。模板侧的 HBM 渲染与数据构造分别位于 hbm-view.js 与 build-hbm-data.mjs示例数据见 outputs/hbm_series.json。AICore 频率只在数据被提供时作为独立可折叠区块渲染图 tooltip 中展示声明值/推导值的一致性与降频throttling状态不得由常量值虚构时间序列。报告溯源provenanceInfo 记录后端/交接技能、模型来源与抽取模型绝不把 mock 身份当作生产事实交付。布局、语言与样式默认中文但保留用户已保存的语言偏好本地化报告标题与浏览器标题时不改写源码侧撰写的架构标签。复用共享 PTO tokens 与 workbench、IDE frame、tab、graph、tooltip、swimlane、selection 等图案位于 design-system/patterns 下的ide-frame、model-graphviz、swimlane-task、timeline-time-selection、workbench-shell五个图案目录可复用的视觉变更必须先进入共享模板/图案而不是在单份报告里就地打补丁。面板标题保持一致控件居中且按固有宽度intrinsic-widthworkbench 外边距可见Inspector 区块紧凑且不带分隔线。可见文字不小于 12px例外仅两个10px 的 Trace 标签与从属的 11px 指标公式。支持明/暗两套主题边、徽章、热力图与 tooltip 的对比度都必须可读。生成与校验契约如何被强制UI 契约不是风格建议而是由生成器与校验器强制执行的规则集。生成入口为 generate-report.mjs典型调用rtk node skill-dir/scripts/generate-report.mjs \ --repo report-repo \ --handoff ui-report-handoff.json \ --refresh-template关键行为规则--refresh-template替换可复用运行时 UI 文件但保留或重新生成模型专属配置并保留 Skill 2 产物report-embedded-data.js只重建、不允许手改。整个下一版报告事务性地生成任一失败即按字节恢复上一份报告与 Trace。--check严格只读不得与--refresh-template、--trace、--hbm-dir组合使用且不创建占位、不改名index.html、不改时间戳针对生成器本身的回归测试是 test-generation-safety.mjs。确定性检查链包括 validate-architecture-graph.mjs含--require-semantic-port-policy、validate-report.mjs、以及上文的 Layer 指标与投影 fan-out 测试Layer、expert、HBM 与期望图特征断言仅在 handoff 声明对应 capability 时执行——“声明了能力却缺证据”是失败而“确实不适用”记为not_applicable不是假通过。未经声明的模板漂移会被拒绝审核过的单报告偏离只能经由ReportRuntimeConfig.templateOverrides表达。确定性检查通过后还需在 1440×1000 视口做一次浏览器冒烟必要时加一次file://冒烟验证无控制台/资源错误、三个不相邻 Layer 切换的作用域更新、热力图例与本地化标签等与 UI 契约一致的行为只有把浏览器结果记入校验清单后总体状态才可置为通过。失败路由同样体现契约精神身份/节点覆盖/Timeline owner/trace 绑定不匹配回退为 Stage 1/2 的数据需求不得就地修补后端 JSON布局、样式、本地化、交互或运行时搬运问题才在 Skill 3 模板内修复并重新生成无法确认的事实保持“不可用”绝不允许靠叶子标签相似度强行映射以抬高覆盖率。小结这份 UI 契约的本质是把“性能报告的可信度”落到像素与交互粒度架构只画已声明的边、重复层只按声明的instanceIndices导航、指标只从当前层事件重算、Flow 只连选中的映射节点、HBM 缺数据就折叠并明说、诊断结论只呈现后端事实。配合 数据契约、验证矩阵 与事务式生成器oam-tools 的3-generate-ui-json-report保证交付的每份交互式报告“呈现的每个数字都能溯源到原始证据”。如需继续深入建议从 architecture-data.js层导航与残差路由、app.jsLayer pager 与选择同步与 validate-report.mjs报告级不变量三个文件入手。【免费下载链接】oam-tools本项目为开发者提供故障定位工具包含故障信息收集软硬件信息展示AI core error报错分析等能力提升故障问题定位效率文档可在昇腾社区搜索“故障处理简介”选择社区版。项目地址: https://gitcode.com/cann/oam-tools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考