切换 SGLang 版本#
RLinf 可以将不同的 generation backends 接入其强化学习流水线。 在当前版本中 支持 SGLang与vLLM。
备注
RLinf 兼容 SGLang 0.4.4 → 0.5.4, vLLM 0.8.5 → 0.8.5.post1 不需要手动打补丁 —— 框架会自动检测已安装的版本并加载匹配的 shim。
安装要求#
CUDA ≥ 11.8(或与 PyTorch 构建版本匹配的 12.x)
Python ≥ 3.8
所选模型需要足够的 GPU 内存
兼容版本的 PyTorch 和 transformers
备注
CUDA / PyTorch 版本不匹配是最常见的安装问题。 安装 SGLang 前请先确认二者版本一致。
通过 pip 安装
# 参考版本
pip install sglang==0.4.4
# 推荐用于生产
pip install sglang==0.4.8
# 最新支持版本
pip install sglang==0.5.4
# 安装vLLM
pip install vllm==0.8.5
从源码安装
# 安装 SGLang
git clone https://github.com/sgl-project/sglang.git
cd sglang
git checkout v0.4.8 # 选择需要的 tag
pip install -e "python[all]"
git clone https://github.com/vllm-project/vllm.git
cd vllm
git checkout v0.8.5 # 选择需要的 tag
pip install -e .
备注
从源码构建可能耗时且占用大量磁盘空间; 除非需要最新修复,否则推荐使用预编译的 wheels。
....
rollout:
group_name: "RolloutGroup" # SGLang Generation Group 名称,用于通信
gpu_memory_utilization: 0.55 # SGLang 参数,决定静态内存池使用的显存比例
model:
model_path: /model/path # 模型路径
model_type: qwen2.5 # 模型架构
enforce_eager: False # 若为 False,rollout 引擎会捕获 cuda graph,会增加初始化时间
distributed_executor_backend: mp # ray 或 mp
disable_log_stats: False # 若为 True,则关闭 sglang 输出日志
detokenize: False # 是否反解码输出。在 RL 训练中通常不需要反解码,可设为 True 进行调试
padding: null # 若为 null,则使用 tokenizer.pad_token_id;用于过滤 Megatron 的 padding
eos: null # 若为 null,则使用 tokenizer.eos_token_id
rollout_backend: sglang # [sglang, vllm] 在这里选择所使用的 rollout 引擎,目前支持SGLang与vLLM
sglang:
attention_backend: triton # [flashinfer, triton] SGLang 使用的注意力后端,更多信息见 SGLang 文档
decode_log_interval: 500000 # SGLang 打印解码时间和统计信息的间隔
use_torch_compile: False # 是否在 SGLang rollout 中启用 torch_compile
torch_compile_max_bs: 128 # torch compile 的最大 batch size,超过则不使用
vllm:
attention_backend: FLASH_ATTN # [FLASH_ATTN,XFORMERS] VLLM 使用的注意力后端,更多信息见 vLLM 文档
enable_chunked_prefill: True # 是否在 vLLM 中启用 chunked_prefill
enable_prefix_caching: True # 是否在 vLLM 中启用 prefix_caching
enable_flash_infer_sampler: True # 是否在 vLLM 中使用flashinfer 代替原有Pytorch实现的采样
tensor_parallel_size: 1 # tp_size
pipeline_parallel_size: 1 # pp_size
validate_weight: False # 是否在开始时发送所有权重用于对比
validate_save_dir: null # 保存权重对比文件的目录
print_outputs: False # 是否打印 rollout 引擎的输出(token ids, texts 等)
max_running_requests: 64 # rollout 引擎的最大并发请求数
cuda_graph_max_bs: 128 # cuda graph 的最大 batch size,超过则不使用 cuda graph
...