模型部署:将训练好的模型在特定软硬件环境中启动的过程,使模型能够接受输入并返回结果。
为了满足性能和效率的需求。常常需要对模型进行优化,例如模型压缩和硬件加速
产品形态:云端、变韵计算端、移动端
计算设备:CPU、GPU、NPU、TPU等
庞大的参数量
采用自回归生成token, 需要缓存Attentionde k/v , 带来巨大的内存开销
请求数不固定
Token逐个生成,且数量不定
如何应对巨大的存储
如何加速token的生成速度
如何解决动态shape,让推理不间断
如何有效管理和利用内存
如何提升整体吞吐量
如何降低响应时间
模型并行
低比特量化
Page Attention
transformer计算和访存优化
Continuous Batch
1 huggingface transformers
2 专门的推理加速框架
云端: imdeplloy, vllm, tersorrt-lllm, deepspeed…
移动端: llama.cpp, mlc-llm…
LMDeploy是LLM是在英伟达设备上部署的全流程解决方案。包括模型轻量化、推理和服务。
为什么做量化?
显存下降
为什么做Weight Only的量化?
LLM是典型的访存密集型任务
如何做weight only 的量化?
GPTQ
算法 AWQ的推理速度更快,量化的时间更短请求队列:推理请求首先加到请求队列中
persistent线程:
1 若batch中有空闲槽位,从队列拉取请求,尽量填满空闲槽位。若无,继续对当前batch中的请求进行forward
2 Batch每forward完一次,是否有request推理结束。结束的request发生结果,释放槽位。
见作业(4)