llama.cpp 的分布式推理功能,是基于ggml内置的ggml-rpc功能来实现的。
llama.cpp的cmake默认构建是没有rpc功能的,需要增加-DGGML_RPC=ON选项,来生成rpc-server。
本专栏文章主要介绍ggml-rpc的代码实现,llama.cpp的rpc部署可参考官方资料。
ggml-rpc 项目的核心功能是让一台计算机(客户端)能够将复杂的 GGML 计算任务(例如大型语言模型推理)发送到另一台更强大的计算机(服务器)上执行。它通过一套远程过程调用(RPC)机制,实现了计算资源的网络化共享。用户可以在本地设备上编写代码,但实际的繁重计算则由远程的高性能硬件(如GPU)完成,就像给本地电脑外接了一个“云端大脑”一样。
ggml-rpc 工作原理
flowchart TD
A0["远程过程调用后端 (RPC Backend)
"]
A1["远程后端缓冲区 (RPC Buffer)
"]
A2["RPC 通信协议
"]
A3["RPC 服务器 (rpc_server)
"]
A4["张量序列化 (rpc_tensor)
"]
A5["远程计算设备 (RPC Device)
"]
A6["后端注册机制 (Backend Registration)
"]
A0 -- "分配与管理" --> A1
A0 -- "发送计算任务" --> A3
A3 -- "实现" --> A2
A2 -- "使用...打包张量" --> A4
A5 -- "初始化" --> A0
A6 -- "添加" --> A5
ggml-rpc介绍
-
远程计算设备 (RPC Device)
-
后端注册机制 (Backend Registration)
-
远程过程调用后端 (RPC Backend)
-
RPC 服务器 (rpc_server)
-
RPC 通信协议
-
张量序列化 (rpc_tensor)
-
远程后端缓冲区 (RPC Buffer)