|
Download frameworks/slime/docs/zh/developer_guide/profiling.md from SeanWang0027/rose-opd-implementation: direct link, hf CLI and curl.
- Browser
- Download file 2.43 kB
-
https://huggingface.co/SeanWang0027/rose-opd-implementation/resolve/main/frameworks/slime/docs/zh/developer_guide/profiling.md
- Command line
-
hf download hf://SeanWang0027/rose-opd-implementation/frameworks/slime/docs/zh/developer_guide/profiling.md
-
curl -L -o profiling.md https://huggingface.co/SeanWang0027/rose-opd-implementation/resolve/main/frameworks/slime/docs/zh/developer_guide/profiling.md
2.43 kB
| # 性能分析 (Profiling) | |
| 在 slime 中,我们可以通过 SGLang 提供的 profiling 接口对 rollout 过程进行详细的性能分析。 | |
| ## 1. 使 Rollout 进程进入等待状态 (Sleep Rollout) | |
| 为了更自由地进行压力测试和性能分析,我们通常需要让 slime 的 rollout 进程在初始化完成后进入等待状态,而不是立即开始生成。 | |
| 你可以通过在启动参数中替换 `rollout_function_path` 来实现,而无需修改代码: | |
| ```bash | |
| python train.py \ | |
| --rollout-function-path slime.rollout.sleep_rollout.sleep \ | |
| ... (其他参数) | |
| ``` | |
| 该函数会让 rollout 进程进入无限循环等待状态,方便你手动发送请求或运行压测工具。 | |
| ## 2. 获取 SGLang 引擎列表 | |
| SGLang 引擎(workers)注册在 router 上。你可以通过访问 router 的 `/workers` 接口来获取所有活跃引擎的列表。 | |
| 通常 router 地址会在启动日志中打印: | |
| ``` | |
| Router launched at 127.0.0.1:3000 | |
| ``` | |
| 你可以使用 `curl` 查看 workers: | |
| ```bash | |
| curl http://127.0.0.1:3000/workers | |
| ``` | |
| ## 3. 使用自动化 Profiling 工具 | |
| 为了简化对多个引擎同时进行 profiling 的操作,我们提供了一个自动化脚本 `tools/profile_rollout.py`。 | |
| ### 启动 Profiling | |
| 默认情况下,该工具会对所有 worker 启动 profiling,并在执行 3 步后自动停止: | |
| ```bash | |
| python tools/profile_rollout.py --router-url http://127.0.0.1:3000 --action start --num-steps 3 | |
| ``` | |
| **常用参数说明:** | |
| * `--router-url`: Router 的访问地址。 | |
| * `--num-steps`: 记录的步数,默认为 3。 | |
| * `--output-dir`: trace 文件保存目录。 | |
| * `--activities`: 监控活动,如 `GPU` `CPU`。 | |
| * `--profile-by-stage`: 是否按阶段(prefill/decode)分析。 | |
| ### 手动停止 Profiling | |
| 如果你没有设置 `num_steps` 或想要提前停止: | |
| ```bash | |
| python tools/profile_rollout.py --router-url http://127.0.0.1:3000 --action stop | |
| ``` | |
| ## 4. 进行压力测试 | |
| 在 Rollout 进程通过 `sleep_rollout` 处于等待状态时,你可以: | |
| 1. 使用 `tools/profile_rollout.py` 启动 profiling。 | |
| 2. 使用压测工具(如 `sglang` 自带的 benchmark 工具)向 router 或直接向引擎发送请求。 | |
| 3. 等待 profiling 完成(如果设置了 `num_steps`)或手动停止。 | |
| 4. 在 `output_dir` 中获取 `.json` trace 文件,并使用 `chrome://tracing` 或 [Perfetto](https://ui.perfetto.dev/) 查看。 | |