都说是7B大模型,为什么人家只用CPU就能吐字飞快...
最近我试用了2款基于LLM大模型+RAG知识库的商业软件,按照发布的时间排序,也按照字母的缩写,分别称为F家和L家吧。
这2款都支持部分离线使用,Windows下无需手动部署,并且无需GPU(当然有GPU可以跑更快)。稍微仔细点观摩下,底层都是基于Ollama,也可以理解为llama.cpp。
关于PC端侧推理应用考虑的要点,我在《PrivateGPT+Qwen2:大模型& RAG Demo(附AIPC懒人包)》中讨论了一些。而使用原生llama.cpp的进一步好处也很简单,就是普通CPU都能跑,并且内存的消耗比iGPU集显(相当于系统内存+共享显存)还要低一些。这样就能兼容更多的低配PC、老机器。
再看RAG的技术门槛
我首先试用的是F家,他们是可选下载包含不同模型的程序包,比如Qwen2-7b-Chat,模型大小一看就是int4量化的。下载后无需安装,试用时每次启动需要连着网,进入之后如果使用基础的LLM+RAG就可以断网了。
笔记本机型 | CPU | 集显(iGPU) | 内存(双通道) |
Dell Latitude 7450 | Core Ultra 7 U15 | Intel Graphics | 32GB LPDDR5x 6400 |
我使用的PC配置如上表,还不是之前AI PC测试中的最高配置。本次测试会直接跑在CPU核心上,如果给大模型发出字数较少的聊天,等待延时也基本能接受(跟独立GPU自然没法比)。Token/s输出速度并没感觉比iGPU慢太多。与我在《LLM大模型推理测试 & AI PC选型指南 (1)》中测试的情况基本相符。
然后我又简单试了把LAG知识库,只导入了一个几MB的pdf,问点啥就要等好久了。此时普通PC的CPU核心确实体验不够好。参考之前测试的下图,一旦输入文字量多了,iGPU特别是Core Ultra的集显优势就会很大。至于知识库回复的质量嘛,跟我之前分享的PrivateGPT水平似乎差不多,看来RAG要想效果做好还是有些技术门槛的。
在这里只能说llama.cpp在选择CPU通用性时,就无法同时兼顾效率。除非您像IPEX那样针对性地编译llama.cpp。
F家就先试用到这里,总之确实CPU就能跑,CPU引擎llama.cpp确实节省内存,16GB的集显PC完全可以玩。
笔记本CPU Core就能输出飞快的是什么模型?
接着我又试用了L家的软件,号称也是70亿参数模型。安装完先下载“智能助理”,由于进度条显示问题也没搞太清具体的下载时间和容量(读者朋友们要注意喽)。接着我跟LLM对话,“神奇”的一幕就出现了。
这款LLM只用CPU Core跑llama.cpp,比我之前用Core Ultra的集显(也是调用Ollama)测试居然要快很多!!而同时我也发现,它的内存消耗只有1-2GB。似乎INT2/FP2也达不到这样的效果啊?
为了验证这个疑问,我也单独装个Ollama对比Q4_K_M、Q4_0、Q2_k这些不同大小的量化模型。早先我在NVIDIA GPU上就曾观察到明显的内存(显存)开销变化,但速度的提升却没有达到模型压缩比的水平——用CPU跑也是类似。
正好今天看到一篇外网文章《Honey, I shrunk the LLM! A beginner's guide to quantization – and testing it》,里面一些NVIDIA RTX 6000 Ada的测试对比数字有些参考价值,引用过来,我就不再重复造轮子了。请注意以下列出的3张图都不是CPU性能。
The Register网站对比的是Mistral 7B和Gemma2 9B两款模型,在不同量化尺寸下的性能和压缩比。比如用GGUF Q4_0格式,文件大小只有量化之前FP16模型的28-29%,而Tok/s性能提升不到3倍。
这篇文章中还介绍了lamma.cpp生成量化模型的具体命令方法,在此我就不赘述了,文末会列出参考链接。下面补充2张更全的量化效果:
如上图,我以前测试使用Q4_K_M量化模型较多,曾看有人说效果比Q4_0好点,还听朋友说过6bit量化(Q6_K)跑RAG相对更合适。
在4bit以下,像Q3_K_M、Q2_K、IQ1_M、IQ1_S这些还能继续缩小模型尺寸(也能减少内存占用)。但我也看到,特别是到Q1时PPL质量的损失就很大了。
Mistral 7B和Gemma2 9B的情况总体上类似,只是9B参数量比7B大了,性能也相应下降。而在4bit以下的量化,提升速度应该不是主要目的了吧。
我的问题到此还没有答案。而当我继续使用“私域知识库”功能时,提示需要下载15GB容量(像不像FP16 7B模型的尺寸?),而最终实际的下载量却是4.x GB。大胆猜测下,如果我配置合适的GPU会不会就下载前者,而只用CPU跑Ollama就自动下载int4量化模型呢?
答案大家应该知晓了吧。L软件的聊天机器人和RAG,使用的可能是不同的LLM模型(人家也没说一定都是7B啊)。如果你只是想用任何一台PC、8GB内存就能比较流畅地跟LLM对话玩玩,跑一个3B或者1.5B的模型不行吗?还记得我之前尝试0.5B的时候,先不看效果,那吐字速度还可以更快:)
上图是Qwen2部分参数量、量化模型的文件大小对比。像0.5B、1.5B这些“小模型”对处理量的要求也会大大降低,所以能跑得更快。
今天就先写到这里吧。L家的RAG效果我还没来得及试,不过有一点,如果只是传统CPU Core的llama.cpp,长文本输入的反应速度应该不会太好。我会继续关注AI/LLM/RAG这个话题的,后续有机会再跟大家分享。
参考内容 https://www.theregister.com/2024/07/14/quantization_llm_feature
扩展阅读:《企业存储技术》文章分类索引(微信公众号专辑)》
注:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。如果您想在这个公众号上分享自己的技术干货,也欢迎联系我:)
尊重知识,转载时请保留全文,并包括本行及如下二维码。感谢您的阅读和支持!《企业存储技术》微信公众号:HL_Storage
长按二维码可直接识别关注
历史文章汇总:http://www.toutiao.com/c/user/5821930387/
http://www.zhihu.com/column/huangliang
点击下方“阅读原文”,查看更多历史文章↓↓↓