【vLLM 学习】Disaggregated Prefill

NVIDIA Dynamo初体验(二)—— vllm部署之aggregate&disaggregate 作为AI小白,初体验dynamo之后,想要继续探索dynamo工具,对dynamo在RAG架构的优化有个初步理解,再探索dynamo两种部署方式,计算它们之间的性能差异。 阅读详情

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。

更多 vLLM 中文文档及教程可访问 →https://vllm.hyper.ai/

*在线运行 vLLM 入门教程:零基础分步指南

源码 examples/offline_inference/disaggregated_prefill.py

# SPDX-License-Identifier: Apache-2.0
"""
该文件演示了分解预填充的示例用法
我们将启动 2 个 vLLM 实例 (Preill 的 GPU 0和 Decode 的 GPU 1) ,
然后将 KV 缓存在它们之间传递。
"""
import os
import time
from multiprocessing import Event, Process

from vllm import LLM, SamplingParams
from vllm.config import KVTransferConfig


def run_prefill(prefill_done):
    # 我们将 GPU 0 用于预填充节点。
    os.environ["CUDA_VISIBLE_DEVICES"] = "0"


    # 预填充节点接收两个请求,而解码节点接收到
    # 三个请求。因此,解码节点只会接收 KV 缓存
    # 请求 1 和 3。解码节点将使用请求的 KV 缓存 1
    # 和 3,并根据要求进行预填充 2。
    prompts = [
        "Hello, my name is",
        "Hi, your name is",
        # The decode node will actually "prefill" this request.
        # 解码节点实际上将"预填充"此请求。
        "Tell me a very long story",
    ]
    sampling_params = SamplingParams(temperature=0, top_p=0.95, max_tokens=1)

    # 使用 pyncclconnector 在 vLLM 实例之间传输 KV 缓存。
    # 此实例是预填充节点 (kv_producer, rank 0)。
    # KV 缓存传输的并行实例数设置为 2,
    # 根据 PyncclConnector 的要求。
    ktc = KVTransferConfig.from_cli(
        '{"kv_connector":"PyNcclConnector","kv_role":"kv_producer","kv_rank":0,"kv_parallel_size":2}'
    )

    # 将 GPU 内存利用设置为0.8,用于40GB 显存的 A6000 GPU。
    # 您可能需要调整值以适合您的 GPU。
    llm = LLM(model="meta-llama/Meta-Llama-3.1-8B-Instruct",
              kv_transfer_config=ktc,
              max_model_len=2000,
              gpu_memory_utilization=0.8)

    llm.generate(prompts, sampling_params)
    print("Prefill node is finished.")
    prefill_done.set()

    # 如果未完成解码节点,则保持预填充节点运行;
    # 否则,脚本可能会过早退出,从而导致不完整的解码。
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        print("Script stopped by user.")


def run_decode(prefill_done):
    # 我们将 GPU 1 用于解码节点。
    os.environ["CUDA_VISIBLE_DEVICES"] = "1"

    prompts = [
        "Hello, my name is",
        "Hi, your name is",
        "Tell me a very long story",
    ]
    sampling_params = SamplingParams(temperature=0, top_p=0.95)

    # 使用 PyNcclConnector 在 vLLM 实例之间传输 KV 缓存。
    # 此实例是解码节点 (KV_Consumer, rank 1)。
    # KV 缓存传输的并行实例数设置为2,
    # 根据 PyNcclConnector 的要求。
    ktc = KVTransferConfig.from_cli(
        '{"kv_connector":"PyNcclConnector","kv_role":"kv_consumer","kv_rank":1,"kv_parallel_size":2}'
    )

    # 将 GPU 内存利用设置为 0.8,用于 40 GB 显存的 A6000 GPU
    # 您可能需要调整值以适合您的 GPU。
    llm = LLM(model="meta-llama/Meta-Llama-3.1-8B-Instruct",
              kv_transfer_config=ktc,
              max_model_len=2000,
              gpu_memory_utilization=0.8)

    # 等待生产者启动管道
    print("Waiting for prefill node to finish...")
    prefill_done.wait()

    # 在设置 prefill_done 时,KV-CACHE 应该
    # 转到此解码节点,因此我们可以开始解码。
    outputs = llm.generate(prompts, sampling_params)
    for output in outputs:
        prompt = output.prompt
        generated_text = output.outputs[0].text
        print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")


