witty-profiler API参考手册:HTTP接口与数据模型完全解析
witty-profiler API参考手册HTTP接口与数据模型完全解析【免费下载链接】witty-profilerThe witty-profiler is an automated data and control stream topology detection and bottleneck analysis tool for AI training and inferencing systems.项目地址: https://gitcode.com/openeuler/witty-profiler前往项目官网免费下载https://ar.openeuler.org/ar/欢迎来到witty-profiler的终极API参考手册 作为AI训练和推理系统的自动化数据与控制流拓扑检测工具witty-profiler提供了强大而灵活的HTTP接口让开发者能够轻松集成和监控复杂的系统拓扑。本文将为您深入解析witty-profiler的完整HTTP接口与数据模型帮助您快速上手并充分利用这一强大工具。 为什么需要witty-profiler API在复杂的AI训练和推理系统中理解数据流和控制流拓扑是性能优化的关键。witty-profiler通过自动化的拓扑检测和瓶颈分析为系统性能优化提供了数据基础。其HTTP API让您能够实时监控获取系统拓扑的实时快照程序化控制通过API启动、停止和触发数据采集灵活集成将拓扑数据集成到您的监控系统中自动化分析基于API构建自动化性能分析流水线 快速开始启动HTTP服务witty-profiler提供了多种启动方式满足不同场景的需求在线模式默认python -m witty_profiler这将启动HTTP服务默认绑定在0.0.0.0:18090端口。自定义绑定地址python -m witty_profiler --host 127.0.0.1 --port 9090离线批量采集模式python -m witty_profiler --offline --duration 30离线模式不启动HTTP服务直接采集数据后输出到文件。 HTTP接口完全指南witty-profiler的HTTP API遵循RESTful设计原则所有JSON端点都返回统一的信封格式{ env: { local_ip: ..., hostname: ..., machine_id: ... }, content: { } } 信息类接口方法路由返回类型说明GET/JSON envelopeAPI索引、服务元数据、路由列表GET/help纯文本端点列表CLI友好 图数据接口方法路由返回类型说明GET/graphJSON envelope最新拓扑图nodes为实体列表edges为边列表GET/compressed_graph纯文本graph.describe()的人类可读摘要/graph接口返回的数据结构{ env: {...}, content: { nodes: [...], // 实体对象数组 edges: [...] // 边对象数组扁平列表 } } 状态监控接口方法路由返回类型说明GET/statusJSON envelope运行状态、节点/边统计、Collector类型、Subscriber名称/status接口返回的content字段说明字段说明running是否正在采集graph.node_count节点数量graph.edge_count边数量边列表长度collectors.count/collectors.types活跃的Collector数量与类型列表subscribers.count/subscribers.names注册的Subscriber数量与名称列表 控制接口方法路由说明POST/control/start启动采集循环幂等POST/control/stop停止采集POST/control/trigger手动触发一次采集返回结果图摘要POST/control/clear清除已采集数据控制接口成功时返回{ status: success, message: ... } Subscriber管理接口方法路由说明POST/subscriber注册订阅者DELETE/subscriber/{name}按名称注销订阅者GET/subscribers列出已注册订阅者及可用类型注册订阅者请求示例{ subscriber_type: ..., name: 可选名称, expected_update_interval: 5.0, async_notify: true } 数据模型深度解析witty-profiler的数据模型基于图结构包含节点实体和边关系两种核心元素。️ 节点实体结构每个节点代表系统中的一个实体包含以下通用字段entity_namespace实体命名空间如localentity_type实体类型如ProcessEntity、ThreadEntity等details附加详情字段常见实体类型及其特有字段ProcessEntity进程实体{ entity_namespace: local, entity_type: ProcessEntity, details: {}, pid: 1234, ppid: 1, name: python, cmdline: python train.py }ThreadEntity线程实体{ entity_namespace: local, entity_type: ThreadEntity, details: {}, tid: 1235, process: null, name: python }SocketEntity套接字实体{ entity_namespace: local, entity_type: SocketEntity, details: {}, socket_type: TCP, socket_addr: 10.0.0.8, socket_port: 8000, socket_thread: null, socket_process: null }NPUEntityNPU实体{ entity_namespace: local, entity_type: NPUEntity, details: {}, device_id: device-id-unknown, device_type: npu, pci_bus_id: 0000:C1:00.0, id: 0, cpu_affinity: 144-167 }NumaEntityNUMA实体{ entity_namespace: local, entity_type: NumaEntity, details: {}, numa_id: 0, cpu_set: 0-23, memory_set: 0-1,130-255, numa_stats: { numa_hit: 664496298, numa_miss: 4016745 } } 边关系结构边表示实体之间的关系分为有向边和无向边两种类型。有向边Directed Edges{ edge_type: SendToSocketEdge, weight: 12.0, source_node: {...}, // 完整的源节点对象 target_node: {...} // 完整的目标节点对象 }无向边Undirected Edges{ edge_type: UndirectedEdge, weight: 5.0, nodes: [{...}, {...}] // 节点对象列表 }常见的边类型包括OwnEdge表示拥有关系如进程拥有线程SendToSocketEdge表示向套接字发送数据AccessWithProcStatusEdge包含进程状态的访问边各种通信相关的边类型包含传输或流量指标 高级配置选项witty-profiler提供了丰富的CLI参数和配置选项重要CLI参数参数说明--host/--port覆盖server_config.server_addr--config加载JSON配置文件--offline/--duration离线批量模式默认时长10.0秒--pid监控指定进程PID--log-level日志级别VERBOSE / DEBUG / INFO / REPORT / WARNING / ERROR / CRITICAL--dump-config导出解析后的配置为JSON并退出--verify校验sniffer二进制并退出--view-graph交互式查看压缩后的图文件并退出配置文件结构配置文件支持JSON、TOML和YAML格式详细配置说明参见配置指南。 实用示例与最佳实践示例1获取系统拓扑图curl http://localhost:18090/graph示例2启动数据采集curl -X POST http://localhost:18090/control/start示例3注册订阅者curl -X POST http://localhost:18090/subscriber \ -H Content-Type: application/json \ -d { subscriber_type: file_output, name: my_subscriber, expected_update_interval: 5.0 }示例4获取系统状态curl http://localhost:18090/status️ 开发与扩展添加自定义端点要添加或更新API端点可以修改FastAPI服务器源码。测试APIwitty-profiler提供了完整的测试套件位于tests/test_backend目录中。进程锁机制witty-profiler使用进程锁确保同一时间只有一个实例运行避免资源冲突。 故障排除指南问题解决方案缺少依赖uv sync --group server安装FastAPI/Uvicorn端口被占用使用--port指定其他端口或停止占用进程图为空生成网络流量、确保足够权限、等待首次采集完成API响应慢检查系统负载调整采集间隔参数 进一步学习资源官方文档collector/python/docs/数据模型详细说明docs/data-schema.md后端API参考collector/python/docs/backend/api.md配置指南collector/python/docs/configuration.md 总结witty-profiler的HTTP API为AI训练和推理系统的性能监控提供了强大而灵活的接口。通过本文的完整解析您应该已经掌握了API基础如何启动服务和使用基本接口数据模型理解节点和边的结构高级功能订阅者管理和系统控制实用技巧故障排除和最佳实践无论您是在构建监控系统、进行性能分析还是集成witty-profiler到现有平台这份API参考手册都将成为您的重要工具。现在就开始探索您的系统拓扑发现性能瓶颈优化AI训练和推理效率吧【免费下载链接】witty-profilerThe witty-profiler is an automated data and control stream topology detection and bottleneck analysis tool for AI training and inferencing systems.项目地址: https://gitcode.com/openeuler/witty-profiler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考