TraceML:用三行代码为训练循环加入 step 级诊断

简介: TraceML 是专为 PyTorch 训练设计的轻量级诊断工具,无需侵入式改造代码,仅需标记训练 step,即可实时可视化各阶段(数据加载、前向/反向、优化)耗时与内存分布,自动生成结构化 `final_summary.json`,快速定位性能瓶颈——是开启深度 profiling 前的「零号判断工具」。

一直以来,你都能盯着 loss 曲线看;TraceML 让你看见训练循环内部的效率。

在每个训练步骤内部,时间究竟是如何在数据加载、前向、反向和优化器之间分配的,你其实并不清楚。在查看训练运行时,工程师常用的工具链大致是这样:

  • nvidia-smi 和集群仪表盘,用于查看 GPU 利用率
  • W&B、MLflow 或 TensorBoard,用于查看 loss 曲线和运行历史
  • PyTorch Profiler 或 Nsight Systems,用于需要深入检查的场景

这些工具都有用,但在"任务正在运行"和"打开一个重量级 profiler"之间还缺了一层:正常训练期间、step 粒度的轻量级可见性,并且只需要极少的配置。

系统监控看到的是机器;实验追踪器看到的是结果;深度 profiler 看到的是 kernel 和 timeline,前提是你已经怀疑了某个具体问题,并且愿意承担相应的开销。

但如果只是想知道,在任意一次运行中,时间是如何在训练 step 内部分配的,又该怎么办?

这正是 TraceML 提供的能力。

TraceML 集成只需少量代码改动。把训练 step 标记一次:

 import traceml

traceml.init(mode="auto")

for batch in dataloader:
    with traceml.trace_step(model):
        optimizer.zero_grad(set_to_none=True)

        outputs = model(batch["x"])
        loss = criterion(outputs, batch["y"])

        loss.backward()
         optimizer.step()

然后运行:

 traceml run train.py

把训练 step 标记一次,TraceML 把这个边界变成结构化的诊断信息:TraceML 利用 step 边界,把时序、内存、rank、进程和系统信号组织起来,整合成一份关于"运行把时间浪费在了哪里"的诊断。

任务运行时,TraceML 会在日志旁边打开一个实时终端视图。

在一次 PyTorch 训练运行上的实时仪表盘。这次运行被判定为 compute-bound(计算受限),反向传播占据了 step 时间的主要部分,内存面板则提示在观察窗口内 reserved memory 持续增长。

一眼就能回答这些问题:

  • dataloader fetch 是否占用了过多的 step 时间?
  • 计算是不是主导部分?
  • 在支持的分布式运行中,各个 rank 的表现是否存在差异?
  • 内存是稳定的,还是出现了压力?
  • 这次运行是否足够均衡,到不需要再做更深入 profiling 的程度?

运行结束时,TraceML 会写出

final_summary.json

——结构化的 JSON,而不是一份庞大的 trace 文件。它足够小,便于存储,容易记录到日志,也方便在不同运行之间做对比。下面是一个简化后的 summary 示例:

 {
  "step_time": {
    "diagnosis": "INPUT_BOUND",
    "dataloader_pct": 47.0,
    "forward_pct": 31.0,
    "backward_pct": 18.0,
    "optimizer_pct": 4.0
  },
  "step_memory": {
    "diagnosis": "BALANCED"
  }
 }

每一项诊断都直接对应到下一步该看哪里:

很多工程时间都花在了去调查那些其实并不需要调查的运行上。知道一次运行是均衡的,就意味着可以放心去做别的事情。

TraceML 没有打算取代 PyTorch Profiler 或 Nsight Systems。需要 kernel 级别的 trace、CUDA timeline 或 NCCL 行为信息时那些才是合适的工具。

他的定位是轻量化的profiler,先跑 TraceML给这次运行做分类,再决定更深入的 profiling 是否值得做、应该指向哪里。

TraceML 是 PyTorch 训练诊断中的 tool zero(零号工具)。

TraceML 最有用的部分不只是实时视图,而是

final_summary.json

。

这个文件很小、结构化、容易在每个任务上收集。它可以被记录到 W&B 或 MLflow,作为 CI 工件存储,也可以与之前的运行做差异对比。TraceML 还提供了一个 compare 工作流:

 traceml compare run_a.json run_b.json

当一次训练性能回退出现时,问题不应该只是吞吐量是否下降了?,而应该是时间转移到哪里去了?。这正是

final_summary.json

设计要在不同运行之间收集的那种信号。

 pip install traceml-ai
 traceml run train.py

仓库地址:https://github.com/traceopt-ai/traceml

TraceML 是开源的目前支持单 GPU 以及单节点 DDP/FSDP;多节点支持很快会推出。

如果你从事 PyTorch 训练、分布式任务或 ML 基础设施相关的工作,可以事实这个包,他能让你在打开 profiler 之前,先弄清楚自己面对的是哪一种"慢"。

https://avoid.overfit.cn/post/a05ff94b3d7c4dab83f0197d801b3917

