官网
Tensorflow 安装: https://www.tensorflow.org/install/source?hl=zh-cn
Tensorflow教程: https://www.tensorflow.org/tutorials?hl=zh-cn
Tensorflow工具: https://www.tensorflow.org/resources/tools?hl=zh-cn
Tensorflow 编程手册: https://www.tensorflow.org/api_docs/python/tf
https://www.tensorflow.org/api_docs/python/tf/test/Benchmark
TensorFlow 性能指南:https://www.tensorflow.org/guide/performance
基准测试脚本示例:TensorFlow Models 仓库 包含各模型的 benchmark 脚本。
Timeline 分析:
chrome://tracing/
Wall Duration(墙钟时间)是 AI Timeline 分析中的核心指标之一,主要用于衡量任务的实际执行耗时。在深度学习训练或推理场景中,它通常指从任务开始到结束的总时间,包括计算时间、数据加载时间、设备间通信时间等所有阶段。
-
端到端耗时
Wall Duration 直接反映算法或模型的执行效率,是评估系统性能的基础指标。例如:
- 训练一个完整 Epoch 所需的时间
- 单个推理请求从输入到输出的延迟
-
与其他指标的关系
- 计算效率:Wall Duration 与计算设备(GPU/TPU)的利用率结合分析,可以判断计算资源是否被充分利用。
- 数据加载瓶颈:如果 Wall Duration 中数据加载阶段占比过高,说明可能存在 IO 瓶颈。
- 优化优先级:通过分析 Wall Duration 的组成部分(如计算、数据加载、同步),可以确定性能优化的重点方向。
- 资源分配:帮助合理分配计算资源,例如在分布式训练中平衡不同节点的负载。
- 成本控制:在云环境中,Wall Duration 直接影响计算资源的使用时长和成本。
-
硬件优化
- 使用更高效的 GPU/TPU
- 增加并行计算设备数量
-
软件优化
- 优化模型架构,减少计算复杂度
- 使用混合精度训练(FP16/FP32)
- 优化数据加载流程(如使用多线程、内存缓存)
-
系统优化
- 减少设备间通信开销(如梯度同步)
- 优化网络 IO 和存储性能
主流深度学习框架都提供了测量 Wall Duration 的工具:
- PyTorch:使用
torch.utils.bottleneck
或torch.profiler
分析各阶段耗时。
- TensorFlow:通过
tf.profiler
生成 Timeline,可视化各操作的 Wall Duration。
- NVIDIA Nsight Systems:提供 GPU 计算和内存操作的详细时间分析。
首先需要从深度学习框架中导出 Timeline 数据(JSON 格式):
使用 torch.profiler
生成 Timeline:
import torch
from torch.profiler import profile, record_function, ProfilerActivity
model = torch.nn.Linear(10, 10).cuda()
inputs = torch.randn(32, 10).cuda()
with profile(
activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA],
record_shapes=True
) as prof:
with record_function("model_inference"):
model(inputs)
# 导出为 Chrome Timeline 格式
prof.export_chrome_trace("trace.json")
使用 tf.profiler.experimental
生成 Timeline:
import tensorflow as tf
# 创建会话并启动 profiler
tf.profiler.experimental.start('logdir')
# 执行模型训练/推理
model = tf.keras.Sequential([...])
model.fit(...)
# 停止 profiler
tf.profiler.experimental.stop()
在 TensorBoard 中查看生成的 Timeline(路径:logdir
)。