> ## Documentation Index
> Fetch the complete documentation index at: https://docs.siflow.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 部署 Vllm/Sglang 的示例

## Vllm

### 单机多卡

1. 配置 vllm 参数（比如 tensor\_parallel\_size: 8）
2. 执行方式选择单机（single node）
3. 配置 worker 资源，单机最大 8 卡

<img src="https://mintcdn.com/siflow/aexqFemTXLn-HzpC/siverse/llm/media/llm25.png?fit=max&auto=format&n=aexqFemTXLn-HzpC&q=85&s=d0f8a195ddbcc68bf931b5f02fb4d5b0" alt="图片" width="2340" height="1280" data-path="siverse/llm/media/llm25.png" />

### 多机多卡

配置 leader 和 worker 的资源，资源最好保持一致（注：leader 数即为副本数）。

Vllm 参数：

* tensor\_parallel\_size：8
* pipeline-parallel-size：2（每个副本 worker + leader 数量）
* distributed-executor-backend：ray

<img src="https://mintcdn.com/siflow/aexqFemTXLn-HzpC/siverse/llm/media/llm26.png?fit=max&auto=format&n=aexqFemTXLn-HzpC&q=85&s=4549a177ad50a7145d83feb5df0987cf" alt="图片" width="2380" height="1246" data-path="siverse/llm/media/llm26.png" />

### PD 分离

注：多机多卡的 kv cache 走 p2p 共享的形式。

需要配置 prefill、decode、server 的资源，一般建议 server 为 cpu，prefill、decode 为 8 卡，开启 rdma。

vllm 参数：

* tensor\_parallel\_size：8（prefill tp 8，decode tp 8）

### 启动加速

#### 使用 flux vllm 镜像

flux vllm 是平台优化后的 vllm，针对 gpfs 上的模型提供了非常好的 load 加速效果。其他的版本或者地区的需求，联系一下 oncall 同学提供支持。

| 地区        | 镜像                                                     |
| --------- | ------------------------------------------------------ |
| zhuoguang | registry-zhuoguang.siflow\.cn/siflow/flux-vllm:v0.15.0 |
| longmen   | registry-longmen.siflow\.cn/siflow/flux-vllm:0.15.0    |
| beijing   | registry-cn-beijing.siflow\.cn/siflow/flux-vllm:0.15.0 |

在 Deepseek V3.2 上：

|     | 推理参数 | 完整启动时间    | 权重加载时间              | Deepgemm 编译时间 |
| --- | ---- | --------- | ------------------- | ------------- |
| 未优化 | TP8  | 37min 20s | 18min 49s           | 6min 57s      |
| 优化后 | TP8  | 3min 5s   | 18s 命中热存 / 64s 命中冷存 | 41s           |

#### Cuda Graph 编译加速

使用 gpfs 缓存编译结果：

```bash theme={null}
# 路径为挂载的 gpfs 目录
VLLM_TORCH_COMPILE_CACHE_DIR=/mnt/volume/xxx
```

#### Deepgemm 编译加速

通过配置 Deepgemm 预编译目录，在服务第一次启动后加速之后每次的实例启动。

使用方式：服务配置中挂载一个 gpfs volume，然后配置 DG\_JIT\_CACHE\_DIR 环境变量指向 gpfs 中的某个目录，比如挂载到 /mnt/gpfs，DG\_JIT\_CACHE\_DIR 配置为 /mnt/gpfs/服务名/deepgemm/。

## Dynamo

### Vllm Backend 多机多卡

配置同 vllm 多机多卡推理。

<img src="https://mintcdn.com/siflow/aexqFemTXLn-HzpC/siverse/llm/media/llm27.png?fit=max&auto=format&n=aexqFemTXLn-HzpC&q=85&s=5af5a2884ed985de196fcbd306341e6f" alt="图片" width="1283" height="755" data-path="siverse/llm/media/llm27.png" />

## Sglang

<span style={{color:'red'}}>注：默认端口 30000</span>

### PD 分离

引擎选择 sglang，执行方式选择 pd-disaggregated。

<img src="https://mintcdn.com/siflow/aexqFemTXLn-HzpC/siverse/llm/media/llm28.png?fit=max&auto=format&n=aexqFemTXLn-HzpC&q=85&s=0b056a85cef30d250bd72f04ab2394fe" alt="图片" width="1438" height="738" data-path="siverse/llm/media/llm28.png" />

引擎参数为全局参数，会给 pd 都加上，如果要分别设置需要去角色里修改 args。

Size：当 size > 1 时就是分布式的 prefill 或者 decode，比如 decode size 2，此时 decode 每个为 2 个节点。

Replicas：副本数，prefill 或者 decode 的个数，比如 decode replica 2 size 2，此时 decode 一共有 2 \* 2 = 4 个节点。

