当前位置: 首页 > news >正文

vLLM技术解析:大语言模型推理服务的性能革新引擎

vLLM大模型

vLLM(Vectorized Large Language Model Serving System)是由加州大学伯克利分校计算机系统研究团队开发的下一代大语言模型推理服务系统。作为专为现代化AI部署设计的开源框架,该系统通过突破性的内存架构创新和计算流程优化,成功实现了大模型服务在吞吐量、响应速度和资源利用率三个维度的协同提升,现已成为工业界优化LLM推理成本的关键技术方案。

核心技术优势

分布式推理架构
采用动态请求调度和零拷贝并行技术,支持跨多GPU/TPU设备的细粒度负载均衡。通过流水线并行与张量并行的混合策略,可线性扩展至数百张加速卡,实现每秒数万token的集群处理能力。

显存革命性优化
首创PagedAttention内存管理机制,将操作系统的虚拟内存分页理念引入注意力计算领域。该技术通过分块管理注意力键值张量(KV Cache),使显存碎片率降低83%,单卡可承载的并发请求量提升24倍,显著降低大模型服务门槛。

全场景覆盖能力
• 在线服务:支持动态批处理(Dynamic Batching)和连续批处理(Continuous Batching),在100ms级延迟约束下实现90%+的硬件利用率
• 边缘计算:通过量化感知服务(Quantization-Aware Serving)和自适应模型切分,可在消费级显卡部署百亿参数模型
• 模型微调:提供与训练框架无缝衔接的LoRA适配模块,支持实时热更新模型参数

该框架已成功应用于ChatGPT、Claude等知名AI产品的推理优化,在同等硬件条件下相比传统方案可实现5-10倍吞吐量提升。其创新的内存管理思想更被纳入PyTorch 2.3核心特性,持续推动大模型服务技术的演进。

vLLM vs Ollama:对比分析

在LLM推理引擎的选择上,vLLM和Ollama是两个常见的选项。对比如下:

对比维度OllamavLLM

备注

量化与压缩策略

默认采用4-bit/8-bit量化,显存占用降至25%-50%

默认使用FP16/BF16精度,保留完整参数精度

Ollama 牺牲精度换显存,vLLM 牺牲显存换计算效率

优化目标

轻量化和本地部署,动态加载模型分块,按需使用显存

高吞吐量、低延迟,预加载完整模型到显存,支持高并发

Ollama 适合单任务,vLLM 适合批量推理

显存管理机制

分块加载 + 动态缓存,仅保留必要参数和激活值

PagedAttention + 全量预加载,保留完整参数和中间激活值

vLLM 显存占用为 Ollama 的 2-5 倍

硬件适配

针对消费级GPU(如RTX 3060)优化,显存需求低

依赖专业级GPU(如A100/H100),需多卡并行或分布式部署

Ollama 可在 24GB 显存运行 32B 模型,vLLM 需至少 64GB

性能与资源平衡

显存占用低,但推理速度较慢(适合轻量级应用)

显存占用高,但吞吐量高(适合企业级服务)

量化后 Ollama 速度可提升,但仍低于 vLLM

适用场景

个人开发、本地测试、轻量级应用

企业级API服务、高并发推理、大规模部署

根据显存和性能需求选择框架

总结:Ollama更适合个人开发和轻量级应用,而vLLM则更适合企业级服务和高并发场景。

DeepSeek-R1-Distill-Qwen-32B模型对比

DeepSeek-R1-Distill-Qwen-32B模型在Ollama和vLLM框架下的显存占用、存储需求及性能对比

指标Ollama (4-bit)vLLM (FP16)说明
显存占用

19-24 GB

64-96 GB

Ollama通过4-bit量化压缩参数,vLLM需保留完整FP16参数和激活值

存储空间

20 GB

64 GB

Ollama存储量化后模型,vLLM存储原始FP16精度模型

推理速度

较低(5-15 tokens/s)

中高(30-60 tokens/s)

Ollama因量化计算效率降低,vLLM通过批处理和并行优化提升吞吐量

硬件门槛

高端消费级GPU(≥24GB)

多卡专业级GPU(如2×A100 80GB)

Ollama勉强单卡运行,vLLM需多卡并行或分布式部署

ModelScope:开源模型即服务(MaaS)平台

ModelScope是由阿里巴巴集团推出的开源模型即服务(MaaS)平台,旨在简化模型应用的过程,为AI开发者提供灵活、易用、低成本的一站式模型服务产品。

核心功能:

  1. 汇集多种最先进的机器学习模型,涵盖NLP、CV、语音识别等领域。
  2. 提供丰富的API接口和工具,方便开发人员集成和使用模型。
  3. 支持模型的下载、部署和推理,降低开发门槛。