if __name__ == "__main__":
    prefill_done = Event()
    prefill_process = Process(target=run_prefill, args=(prefill_done, ))
    decode_process = Process(target=run_decode, args=(prefill_done, ))

    # 开始预填充节点
    prefill_process.start()

    # 开始解码节点
    decode_process.start()

    # 解释完成后终止预填充节点
    decode_process.join()
    prefill_process.terminate()
大模型推理解耦架构:Prefill与Decode分离设计原理与实战 大模型推理性能瓶颈常源于Prefill(预填充)与Decode(自回归解码)两个阶段在计算、内存带宽和KV Cache访问模式上的根本性冲突。Prefill是计算密集型、一次性高带宽操作;Decode则是访存密集型、高频低延迟的长周期任务。传统一体化架构导致GPU计算单元利用率低下、显存带宽争抢严重及KV Cache碎片化OOM。Disaggregated Serving通过计算解耦、内存解耦(如独立KV Store)和调度解耦三层设计,将二者物理隔离,显著提升吞吐、降低P99延迟并增强弹性扩容能力。该架构 阅读详情

相关推荐

vLLM专题(十五)-解耦预填充(Disaggregated Prefilling (experimental))

实现你自己的连接器,并调用第三方库来发送和接收 KV 缓存,以及其他更多操作(比如编辑 vLLM 的模型输入以执行自定义预填充等)。这种方法提供了最大的控制权,但也存在与未来 vLLM 版本不兼容的风险。

494

总结版 | vLLM这一年的新特性以及后续规划

作者|oldpan编辑| 自动驾驶之心点击下方卡片,关注“自动驾驶之心”公众号戳我-> 领取自动驾驶近15个方向学习路线>>点击进入→自动驾驶之心『视觉大语言模型』技术交流群本文只做学术分享,如有侵权,联系删文本文来自The State of vLLM | Ray Summit 2024 && RoadMap的分享,带大家一起回顾下vllm发展历史、过去一...

CV_Autobot的博客 4700

交通小白首投TRB就中Oral?我的完整时间线与避坑指南(附Editorial Manager实操截图)

本文详细解析了交通领域新手如何高效完成TRB国际会议投稿的全流程,从选题策略到投稿系统实操,再到评审过程解析和常见误区避坑指南。特别针对初次投稿者提供了实用建议,包括时间规划、选题考量、Editorial Manager系统操作技巧,以及如何应对评审意见。文章还分享了从录用到会议参与的关键步骤,帮助研究者提升投稿成功率。

weixin_27303545的博客 387

大模型推理引擎vLLM(8):PD分离推理架构原理

大模型推理引擎vLLM(8):PD分离推理架构原理

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 877

Android13 CarPowerManagementService onApPowerStateChange流程分析

如下为CarPower上电的流程图:下面我们从代码角度分析:在CPMS的init方法中会调用onApPowerStateChange(CpmsState.WAIT_FOR_VHAL, CarPowerManager.STATE_WAIT_FOR_VHAL); 设置ApPowerState为STATE_WAIT_FOR_VHAL: 在onApPowerStateChange中调用PowerHandler 的handlePowerStateChange方法: 在handlePowerStateChang

liuning1985622的博客 925

LLM大模型系列(十):深度解析 Prefill-Decode 分离式部署架构

本文将深度解析 Prefill-Decode 分离式部署架构的原理!!

m_aigc2022的博客 3816

ABB机器人与西门子PLC、工业相机联合实现无序抓取的完整调试方案

将此方案导入系统后,逐步执行调试,确保各环节信号正常触发,即可实现高效无序抓取!

CHUXUEZHE8210的博客 1993

【vLLM 学习】Disaggregated Prefill Lmcache

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。

HyperAI超神经 548

innovus: 如何让两个generate clock balance skew group?

如题,在sdc约束中两个generate clock被设置到同一个clock group中,工具虽然会生成对应的两个skew group,但是阅读ccoot_spec发现工具并没有让两个skew group进行balance,这时就需要手动设置balance skew group。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 4049

使用 Python 爬虫获取中国证券市场公司公告数据

