今年春节期间,科技圈最火的一个名词出现了,它就是“DeepSeek”,这个横空出世的开源大语言模型(LLM)让人工智能以网络热门级的速度进入了亿万普通用户的视野,更多的用户知道了大模型,也开始使用大模型。但正如DeepSeek火了之后其在线服务包括手机和APP和网页端,经常出现服务器繁忙、等待的情况,这就是云端部署的缺点,往往伴随着排队、延迟、隐私和安全等问题。
因此本地部署大语言模型就成为许多用户的新需求,与云端相比,本地部署LLM模型不仅不用排队就可以实现即时推理,同时还有更好的稳定性和安全性,降低数据泄露和服务器故障的风险,一些不方便上传云端的机密内容也可以在本地离线处理,确保用户隐私。
(DeepSeek R1模型提供从1.5b到671b多个参数量版本)
但本地部署对于硬件还是有一定要求的,尤其是GPU算力,大家都知道显存越大、算力越高,本地推理就会越快,但是想要获得更完整的推理效果,7B参数的大模型是不够用的,14B、32B甚至更大的70B模型才是必选项,而大显存的显卡价格不菲,除却昂贵的企业级产品,即使是消费级的大显存显卡也是普通用户难以承受的,以24GB显存的RTX 4090显卡为例,现在的价格也在一万七千元左右,部署成本相当之高。
本文将介绍如何使用一万元的预算来实现32GB显存的本地DeepSeek R1大模型部署。其中显卡部分使用两块英特尔锐炫A770 16GB显卡组成,成本不到四千元,价格相当亲民,可以有效控制预算。通过使用IPEX-LLM在Ubuntu操作系统下部署32B参数的DeepSeek R1大模型,实现高效的本地推理,实测生成阶段的Avg Generation Throughput可以稳定在26 tokens/s以上。无论是在上下文生成还是代码生成实例中,都表现出了极强的效率,并且整套系统的功耗控制在800瓦以下。
我们使用让DeepSeek模型生成贪吃蛇游戏代码的prompt来测试整个推理效率,完全在本地运行。
输入Prompt为:
【请用html写个贪吃蛇游戏的代码,需要包含以下功能:
1. 使用键盘上的上下左右箭头键控制蛇的移动方向
2. 蛇会自动向前移动,并在吃到红色的食物时增长并增加得分
3. 当蛇碰到墙壁或自己时,游戏结束并显示得分
4. 点击重新开始按钮可以重置游戏并重新开始
游戏规则:
·蛇不能碰到墙壁或自己,否则游戏结束
·每吃一个食物,得分增加10分
·食物不会出现在蛇的身体上】
在经过大约15秒钟的推理过程之后,DeepSeek模型即开始输出代码,全部输出完成耗时仅1分钟。特别是,通过使用Open WebUI图形界面交互时,在代码完成后,还可以出现一个预览窗口,这是我们可以使用键盘方向键控制蛇的移动,吃掉食物获得分数,当蛇撞到墙壁或自己时,游戏结束。所见即所得,编程从未如此简单。
(贪吃蛇代码调整演示)
如果代码有哪里不满意,我们还可以继续通过指令让DeepSeek进行调整,例如第一次生成的代码,蛇的移动速度太快,调整之后蛇的移动时间间隔增加到了200毫秒,这时玩起来就容易多了。总之,在离线部署的DeepSeek下,你可以随意提出自己的要求,实现工作效率的提升。
我们还尝试了文本内容生成,在约3000汉字的文章生成测试中,后台显示Prefill阶段的吞吐最高可以达28 .1 tokens/s,生成阶段平均输出速度约为25 tokens/s。我们以一个中文字符0.6个token算,生成速度大概为每秒钟20个汉字,按人类平均每分钟700字的阅读速度来看,这套本地部署的DeepSeek R1模型生成速度已经大幅超越正常人类阅读速度,十分的高效。
本次部署过程使用硬件平台配置一览:
关于具体的软硬件部署有一些值得注意的地方,首先是硬件部分。我们搭配了英特尔酷睿Ultra 9 285K处理器与Z890主板,作为目前Intel桌面平台的旗舰型号,其实是用不到这么高的配置的,因为大模型完全跑在GPU上,对于处理器的负载反倒不高,如果你选择酷睿Ultra 7处理器或者Ultra 5处理器也是没问题的。而之所以选择Z890主板是由于需要至少两个PCIE显卡插槽,并且如果想要发挥出显卡的全部带宽优势,选择支持两条x8通道拆分的主板会更好。同时如果你要是使用封闭机箱,还要考虑到显卡干涉的问题。
内存方面,最好选择大容量高速内存,以提升模型的加载和调用效率。我们使用的24GB*2 CUDIMM内存效率还不错,只不过CUDIMM内存由于CKD原因现在价格较贵,并且主要针对超频有利,因此使用普通的8000 MT/s DDR5内存也是没问题的。因此如果进一步调整配置,是能做到整体硬件开销在万元之内的,相比单24GB/32GB显存显卡的方案那可是太实惠了。
值得注意的是电源,因为需要同时接入两块A770显卡(此次使用的一块A770还是来自蓝戟的超频版本),单卡TGP约在200瓦左右,加上我们使用的是Ultra 9处理器,因此选择了鑫谷的GM1250瓦电源,更主要的原因是其支持4个PCIe 8Pin供电接口,能够满足两块A770双8+6pin的供电需求。
至于操作系统,其实在Windows系统下也能实现双锐炫A770显卡的部署,只不过由于操作系统差异和机器学习架构的效率不同,其运行效率不如在Linux系统下更快。因此我们使用Ubuntu 22.04系统,这个版本已经由英特尔官方提供来了驱动适配和支持,兼容性很好。当然,如果你使用其它版本的Linux系统,可以参看intel官方支持页面进行操作。
关于DeepSeek模型的部署,我们使用了采用Q4量化的DeepSeek R1-32B版本模型,可以在huggingface或者魔塔社区等进行下载。同时为了方便查看后台运行情况,我们还使用了Open WebUI图形界面来进行演示和检测。
不过值得注意的是,由于我们使用了其中一块锐炫A770显卡的DP接口进行输出,理论上会对显卡运行大模型的效率产生一点影响,如果你采用局域网方式访问后端,能够让两块锐炫A770完全集中到大模型的负载上,这点需要说明。
通过这套本地部署的方式,我们将两张英特尔A770显卡的显存叠加使用,实现了32B参数DeepSeek R1大型模型的离线运行,并且实测运行效率很高,可以很方便地实现高效的推理和丰富的功能,如果你也有类似需求可以尝试搭建自己的大模型服务器。