大模型部署与推理-基于LMDeploy-书生·浦语大模型第二期实战营第五课笔记&作业

本文介绍了深度学习中的计算效率优化,特别是FasterTransformer如何通过CUDA和TensorCores加速Transformer模型。讨论了计算量公式、KVCache占用、量化技术(如W4A16)以及如何使用lmdeploy部署和优化1.8B模型,包括张量并行、稀疏性和量化策略的应用。
摘要由CSDN通过智能技术生成

一、学习笔记

  • 前向推理需要的计算量公式
    C f o r w a r d = 2 ∗ N + 2 ∗ n l a y e r ∗ n c t x ∗ d a t t n C_{forward} = 2 * N + 2 * n_{layer} * n_{ctx} * d_{attn} Cforward=2N+2nlayernctxdattn
    – N是参数量, n l a y e r n_{layer} nlayer n c t x n_{ctx} nctx d a t t n d_{attn} dattn 分别代表层数,上下文长度,注意力维度
    在这里插入图片描述

  • kv cache显存占用公式
    M k v c a c h e = 4 ∗ b ∗ n l a y e r ∗ d a t t n ∗ ( s + n ) M_{kvcache} = 4 * b * n_{layer} * d_{attn} * (s + n) Mkvcache=4bnlayerdattn(s+n)
    –b n l a y e r n_{layer} nlayer d a t t n d_{attn} dattn s n分别是batchsize、层数、attention输出维、s是输入序列长度,n是输出序列长度
    – 例子在这里插入图片描述

  • FLOPS概念,常用卡的FLOPS
    在这里插入图片描述 – 目前面临着硬件计算访存比与模型计算访存比需求不匹配问题。

  • 常用的模型小型化方法有模型剪枝、知识蒸馏、量化
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

  • LMDeploy & turbomind
    – https://github.com/InternLM/LMDeploy
    – https://github.com/InternLM/lmdeploy/blob/main/docs/zh_cn/inference/turbomind.md
    – FasterTransformer:https://github.com/NVIDIA/FasterTransformer

    1. 高度优化的内核:FasterTransformer使用CUDA、cuBLAS和cuBLASLt等底层库来实现高效的矩阵运算。它针对Transformer模型中的自注意力(Self-Attention)和前馈网络(Feed-Forward Networks, FFN)等关键组件,实现了高度优化的CUDA内核。这些内核利用了GPU的并行计算能力,以提高运算速度。
    2. Tensor Cores的利用:在NVIDIA的Volta、Turing和Ampere等GPU架构中,Tensor Cores是专门设计用于加速深度学习运算的硬件单元。FasterTransformer自动利用这些Tensor Cores来加速FP16精度的计算,从而提高性能。
    3. 量化技术:FasterTransformer支持FP16和INT8量化,这可以显著减少模型的内存占用和加速推理过程。通过量化,模型的权重和激活值可以存储在更少的比特中,同时通过精心设计的量化策略来最小化精度损失。
      稀疏性支持:对于Ampere架构的GPU,FasterTransformer支持模型的稀疏性,这可以进一步减少模型的内存占用和计算量。稀疏性意味着模型中的一些权重可以设置为零,从而在不牺牲太多精度的情况下减少计算。
    4. 并行策略:FasterTransformer支持张量并行和流水线并行。张量并行通过将模型的不同部分分配给不同的GPU来加速计算,而流水线并行则通过将模型的不同层分布在多个GPU上并同时处理来提高效率。
    5. 框架集成:FasterTransformer提供了与TensorFlow、PyTorch和Triton后端的集成,使得开发者可以轻松地将优化后的Transformer组件集成到他们熟悉的深度学习框架中。

二、作业

完成以下任务,并将实现过程记录截图:

  1. 使用HF部署的模型,包括两个问题的耗时
    在这里插入图片描述
  2. 配置lmdeploy运行环境,部署1.8B模型,进行对话

    在这里插入图片描述
  3. 设置KV Cache最大占用比例为0.4,开启W4A16量化,以命令行方式与模型对话。
    量化语句以及过程:
lmdeploy lite auto_awq \
   /root/internlm2-chat-1_8b \
  --calib-dataset 'ptb' \
  --calib-samples 128 \
  --calib-seqlen 1024 \
  --w-bits 4 \
  --w-group-size 128 \
  --work-dir /root/internlm2-chat-1_8b-4bit

在这里插入图片描述
启动量化模型

lmdeploy chat /root/internlm2-chat-1_8b-4bit --model-format awq --cache-max-entry-count 0.4

在这里插入图片描述

  1. 以API Server方式启动 lmdeploy,开启 W4A16量化,调整KV Cache的占用比例为0.4,分别使用命令行客户端与Gradio网页客户端与模型对话。
lmdeploy serve api_server \
    /root/internlm2-chat-1_8b-4bit \
    --model-format awq \
    --quant-policy 0 \
    --server-name 0.0.0.0 \
    --server-port 23333 \
    --cache-max-entry-count 0.4 \
    --tp 1

在这里插入图片描述
在这里插入图片描述

  1. 使用W4A16量化,调整KV Cache的占用比例为0.4,使用Python代码集成的方式运行internlm2-chat-1.8b模型。脚本和结果:
    在这里插入图片描述

6.使用 LMDeploy 运行视觉多模态大模型 llava gradio demo
注意图片要用jpg格式
在这里插入图片描述

三、参考资料

https://github.com/InternLM/Tutorial/blob/camp2/lmdeploy/README.md
https://github.com/InternLM/lmdeploy/blob/main/docs/zh_cn/inference/turbomind.md
https://github.com/InternLM/lmdeploy/blob/main/README_zh-CN.md

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值