“它在你的设备上运行语言模型”这句话会让人想到风扇开始转动,以及笔记本电脑什么都没做却开始发热。这种想象并不奇怪,因为这正是运行不当的聊天模型会出现的情况。
输入建议属于另一种工作负载。下面说明它实际会消耗什么资源,方便你根据自己的设备来选择。
四项开销,只有一项是持续的
磁盘。 模型文件只需下载一次。从几百 MB 到几 GB,下载时一次性占用空间。
内存。 模型加载后,其权重必须常驻内存:大致相当于文件大小再加上适度的工作开销。这是持续存在的开销,也是决定某种模型大小能否适用于你的设备的关键。在 16 GB 内存的笔记本电脑上,让模型常驻占用 1 GB 并不起眼。在打开浏览器的 8 GB 笔记本电脑上,3 GB 就不是小数目了。
计算。 只在生成建议时发生。对于句子补全,这只是持续几百毫秒的短暂运算,每分钟进行几次,而且时间远短于你自己敲击键盘之间的停顿。相比之下,聊天助手生成六百个词时,会让处理器满负荷运行好几秒。
电池。 耗电随计算量而变。短暂运算耗电很少;但坦率地说,如果设备一直无法进入深度省电状态,耗电就会高于能够进入这些状态的设备,所以影响并非完全为零。
请记住这个数字:输入预测几乎一直处于空闲状态。常驻内存才是真正的开销;除非模型相对于设备而言过大,否则其他开销都微不足道。
为什么模型文件比你预期的小
标称只有几百 MB 的模型,并不意味着它只有几亿个参数。模型以量化形式分发,权重采用较低精度存储——通常是 4 位或 5 位,而不是 16 位。这样可以将大小和内存占用减少约四倍,代价是质量会有适度且可测量的损失。
对于开放式推理,这种损失很重要。但对于补完一个你已经开始输入的句子,影响通常很小,因为限制条件来自你自己的文本,而非模型的深度。这就是小型本地模型适用于这项任务、却不适用于其他任务的技术原因。
真正的限制是延迟,而非质量
建议有一个严格的截止时间。如果你自己都已经把那些词打出来了,建议才出现,那还不如没有:它恰好在你输入完时显示出来,让你白白读一遍。
无论你的内存有多少,这个截止时间都会限制模型大小。超过一定程度后,模型越好,速度就越慢;速度一慢,建议就会被弃用。实际目标是在你手指仍停留在两个词之间的间隙时显示建议——也就是几百毫秒左右,而不是一秒半。
这与通常的直觉相反。在这里,模型大到会错过时机后,再大就没有更好。合适的大小,是你的硬件能够在输入间隙内及时回复的最大模型;2019 年的超薄笔记本电脑与配备独立显卡的台式机,适合的大小并不相同。
选择模型大小
Typeahead 提供三个模型大小,直接对应这项取舍。
| 大小 | 磁盘占用 | 标注的要求 | 适用对象 |
|---|---|---|---|
| 快速(默认) | 约 600 MB | — | 适用于任何受支持的设备,也是最合适的起步选择 |
| 均衡 | 约 1.2 GB | 8 GB 系统内存 | 内存余量充足的设备:建议更好,运行仍然流畅 |
| 最高质量 | 约 2.5 GB | 配备 8 GB 自有显存的独立显卡、16 GB 系统内存 | 配备独立 GPU 的台式机和工作站 |
关于这张表,有两点需要说明。
即使你的设备能够运行更大的模型,也请从快速版开始。 先用一周。如果建议准确且实用,更大的模型在输入聊天消息时也不会带来任何你能察觉的好处。如果建议明显不准确,再升级——这样你就能了解自己是在用什么换取更低延迟。
最高级别需要一块自带 8 GB 显存的独立显卡,而不是 8 GB 共享系统内存。笔记本电脑上的集成显卡不符合要求;强行让模型在必须依靠分页调取数据的硬件上运行,正是导致本文开头所说风扇狂转的原因。
确实资源紧张的设备
- 8 GB RAM,同时打开浏览器、Teams 和 Office。 其他程序尚未加载,你的内存就已经接近上限。请使用最小的模型,而且你会比拥有 16 GB 内存的人更明显地感受到它。如果你的设备平时就会发生内存交换,那么常驻模型会让情况更糟。
- 不支持 AVX2 的旧款处理器。 推理库会充分利用向量指令。2013 年以前的处理器会比任何标称数据都慢,而上面所说的延迟上限就是关键所在。
- 散热受限的轻薄笔记本电脑。 单靠这项工作负载造成持续降频的可能性很低,因为运算持续时间很短;但如果设备已经因其他负载而降频,就没有多余的性能余量了。
- 使用电池供电,远离电源插座。 建议仍然可以使用,因为它们在本地生成,无需网络连接。如果你要为长途飞行优化设备,应使用较小的模型。
如何在自己的设备上检查
别人笔记本电脑上的测量数据对你帮助不大。只需进行两次测量,花费十分钟。
- 1. 安装之前,打开任务管理器 → 性能,并记录正常工作状态下的内存使用量:打开你平时使用的浏览器标签页、邮件和聊天工具。
- 2. 安装并加载模型之后,查看同一项数据,并在“进程”选项卡中查看应用自身的内存占用。
如果增加后仍与内存上限有充足余量,就没问题。如果已经接近上限,就换小一个型号。
延迟因人而异,这反而是好事:输入一句你平常会打的话,留意手指暂停时建议是否已经出现,还是等你输入完才出现。试用期正适合用来判断这一点——Typeahead 的试用期为七天,所有模型大小均已解锁。
你为这些开销换来了什么
- 你输入的内容不会离开设备。 这不是关于服务器如何处理你文本的政策承诺,而是由处理发生的位置决定的事实。
- 无需网络连接也能使用。 无论在飞机上、火车上,还是在 DNS 解析已经失效的酒店 Wi-Fi 环境中。
- 没有按席位收费的订阅,也不需要账户,因为没有需要付费使用的服务器。
- 没有延迟波动。 本地模型在上午 9 点和下午 5 点的速度相同,而共享服务并非如此。
这是否值得占用 1 GB 常驻内存,确实是个问题,每个人的答案都不同。这个问题没听起来那么难,而且一周之内就能找到答案。