探活等其他配置和其他框架一致。

示例：deepseek v3.1 1p2d 分布式推理

<span style={{color:'red',fontWeight:'bold'}}>Decode 参数：</span>

```
--disaggregation-mode decode --chunked-prefill-size 20480 --page-size 64 --tp-size 16 --ep-size 16 --moe-dense-tp-size 1 --speculative-algorithm EAGLE --speculative-num-steps 1 --speculative-eagle-topk 1 --speculative-num-draft-tokens 2 --enable-dp-attention --enable-dp-lm-head --dp-size 8 --moe-a2a-backend deepep --deepep-mode low_latency --mem-fraction-static 0.85 --context-length 32768 --cuda-graph-max-bs 64 --max-running-requests 2048 --trust-remote-code --disaggregation-transfer-backend nixl --disaggregation-ib-device mlx5_0,mlx5_1,mlx5_2,mlx5_3,mlx5_4,mlx5_5,mlx5_6,mlx5_7 --watchdog-timeout 3600
```

<span style={{color:'red',fontWeight:'bold'}}>Prefill 参数：</span>

```
--disaggregation-mode prefill --chunked-prefill-size 20480 --page-size 64 --tp-size 8 --ep-size 8 --moe-dense-tp-size 1 --enable-dp-attention --enable-dp-lm-head --dp-size 2 --moe-a2a-backend deepep --deepep-mode normal --mem-fraction-static 0.85 --context-length 32768 --max-running-requests 2048 --trust-remote-code --disaggregation-transfer-backend nixl --disaggregation-ib-device mlx5_0,mlx5_1,mlx5_2,mlx5_3,mlx5_4,mlx5_5,mlx5_6,mlx5_7 --watchdog-timeout 3600
```

<img src="https://mintcdn.com/siflow/aexqFemTXLn-HzpC/siverse/llm/media/llm29.png?fit=max&auto=format&n=aexqFemTXLn-HzpC&q=85&s=a17c8ee28e5719b2e3b02a3cf569113d" alt="图片" width="2858" height="1284" data-path="siverse/llm/media/llm29.png" />

### 启动加速

#### DeepGemm 加速

在 **Sglang** 推理服务启动时在环境变量中添加额外环境变量 `SGLANG_ENABLE_JIT_DEEPGEMM=1`，服务启动时会自行进行编译（预估耗时十几分钟）。

在启用 DeepGemm 的基础上，可以指定两个额外环境变量 `SGLANG_DG_CACHE_DIR` 和 `SGLANG_JIT_DEEPGEMM_PRECOMPILE` 来使用编译缓存，跳过编译过程，其中 `SGLANG_DG_CACHE_DIR` 是预编译结果的存放路径。需要使用分布式存储，比如 GPFS 去保存第一次启动的编译结果。

PD 分离模式下，P 和 D 如果参数不一样，需要指定 Cache 目录到不同的路径下，比如 prefill 指定 `SGLANG_DG_CACHE_DIR=/mnt/model/deepgemm/prefill/tp8`，decode 指定 `SGLANG_DG_CACHE_DIR=/mnt/model/deepgemm/decode/tp8`。

<span style={{color:'red',fontWeight:'bold'}}>ENV 参数：</span>

```
SGLANG_DG_CACHE_DIR=/mnt/model/deepgemm/tp8
SGLANG_ENABLE_JIT_DEEPGEMM=1
SGLANG_JIT_DEEPGEMM_PRECOMPILE=1
```

测试结果：Kimi K2 的启动时间从 26 分钟减少至 10 分钟左右。

## Custom（自定义）

如果你想自定义角色的镜像、启动命令，选择这个引擎模式。

1. 引擎类型选择自定义

   1. 选择执行类型：单机为单节点多副本，分布式为多节点多副本。分布式可以获取的环境变量：

      | Key                  | Description                                         | Example                                                                 | Applies to |
      | -------------------- | --------------------------------------------------- | ----------------------------------------------------------------------- | ---------- |
      | LWS\_LEADER\_ADDRESS | The address of the leader via the headless service. | leaderworkerset-multi-template-0.leaderworkerset-multi-template.default | Pod        |
      | LWS\_GROUP\_SIZE     | Tracks the size of the LWS group.                   | 4                                                                       | Pod        |
      | LWS\_WORKER\_INDEX   | The index or identity of the pod within the group.  | 2                                                                       | Pod        |

   2. 填写角色镜像和启动命令

<img src="https://mintcdn.com/siflow/aexqFemTXLn-HzpC/siverse/llm/media/llm30.png?fit=max&auto=format&n=aexqFemTXLn-HzpC&q=85&s=37660db39ca9b8dbca7375f5d3e9c1f6" alt="图片" width="2112" height="1006" data-path="siverse/llm/media/llm30.png" />

其他配置和其他框架一致。
