password
icon
AI summary
type
status
date
slug
summary
tags
category
为什么我们需要本地大模型
厂商提供的模型服务好用、后期有保证、价格便宜甚至免费,为什么还会有部署本地大模型这种需求?
这个问题和在家里自建服务、NAS、甚至服务器非常类似,但还是有些不太一样的地方:
隐私?
可能有人觉得自己本地的项目、知识库是自己的固有 IP,接入外部大模型有隐私问题。这个问题是存在的,但是非常少。
实话说,在当前阶段,用户输入数据不再是这些头部大模型公司训练数据的可靠来源,为了解决复杂的推理任务它们甚至更倾向于使用合成数据;如果是出于避免广告追踪的目的,使用手机厂商封装的第三方服务,这些模型服务提供方大概率也无法追踪到个人。
但是和智能音箱的语音交互、NAS 上的个人相册、家里的监控录像一样,这些数据也足够构成部署一个本地模型来处理的理由。
好玩!
你完全可以把本地部署大模型当成一种纯粹的挑战和娱乐。
它和其他自建服务一样,可能有一定的上手门槛和维护成本(这里不完全对,大模型存在的意义就是解决问题的门槛变得非常低),但是真的可以很有乐趣。比如我有这样几个想法,虽然没有时间,一定可以用大模型实现:
- 语音家居自动化:现在语音助手只能开关调整状态,还是非常初级。本质上它们都还是关键词匹配,没办法理解用户指令。本地 LLM 可以理解诸如「每周六 12 点如果家里只有一个人就关上窗帘」这样的复杂指令,并输出可供 Home Assistant 执行的自动化服务。
- 本地 RSS 过滤:基于用户设定的兴趣,通过正文和摘要过滤 RSS feed 相关内容,这个用来筛 arxiv 文章感觉很有用。
- 简易的猫粮投喂:定时取拍喂食器的摄像头图像,给多模态模型分析是否有猫粮,如果没有就投喂,彻底告别那些带着摄像头、溢价高、有隐私问题还可能随时跑路的产品。
选择什么本地大模型
好了,我们打开 HuggingFace 开始挑选心爱的模型,结果一下子被这浩如烟海的模型整出选择恐惧症了。好在 HuggingFace 贴心地给了我们一个 2024 年开源模型总结9,这里你可以看到最受大家喜爱的一批模型:
厂商的模型命名确实是非常值得吐槽,连 OpenAI 这些搞 to C 的产品名称也经常让人一头雾水。从上面的图里,我们简单认识一下这些命名规则:
- 模型名和版本号:例如 Qwen-2.5、Llama-3.1,一般来说是越大越好
- 模型参数量:1.5B、7B、70B 等等,可以看到大多数下载都是 10B 一下的模型,也是消费级显卡能跑起来的模型大小,同样也是越大越好
- 是否经过对话对齐:一般带 Chat/Instruct 的模型是能进行对话的,Base 模型只能做补全任务
- 特殊能力:Coder/Code 经过代码加训,Math 经过数学增强等等
- 多模态:Vision 或者 VL 代表具有视觉能力,Audio 能进行音频处理等等
- 模型(量化)格式:GGUF、AWQ、GPTQ 等等,为了节省显存进行了量化
从这些命名中我们大致能定位到自己想要的模型。但是另外值得注意的是模型支持的语言——并不是所有开源模型都像 ChatGPT 一样能做到几乎支持所有语言,比如 Llama 就不支持中文。尽管这些模型是能够进行多语言对话的,但是能力会相较于支持的语言有所降低。
模型能力是我们选择模型的第一指标,但是什么是模型能力?它和什么因素相关?
什么决定模型能力?
根据传统的训练 Scaling Laws,模型训练的 loss 直接和训练的计算量相关(包括模型参数大小、训练的数据量),当 loss 降低到一定程度,模型会出现「涌现行为」,即在任务中的准确性有突然的提升。
我们可以直观理解为「脑子越大、书读越多,成绩越好」,并会在某个时刻突然「开窍」了。以 Qwen 为例:
- Qwen-1.5-72B 训练了 3T tokens,Qwen-2.5-72B 训练了 18T tokens,后者效果自然会更好
10
- Qwen-32B 一定会显著好于 Qwen-7B,但是再往上 Qwen-72B 对于特定应用场景的相对提升可能变小了
各家卷训练算力逐渐饱和之后,目前还有类似 o1 、开源的 QwQ 这样的模型,会主动进行更多的推理,提高模型能力。我们可以直观理解成「思考越多,成绩越好」。当然我们不用这些推理模型,使用思维链提示、多数投票采样,也能达到类似的效果。
模型能力=榜单成绩?
这个问题反映出一个大模型领域评估的难题——如何正确衡量模型的效果。在展开之前,我的回答是:大多数情况下可以,但是请以实际测试为准。
跟人类的考试一样,大模型的测试也分为这些题型:
- 客观题:比如知识类的多项选择题;数学、编程题,有明确的答案或者可以验证结果。
- 主观题:没有标准答案,比如多轮对话、创意写作、安全性评估等等。需要使用模型(比如 gpt-4o)或者人类评估。
事实上大部分论文、榜单比的基本是客观题型,比如最常见的 MMLU (Massive Multitask Language Understanding)的样题如下:
对于对话模型,模型会看到除答案以外的部分,评估正确生成答案的准确率。显然这个和我们实际使用场景是有一定的偏差。除非你用大模型做作业。
另一方面,大多数榜单题目是开源并且存在已久,模型开发者不管是有意无意都很难避免数据泄露、榜单过拟合的问题。但是话说回来,如果一个模型在各个榜单上都刷很高,那么它大概率有两把刷子。同时也有部分榜单是通过人类评估、题目闭源或者随时间变化,是否意味着完全公正呢?多数情况下是的,但还是有榜单优化的方法能够涨点。
那么我们可以从哪些维度去评价模型能力呢?以 Llama3的后训练指标为例:
- 知识性、指令跟随通用指标:后者即模型「听话」程度
- 数学推理
- 代码
- 多语言
- 工具使用:模型调用外部接口
- 长文本:处理长段的文本输入输出
有哪些榜单可以参考?
Open LLM Leadboard
Open LLM Leaderboard 是 HuggingFace 推出的公开可复现的开源大模型榜单,主要评价指标几经迭代,目前都是一些比较难的评测作为参考,比如 GPQA(博士水平的物化生),因此得分比较低是正常的。
我们如果选择
For Consumers/Mid-range
和 Only Official Providers
可以过滤出比较适合家用的官方提供的模型,当然选择社区提供的其他精调或者融合模型也可以,但是要注意是否有可用的量化版本下载。Chatbot Arena
由 LMSYS 的真人盲选榜单,由于其特殊性也是各家刷榜和 PR 的主要目标和来源。不过能筛选的维度比较少,而且位于前列的基本是闭源模型。不过值得注意的事,尽管由于其机制,刷榜变得困难但也并非不可能,可以作为挑选模型的辅助指标。
LiveBench
每月都会更新题目、每半年完整刷新,以防止数据泄露和主观评估设计的榜单。以代码能力,目前的排名为:
司南 OpenCompass
开源评估工具、中英闭源评测集榜单,问题是模型比较少、前面也都是闭源模型。
是否该选择多模态或者推理模型?
多模态模型的选择同样很多,但是不一定有很好的推理框架支持。不过乐观预计在 2025 年我们会有更多开源的多模态模型,真正用一个模型推理所有家用场景。
推理模型开源的目前可选的大概只有 QwQ-32B-preview,不过这类模型有个缺点就是会无法控制地输出长段思考(废话),很有意思但是会非常耗时。
模型大小选择
这个问题和想要解决什么任务、需要多少序列长度、能接受多少延迟等等都有关系。当然和我们有什么硬件的关系是最密切的。大致上可以有这样一个模糊的印象:
- 小规模(~<5B):典型如 Gemma2-2B、 Llama3.2-3B、Qwen2.5-Coder-3B,基本的语言理解、摘要总结等入门级别任务。
- 中等规模(~10B):典型大小 7B、14B,简单的编程任务和逻辑推理任务。
- 中上规模(~30B):典型如 Qwen-32B-Coder,已经能接近市面最好的模型的编程能力了,而且 Q4 量化之后在 16GB 左右,也算是接近消费级设备上限的甜品尺寸。
- 旗舰型(>70B):基本是各家最好的模型,不过注意有一类特殊的 MoE 模型,在比较性能的时候通常用激活参数,比如 DeepSeek-V2,激活参数 21B,但是全部参数是 236B,然而推理一般是需要全部加载到内存中的,实际上很难跑到消费级设备上。