LMDeploy 的量化和部署

本文探讨了大模型部署的背景、特点、挑战,涉及内存管理、动态形状处理、设备兼容性等问题。重点介绍了量化技术(如WeightOnly量化)和推理引擎TurboMind,如持续批处理和高性能cudakernel,以提升部署效率和性能。
摘要由CSDN通过智能技术生成

1 大模型部署背景​​​​​​​

模型部署

定义

  • 将训练好的模型在特定软硬件环境中启动的过程,使模型能够接收输入并返回预测结果
  • 为了满足性能和效率的需求,常常需要对模型进行优化,例如模型压缩和硬件加速

产品形态

• 云端、边缘计算端、移动端

计算设备

• CPU、GPU、NPU、 TPU 等

大模型特点

内存开销巨大

  • 庞大的参数量。7B 模型仅权重就需要14+G內存
  • 采用自回归生成 token,需要缓存 Attention 的 k/v,带来巨大的内存开销

动态shape

  • 请求数不固定
  • Token 逐个生成,且数量不定相对视觉模型,LLM结构简单
  • Transformers 结构,大部分是 decoder-only

大模型部署挑战

设备

• 如何应对巨大的存储问题?低存储设备(消费级显卡、手机等)如何部署?

推理

  • 如何加速 token 的生成速度
  • 如何解决动态shape,让推理可以不间断
  • 如何有效管理和利用内存

服务

  • 如何提升系统整体吞吐量?
  • 对于个体用户,如何降低响应时间?

大模型部署方案

技术点

  • 模型并行
  • 低比特量化
  • Page Attention • ...

方案

  • huggingface transformers
  • 专门的推理加速框架
    云端
  • Imdeploy
  • vilm
  • tensorrt-llm
  • deepspeed
  • transformer 计算和访存优化
  • Continuous Batch

移动端

  • llama.cpp
  • mIc-Ilm
  • ….

2 LMDeploy 简介

LMDeploy 是 LLM 在英伟达设备上部署的全流程解决方案。包括模型轻量化、推理和服务。

推理性能

静态推理性能

・固定 batch 输入/输出token数量

动态推理性能

•真实对话,不定长的输入/输出

核心功能-量化

为什么做 Weight Only 的量化?

两个基本概念

  • 计算密集(compute-bound):推理的绝大部分时间消耗在数值计算上;
    针对计算密集场景,可以通过使用更快的硬件计算单元来提升计算速度,比如量化为 W8A8使用INT8 Tensor Core来加速计算。
  • 访存密集(memory-bound):推理时,绝大部分时间消耗在数据读取上;针对访存密集型场景,一般是通过提高计算访存比来提升性能。

LLM 是典型的访存密集型任务

常见的LLM 模型是 Decoder Only 架构。推理时大部分时间消耗在逐Token 生成阶段(Decoding 阶段),是典型的访存密集型场景。

如右图,A100的 FP16 峰值算力为 312 TFLOPS,只有在 Batch Size 达到

128这个量级时,计算才成为推理的瓶颈,但由于LLM 模型本身就很大,推理时的 KV Cache 也会占用很多显存,还有一些其他的因素影响(如

Persistent Batch),实际推理时很难做到128这么大的 Batch Size。

Weight Only 量化一举多得

  • 4bit Weight Only 量化,将FP16的模型权重量化为
    INT4,访存量直接降为FP16 模型的1/4,大幅降低了访存成本,提高了 Decoding 的速度。
  • 加速的同时还节省了显存,同样的设备能够支持更大的模型以及更长的对话长度

核心功能-推理引擎 TurboMind

持续批处理

请求队列

• 推理请求首先先加入到请求队列中

Persistent 线程

  1. 若 batch 中有空闲槽位,从队列拉取请求,尽量填满空闲槽位。若无,继续对当前 batch 中的请求进行forward
  2. Batch每forward完一次
  • 判断是否有request 推理结束。结束的request,发送结果,释放槽位
  • 转步骤 1

有状态的推理

高性能 cuda kernel

​​​​​​​

Blocked k/v cache

  • 24
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值