安装与使用:

  1. 下载DeepSeek模型

    pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  2. 创建模型存放目录

    mkdir -p /data/deepseek-ai/models/deepseek-70b
    
  3. 下载DeepSeek-R1-Distill-Llama-70B模型

    modelscope download --local_dir /data/deepseek-ai/models/deepseek-70b --model deepseek-ai/DeepSeek-R1-Distill-Llama-70B
    

docker部署

下载 Docker 二进制包

Docker 官方网站下载二进制包文件

wget https://download.docker.com/linux/static/stable/x86_64/docker-26.1.4.tgz

解压 Docker 压缩包

tar -zxvf docker-26.1.4.tgz

移动二进制文件到系统目录

mv docker/* /usr/bin/

创建 Docker 用户和组

  1. 创建 Docker 组

    groupadd docker
    
  2. 创建 Docker 用户,并将其添加到 Docker 组

    useradd -s /sbin/nologin -M -g docker docker
    

配置 Docker 服务

创建并配置 docker.service 文件

  1. 打开或创建 docker.service 文件

    vim /usr/lib/systemd/system/docker.service
    
  2. 添加以下内容:

    [Unit]
    Description=Docker Application Container Engine
    Documentation=https://docs.docker.com
    After=network-online.target firewalld.service
    Wants=network-online.target[Service]
    Type=notify
    ExecStart=/usr/bin/dockerd
    ExecReload=/bin/kill -s HUP $MAINPID
    LimitNOFILE=infinity
    LimitNPROC=infinity
    TimeoutStartSec=0
    Delegate=yes
    KillMode=process
    Restart=on-failure
    StartLimitBurst=3
    StartLimitInterval=60s[Install]
    WantedBy=multi-user.target
    

配置国内 Docker 镜像加速

  1. 创建 Docker 配置目录:

    mkdir -p /etc/docker
    
  2. 打开或创建 daemon.json 文件:

    vim /etc/docker/daemon.json
    
  3. 添加以下内容:

    {
    "registry-mirrors": ["https://docker.rainbond.cc"]
    }
    

启动 Docker 服务

  1. 启动 Docker 服务

    systemctl start docker
    
  2. 设置 Docker 服务开机启动

    systemctl enable docker
    

验证 Docker 安装

  1. 查看 Docker 版本

    docker -v
    

vLLM容器化部署指南

环境准备

  1. 更新软件包列表并安装NVIDIA容器工具包

    sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
    
  2. 配置NVIDIA容器运行时

    sudo nvidia-ctk runtime configure --runtime=docker
    
  3. 重加载系统服务并重启Docker

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  4. 下载vllm/vllm-openai容器

    docker pull vllm/vllm-openai
    
  5. 查看vllm/vllm-openai容器

    docker images

启动vLLM容器

docker run -itd --restart=always --name vllm_ds70 \
-v /data/deepseek-ai:/data \
-p 18005:8000 \
--gpus all \
--ipc=host \
vllm/vllm-openai:latest \
--dtype bfloat16 \
--served-model-name DeepSeek-R1-Distill-Llama-70B \
--model "/data/models/deepseek-70b" \
--gpu-memory-utilization 0.9 \
--tensor-parallel-size 8 \
--max-model-len 30000 \
--api-key token-abc123

参数解释:

  • --restart=always

    :容器退出后自动重启,除非显式停止或dockerd服务重启。

  • --name vllm_ds70

    为容器指定一个名称,便于后续管理和操作。

  • -v /data/deepseek-ai:/data

    将主机上的/data/deepseek-ai目录挂载到容器的/data目录,用于存储模型文件和数据。

  • -p 18005:8000

    将容器的8000端口映射到主机的18005端口,用于通过主机端口访问容器内的服务。

  • -itd

    命令选项组合,-i和-t、-d,保持容器在后台运行,同时允许用户通过Docker logs或attach命令查看输出。

  • --gpus all

    :允许容器使用宿主机的所有GPU资源。

  • --dtype bfloat16

  • --dtype {auto,half,float16,bfloat16,float,float32}

    :指定数据类型,优化内存使用和计算效率。auto模式会根据模型类型自动选择精度,而half或float16则常用于半精度计算以节省显存。

  • --tensor-parallel-size 8

    :设置张量并行的大小,通过将模型分割到多个GPU上进行并行计算,提升模型推理的速度和效率。

  • --ipc=host

    :配置容器的IPC(Inter-Process Communication)模式,允许容器与宿主机或其他容器共享共享内存,提升模型并行性能。

  • --served-model-name DeepSeek-R1-Distill-Llama-70B

    :指定服务的模型名称,标识当前服务的模型,便于管理和路由

  • --model "/data/models/deepseek-70b"

    指定模型文件的路径,告诉服务从哪里加载模型权重和配置文件,确保模型能够正确加载。

  • --gpu-memory-utilization 0.95

    设置GPU内存使用率,限制模型使用的GPU内存占比,避免因内存不足导致服务崩溃。

  • --tensor-parallel-size 8

    设置张量并行的大小,通过将模型分割到多个GPU上进行并行计算,提升模型推理的速度和效率。

  • --max-model-len 30000

    设置模型的最大上下文长度,限制模型在一次推理中能处理的最大输入长度,避免因过长输入导致性能问题。

  • --api-key token-abc123

    指定API密钥,用于身份验证和授权,确保只有有权限的用户才能访问服务。

查看vLLM容器日志

docker logs -f b05b9c3646ec

访问vLLM容器

docker exec -it b05b9c3646ec /bin/bash

vLLM API 调用测试

curl http://192.168.1.34:18005/v1/completions \-H "Content-Type: application/json" \-H "Authorization: Bearer token-abc123" \-d '{"model": "DeepSeek-R1-Distill-Llama-70B","prompt": "北京的著名景点有哪些","max_tokens": 1000,"temperature": 0.3}'

Chatbox设置

图片

DeepSeek-R1 模型 Ollama VS vLLM 占用显存对比

Model

Base Model

Ollama

vLLM

DeepSeek-R1-Distill-Qwen-1.5B

Qwen2.5-Math-1.5B

1.1GB

3-6 GB

DeepSeek-R1-Distill-Qwen-7B

Qwen2.5-Math-7B

4.7GB

14-21 GB

DeepSeek-R1-Distill-Llama-8B

Llama-3.1-8B

4.9GB

16-24 GB

DeepSeek-R1-Distill-Qwen-14B

Qwen2.5-14B

9.0GB

28-42 GB

DeepSeek-R1-Distill-Qwen-32B

Qwen2.5-32B

20GB

64-96 GB

DeepSeek-R1-Distill-Llama-70B

Llama-3.3-70B-Instruct

43GB

140-210 GB

DeepSeek-R1-671B

DeepSeek-R1-671B

404GB

1342-2013 GB

PyTorch、cuDNN、CUDA、NVIDIA驱动和NVIDIA GPU之间的关系

  • PyTorch

    作为应用层,调用cuDNNCUDA提供的接口来加速计算。

  • cuDNN

    作为加速库层,依赖于CUDA提供的GPU计算能力,优化了深度学习任务。

  • CUDA

    作为计算平台层,依赖于NVIDIA驱动与GPU硬件通信,提供了通用的GPU计算接口。

  • NVIDIA驱动

    作为驱动层,管理着NVIDIA GPU的硬件资源,允许上层软件与GPU进行交互。

  • NVIDIA GPU

    作为硬件层,执行实际的计算任务,提供了强大的并行计算能力。

相关文章:

  • 算法相关概念
  • 【LLM开发】Unigram算法
  • 解密面试高频题:加权轮询负载均衡算法 (Java 实现)
  • 位运算题目:两数相除
  • 测试基础笔记第十五天
  • AI日报 - 2025年04月29日
  • esm使用-包括esmfold和embedding
  • 阿里开源图生动画模型AnimateAnyone2
  • auto(x) decay copy
  • await和async
  • 2025年保安员证考试题库及答案
  • 【quantity】4 Duration 类型及其实现(time.rs)
  • C22-作业练习之最大公约数与最小公倍数
  • 如何开发动态贴纸功能?一体化美颜SDK的技术实现思路与实战方案
  • ZYNQ-自定义呼吸灯IP核以及PS-PL数据发送接收
  • Easy系列PLC高速计数器比较指令
  • 跟着文档学Vuex(一):什么是Vuex
  • 小智项目架构分析
  • uniapp实现统一添加后端请求Header方法
  • 如何评价 DeepSeek 的 DeepSeek-V3 模型?
  • 新质观察|重塑低空经济的系统安全观
  • 国家核准10台核电新机组,四大核电央企披露新项目进展
  • 民生访谈|宝妈宝爸、毕业生、骑手……上海如何为不同人群提供就业保障
  • 美加征“对等关税”后,调研显示近半外贸企业将减少对美业务
  • 坚守刑事检察一线13年,“在我心中每次庭审都是一次大考”
  • 北上广深还是小城之春?“五一”想好去哪玩了吗