详细内容或原文请订阅后点击阅览
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 进程结束。”
