LoongServe论文解读:prefill/decode分离、弹性并行、零KV Cache迁移

LoongServe 论文解读:prefill/decode 分离、弹性并行、零 KV Cache 迁移

LoongServe: Efficiently Serving Long-context Large Language Models with Elastic Sequence Parallelism

论文提出了一种支持弹性分配的推理框架,通过引入弹性序列并行(Elastic Sequence Parallelism,简称 ESP)机制,动态地将 request 的 prefill 和 decode 阶段分配到 instance group 上。每个 group 可以根据负载的需求变化动态地 scale up 或者 scale down,并且没有 KV Cache 的迁移开销

请添加图片描述

问题背景

Transformer LLM 推理过程分为两个阶段:prefill 和 decode。

  • prefill 阶段:将用户输入的 prompts 生成 q、k、v,存入 KV Cache(为 decode 阶段缓存)。这一步计算并行好,是计算密集型 compute bound
  • decode 阶段:由最新产生的 tokens 生成 q、k、v,计算它与之前所有 tokens 的 attention,这一步需要从 KV Cache 中读取前面所有 token 的 key、value,因此是内存密集型 memory bound

# docker-compose.yml version: '3.8' services: sgl-prefill: image: 6.111.16.24:5000/sglang:v0.4.9.post2-cu126-nccl2276 container_name: sgl-prefill restart: unless-stopped devices: - /dev/nvidia4 - /dev/nvidia5 - /dev/nvidia6 - /dev/nvidia7 deploy: resources: reservations: devices: - driver: nvidia device_ids: ['4','5','6','7'] capabilities: [gpu] networks: - sgl-net ports: - "20000:20000" shm_size: 16g volumes: - /models/Qwen3-30B-A3B-Instruct-2507:/models/Qwen3-30B-A3B-Instruct-2507 - /dev/shm:/dev/shm environment: - PYTHONPATH=/root/sglang/python command: - python3 - -m - sglang.launch_server - --model-path - /models/Qwen3-30B-A3B-Instruct-2507 - --tp - "4" - --port - "20000" - --host - "0.0.0.0" - --disaggregation-mode - prefill - --attention-backend - fa3 - --disaggregation-bootstrap-port - "9000" - --chunked-prefill-size - "8192" - --max-prefill-tokens - "16384" - --enable-dp-attention - --data-parallel-size - "4" - --mem-fraction-static - "0.9" sgl-decode: image: 6.111.16.24:5000/sglang:v0.4.9.post2-cu126-nccl2276 container_name: sgl-decode restart: unless-stopped devices: - /dev/nvidia0 - /dev/nvidia1 - /dev/nvidia2 - /dev/nvidia3 deploy: resources: reservations: devices: - driver: nvidia device_ids: ['0','1','2','3'] capabilities: [gpu] networks: - sgl-net ports: - "20001:20001" shm_size: 16g volumes: - /models/Qwen3-30B-A3B-Instruct-2507:/models/Qwen3-30B-A3B-Instruct-2507 - /dev/shm:/dev/shm environment: - PYTHONPATH=/root/sglang/python command: - python3 - -m - sglang.launch_server - --model-path - /models/Qwen3-30B-A3B-Instruct-2507 - --tp - "4" - --port - "20001" - --host - "0.0.0.0" - --disaggregation-mode - decode - --max-running-requests - "256" - --enable-dp-attention - --disaggregation-bootstrap-port - "9000" - --attention-backend - fa3 - --data-parallel-size - "4" mini-lb: image: 6.111.16.24:5000/sglang:v0.4.9.post2-cu126-nccl2276 container_name: mini-lb restart: unless-stopped networks: - sgl-net ports: - "8003:8003" volumes: - /root/sglang/python:/root/sglang/python environment: - PYTHONPATH=/root/sglang/python command: - env - PYTHONPATH=/root/sglang/python - python3 - -m - sglang.srt.disaggregation.mini_lb - --prefill - http://sgl-prefill:20000 - --decode - http://sgl-decode:20001 - --host - "0.0.0.0" - --port - "8003" networks: sgl-net: driver: bridge 检查是否有问题
08-21
### 检查 `docker-compose.yml` 配置是否存在错误 在使用 `docker-compose` 部署容器化应用时,确保 `docker-compose.yml` 文件的语法和结构正确是成功启动服务的前提。以下是一些常见的检查方法和工具,用于验证 `docker-compose.yml` 文件是否存在问题。 #### 1. 使用 `docker-compose config` 命令验证配置 Docker Compose 提供了内置命令 `docker-compose config` 来验证并输出当前 `docker-compose.yml` 文件的内容。如果配置文件中存在语法错误或字段拼写错误,该命令会直接报错并指出问题所在。 ```bash docker-compose config ``` 若输出内容为解析后的 YAML 结构,则表示配置文件语法正确;若提示 `ERROR`,则需根据错误信息修改配置文件 [^1]。 #### 2. 使用在线 YAML 验证工具 除了使用 Docker 自带的命令外,还可以借助在线 YAML 校验工具(如 [YAML Lint](http://www.yamllint.com/))对 `docker-compose.yml` 文件进行语法检查。这些工具可以检测缩进、冒号后空格缺失、非法字符等常见问题。 #### 3. 检查服务定义中的常见错误 - **端口映射格式错误**:端口映射应使用 `host:container` 格式,例如 `"8080:80"`。 - **卷挂载路径错误**:路径应为绝对路径或相对路径,且注意是否使用了错误的冒号或缺少引号。 - **网络配置错误**:确保自定义网络名称与 `networks` 段定义一致,且桥接网络配置正确 [^1]。 - **环境变量格式错误**:环境变量应使用 `KEY=VALUE` 格式,且注意是否遗漏了冒号或空格。 #### 4. 使用 `docker-compose` 构建镜像并运行容器 在配置文件语法正确的基础上,可以尝试构建并启动容器,观察是否能正常运行: ```bash docker-compose up -d ``` 若启动失败,可使用以下命令查看日志信息以进一步排查问题: ```bash docker-compose logs ``` 日志信息通常能反映出服务启动失败的具体原因,如依赖服务未就绪、端口冲突、配置文件路径错误等 [^1]。 #### 5. 使用 `docker-compose` 构建自定义镜像 若 `docker-compose.yml` 文件中使用了自定义镜像(如通过 `build` 字段指定构建上下文),需确保 `Dockerfile` 存在且构建命令无误。例如: ```yaml services: myservice: build: . ports: - "8080:8080" ``` 构建时可使用以下命令: ```bash docker-compose build ``` 若构建失败,需检查 `Dockerfile` 中的 `FROM`、`RUN`、`CMD` 等指令是否正确 [^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值