当前位置:   article > 正文

书生·浦语全链条开源体系(第五节课学习心得内容)

书生·浦语全链条开源体系(第五节课学习心得内容)

LMDeploy大模型量化部署实践

大模型特点

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

2、LMDeploy简介

推理性能

核心功能–量化

实践部分:

将官方准备好的基础环境/share/conda_envs 复制到 conda 环境

$ /root/share/install_conda_env_internlm_base.sh lmdeploy

激活环境

$ conda activate lmdeploy

手动安装lmdeploy

  1. # 解决 ModuleNotFoundError: No module named 'packaging' 问题
  2. pip install packaging
  3. # 使用 flash_attn 的预编译包解决安装过慢问题
  4. pip install /root/share/wheels/flash_attn-2.4.2+cu118torch2.0cxx11abiTRUE-cp310-cp310-linux_x86_64.whl
  5. pip install 'lmdeploy[all]==v0.1.0'

2.1 模型转换
使用 TurboMind 推理模型需要先将模型转化为 TurboMind 的格式,目前支持在线转换和离线转换两种形式。在线转换可以直接加载 Huggingface 模型,离线转换需需要先保存模型再加载。

TurboMind 是一款关于 LLM 推理的高效推理引擎,基于英伟达的 FasterTransformer 研发而成。它的主要功能包括:LLaMa 结构模型的支持,persistent batch 推理模式和可扩展的 KV 缓存管理器。

2.1.1 在线转换
lmdeploy 支持直接读取 Huggingface 模型权重,目前共支持三种类型:

在 huggingface.co 上面通过 lmdeploy 量化的模型,如 llama2-70b-4bit, internlm-chat-20b-4bit
huggingface.co 上面其他 LM 模型,如 Qwen/Qwen-7B-Chat
示例如下:

  1. lmdeploy chat turbomind internlm/internlm-chat-20b-4bit --model-name internlm-chat-20b
  2. lmdeploy chat turbomind Qwen/Qwen-7B-Chat --model-name qwen-7b

上面两行命令分别展示了如何直接加载 Huggingface 的模型,第一条命令是加载使用 lmdeploy 量化的版本,第二条命令是加载其他 LLM 模型。

我们也可以直接启动本地的 Huggingface 模型,如下所示。

lmdeploy chat turbomind /share/temp/model_repos/internlm-chat-7b/  --model-name internlm-chat-7b
2.1.2 离线转换

离线转换需要在启动服务之前,将模型转为 lmdeploy TurboMind 的格式,如下所示。

  1. # 转换模型(FastTransformer格式) TurboMind
  2. lmdeploy convert internlm-chat-7b /path/to/internlm-chat-7b

这里我们使用官方提供的模型文件,就在用户根目录执行,如下所示。

lmdeploy convert internlm-chat-7b  /root/share/temp/model_repos/internlm-chat-7b/

执行完成后将会在当前目录生成一个 workspace 的文件夹。这里面包含的就是 TurboMind 和 Triton “模型推理”需要到的文件。

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 目前功能都比较弱,不具备生产能力,不推荐使用。

执行命令如下。

  1. # Turbomind + Bash Local Chat
  2. lmdeploy chat turbomind ./workspace

TurboMind推理+API服务、网页 Demo 演示和模型量化见github官方链接!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/370251
推荐阅读
相关标签
  

闽ICP备14008679号