Skip to content

书生浦语大模型第五课学习笔记 #6

@wade361

Description

@wade361

书生浦语大模型第五课
LMDeploy 的量化和部署

[1 环境配置
[2 服务部署]
模型推理/服务。主要提供模型本身的推理,一般来说可以和具体业务解耦,专注模型推理本身性能的优化。可以以模块、API等多种方式提供。
Client。可以理解为前端,与用户交互的地方。
API Server。一般作为前端的后端,提供与产品和服务相关的数据和功能支持。
以上的划分是一个相对完整的模型,但在实际中这并不是绝对的。比如可以把“模型推理”和“API Server”合并,有的甚至是三个流程打包在一起提供服务。

[2.1 模型转换](
使用 TurboMind 推理模型需要先将模型转化为 TurboMind 的格式,目前支持在线转换和离线转换两种形式。在线转换可以直接加载 Huggingface 模型,离线转换需需要先保存模型再加载。
TurboMind 是一款关于 LLM 推理的高效推理引擎,基于英伟达的 [FasterTransformer]研发而成。它的主要功能包括:LLaMa 结构模型的支持,persistent batch 推理模式和可扩展的 KV 缓存管理器。

[2.1.1 在线转换]
lmdeploy 支持直接读取 Huggingface 模型权重

[2.1.2 离线转换]
离线转换需要在启动服务之前,将模型转为 lmdeploy TurboMind 的格式

2.2 TurboMind 推理+命令行本地对话
先尝试本地对话(Bash Local Chat),下面用(Local Chat 表示)在这里其实是跳过 API Server 直接调用 TurboMind。简单来说,就是命令行代码直接执行 TurboMind。所以说,实际和前面的架构图是有区别的。
这里支持多种方式运行,比如Turbomind、PyTorch、DeepSpeed。但 PyTorch 和 DeepSpeed 调用的其实都是 Huggingface 的 Transformers 包,PyTorch表示原生的 Transformer 包,DeepSpeed 表示使用了 DeepSpeed 作为推理框架。Pytorch/DeepSpeed 目前功能都比较弱,不具备生产能力,不推荐使用。

[2.3 TurboMind推理+API服务](
”模型推理/服务“目前提供了 Turbomind 和 TritonServer 两种服务化方式。此时,Server 是 TurboMind 或 TritonServer,API Server 可以提供对外的 API 服务。我们推荐使用 TurboMind

[2.4 网页 Demo 演示]
2.4.1 TurboMind 服务作为后端
2.4.2 TurboMind 推理作为后端
2.5 TurboMind 推理 + Python 代码集成
lmdeploy 还支持 Python 直接与 TurboMind 进行交互

[2.6 最佳实践](
[2.6.1 方案实践]
推荐使用 TurboMind,使用简单,性能良好
[2.6.2 模型配置实践]
一般情况下,我们并不需要对这些参数进行修改,但有时候为了满足特定需要,可能需要调整其中一部分配置值。这里主要介绍三个可能需要调整的参数。
[3 模型量化]
主要包括 KV Cache 量化和模型参数量化。总的来说,量化是一种以参数或计算中间结果精度下降换空间节省(以及同时带来的性能提升)的策略。
[3.1 KV Cache 量化]
[3.1.1 量化步骤]
[3.1.2 量化效果]
[3.2.1 量化步骤]
[3.2.2 量化效果]
[3.3 最佳实践]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions