You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何process_time()返回异常时长?模型训练耗时测量问题

解决模型训练耗时测量错误的问题

问题根源

process_time()返回的是当前进程的CPU累计执行时间(用户态+内核态运行时间总和),并非真实的墙钟时间(从训练开始到结束实际经过的时间)。

  • 你看到的start=17.203125不是指17点,而是进程启动后到调用start = process_time()时,CPU已经累计执行了17.2秒;end=64888.7是训练结束时进程的CPU累计执行时间,两者差值是训练过程中CPU实际运行的时长,和真实训练耗时完全不是一个概念。
  • 如果训练依赖GPU,CPU多数时间处于等待状态,process_time()不会统计等待时间;但如果是多线程CPU运算,它会累加所有线程的CPU时间,导致结果远大于实际耗时。

正确测量实际耗时的方法

用以下两种方法测量真实经过的时间:

方法1:使用perf_counter()(推荐,精度更高)

from time import perf_counter
start = perf_counter()
history = model.fit(data,...)
end = perf_counter()
print(f"实际训练耗时: {end - start:.2f} 秒")

方法2:使用time()

import time
start = time.time()
history = model.fit(data,...)
end = time.time()
print(f"实际训练耗时: {end - start:.2f} 秒")

排查原测量结果异常的方向

如果想搞清楚process_time()结果离谱的原因,可以做这些检查:

  • 查看训练时的CPU使用率:如果是纯CPU训练且开启了多线程/多进程,process_time()会累加所有核心的运行时间,比如8核CPU满负荷跑2小时,结果会是16小时左右。
  • 检查训练代码是否有同步执行的CPU密集型任务:比如数据预处理放在训练循环里实时执行,导致CPU持续高负载,累计时间远超实际耗时。
  • 确认框架的训练配置:比如TensorFlow的fit()是否开启了多线程数据加载,这部分的CPU运行时间会被process_time()统计进去。

内容的提问来源于stack exchange,提问作者user21525821

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 00:11:09