3 名特工。 3 名法学硕士。 1 老化的 GPU:裸机上的工程并行推理

突破 8GB VRAM 限制。了解如何使用 C++ 层复用和准入控制在单个 8GB GPU 上运行三个不同的 LLM。后 3 个代理。 3 名法学硕士。 1 老化 GPU:裸机上的工程并行推理首先出现在《走向数据科学》上。

来源:走向数据科学

代理使用三个不同的法学硕士。你有一个古老的 GPU,但你太穷而无法升级。您需要并行运行这些代理,但在这个旧 GPU 上,只有一个能够幸存,而另外两个则崩溃。这是解决这个问题的小型 C++ 守护进程,以及它们如何共同生存的真实故事。

您实际遇到的问题

让我描述一个你很容易联想到的情况。

您有几个 AI 代理:代理 A 生成原始代码,代理 B 在编写代码时积极审查其安全缺陷,代理 C 同时起草文档。为了实现无缝、实时的开发人员体验而不会出现大量延迟峰值,这三者必须同时驻留在内存中。他们每个人都与不同的小指导法学硕士一起工作——这里是 SmolLM,那里是 Qwen,其他地方是小 Llama。你将它们指向你的机器,它有一个非常旧的 GPU。你不能在这个季度、今年、甚至这辈子升级它(是的,你就是那么穷!)。它是一款只有 8 GB VRAM 的 NVIDIA GTX 1080,多年来您一直被悄悄告知它对于“小型”型号来说仍然足够了。

所以你做了显而易见的事情。您打开三个终端,通过三个 llama-completion 进程并行启动这些代理。然后你就会看到这个:

你:“好吧,虽然GPU老了,三个小模型应该可以正常工作。”

llama-completion (Agent 1,Llama 3.2 1B):“正在加载后端。预先为n_ctx=172032,n_batch=8192,-ngl 99保留KV缓存。”GPU内存从8,192 MiB跃升至6,536 MiB。

你:“酷。现在代理 2 — Qwen2 0.5B。”

llama-completion(代理 2):“在设备 0 上分配 1,536 MiB…”cudaMalloc:“❌内存不足。”

llama-completion(代理 2):“qwen 进程结束。” 🫡

你:“好吧。那么 SmolLM2 360M。那个很小。”

llama-completion(代理 3):“在设备 0 上分配 5,120 MiB…”cudaMalloc:“❌内存不足。”

llama-completion(代理 3):“smol 进程结束。”

为什么 3 个 LLM 不能并行运行(一分钟版本)

轨道 B —lmxd 承认所有三个