KV Cache:
激活值量化:激活值指的就是模型的模块的输入(例如线性层:y=Wx+b,W就是权重,x就是激活值)
一般LLM都采用训练后量化。
W4A16:权重4bit量化,激活值仍然采用FP16(不做量化)
AWQ算法:存储时量化,计算时反量化
大模型的计算瓶颈在访存上,而不是计算上。量化之后的权重在IO上速度更快,因此哪怕采用FP16进行计算,仍然能带来极大的速度提升。
运行:
此时的显存占用:
部署服务:
终端客户端运行效果:
Gradio客户端运行效果:
减少kv cache缓存大小:
查看显存占用情况,可见减少了4GB左右。
试试另一种方法:量化kv cache:
显存也降低了4GB左右:
接下来是执行量化:
看看权重文件大小:
缩小了一半还多。
运行量化后的模型:
看看显存占用:
启动服务:
看看运行效果:
最后试试function calling: