比较本地和通过 API 生成 LLM 的速度

在 Habr 上,感觉就像一个组在本地使用 LLM,另一个组通过外部 API 使用 LLM。

而第三个还没决定,她时不时地会有以下问题:

  • 如果我在 CPU 而不是 GPU 上运行 LLM 会发生什么情况?速度会下降很多吗?

  • 它如何取决于模型的大小?

  • 而且原来的 DeepSeek 非常大 - 如果它不适合 RAM,你能从磁盘中抽出它吗?

总的来说,我在评论中回答了这些问题好几次 - 但由于我不时地一次又一次地偶然发现这些问题,所以我决定写这篇短文。

TLDR:我制作了一个小型 HTML 应用程序,可以直观地了解不同安装中的生成速度。如果不清楚什么是什么,那么最好阅读这篇文章。

在本地运行 LLM

通常,各种 LLM 网络都是使用 Ollama 或 LM Studio 等程序在本地启动的 - 它们都从 Internet 下载所需的网络并在您的站点上运行。

他们通常有三个启动选项:

  • 该模型完全适合 GPU(通常是 Nvidia)的内存 - 这是最快的选择

  • 模型完全适合 RAM - 这是一个可以接受的选项

  • 该模型通过交换定期从 SSD 加载(它运行得非常慢,您可以稍后查看示例 - 恕我直言,无法使用)

型号有不同的尺寸 - Llama 7B、70B、Mistral Nemo 12B 等。我们将其命名为 SIZEB

了解这一点:原始模型权重存储在 float32(4 字节)中 - 因此,如果您想运行原始模型,您将需要大约 SIZEB x 4 GB 的内存。即 28 GB,即使对于不太严重的 7B 型号也是如此。

当然,这些都是对硬件非常严格的要求,人们想出了一个小窍门:他们开始量化权重——即用更少的位(少于 32 个原始位)对它们进行编码。当然,这会导致模型生成的准确性和质量下降——但是......这取决于量化的水平。

这种量化权重现在通常以 gguf 格式分发(如果您从站点下载,可以看到它)。通常认为:

  • q8 的量化(每个权重 8 位)对模型的质量几乎没有影响。同时,该模型在内存中占用了大约 SIZEB GB

  • 量化 q4 (每个权重 4 位) 对模型的质量有相当大的影响,但总的来说,它仍在使用中。(该模型占用 SIZEB/2 GB 的内存)

还有其他选项(6 位、2 位、1 位、不同层的不同量化)——但其他时间会介绍它们。

无论如何,在工作时,您总是可以通过每个权重的位数(但不超过 q8,即每个权重 8 位)下载最大模型,该模型适合您的设备内存 - VRAM 或 RAM。

例如:

  • 第 4 季度的 13B 是 13/2 = 6.5 GB - 适合具有 8 GB VRAM 的显卡。但在第 8 季度,它已经占用了 13 GB - 它将不再适合同一个视频卡,只能放在 RAM 中。

  • Q4 中的 70B 是 35GB - 它不再适合任何消费类显卡 - 但如果你有很多它,它可能会适合 RAM。

发电速率

现在,实际上,最有趣的是网络在特定安装中的运行速度有多快?

以下是近似数字(从我前段时间自己的实验结果中获得):

  • 本地模型(放置在 GPU/VRAM 上)

    • 7-13B:20 个代币/秒

    • 14-40B:15 个代币/秒

    • 70-700B:10 个代币/秒

  • 本地模型 (CPU/RAM)

    • 7B:8 个令牌/秒

    • 14B:5 个令牌/秒

    • 20-40B:3 个令牌/秒

    • 70-700B:1.5 个代币/秒

  • 通过 API 进行远程模型

    • 7B-13B:50 个令牌/秒

    • 14B-40B:35 个令牌/秒

    • 70B:25 个代币/秒

    • 200-700B:18 个令牌/秒

  • 其他选项

    • API FAST 模型:200 个令牌/秒

    • 从 32B 开始的本地,SSD 上传:0.2 个令牌/秒

实际上,它们可能会有两倍的不同 - 因为这完全取决于处理器、视频卡等,但它们给出了一个近似的理解。

交互式选项

为了不仅查看数字,而且为了了解其工作原理,我制作了一个小型 HTML 应用程序

用户体验

凭直觉,我从用户的角度发展出以下速度概念:

  • 每秒 50 个令牌 - 感觉很快

  • 每秒 10 个令牌及以上 - 感觉正常

  • 每秒 5 个令牌是等待时可接受的最小选项,但尚未令人痛苦

由此可见,根据我的感受:

  • 如果模型适合 VRAM,则可以使用它,感觉正常

  • 如果它适合 RAM,那么使用最大 7B 的型号的正常感觉,有条件地您可以使用最大 13B 的型号;上面 - 非常慢。

  • 从磁盘加载大约有 0.2 t/s - 您可以直接在应用程序中尝试这种感觉,以免:)现场尝试

当然,您可以更愉快地使用 API:

  • 大多数模型每秒释放 20 个令牌

  • 轻量级模型 - OpenAI gpt-4o-mini、Google Flash 2.0 - 每秒发出 50-100 个令牌,这感觉是一个非常快的响应。

  • 有时,您可以找到以惊人的速度托管模型的提供商 - 例如,我发现 DeepSeek 0324 的速度为每秒 200 个令牌。当然,感觉一切都在飞翔。(但是,这是有代价的 - 使用此选项,上下文限制为 8,000 个令牌,而不是常规 DeepSeek 中的 128,000 个)

通常,如果:

  • 您需要的模型不是由任何人提供的

  • 或者您对数据处理的隐私有严格的要求

... 使用本地模型。否则,在我看来,使用远程 API 要好得多。

PS:再一次,一个指向应用程序的链接,您可以在其中戳并感受速度的差异

如果此出版物激发了您的灵感,并且您想支持作者 - 请随时点击按钮

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