本文详细介绍了如何使用 Python 爬虫技术从中国证券市场(如巨潮资讯网)爬取公司公告数据。通过分析网页结构,编写爬虫脚本,抓取并存储公告信息,我们实现了从网页抓取数据的全过程。此外,本文还展示了如何应对反爬虫机制,并介绍了数据分析与可视化的基本方法。未来,我们可以通过机器学习等技术进一步挖掘公告中的潜在信息,例如,通过情感分析对公告内容进行情绪分类,或者预测某些公告类型对股市走势的影响等。希望本文能帮助你理解如何使用 Python 爬虫技术获取和处理证券市场的数据,并为你的数据分析项目提供帮助。

2201_76125261的博客 1887

开源 AI 推理框架的趋势分析:从 vLLM 一枝独秀到多元生态的竞争格局

2025 年开源 LLM 推理框架的竞争已从单一框架主导期进入多元化生态期。vLLM 的 API 兼容性 + PagedAttention 组合在工程成熟度上仍领先,但 SGLang 的 RadixAttention 和编译优化在吞吐维度形成了有力竞争。TensorRT-LLM 在 NVIDIA 专属优化和延迟敏感场景中不可替代,llama.cpp 在消费级和边缘硬件上的价值独一无二。选择框架的建议路径:多模型快速迭代 + OpenAI API 兼容 → vLLM;

iymei4986533030的博客 2417

搞懂 SAPUI5 Fiori 应用的 OData 授权维护:从 IWSG、IWSV 到 S_SERVICE 的完整实践

本文探讨了SAP Fiori项目中常见的授权问题及其解决方案。文章指出,开发人员常误将OData服务访问问题归咎于前端代码或配置,而实际上多因授权默认值未正确带入角色所致。详细分析了IWSG(前端服务组元数据)和IWSV(后端业务服务)两个关键对象的作用机制,强调应通过PFCG角色的Authorization Default入口维护服务对象,而非直接修改S_SERVICE授权对象。文章还提供了前后端授权配置的具体操作步骤,并特别提醒需同时配置前端和后端授权,才能确保应用完整可用性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 206

大模型推理 Prefill-Decode 分离架构深度解析:从 Monolithic 到 Disaggregated Serving 的全栈架构演进与生产实践

核心原理:Prefill(compute-bound)与 Decode(memory-bound)在算力/带宽/SM 利用率/SLO 上几乎正交对立的物理特性,决定了把它们物理分离到两组异构 GPU 集群上、用 KV Cache Transfer 桥接,能从根上消除单体架构下二者相互拖慢的干扰,并通过异构硬件匹配与独立容量规划同时压低 TTFT 与 TPOT。

我的博客 478

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

vLLM 分离式编码器实战:Encoder/Prefill/Decode 三阶段解耦部署与 EC Cache 传输机制

