【自然语言处理与大模型】vLLM部署本地大模型②

         举例上一篇文章已经过去了几个月,大模型领域风云变幻,之前的vLLM安装稍有过时,这里补充一个快速安装教程:       

# 第一步:创建虚拟环境并激活进入
conda create -n vllm-0.8.4 python=3.10 -y
conda activate vllm-0.8.4

# 第二步:通过pip安装指定版本的vllm
pip install vllm==0.8.4

        通过上面这种方式,只要你是使用vLLM0.8.4版本,就无须考虑cuda的安装和pytorch的安装, pip会帮你一键搞定,不用像我上一篇文章中那么费力了。

        然后再开启本文内容。在之前的vLLM文章中我介绍了最简单快速的OpenAI风格的api server部署。这篇文章继续介绍vLLM框架的两个常用推理功能,它们分别是:分布式部署和在线量化推理

若友友们忘记了之前内容可以看这里:vllm部署本地大模型①https://blog.csdn.net/qq_39780701/article/details/144571846

一、分布式部署

        顾名思义,将一个模型放在多张显卡上面,这样做的目的是为了能够加载更大参数的模型。vLLM实现起来非常简单,不卖关子了,直接给出CLI命令:

  • 单机单卡(无分布式):如果您的模型规模适中,能够完全加载到一个GPU上,那么无需采用分布式推理方案。此时,仅需利用单一GPU执行推理任务即可满足需求。

# 举例:单机单卡
vllm serve 模型路径
  • 单机多卡(张量并行):当模型规模超出单个GPU的容量,但可以在配备多个GPU的单一服务器内全部加载时,可以采取张量并行的方法进行推理。这里所说的张量并行度即代表您计划使用的GPU数量。例如,在拥有2个GPU的单一节点环境下,您可以将张量并行度设置为2,以充分利用这些资源。

# 举例:单机双卡
vllm serve 模型路径 --tensor-parallel-size 2
【自然语言处理与大模型】vLLM部署本地大模型②_第1张图片 vllm单机多卡serve后台日志
【自然语言处理与大模型】vLLM部署本地大模型②_第2张图片 vllm单机多卡显存占用

 

【注】其实就是设置 tensor-paralled-size 参数。这里可以和lmdeploy对比记忆,它是设置 tp 参数。 还有一个和lmdeploy框架一样的地方,vllm推理框架也会在一开始就向系统申请大约90%的显存空间。哪怕是你做了量化,显存占用依旧是90%,这并不意味着量化无效。

  • 多节点多 GPU(张量并行 + 流水线并行):对于那些庞大到连单个节点也无法承载的模型,可以结合使用张量并行与流水线并行来实现跨节点的分布式推理。在这种情况下,张量并行度表示每个节点中参与运算的GPU数目,而流水线并行度则对应于参与计算的节点数。举例来说,若您在2个节点中共有8个GPU(每个节点4个),则可将张量并行度设为4,并将流水线并行度设定为2,以此最大化资源利用率和处理效率。

# 举例:双机八卡 
vllm serve gpt2 \
     --tensor-parallel-size 4 \
     --pipeline-parallel-size 2

【注】流水线并行其实就是设置 pipeline-parallel-size 参数。我这里没有环境去测试,具体的操作希望大家可以参考官方文档去实践,我就不误人子弟了,链接在这里:分布式推理与服务

二、在线量化推理

        vLLM 也引入了 KV-Cache 量化技术,通过将 KV 缓存量化为 FP8 格式以减少内存占用。这种优化不仅增加了缓存中可存储的 token 数量,还进一步提升了系统的吞吐能力。具体来说,vLLM 的 FP8 KV 缓存实现主要是通过大约翻倍的 KV 缓存分配空间来增强吞吐量。这样的改进使(面试题:在线量化推理的作用是什么?):

  • 能够处理具有更长上下文长度的单个请求
  • 能够同时处理更多的并发请求批次

废话少说上命令吧,更多的参数值见下表:

vllm serve 模型绝对路径 --kv_cache_dtype fp8
kv_cache_dtype 参数值 描述 支持条件
"auto" 使用模型的默认“未量化”数据类型,不进行额外的量化处理 无特殊要求
"fp8" 或 "fp8_e4m3" 使用 FP8 格式(E4M3 版本)存储 KV 缓存,减少内存占用并提升性能 CUDA 11.8+ 或 ROCm(AMD GPU)
"fp8_e5m2" 使用 FP8 格式(E5M2 版本)存储 KV 缓存,适合更高精度需求的场景 CUDA 11.8+
未开启KV-Cache时后台日志

 

【自然语言处理与大模型】vLLM部署本地大模型②_第3张图片 开启KV-Cache时后台日志

 【注】为了防止混淆,我们回忆一下lmdeploy的kv-cache参数 “--quant-policy”

你可能感兴趣的:(【自然语言处理与大模型】,自然语言处理,人工智能)