performance.py — 性能指标工具¶
文件路径: verl/utils/profiler/performance.py
文件概述¶
提供计时、显存日志和分布式 timing 归约工具。是性能分析的基础设施层。
核心功能¶
1. 计时器¶
@contextmanager
def simple_timer(name, timing_raw):
"""基础计时器"""
with Timer(name=name, logger=None) as timer:
yield
timing_raw[name] = timing_raw.get(name, 0) + timer.last
@contextmanager
def marked_timer(name, timing_raw, color=None, ...):
"""带硬件标记的计时器(fallback 版本,无标记)"""
yield from _timer(name, timing_raw)
2. 显存日志¶
class GPUMemoryLogger(DecoratorLoggerBase):
"""装饰器:在函数前后打印 GPU 显存使用"""
@GPUMemoryLogger(role="actor")
def update_actor(self, batch):
...
3. 分布式 Timing 归约¶
def reduce_timing(timing_raw, reduce_op=ReduceOp.AVG):
"""跨所有 rank 归约 timing 信息(求平均/最大等)"""
def gather_timing(timing_raw):
"""收集所有 rank 的 timing 信息"""
def topk_reduce_ratio_min_max(timing, k=10):
"""计算 top-k 百分位的尾部延迟比例"""
核心函数列表¶
| 函数 | 说明 |
|---|---|
simple_timer() |
基础计时 |
marked_timer() |
带标记的计时 |
log_gpu_memory_usage() |
显存日志 |
GPUMemoryLogger |
显存日志装饰器 |
reduce_timing() |
分布式 timing 归约 |
gather_timing() |
收集所有 rank timing |
与其他模块的关系¶
- 被训练循环中广泛使用来记录各阶段耗时
_timer被nvtx_profile.py和mstx_profile.py的marked_timer调用
小结¶
性能分析的基础工具集,提供计时和显存监控能力。