vLLM
文章平均质量分 84
vllm文档
csdddn
技术搬运工
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
vLLM - 量化 - TorchAO
TorchAO是一个PyTorch架构优化库,提供高性能数据类型、优化技术和内核,支持与torch.compile等PyTorch原生特性结合使用。它支持HuggingFace模型量化(如transformers和diffusers),可将量化模型保存至HuggingFace中心,或通过TorchAO量化空间的UI界面操作。建议安装最新夜间构建版本,并提供了模型量化的示例代码。原创 2025-10-13 02:56:12 · 242 阅读 · 0 评论 -
vLLM - 量化 - 量化的键值(KV)缓存
本文介绍了vLLM框架中量化的键值(KV)缓存技术,重点解析了FP8格式的KV缓存优化方案。文章详细对比了E5M2和E4M3两种FP8格式的优缺点,指出当前实现通过倍增KV缓存空间来提高吞吐量,但尚未优化延迟表现。同时提供了使用示例代码,并推荐使用LLM Compressor工具进行校准缩放因子调优,以获得更好的模型质量。最后展示了完整的量化模型保存和加载流程,帮助开发者实现高效的KV缓存量化应用。原创 2025-10-12 00:02:28 · 752 阅读 · 0 评论 -
vLLM - 量化 - NVIDIA TensorRT 模型优化器
NVIDIA TensorRT模型优化器是为GPU推理优化的工具库,支持大语言模型、视觉语言模型和扩散模型的后训练量化(PTQ)和量化感知训练(QAT)。该工具提供简单安装方式(pip install nvidia-modelopt)和量化流程示例,包括加载HuggingFace模型、选择量化配置(如FP8)、执行校准和导出量化检查点。量化后的模型可通过vLLM部署,支持FP8等量化格式,显著提升推理效率。原创 2025-10-12 00:02:13 · 351 阅读 · 0 评论 -
vLLM - 量化 - INT8 W8A8
摘要:vLLM支持INT8量化以节省内存和加速推理,适用于NVIDIA Turing/Ampere/Ada/Hopper架构GPU。量化流程包括加载模型、准备校准数据、应用SmoothQuant和GPTQ混合量化算法、保存模型并评估精度。需安装llmcompressor库,建议使用512个校准样本和2048序列长度。Blackwell GPU需改用FP8量化。量化后模型可通过vLLM加载,评测时需注意添加bos_token。遇到问题可在llm-compressor项目提交issue。原创 2025-10-12 00:02:07 · 836 阅读 · 0 评论 -
vLLM - 量化 - INT4 W4A16
摘要:vLLM支持INT4权重量化,可节省内存并加速推理,特别适合低QPS场景。需NVIDIA GPU(计算能力>8.0)。安装llmcompressor库后,通过四步实现量化:1)加载模型;2)准备校准数据(建议512+样本);3)应用GPTQ等量化算法;4)评估准确率。最佳实践包括调整超参数(如dampening_frac、actorder)和使用多样化校准数据。量化模型需注意bos标记敏感性,完整示例代码和问题支持详见llm-compressor仓库。原创 2025-10-12 00:02:01 · 718 阅读 · 0 评论 -
vLLM - 量化 - FP8 英特尔®神经压缩器(INC)
vLLM支持在英特尔Gaudi AI加速器上使用FP8量化技术,通过英特尔神经压缩器(INC)对Llama模型的权重和激活值进行8位浮点量化。该功能支持多种模块的量化操作,包括线性层、键值缓存等。使用前需要进行模型校准,生成测量配置文件。量化后的模型可显著减少内存占用,未量化权重先在CPU处理再传输到HPU设备。运行时需注意超时设置,建议生产环境保留预热阶段以获得最佳性能。原创 2025-10-12 00:01:29 · 426 阅读 · 0 评论 -
vLLM - 量化 - GPTQModel
GPTQModel是一个用于4/8位模型量化的工具包,由ModelCloud.AI开发。它支持动态逐模块量化,兼容Marlin和Machete优化内核,可在Nvidia GPU上实现高性能推理。该工具允许通过简单的Python API进行模型量化,并支持从Hugging Face加载5000+预量化模型。量化后的模型可直接通过vLLM运行,显著减少内存占用同时提升推理速度。安装仅需pip命令,量化过程支持自定义参数,适合不同硬件配置。原创 2025-10-12 00:01:21 · 256 阅读 · 0 评论 -
vLLM - 量化 - GGUF
vLLM实验性支持GGUF模型格式,主要用于减少显存占用。目前仅支持单文件GGUF模型,建议使用基础模型的分词器而非GGUF内置分词器以避免转换问题。用户可通过命令行或Python API加载GGUF模型,支持多GPU张量并行推理。示例展示了从HuggingFace下载TinyLlama模型并使用chat方法进行对话生成的过程。注意该功能仍处于实验阶段,可能与其他特性不兼容。原创 2025-10-12 00:01:11 · 452 阅读 · 0 评论 -
vLLM - 量化 - FP8 W8A8(8位浮点权重与激活量化)
vLLM支持在Nvidia H100和AMD MI300x等GPU上使用FP8(8位浮点)量化技术,显著降低显存需求并提升性能。通过llm-compressor工具可实现模型量化,支持权重静态和激活动态量化两种模式。FP8量化分为E4M3和E5M2两种格式,分别适用于不同计算场景。目前Hopper和Ada Lovelace架构GPU完全支持W8A8,Ampere架构则支持W8A16。量化流程包括加载模型、应用量化和精度评估三个步骤,通过命令行或API即可启用动态量化功能。该技术对模型精度影响极小,同时能实现原创 2025-10-12 00:01:01 · 1048 阅读 · 0 评论 -
vLLM - 量化 - BitsAndBytes
vLLM现已支持BitsAndBytes量化技术,可高效进行模型推理。BitsAndBytes通过量化减少内存占用并提升性能,支持动态量化和预量化检查点两种方式。用户只需安装bitsandbytes≥0.46.1,即可在Hugging Face上找到预量化模型或通过指定参数实现动态4位量化。vLLM自动读取模型配置文件,OpenAI兼容服务器使用时需添加--quantization bitsandbytes参数。该技术无需数据校准即可保持模型精度。原创 2025-10-12 00:00:54 · 232 阅读 · 0 评论 -
vLLM - 量化 - BitBLAS
摘要:vLLM现支持BitBLAS量化框架,提供高效灵活的模型推理和更多精度组合选择。用户需确保硬件支持所选数据类型(如bfloat16或float16)。安装BitBLAS后,可从Hugging Face获取预量化模型,并通过简单配置加载。支持直接读取BitBLAS和GPTQ格式的checkpoint,示例代码展示了如何加载不同格式的量化模型。原创 2025-10-12 00:00:46 · 258 阅读 · 0 评论 -
vLLM - 量化 - AutoRound
AutoRound是英特尔开发的先进量化算法,支持将大型语言模型高效量化为INT2-INT8格式,在保持高精度的同时优化内存和推理性能。该工具支持多种硬件平台(CPU/GPU/HPU)和量化方法(AutoRound/AutoAWQ/GGUF等),提供逐层混合比特量化等精细控制功能。用户可通过CLI或Python API快速实现模型量化,并配合vLLM等框架部署。AutoRound整合了AutoGPTQ等开源技术,实现了准确性与性能的平衡。原创 2025-10-12 00:00:39 · 418 阅读 · 0 评论 -
vLLM - 量化 - AutoAWQ
本文介绍了使用AutoAWQ工具进行4位模型量化的方法。量化可将模型精度从BF16/FP16降至INT4,显著减少内存占用并降低延迟。文章提供了安装AutoAWQ的步骤(pip install autoawq),并展示了量化mistralai/Mistral-7B-Instruct-v0.2模型的完整代码示例。同时介绍了如何通过vLLM运行已量化的AWQ模型(如TheBloke/Llama-2-7b-Chat-AWQ),包含命令行调用和Python API使用示例。量化后的模型可以像普通模型一样进行推理生成原创 2025-10-12 00:00:30 · 211 阅读 · 0 评论 -
vLLM - 特征 - 工具调用
vLLM支持多种模型工具调用功能,包括Hermes、Mistral和Llama系列。通过chat completion API的tool_choice选项(auto/required/none)实现不同调用方式,使用结构化输出确保响应格式合规。启动服务需指定模型、工具解析器和聊天模板,请求中需定义工具函数及处理逻辑。具体支持模型包括Hermes 2 Pro/Theta/3、Mistral-7B-Instruct及Llama 3.1系列,各模型需配置对应参数和模板。贡献新模型支持欢迎。原创 2025-10-12 00:00:21 · 933 阅读 · 0 评论 -
vLLM - 特征 - 结构化输出(Structured Outputs)
vLLM 支持结构化输出生成,提供多种约束方式(choice/regex/json/grammar等)来精确控制模型输出格式。文档介绍了通过OpenAI兼容API使用结构化输出的方法,包括选项选择、正则匹配、JSON Schema和语法约束等示例。同时支持推理模型与结构化输出的结合应用,并提醒用户从废弃API迁移到新字段。结构化输出功能可确保生成内容符合预定格式要求,适用于需要严格控制输出结构的场景。原创 2025-10-12 00:00:13 · 622 阅读 · 0 评论 -
vLLM - 特征 - 推理采样
vLLM支持多种推理采样技术来提升大语言模型推理效率:1)使用轻量级草稿模型并行生成候选token;2)基于n-gram模式匹配预测后续token;3)采用MLP推理器加速预测;4)整合EAGLE草稿模型。当前v0.10.0版本存在部分限制:草稿模型与流水线并行不兼容,n-gram方法需配置最大回看长度,MLP方案要求草稿模型禁用张量并行。这些技术通过并行生成候选token来降低延迟,但实际效果因模型和参数而异,优化工作仍在进行中。原创 2025-10-12 00:00:05 · 900 阅读 · 0 评论 -
vLLM - 特征 - 睡眠模式(Sleep Mode)
vLLM睡眠模式允许临时释放GPU显存而不停止服务器,支持1级(权重转CPU)和2级(完全卸载)睡眠。通过Python API或HTTP端点控制,可快速唤醒恢复推理,特别适合RLHF训练和权重更新场景。该功能需CUDA支持,服务器端需开启开发模式才能使用相关端点。原创 2025-10-11 01:07:07 · 456 阅读 · 0 评论 -
vLLM - 特征 - Reasoning Outputs
vLLM支持推理模型输出,提供包含推理步骤的reasoning_content字段。摘要重点如下: 特性支持: 支持DeepSeek R1等推理模型 输出包含reasoning_content(推理步骤)和content(最终结论) 支持6种主流模型系列,包括Qwen3、GLM-4.5等 使用方式: 需指定--reasoning-parser参数启动服务 普通/流式请求均可获取推理内容 部分模型需特殊参数开启推理功能 特殊说明: IBM Granite需thinking=True开启推理 Qwen3默认开启原创 2025-10-11 01:06:54 · 603 阅读 · 0 评论 -
vLLM - 特征 - 提示嵌入输入
vLLM支持直接输入提示嵌入(prompt embeddings),绕过文本分词步骤。文档介绍了两种使用方式:离线推理时通过EmbedsPrompt接口传递形状为(sequence_length, hidden_size)的torch张量;在线服务时通过OpenAI兼容API以base64编码形式传递嵌入。两种方式都支持与Hugging Face Transformers集成,当同时提供文本和嵌入输入时,嵌入会优先处理。该功能适用于需要直接输入多模态数据或自定义嵌入的场景。原创 2025-10-11 01:06:44 · 292 阅读 · 0 评论 -
vLLM - 特征 - NixlConnector 使用指南
NixlConnector是vLLM框架中用于高效传输KV缓存的高性能连接器,基于NIXL库实现异步通信。支持同一主机或多机部署,通过环境变量配置UCX传输参数,提供预填充器(kv_producer)和解码器(kv_consumer)两种角色模式。典型使用场景包括:同主机部署时指定不同GPU,多机部署时配置IP和端口,并通过代理服务器路由请求。重要配置项包括VLLM_NIXL_SIDE_CHANNEL_PORT(默认5600)用于握手通信,以及UCX_NET_DEVICES等传输参数。该连接器支持TP/DP原创 2025-10-11 01:06:08 · 977 阅读 · 0 评论 -
vLLM - 特征 - 多模态输入
vLLM支持多模态模型输入,包括图像和视频处理。主要特性: 输入格式:支持PIL图片、URL或预计算embedding 缓存优化:通过内容哈希或自定义UUID实现跨请求缓存 安全控制:可限制访问域名防止SSRF漏洞 批量处理:支持多图片输入和批量推理 对话接口:LLM.chat()方法直接处理包含图片的消息 使用示例包括单图描述、多图对比和视频字幕生成。当前多模态支持仍在快速迭代中。 (字数:149字)原创 2025-10-11 01:05:56 · 824 阅读 · 0 评论 -
vLLM - 特征 - LoRA 适配器
本文介绍了如何在vLLM框架中使用LoRA适配器技术。主要内容包括:1) 基础使用方式,通过下载适配器并配置enable_lora标志;2) 服务部署方法,启动服务器时指定LoRA模块;3) 动态服务功能,支持通过API端点和插件在运行时加载/卸载适配器。LoRA适配器可高效服务不同请求,实现模型微调功能,同时支持从本地或远程存储动态加载,为模型定制化提供了灵活解决方案。原创 2025-10-11 01:05:46 · 898 阅读 · 0 评论 -
vLLM - 特征 - 分离预填充(实验性功能)
vLLM引入了实验性的分离预填充功能,通过将预填充和解码阶段分配到不同实例中,允许独立调整首令延迟(TTFT)和令间延迟(ITL),并控制尾部延迟。该功能支持多种连接器(如SharedStorage、LMCache等),但不会提升吞吐量。文档提供了使用示例和基准测试参考,并详细介绍了由Connector、LookupBuffer和Pipe组成的技术架构。该功能鼓励第三方贡献自定义连接器实现,同时提醒其仍处实验阶段可能变更。原创 2025-10-11 01:05:34 · 690 阅读 · 0 评论 -
vLLM - 特征 - 自定义 Logits 处理器
vLLM支持自定义logits处理器,用户无需修改源码即可在初始化时加载。自定义处理器需继承LogitsProcessor类,实现apply()方法对批量logits进行变换,并通过update_state()响应请求批次变更。示例展示了如何实现一个只保留指定token的处理器,利用SamplingParams.extra_args传递配置参数。处理器设计仍在优化中,未来可能简化批次状态管理。原创 2025-10-11 01:05:23 · 1147 阅读 · 0 评论 -
vLLM - 特征 - 自定义参数(Custom Arguments)
vLLM支持通过自定义参数传递非标准参数,无需修改源码。离线场景下,通过SamplingParams.extra_args字典传递;在线场景下,REST API可通过vllm_xargs字段或OpenAI SDK的extra_body传递参数。这些自定义参数最终都会赋值给SamplingParams.extra_args,实现离线和在线场景的兼容。该功能特别适用于需要自定义logits处理器的场景。原创 2025-10-11 01:05:09 · 298 阅读 · 0 评论 -
vLLM - 特征 - 自动前缀缓存(Automatic Prefix Caching)
自动前缀缓存(APC)是vLLM中的一项优化技术,通过缓存查询前缀的KV计算结果,使相同前缀的新查询能直接复用缓存,跳过重复计算。vLLM用户可通过设置enable_prefix_caching=True开启该功能。APC特别适用于长文档查询和多轮对话场景,能显著提升吞吐量和降低延迟。不过APC仅优化查询处理阶段,对生成阶段的耗时无影响。当新查询无法复用已有前缀缓存时,APC不会带来性能提升。原创 2025-10-11 01:04:59 · 455 阅读 · 0 评论 -
vLLM - 设计 - 架构概述
vLLM 是一个高效的大语言模型推理系统,其架构包含多个核心组件。主要入口点包括用于离线推理的 LLM 类和兼容 OpenAI 的 API 服务器。系统核心是 LLMEngine 及其异步版本 AsyncLLMEngine,负责请求处理、调度和模型执行。采用分布式设计,每个 GPU 对应一个 worker 进程,通过模型运行器加载和运行模型。架构设计强调可扩展性、统一接口和高效初始化,支持分片、量化等特性,同时提供新旧版本兼容方案。原创 2025-10-11 01:04:48 · 1014 阅读 · 0 评论 -
vLLM 语音转文本(转录/翻译)支持
vLLM语音转文本模型支持指南 本文档介绍了如何为vLLM框架添加语音识别(ASR)模型支持,主要包括: 实现SupportsTranscription接口,需定义: supported_languages(支持的语言映射) supports_transcription_only(是否仅支持音频输入) 提供ASR配置: 通过get_speech_to_text_config方法设置采样率、最大音频时长等参数 构造输入提示: 多模态LLM(如Voxtral)需返回包含音频数据和提示文本的字典 编码器-解码器模原创 2025-10-11 01:04:39 · 691 阅读 · 0 评论 -
vLLM 单元测试
本文介绍了vLLM库中模型实现的单元测试要求。必须测试包括模型加载测试,需在registry.py中添加HuggingFace仓库示例。可选测试包括模型正确性测试(生成式模型需检查输出一致性和logprobs相似性,池化模型检查余弦相似度)和多模态处理测试(通用测试和模型专属测试)。测试通过是PR合并的前提条件,未通过测试会导致CI失败。原创 2025-10-11 01:04:29 · 363 阅读 · 0 评论 -
vLLM 模型注册
vLLM模型注册指南介绍了如何将新模型添加到vLLM系统中。对于内置模型,需fork项目仓库、实现模型代码并更新注册表;对于外部模型,可通过插件系统注册,支持直接导入或惰性导入方式。文档特别强调多模态模型需实现特定接口,并要求维护按字母排序的模型列表。注册成功后,建议更新官方支持模型列表以推广新模型。原创 2025-10-11 01:04:08 · 314 阅读 · 0 评论 -
vLLM 多模态支持
本文档介绍了如何将vLLM基础模型扩展为支持多模态输入。主要内容包括:1) 更新基础模型,实现多模态占位符字符串定义、forward方法扩展、多模态embedding获取等接口;2) 指定处理信息,定义支持的多模态类型及其最大输入数量;3) 构建虚拟输入用于内存分析,需最大化占位符特征token数以准确预估内存需求。实现过程中需特别注意多模态embedding的维度要求,并确保正确处理各模态输入。文档以图像模态为例提供了具体实现示例,并建议参考HuggingFace多模态模型实现规范。原创 2025-10-11 01:03:58 · 1132 阅读 · 0 评论 -
vLLM - 设计 - 双批次重叠(Dual Batch Overlap, DBO)
vLLM中的双批次重叠(DBO)系统通过拆分批次在两个工作线程上并行执行,实现MoE层通信与计算的重叠。该系统专为DP+EP部署设计,需配合DeepEP使用,通过--enable-dbo参数启用。DBO包含GPUModelRunner、UBatchWrapper和UBatchContext三个核心组件,采用"乒乓"机制同步线程,在FusedMoEModularKernel中设置让步点进行切换。UBatchWrapper管理线程和CUDA图,UBatchContext负责线程同步。该系统可原创 2025-10-10 03:29:29 · 921 阅读 · 0 评论 -
vLLM - 设计 - Fused MoE 模块化内核
【Fused MoE模块化内核设计】 该文档介绍了vLLM中FusedMoEModularKernel的实现架构,将混合专家(MoE)操作模块化为三个核心组件: TopKWeightAndReduce - 处理权重应用与归约 FusedMoEPrepareAndFinalize - 负责输入激活的量化和All2All通信 FusedMoEPermuteExpertsUnpermute - 执行核心MoE计算(包括permute、矩阵乘法、激活函数等) 系统支持两种输入格式:连续(标准)版本和批处理版本,主要原创 2025-10-10 03:27:45 · 1007 阅读 · 0 评论 -
vLLM - 设计 - 与 Hugging Face 的集成
vLLM与Hugging Face集成机制解析:通过vllm serve命令部署模型时,vLLM会从Hugging Face模型库或本地路径加载配置文件(config.json)、分词器和模型权重。核心流程包括检查模型路径、加载配置、确定模型架构、应用必要的配置补丁,并最终初始化模型类。vLLM优先支持safetensors格式权重,同时依赖Hugging Face的AutoConfig和AutoTokenizer进行灵活加载。整个过程涉及模型缓存、版本控制和远程代码信任等安全机制,实现高效的大模型部署。原创 2025-10-10 03:30:26 · 634 阅读 · 0 评论 -
vLLM - 设计 - Hybrid KV Cache Manager(混合KV缓存管理器)
混合KV缓存管理器是vLLM为支持混合注意力大模型设计的核心组件。它通过统一内存池管理不同注意力类型(全局/滑动窗口/Mamba等)的KV缓存,支持动态分配和前缀缓存。关键创新包括:1) 按注意力类型分组分配块,保证内存效率;2) 采用统一页面大小处理不同隐藏层尺寸;3) 实现混合模型的前缀缓存策略。该方案能有效服务Gemma、Llama等主流混合架构,并通过块共享和智能填充机制优化内存利用率。目前该功能仍处于早期阶段,未来会根据实际模型需求持续优化分组策略和分配算法。原创 2025-10-10 01:54:47 · 847 阅读 · 0 评论 -
vLLM - 设计 - IO处理器插件
摘要: vLLM的IO处理器插件功能允许用户自定义模型输入/输出的预处理和后处理流程,支持多模态数据处理(如图片生成)。插件需实现IOProcessor接口,包含数据解析、预处理、后处理和响应转换等方法。该功能目前仅支持池化模型,可通过LLM/AsyncLLM或在线服务的/pooling接口触发。插件加载方式有两种:通过EngineArgs参数或模型的HF配置文件指定,前者优先级更高。官方提供了PrithviGeospatialMAE模型的插件实现示例。原创 2025-10-10 01:54:36 · 351 阅读 · 0 评论 -
vLLM - 设计 - Logits处理器(Logits Processors)
文章摘要: vLLM引擎中的Logits处理器工作机制详解。Logits处理器用于调整模型输出的token概率分布,按批次粒度处理形状为(num_requests) x (vocab_size)的logits张量。vLLM通过持久批次数据结构维护有状态的logits处理器,每个engine step执行两个关键操作:(1) 调用update_state()同步批次变更状态(新增/移除/重排请求);(2) 通过采样器应用处理器对logits进行变换。处理器分为argmax不变型(如Min-P)和非argmax原创 2025-10-10 01:54:27 · 1095 阅读 · 0 评论 -
vLLM - 设计 - 指标(Metrics)
vLLM引擎指标系统设计摘要: vLLM提供服务器级和请求级两类指标,通过Prometheus兼容接口暴露,支持生产监控和调试场景。v1版本指标将作为v0超集实现,重点优化指标采集机制,将计算开销移出核心引擎进程以减少延迟。指标包括请求状态、缓存使用率、token统计、延迟时间等关键维度,并附带Grafana仪表盘参考实现。设计上采用monotonic时间计算事件间隔,避免系统时钟影响,同时优化多进程模式下的指标收集与暴露机制。原创 2025-10-10 01:54:15 · 1358 阅读 · 0 评论 -
vLLM - 设计 - Fused MoE 内核功能总览
本文介绍了vLLM框架中混合专家(MoE)内核的功能特性,重点对比了模块化All2All通信后端的差异。文档详细列出了7种后端实现(如naive、pplx、deepep等)在输出格式、量化支持、异步能力等维度的特性对比表,并说明各后端适用的场景。此外,还介绍了支持不同量化类型的MoE专家内核实现,包括FP8、INT8等量化方案。这些内核大多基于Triton的fused_experts API构建,部分支持模块化适配以配合All2All后端使用。该文档为开发者选择适合特定场景的MoE实现提供了技术参考。原创 2025-10-10 01:54:07 · 986 阅读 · 0 评论 -
vLLM - 设计 - Python 多进程
本文介绍了vLLM框架中Python多进程的使用情况。vLLM面临多进程兼容性挑战,主要涉及三种方法:fork(快但不稳定)、spawn(兼容性好但需主进程保护)、forkserver(折中方案)。当前v0版本默认使用fork,但通过环境变量可调整;v1版本则优先考虑兼容性,智能选择进程方法。文章还分析了与PyTorch等依赖库的兼容性问题,并指出在用户代码未加__main__保护时可能出现的问题。最后探讨了其他潜在解决方案,但均存在局限性,未来可能考虑自定义进程管理方案。原创 2025-10-10 01:53:56 · 968 阅读 · 0 评论
分享