**作者**:昇腾实战派

#### 背景概述

在深度学习模型的开发和优化过程中,性能分析(Profiling)是不可或缺的一环。通过Profiling,开发者可以深入了解模型的运行时性能,识别瓶颈,进而优化模型。本文将详细介绍如何使用SGLang框架进行Profiling采集,包括启动服务、配置环境变量、执行测试命令以及解决常见问题。

> 昇腾平台已支持SGLang框架的部署和性能分析

#### 拉起服务化

要启动SGLang服务并进行Profiling,需要设置相关的环境变量。以下是一个示例命令:

```bash
SGLANG_TORCH_PROFILER_DIR=./sglang_profile SGLANG_PROFILE_WITH_STACK=False \
python -m sglang.launch_server \
--model-path /path/to/model \
--host 127.0.0.1 \
--port 8034 \
--tp 8 \
--quantization fp8 \
--mem-fraction-static 0.95
```

- `SGLANG_TORCH_PROFILER_DIR=./sglang_profile`:指定Profiling数据的保存路径。
- `SGLANG_PROFILE_WITH_STACK=False`:是否开启调用栈信息的采集,`False`表示不开启。

#### 采集Profiling测试命令

在启动服务后,可以使用以下命令进行Profiling测试:

```bash
python3 -m sglang.bench_serving \
--backend sglang \
--host 127.0.0.1 \
--port 8034 \
--dataset-name random-ids \
--random-range-ratio 1.0 \
--random-input-len 32768 \
--random-output-len 10 \
--max-concurrency 1 \
--num-prompt 1 \
--seed $RANDOM \
--profile \
--flush-cache
```

- `--profile`:启用Profiling。
- `--flush-cache`:在缓存后清空缓存。

#### 解决多一次decode的问题

在某些情况下,SGLang采集Profiling时可能会出现多一次decode的情况。这通常是由于开启了`overlap-schedule`选项。解决方法是在启动服务时关闭该选项:

```bash
SGLANG_TORCH_PROFILER_DIR=./sglang_profile SGLANG_PROFILE_WITH_STACK=False \
python -m sglang.launch_server \
--model-path /path/to/model \
--host 127.0.0.1 \
--port 8034 \
--tp 8 \
--quantization fp8 \
--mem-fraction-static 0.95 \
--disable-overlap-schedule
```

- `--disable-overlap-schedule`:关闭`overlap-schedule`,以避免多一次decode。但需要注意,这可能会导致decode时延增加。

#### 总结

通过上述步骤,开发者可以有效地使用SGLang框架进行Profiling采集,从而优化模型性能。在实际操作中,建议根据具体需求调整相关参数,以达到最佳的性能优化效果。


 

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