虽然大型语言模型 (LLM) 中的“L”表明其规模庞大,但实际情况则更为微妙。有些 LLM 包含数万亿个参数,而有些 LLM 则会事半功倍。
我们来看几个真实的示例以及不同模型大小的实际影响。
LLM 大小和大小类别
作为 Web 开发者,我们倾向于将资源的大小视为其下载大小。模型记录的大小是指其参数的数量。例如,Gemma 2B 表示 Gemma 有 20 亿个参数。
LLM 可能有数十万、数百万、数十亿甚至数万亿个参数。
较大的 LLM 比对应的较小 LLM 包含更多参数,这使得它们能够捕获更复杂的语言关系并处理精细的提示。它们通常也基于较大的数据集进行训练。
您可能已经注意到,某些模型大小(例如 20 亿或 70 亿)很常见。例如,Gemma 2B、Gemma 7B 或 Mistral 7B。模型大小类别是近似分组。例如,Gemma 2B 有大约 20 亿个参数,但参数并不精确。
模型大小类别提供了一种评估 LLM 性能的实用方法。您可以将它们视为拳击的权重类别:相同大小类别内的模型更具可比性。两个 2B 模型应提供相似的性能。
也就是说,在特定任务方面,较小模型与较大模型具有相同的性能。
![HuggingFace 模型大小复选框的屏幕截图。](https://web.developers.google.cn/static/articles/llm-sizes/image/model-sizes-hugging-face.png?authuser=5&hl=sv)
虽然我们并不总是披露最新 LLM(例如 GPT-4 和 Gemini Pro 或 Ultra)的模型大小,但据信它们包含数百亿或数万亿个参数。
并非所有模型都会指明其名称中的参数数量。某些模型的后缀为版本号。例如,Gemini 1.5 Pro 是指模型的 1.5 版本(后续版本 1)。
是否使用 LLM?
什么情况下模型过小而无法成为 LLM?在 AI 和机器学习社区,LLM 的定义可能比较流畅。
有些模型仅将具有数十亿参数的最大模型视为真正的 LLM,而像 DistilBERT 这样较小的模型则被视为简单的 NLP 模型。其他模型包括 LLM 定义中规模较小但仍然强大的模型,例如 DistilBERT。
用于设备端用例的较小 LLM
较大的 LLM 需要大量的存储空间和大量的计算能力来进行推断。它们需要在具有特定硬件(如 TPU)的强大专用服务器上运行。
作为 Web 开发者,我们感兴趣的一点是,模型是否足够小,适合在用户的设备上下载和运行。
但是,这个问题很难回答!截至今天,没有简单的方法让您知道“此模型可以在大多数中端设备上运行”,原因如下:
- 设备功能在内存、GPU/CPU 规格等方面差异很大。低端 Android 手机和 NVIDIA® RTX 笔记本电脑截然不同。您可能会有一些关于用户所用设备的数据点。对于用于访问网络的基准设备,我们目前还没有定义。
- 运行模型的模型或框架可以经过优化,以便在特定硬件上运行。
- 没有程序化方法确定特定的 LLM 是否可以下载并在特定设备上运行。设备的下载功能取决于 GPU 上有多少 VRAM 以及其他因素。
不过,我们掌握了一些经验知识:如今,一些具有数百万到几十亿个参数的模型可以在消费级设备的浏览器中运行。
例如:
- Gemma 2B 与 MediaPipe LLM Inference API(甚至适用于仅支持 CPU 的设备)。试试看。
- 使用 Transformers.js 的 DistilBERT。
这是一个刚刚起步的字段。您可以预见,未来发展形势会不断变化:
- 随着 WebAssembly 和 WebGPU 的创新,WebGPU 支持引入更多库、新库和优化,预计用户设备将能够更加高效地运行各种大小的 LLM。
- 通过不断涌现的缩减技术,预计性能更小的 LLM 会越来越普遍。
小型 LLM 的注意事项
使用较小的 LLM 时,您应始终考虑性能和下载大小。
性能
任何模型的功能在很大程度上取决于您的使用场景!与您的应用场景微调的较小 LLM 可能优于较大的通用 LLM。
然而,在同一模型系列中,较小的 LLM 的性能不如较大的 LLM。对于相同的用例,当使用较小的 LLM 时,通常需要执行更快速的工程工作。
![Chrome DevTools Network 面板的屏幕截图。](https://web.developers.google.cn/static/articles/llm-sizes/image/performance.png?authuser=5&hl=sv)
资料来源:HuggingFace Open LLM Leaderboard,2024 年 4 月
下载大小
参数越多意味着下载大小越大,这也会影响模型(即使模型被认为是小)能否为设备上的用例合理下载。
虽然有一些技术可以基于参数数量计算模型的下载大小,但这可能比较复杂。
截至 2024 年初,模型下载大小记录极少。因此,对于设备端和浏览器内用例,我们建议您在 Chrome 开发者工具的网络面板或使用其他浏览器开发者工具中根据经验查看下载大小。
![Chrome DevTools Network 面板的屏幕截图。](https://web.developers.google.cn/static/articles/llm-sizes/image/download-size.png?authuser=5&hl=sv)
Gemma 可与 MediaPipe LLM Inference API 搭配使用。DistilBERT 与 Transformers.js 结合使用。
模型缩减技术
您可以采用多种技术来显著降低模型的内存需求:
- LoRA(低秩自适应):冻结预训练权重的微调技术。详细了解 LoRA。
- 剪枝:从模型中移除不太重要的权重以缩减模型的大小。
- 量化:将权重的精度从浮点数(例如 32 位)降低为低位表示(例如 8 位)。
- 知识蒸馏:训练一个较小的模型,以模仿较大的预训练模型的行为。
- 参数共享:对模型的多个部分使用相同的权重,从而减少唯一参数的总数。