作者:TraceOpt

目录
相关文章
|
4月前
|
人工智能 Oracle 机器人
推理 → 行动 → 观察:用 LangChain + Python 实现一个智能体循环
智能体循环(Agentic Loop)突破单次问答局限,通过“推理→行动→观察”迭代闭环,让AI能自主分解任务、调用工具、持续优化直至目标完成,是构建真正自动化智能体的核心架构。
548 9
推理 → 行动 → 观察:用 LangChain + Python 实现一个智能体循环
|
4月前
|
机器学习/深度学习 数据采集 人工智能
南瓜叶片病害图像分类数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集含2000张640×640南瓜叶片图像,涵盖细菌性叶斑病、霜霉病、白粉病、花叶病及健康共5类,已按7:2:1划分训练/验证/测试集,支持YOLOv8等分类模型直接训练,中英文标签齐全,适用于智慧农业、科研教学与AI病害识别研究。
302 0
|
4月前
|
人工智能 Rust 并行计算
UV vs pip vs Conda:Python环境管理应该怎么选
Python包管理已进化:pip是标准但慢,conda专精数据科学与跨语言依赖,而uv——Rust打造的极速新锐,10~100倍提速,一站式替代pip+venv+pyenv+pip-tools,AI/大模型开发首选。
522 0
UV vs pip vs Conda:Python环境管理应该怎么选
|
4月前
|
人工智能 缓存 运维
AI智能体协同实战:Hermes Agent+Claude Code接入阿里云百炼Token Plan完整教程
2026年,AI智能体已经从单一代码助手,进化为能够协同工作的虚拟开发团队。Hermes Agent与Claude Code的组合,成为当前最成熟、最高效的AI开发搭档:Hermes Agent负责任务规划、需求拆解、记忆沉淀与流程调度,扮演技术主管角色;Claude Code专注代码生成、文件修改、命令执行与工程落地,承担核心开发工作。二者配合,可实现从需求分析到代码落地的全流程自动化,大幅提升研发效率。
1097 3
|
3月前
|
缓存 NoSQL Java
Tair 替换 Redis 实战:企业级缓存升级的性能对比与零停机迁移方案
自建 Redis Cluster 在大 Key 和热 Key 场景下频繁出现主从切换和阻塞问题,严重时 P99 延迟飙升至 1200ms。阿里云 Tair 作为 Redis 企业级增强版本,提供多线程引擎、大 Key 自动检测与分片、热 Key 实时发现与缓存等能力,迁移后 P99 延迟降至 15ms。本文从电商秒杀实战场景出发,深度对比自建 Redis 与 Tair 的 8 个维度差异,详解 DTS 零停机迁移方案与 Spring Boot 适配实战,并给出踩坑实录和最佳实践。
|
4月前
|
存储 运维 数据可视化
SOCKS5动态代理科普:原理、搭建方式与运维痛点解决方案
SOCKS5动态代理是兼容性强、支持全流量转发的通用代理协议。SSH动态代理无需额外部署,仅靠SSH隧道即可实现内网穿透、异地调试与安全上网。传统方案存在连接冗余、管理混乱等痛点,而SSHXTERM创新支持复用已有SSH会话创建多代理,提供可视化管理、加密存储与轻量运行,大幅提升运维效率。(239字)
690 7
|
3月前
|
缓存 UED 开发者
Codex109天重置23次,明天还要再送一次
Codex近109天完成23次额度重置,7月14日将迎来第24次。Tibo高频响应用户反馈:优化GPT-5.6高消耗问题、补发失效福利、调整重置时间——形成“反馈→回应→修复→补偿”正向闭环,彰显以用户为中心的产品哲学。(239字)
2044 12
|
3月前
|
人工智能 缓存 JavaScript
保姆级教程:OpenCode 14 个社区插件 + 6 个实战案例,建议收藏,手把手带你打造最强 AI 编码环境
OpenCode 插件使用保姆级教程:14 个社区插件 + 6 个实战案例,从加载规则到开发实战,手把手带你打造最强 AI 编码环境。建议收藏!
1486 10
|
3月前
|
人工智能 JSON 测试技术
不会写代码也能做自动化测试?Skill + AI 帮你搞定重复性工作
本文介绍一种“零代码”自动化测试新范式:无需编程基础,测试人员只需整理接口文档、操作步骤和判断标准,借助AI+Skill(一个含SKILL.md的文件夹),即可自动生成可运行的Python测试脚本或Postman集合。实测将2.5小时手工回归压缩至48秒,真正让测试经验一键转化为生产力。
|
3月前
|
人工智能 算法 测试技术
独家揭秘:拼多多测试团队如何用AI把回归时间从3天压到2小时
拼多多测试团队借AI重构回归流程:代码提交即启动智能分析,精准筛选高风险用例,将大促前回归从3天压缩至2小时内,告别通宵等待——瓶颈不在执行速度,而在决策智能。

热门文章

最新文章