本文基于 vLLM 官方的 Disaggregated Encoder 特性文档,讲解如何将多模态大模型的视觉编码阶段从 Prefill/Decode 阶段剥离到独立实例运行。读完你可以理解分离式编码(EPD)的三大收益与适用场景,掌握 `disagg_1e1pd_example.sh` / `disagg_1e1p1d_example.sh` 两条参考部署路径的完整配置,并深入 `vllm/di

gitblog_00145的博客 420

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

vLLM 异构三卡部署4090D 做 Prefill,双 A100 做 Decode(二)

本文提出了一种异构GPU推理部署方案B,将大模型推理过程拆分为Prefill和Decode两个阶段,并分配不同GPU资源: Prefill阶段由RTX 4090D单独处理,负责Prompt输入和KV Cache生成,适合计算密集型任务 Decode阶段由双A100并行处理,专注于token连续生成,利用数据中心卡的稳定性优势 方案B通过角色分离实现了: 避免异构GPU间的执行节奏冲突 针对性优化不同推理阶段的需求 提高整体服务稳定性和资源利用率 部署采用三个独立服务:Prefill服务(4090D)、

hello.reader 919

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

一文搞懂LLM推理加速:Prefill-Decode分离技术深度解析

本文系统探讨了大型语言模型(LLM)推理的Prefill-Decode分离技术。该技术将计算密集的Prefill阶段与内存带宽密集的Decode阶段分别部署到专用硬件资源池,实现独立扩展和性能隔离。通过分析传统混合部署的缺陷,阐述了PD分离在消除性能干扰、提高资源利用率方面的优势,并介绍了多种架构实现方案。研究表明,该技术能显著提升大模型服务的效率与成本效益,已成为构建高性能AI基础设施的关键方案。

libaiup的博客 1797

vLLM PD分离方案入门:核心概念、优势与适应场景梳理

摘要: 文章探讨了大语言模型(LLM)推理中Prefill与Decode阶段的资源需求差异及分离优化的必要性。Prefill阶段算力密集,Decode阶段访存密集,传统混合部署导致资源利用率不均。vLLM框架提出PD分离方案,通过KV cache传输实现1P1D协作,采用生产者-消费者模式异步传递数据。当前方案功能精简,但扩展性有限,需进一步解决PD配比、动态扩缩容、负载均衡及存储设计等问题。

InfraTech 1394

【收藏干货】2026 版大模型推理底层原理拆解!吃透 Prefill/Decode 与 vLLM 核心优化

大模型推理的本质,是在有限 GPU 资源上,围绕“下一个 token”这件事,做一整套计算、内存和调度的系统设计。模型能力决定上限,推理系统决定体验。Prefill 和 Decode 解释了推理为什么天然分阶段;KV Cache 解释了显存为什么会成为核心瓶颈;Paged Attention 和 Continuous Batching 解释了现代引擎为什么能把 GPU 压榨到更高效率;而 vLLM,则是把这些思想工程化之后的一种代表性实现。当你再看到一个。

ytt0523_com的博客 680

09-vLLM KV Cache 系统完整分析

本文系统分析了vLLM V1架构下的KV Cache全栈实现,主要内容包括: KV Cache管理层次结构 KVCacheManager作为顶层抽象与调度器交互 SingleTypeKVCacheManager作为单类型基类 多种具体管理器实现(FullAttention/SlidingWindow等) 多GPU协调机制 通过KVCacheCoordinator实现跨GPU缓存协调 支持单Group、混合模型等多种协调模式 扩展功能 CPU卸载(KV Offload) 跨节点传输(KV Transfer)

ld326的专栏 289

vLLM MoRIIOConnector 实战指南:基于 MoRI-IO 的高性能 PD 分离 KV Cache 传输

`MoRIIOConnector` 是 vLLM 中一个面向 PD(Prefill-Decode)分离部署的高性能 KV 缓存连接器,构建于 ROCm 的 MoRI-IO 点对点通信库之上,通过 RDMA 或 xGMI 传输 KV 字节,并叠加轻量 TCP 控制面完成握手、块号交换与完成信号。读完本文,你将掌握 MoRIIOConnector 的安装部署、单机/多机 PD 分离的完整启动流程、全部

gitblog_00972的博客 378

vLLM 生态全景:从推理引擎到 AI 基础设施的进化之路

vLLM是一个高性能、高吞吐的大语言模型(LLM)推理与服务框架,由加州大学伯克利分校 RISE Lab 于 2023 年开源。让大模型推理更快、更省、更便宜。维度传统方案(HuggingFace Transformers)vLLM吞吐量基准 1×最高24×显存利用率~40%(碎片严重)>90%并发能力个位数数百~数千部署成本高(需更多 GPU)降低60%+从 2023 年的一篇论文(

技术博客 265

第16篇-Continuous-Batching与调度优化

GPU 的并行计算能力极强,处理一个请求和处理多个请求的计算开销差异不大(只要不超出显存和算力)。因此,推理引擎会将多个请求组成一个批次(Batch),一次性送入 GPU 计算,分摊固定的调度开销,提升整体吞吐量。这种"攒一批一起算"的策略就是批处理(Batching)。fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;细化调度粒度解决阶段冲突。

m0_68987304的博客 465

【vllm】(Part 5)vLLM服务入口层

vLLM的服务入口层是连接外部请求与推理引擎的核心桥梁。它采用FastAPI + Uvicorn + uvloop技术栈,提供了从OpenAI兼容REST API到gRPC、从CLI交互到批量推理的多种接入方式。

zhonglinzhang 748
上一篇: 从全心脏模型到基于 LLM 的疾病网络分析,清华长庚医院李栋从数据视角剖析医疗大模型发展趋势
下一篇: AMD/沐曦/字节跳动/北京大学/上海创智共赴 Meet AI Compiler,聚焦底层编译与跨硬件编译生态的真实落地实践
HyperAI超神经
博客等级 码龄7年 8873粉丝 1753原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值