问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

LMDeploy:大模型部署工具详解

创作时间:
作者:
@小白创作中心

LMDeploy:大模型部署工具详解

引用
CSDN
1.
https://blog.csdn.net/Orkeii/article/details/138169905

随着大模型在各行各业中的广泛应用,模型部署成为实现深度学习算法落地应用的关键步骤。本文将介绍大模型部署的背景、方法以及LMDeploy工具的使用,帮助读者更好地理解大模型部署的相关知识。

大模型的部署背景

在软件工程中,部署通常指的是将开发完毕的软件投入使用的过程。在人工智能领域,模型部署是实现深度学习算法落地应用的关键步骤。简单来说,模型部署就是将训练好的深度学习模型在特定环境中运行的过程。

模型部署面临的主要挑战包括:

  • 计算量巨大:根据InternLM2技术报告提供的模型参数数据,以及OpenAl团队提供的计算量估算方法,20B模型每生成1个token,就要进行约406亿次浮点运算。照此计算,若生成128个token,就要进行5.2万亿次运算。20B算是大模型里的“小”模型了,若模型参数规模达到175B(GPT-3),Batch-Size(BS)再大一点,每次推理计算量将达到干万亿量级。

  • 访存瓶颈:模型推理是“访存密集”型任务。目前硬件计算速度“远快于”显存带宽,存在严重的访存性能瓶颈。以RTX 4090推理175B大模型为例,BS为1时计算量为6.83TFLOPS,远低于82.58 TFLOPs的FP16计算能力;但访存量为32.62 TB,是显存带宽每秒处理能力的30倍。

  • 动态请求:请求量不确定,请求时间不确定,Token逐个生成,生成数量不确定。

大模型部署方法

模型部署主要采用以下几种方法:

  • 模型剪枝(pruning):剪枝指移除模型中不必要或多余的组件,比如参数,以使模型更加高效。通过对模型中贡献有限的冗余参数进行剪枝,在保证性能最低下降的同时,可以减小存储需求、提高计算效率。

  • 知识蒸馏(Knowledge distillation,KD):知识蒸馏是一种经典的模型压缩方法,核心思想是通过引导轻量化的学生模型“模仿”性能更好、结构更复杂的教师模型,在不改变学生模型结构的情况下提高其性能。

  • 量化(quantization):量化技术将传统的表示方法中的浮点数转换为整数或其他离散形式,以减轻深度学习模型的存储和计算负担。

LMDeploy介绍

LMDeploy 由 MMDeploy 和 MMRazor 团队联合开发,是涵盖了 LLM 任务的全套轻量化、部署和服务解决方案。这个强大的工具箱提供以下核心功能:

  • 高效推理引擎 TurboMind:基于 FasterTransformer,支持 InternLM、LLaMA、vicuna等模型在 NVIDIA GPU 上的推理。

  • 交互推理方式:通过缓存多轮对话过程中 attention 的 k/v,记住对话历史,从而避免重复处理历史会话。

  • 多 GPU 部署和量化:提供了全面的模型部署和量化支持,已在不同规模上完成验证。

  • persistent batch 推理:进一步优化模型执行效率。

LMDeploy部署

LMDeploy的部署参数可以通过lmdeploy chat -h命令查看。以下是主要参数说明:

  • 模型路径(model_path):模型的本地路径或HuggingFace上的模型ID。

  • 后端(--backend):选择PyTorch或TurboMind作为推理后端。

  • GPU数量(--tp):用于张量并行的GPU数量,应为2的幂。

  • 模型名称(--model-name):要部署的模型名称,如llama-7b、llama-13b等。

  • 会话长度(--session-len):序列的最大会话长度。

  • 最大批处理大小(--max-batch-size):最大批处理大小,默认为128。

  • 缓存最大条目数(--cache-max-entry-count):GPU内存中k/v缓存占用的百分比,默认为0.8。

  • 模型格式(--model-format):输入模型的格式,可选hf、llama、awq。

  • 量化策略(--quant-policy):是否使用kv int8,默认为0。

  • Rope缩放因子(--rope-scaling-factor):Rope缩放因子,默认为0.0。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号