LMDeploy笔记

随谈模型部署

模型部署包含的内容很多,来聊聊。

访存bottleneck

首先,基于transformer的计算是访存密集型任务。

so?

过去,我们表达模型的性能,通常会用ops,macs这些指标,也计算量来衡量模型的推理时间,这很容易理解,计算的次数越多,花的时间更久。但是对于基于transformer的大模型,由于kqv映射矩阵的每一个元素都要参与计算(脑补一下卷积的过程作对比),会带来巨大的内存访问量。下列两张图用数字更量化的展示了这个问题。

你可能会说,我用的是A100,80G显存,我兵强马壮。但实际上,GPU的架构包含了sRAM和dRAM,和CPU的sRAM和dRAM一样,sram小但是快(d 192KB, 19TB/s),dram/HBM大但是慢(40-80GB with bandwidth 1.5-2.0TB/s)。在计算时,模型的权重需要dram转移到sram,这部分的耗时有可能成为模型推理时间的瓶颈,因此,Flash attention,group atention等一系列优化就孕育而生。

 

剪枝(pruning)

剪枝是一个很出名的概念,因为它翻译的很好,你可以想象树上的枝叶被剪掉的场景,就像linar曾映射的时候,很多权重消失了.

如果它们“消失”了,可以想象的是,我们可以存储更少的权重,需要更小的运算量。

想想当然激动,但是你细想一下,怎么定义“消失”的权重,从数学上,如果一个数值为0,我们可以把它当作消失,但是,实际上,我们表达模型的时候,通常都是用矩阵来表示权重,如果这些权重为0,其实并不能减少计算量,也不能减少模型大小。这就是剪枝这种方法雷声大雨点小的原因,基于非稀疏的矩阵存储形式,很难执行,但是,硬件厂商可以去支持,通过支持稀疏矩阵的推理来实现它。

蒸馏

知识蒸馏KD是AI GodFather Hinton团队首先提出来的,简单来说,让student来学习teacher model,怎么学,有很多研究。

量化

是深度学习加速中最常用的一种技术,早期主要是QAT,PTQ。但是随着大模型的兴起,这一领域蓬勃发展。2 bit量化不是梦。。。

LMDeploy

核心功能

模型高效推理:TurboMind包括:LLaMa结构模型的支持,continuous batch推理模式和可扩展的KV缓存管理器

模型量化压缩:W4A16量化(AWQ)将FP16的模型权重量化为INT4。Weight Only是指仅量化权重,数值计算依然采用FP16

服务化部署:将LLM封装为HTTP API,支持Triton拓展

 

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值