大模型部署
定义
在软件工程中,部署通常指的是将开发完毕的软件投入使用的过程。
在人工智能领域,模型部署是实现深度学习算法落地应用的关键步骤。简单来说,模型部署就是将训练好的深度学习模型在特定环境中运行的过程。
场景
服务器端:CPU部署,单GPU/TPU/NPU部署,多卡/集群部署….……
移动端/边缘端:移动机器人,手机.…
挑战
计算量大
访存瓶颈
动态请求
大模型部署方法
模型剪枝(Pruning)
剪枝指移除模型中不必要或多余的组件,比如参数,以使模型更加高效。通过对模型中贡献有限的冗余参数进行剪枝,在保证性能最低下降的同时,可以减小存储需求、提高计算效率。
非结构化剪枝(SparseGPT,LoRAPruner,Wanda)
指移除个别参数,而不考虑整体网络结构。这种方法通过将低于阈值的参数置零的方式对个别权重或神经元进行处理。
结构化剪枝 (LLM-Pruner)
根据预定义规则移除连接或分层结构,同时保持整体网络结构。这种方法一次性地针对整组权重,优势在于降低模型复杂性和内存使用,同时保持整体的LLM结构完整。
知识蒸馏(Knowledge Distillation, KD)
知识蒸馏是一种经典的模型压缩方法,核心思想是通过引导轻量化的学生模型“模仿”性能更好、结构更复杂的教师模型,在不改变学生模型结构的情况下提高其性能。
上下文学习(ICL):lCL distillation
思维链(COT):MT-COT,Fine-tune-CoT等
指令跟随(IF):LaMini-LM
量化(Quantization)
量化技术将传统的表示方法中的浮点数转换为整数或其他离散形式,以减轻深度学习模型的存储和计算负担。
量化感知训练(QAT):LLM-QAT
量化目标无缝地集成到模型的训练过程中。这种方法使LLM在训练过程中适应低精度表示
量化感知微调(QAF):PEQAP,QLORAB
QAF涉及在微调过程中对LLM进行量化。主要目标是确保经过微调的LLM在量化为较低位宽后仍保持性能。
训练后量化(PTQ):LLM.int8,AWQ5
在LLM的训练阶段完成后对其参数进行量化。PTQ的主要目标是减少LLM的存储和计算复杂性,而无需对LLM架构进行修改或进行重新训练。
LMDeploy
LMDeploy 由 MMDeploy 和 MMRazor 团队联合开发,是涵盖了 LLM 任务的全套轻量化、部署和服务解决方案。核心功能包括高效推理、可靠量化、便捷服务和有状态推理。
高效的推理
LMDeploy开发了Continuous Batch,Blocked K/ Cache,动态拆分和融合,张量并行,高效的计算kernel等重要特性。InternLM2推理性能是vLLM的 1.8 倍。
可靠的量化
LMDeploy支持权重量化和k/量化。4bit模型推理效率是FP16下的2.4倍。量化模型的可靠性已通过OpenCompass评测得到充分验证。
便捷的服务
通过请求分发服务,LMDeploy 支持多型在多机、多卡上的推理服务。
有状态推理
通过缓存多轮对话过程中Attention的k,记住对话历史,从而避免重复处理历史会话。显著提升长文本多轮对话场景中的效率。
核心功能
模型高效推理
参考命令: mdeploy chat -h
TurboMind是LMDeploy团队开发的一款关于 LLM 推理的高效推理引擎。它的主要功能包括:LLaMa 结构模型的支持,continuous batch推理模式和可扩展的 KV 缓存管理器。
模型量化压缩
参考命令: Imdeploy lite -h
W4A16量化(AWQ):将 FP16 的模型权重量化为 INT4,Kernel 计算时,访存量直接降为 FP16 模型的 1/4,大幅降低了访存成本。Weight Only 是指仅量化权重,数值计算依然采用 FP16(需要将 INT4 权重反量化)。
服务化部署
参考命令: lmdeploy serve -h
将LLM封装为HTTP API服务,支持Triton扩展。
动手实践作业
课程文档:https://github.com/InternLM/Tutorial/blob/camp2/lmdeploy/README.md
环境部署
下载模型
运行模型