推理显存计算
发表于|更新于|LLM
|浏览量:
推理显存计算
推理所需显存 = 模型参数部分 + 激活参数部分 + KVCache 部分
- 模型参数部分 = 模型参数量 × 精度系数
- 激活参数部分 = 激活参数量 × 精度系数
- KVCache 部分 = 并发数 ×(输入 Token 数 + 输出 Token 数)× 2(K 和 V)× 层数 × hidden_size × 精度系数
参考资料:模型显存计算逻辑
文章作者: xhj
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 xhj的博客!
相关推荐
2025-10-04
NVIDIA GPU 硬件架构入门
NVIDIA GPU 硬件架构入门一、概述随着大模型产业的发展,AI 训练 & 推理对算力的需求越来越大,AI 的计算也越来越离不开 GPU 的支持。 目前,用于 AI 计算的芯片可以分为: CPU(通用处理器); GPU(通用图形处理器); NPU / TPU(AI 专用处理器)。 那么 CPU 和 GPU 有什么区别呢? 从硬件设计上来看,GPU 的 DRAM 时延(数据搬运、指令执行的延迟)远高于 CPU,但 GPU 的线程数远高于 CPU(有非常多的线程,为大量大规模任务并行而去设计的)。 关注重点: CPU:降低延迟、并发(Concurrency,能够处理多个任务的功能,但不一定是同时); GPU:最大化吞吐量、并行度(Parallelism,同时可以执行多少任务)。 总结: CPU:希望在一个线程里完成所有的工作(串行,优化线程的执行速率和效率); GPU:利用多线程对循环进行展开,来提高硬件整体的利用率(并行,用足够多的线程去解决延迟的问题)。 参考资料:AI System (chenzomi12.github.io)。 二、GPU...
2025-11-14
vLLM6.md
一、引言Guided Decoding,又叫 Structured Output,是大模型推理领域中非常重要的一个特性,主要用于引导大模型输出符合某种特定格式(如:SQL、Json)的结果,以便更好地将大模型落地到具体的应用场景中。 在我的上一篇文章中,简要地介绍了 Guided Decoding 的原理,并详细分析了 vLLM 中相关代码的实现(V0),文章链接:vLLM 学习笔记|Guided Decoding。 自从 vLLM v0.8.x 之后,V1 Engine 将作为 vLLM 启动时的默认选项。关于 V1 Engine 的系统设计以及具体的优化点,我将会在之后逐步梳理并分享出来(如果有空的话)。而在本文中,我将针对 V1 Engine,分享 Structured Output 模块的整体设计与具体实现。 二、V1 Engine 整体架构在介绍 Structured Output 模块的设计之前,让我们先来看下 vLLM V1 Engine 的整体架构。在 V1 中,vLLM 将不同类型的 CPU 密集型操作拆分到了两个相互独立的进程中,以便能够异步执行不同的 CPU...
2025-08-14
qwen3_vl_video_cudagraph_implementation
Qwen3-VL 视频模态 Full CUDA Graph 支持实现基于 PR #35963(已合入 main),在其图像 CUDA Graph 支持的基础上,扩展实现视频模态的 Full CUDA Graph 支持。 修改文件总览 文件 改动类型 说明 vllm/v1/worker/gpu/mm/encoder_cudagraph_defs.py 数据结构扩展 新增多模态配置字段和状态字段 vllm/v1/worker/gpu/mm/encoder_cudagraph.py 核心逻辑扩展 per-modality budget 管理、自动模态检测、时序帧约束检查 vllm/model_executor/models/interfaces.py 协议扩展 新增 get_encoder_cudagraph_num_seqs 方法 vllm/model_executor/models/qwen3_vl.py 模型实现 为所有协议方法添加视频支持 tests/v1/cudagraph/test_encoder_cudagraph.py 测试更新 适配新的多模...
2025-11-12
vLLM4.md
一、引言随着 vLLM 逐渐成为生产级场景下大模型推理的通用解决方案之一,期望 vLLM 支持各式各样算力底座的需求日趋强烈。目前,在 vLLM 的官方仓库中维护着 NVIDIA GPU、AMD GPU 以及 Google TPU 等多家芯片厂商的代码,但除此之外,还有更多的 AI 芯片是通过“硬件插件化机制”来支持自家算力的。 所有不在 vLLM 官方仓库中支持的硬件,都被统称为 OOT(Out Of Tree)Device,包括: 官方插件(指存在于 vllm-project 官方项目下的插件):vllm-ascend(华为昇腾 NPU)、vllm-spyre、vllm-gaudi(Intel Gaudi)、vllm-neuron(AWS Neuron)、vllm-metal(Apple Silicon)等; 非官方插件:vLLM-metax(沐曦 GPU)、vLLM-Kunlun(百度昆仑芯 XPU)等。 本文将深入介绍 vLLM 硬件插件化系统的原理,以及如何通过 CustomOp 完成自定义算子的注册与替换,从而使 vLLM 能够灵活地、高效地支持多样性算力。 二、...
2025-11-06
SHM
SHMShared Memory = 多个进程/设备可以“直接访问同一块内存”的机制。 普通进程通信(非 SHM):进程 A → 拷贝 → 内核 → 拷贝 → 进程 B(数据被复制多次); Shared Memory:进程 A ↔ 同一块内存 ↔ 进程 B(没有中间 copy)。 SHM 在不同层的含义: 操作系统:POSIX / System V SHM。OS 分配一块内存,映射到多个进程的虚拟地址空间。特点:零拷贝(进程间)、需要同步机制(锁、信号量)。比如:from multiprocessing import shared_memory; GPU / CUDA:GPU SM 内部的片上共享内存,给 thread block 用。特点:超快(比 global memory 快很多)。比如:__shared__ float buf[256]; 容器 / Docker:是一个 tmpfs(内存文件系统),用来做进程间共享内存。比如 docker run --shm-size=8g,对应 /dev/shm。 在 vLLM ...
2025-08-13
qwen3_vl_mm_kwargs_analysis
Qwen3-VL mm_kwargs 多模态输入分析报告 分析文件:vllm/model_executor/models/qwen3_vl.py 核心结论mm_kwargs 不是单个视觉输入(单张图片或单个视频)的表示,而是请求级别(request-level)的聚合结构,包含该请求中所有图像和/或视频的数据。 mm_kwargs 在 Qwen3-VL 中有两种截然不同的含义,出现在不同的调用层次: 处理时(Processing-time)mm_kwargs:用户传入的”控制参数”,指定如何对媒体数据进行预处理(分辨率、帧率等)。 前向推理时(Forward-time)mm_kwargs:经过处理后传入模型 forward 的”张量数据”,包含该请求所有图像/视频的 pixel values 和 grid 信息。 一、处理时 mm_kwargs(用户侧配置参数)出现在 _get_vision_info、_call_hf_processor、get_max_video_tokens 等处理阶段,由用户在发起请求时传入,用于覆盖处理器的默认配置。 1.1...