UniRL 文档
快速开始

安装

安装 UniRL 运行环境和可选文档站。

UniRL 要求 Python >=3.12,<3.14。两个 rollout engine 栈都使用 CUDA 13 / PyTorch +cu130,但 vllm 与 sglang 锁定的 PyTorch 版本不同,并被声明为冲突 extra。必须把它们安装在不同虚拟环境中,不能在同一个环境里混装。

Python 包

pyproject.toml 是依赖事实源。根目录的 setup.py 和 requirements.txt 只是旧工具的 兼容快照,没有完整描述当前 engine/CUDA 栈。

# vLLM / vLLM-Omni
uv venv --python 3.12 --seed .venv
source .venv/bin/activate
uv pip install -e ".[vllm,train,infer]" --prerelease=allow

# SGLang,第 1 步:创建并激活另一个环境
deactivate
uv venv --python 3.12 --seed .venv-sglang
source .venv-sglang/bin/activate

SGLang 栈会通过 causal-conv1d 编译 CUDA extension。PATH 上的 CUDA 12 nvcc 无法与 CUDA 13 PyTorch runtime 配合编译。激活 .venv-sglang 后,先安装 CUDA 13 compiler wheels,再设置编译环境,最后才安装带 SGLang extras 的 UniRL:

# SGLang,第 2 步:安装 CUDA 13 compiler toolchain
uv pip install "nvidia-cuda-nvcc==13.0.*" "nvidia-cuda-crt==13.0.*" \
  "nvidia-nvvm==13.0.*" "nvidia-cuda-cccl==13.0.*" "nvidia-cuda-runtime==13.0.*"

# SGLang,第 3 步:选择该 toolchain 并限制并行编译数
export CUDA_HOME="$VIRTUAL_ENV/lib/python3.12/site-packages/nvidia/cu13"
export PATH="$CUDA_HOME/bin:$PATH"
export MAX_JOBS=4

# SGLang,第 4 步:安装 UniRL 和 engine 栈
uv pip install -e ".[sglang,train,infer]" --prerelease=allow

driver 535 主机还需要让 NVIDIA cuda-compat-13-0 forward-compat library 出现在 LD_LIBRARY_PATH。SGLang wheel 要求 glibc >=2.34;vLLM 栈要求 glibc >=2.28。

可选 Extra

Extra用途
vllmvLLM、vLLM-Omni 及其 PyTorch +cu130 栈
sglangSGLang diffusion、FlashAttention 4 及其 PyTorch +cu130 栈
trainW&B、async runtime 支持和 math-verify
inferaccelerate 等推理侧辅助依赖
evalOCR reward 所需的 PaddlePaddle、PaddleOCR、torchvision 与 Levenshtein
dataset-prepdatasets/ 转换器所需的 datasets、pandas、PyArrow、PyAV
cosmos3Cosmos3 SFT recipe 所需的 diffusers>=0.39
veomni锁定版本的 VeOmni 分布式 backend
fastvideo锁定 upstream commit 的 FastVideo
devpytest、ruff、pre-commit

只安装 recipe 实际需要的能力:

# OCR reward(已包含 PaddleOCR,无需另装 OCR 包)
uv pip install -e ".[vllm,train,infer,eval]" --prerelease=allow

# 数据转换;droid100 还需要来自 engine 环境的 torch
uv pip install -e ".[dataset-prep]"

# 受限模型/backend 示例
uv pip install -e ".[vllm,train,cosmos3]" --prerelease=allow
uv pip install -e ".[sglang,train,veomni,infer]" --prerelease=allow
uv pip install -e ".[vllm,train,fastvideo]" --prerelease=allow

可选依赖

legacy GenEval/OpenMMLab scorer 必须放在独立的 Python 3.10 sidecar 中;它的 MMCV 栈不能装进核心 Python 3.12 / CUDA 13 环境。见 Geneval MMCV 设置。

如需把重型 reward model 放到独立 GPU 节点而非进程内运行,使用 unirl-reward-service/ 下的独立远程 reward service(它自带依赖和 README)。远程 backend 的接线见 奖励。

可选的 rollout→trainer 数据面总线(TransferQueue / Mooncake)同样需要单独安装。见 TransferQueue 安装。

文档站

Fumadocs 文档站放在 docs/,与 Python 包隔离:

cd docs
npm install
npm run dev

静态构建:

npm run build

构建产物位于 docs/out/。

目录