赞
踩
主打的其实就是一句话:大模型落地应用!用于现实中的特定场景!
其实就是大模型的参数太多了,看看人家GPT3.0就有1750亿个参数,在用户访问大模型的时候,一个问题丢过去,人家大模型前向推理就需要进行大量计算,生成一个token那就是千万亿级的计算量,难怪说人家GPT每天的耗电量不知道有多少哈哈哈。
而且除了大模型的参数影响,还有BS的设置,一个大模型那不可能是一次就处理一句话啦(批处理量),BS越大,模型前向推理一次的计算量那就是成倍的长啊!
batch size=每次处理的用户对话数量(批处理量)
GPU的显存根本耗不起,A100才80G显存,你自己看看下面这大模型加载的时候都需要这么大的显存,还部署个毛。而且还有KV的缓存,顶不住啊顶不住!得多少张A100一起玩啊!
3.1 访存瓶颈:其实感觉就是以RTX4090跑一个GPT3的175B参数,BS=1的模型来说,其计算能力是够用的,但是显存带宽跟不上,导致无法发挥4090的全部计算能力,时间基本都花在数据交换上,GPU一直在摸鱼(毕竟大模型是访存密集的任务,访问不了还算个屁)---无法充分发挥GPU得计算能力!
但是可以看到的是,大模型自身的计算量在增加时,其访存量不怎么变化,所以是不是模型自身的计算量上去了,基本就能平衡这个访存量,充分发挥GPU的算力不要再摸鱼了?但是你要考虑一下模型计算量这么大,现在的GPU哪里跑得动?显存根本不够啊
3.2 动态请求里面:对于深度学习来说,输入的tensor最好是固定的哈,这样才能充分发挥一下GPU的性能,不然有的长有的短,那短的需求要等长的那哥们搞完才轮到它,下面有poe的解释:
A:非结构化剪枝:移除个别参数,不考虑整体网络结构(眼睛就盯着那个逼参数低于阈值的就给我滚蛋,万一破坏了整个结构也无所谓),精细化一个个去筛掉,不错杀好人,不漏杀坏人,就是有可能整个结构都是坏人全给你杀光了,影响整个结构!(大明王朝-海瑞!)
B:结构化剪枝:根据预定规则去整个整个的移除连接或者分层结构,同时保持整体结构的完整(保证整体模型结构的完整前提下,一块一块的剪掉,可以降低模型复杂性,缺点就是可能会误剪一些好的参数,和漏掉一些坏参数),不像上面那家伙,精细化一个个去剪掉
但是你不可能直接训练一个少参数的模型就想让它达到像这个多参数模型一样的效果哈哈哈;
所以就提出一种,先训练一个大的教师模型,再让这个大教师模型去训练一些小的学生模型,来达到一个知识迁移的效果,以此达到一种,少参数(学生)但是拥有多参数模型(教师)的能力的小模型。
但其实对于大模型来说,这个减轻计算负担的意思跟普通的计算机理论理解不一样:为啥它能提高计算效率,核心还是因为前面刚刚提到的GPU训练大模型时的访存瓶颈的问题,计算能力远大于访存能力,而这个量化一定程度是将大模型的访存量降低(Float32-Float16-Float8,这模型的访存量直接成倍的降),这样不就是减少了GPU访问大模型参数的时间咯,总体来看就是减少了推理时间咯
LMDeploy涵盖了LLM任务的全套轻量化、部署和服务解决方案。
LMDeploy就是一个专注于模型部署过程中的各种问题啦,专业的人干专业得事情!
这三个核心功能:部署方便、推理速度快!(也就是解决了模型的三个大问题的结果咯:计算量大/内存需求大/访存瓶颈
性能表现也非常的牛逼
下面就是动手实战开工啦!
实战的训练项目详见下一篇博客咯!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。