lupinemachines/lupine
LUPINE is a GPU over IP bridge allowing GPUs on remote machines to be attached to CPU-only machines.
LUPINE – GPU-over-IP 桥接器
功能简介 – LUPINE 允许只有 CPU(无 GPU)的机器通过将 GPU 驱动程序调用通过网络转发到另一台实际拥有 GPU 的机器来运行基于 CUDA 的程序。远程 GPU 在本地表现为其驱动程序库(libcuda.so、libnvidia-ml.so 等)已安装在客户端上。
使用方法
- 在配备 GPU 的主机上运行服务器(Docker 镜像
lupine-server)。它监听 TCP 端口 14833,并通过 HTTP/2 RPC 接口暴露 GPU。 - 在仅 CPU 的主机上运行客户端(Docker 镜像
lupine-client)。设置环境变量LUPINE_SERVER=<host>:14833。客户端预加载 LUPINE 垫片库,因此任何 CUDA 程序(例如nvidia-smi、PyTorch、自定义内核)都会自动与远程 GPU 通信。 - 可选附加功能 – 启用跟踪(
LUPINE_TRACE)、TLS(通过 HTTPS 代理前置服务器),或通过提供逗号分隔的LUPINE_SERVER端点列表实现跨多服务器的多 GPU。
关键技术要点
- 仅转发驱动程序 – 只有底层驱动程序调用通过网络传输;应用程序仍然自带其 CUDA 运行时。
- 垫片 – LUPINE 提供轻量级“垫片”库(
libcuda.so.1、libnvidia-ml.so.1、NCCL、nvSHMEM),将驱动程序调用转换为 RPC。 - 压缩与保持连接 – HTTP/2 主体使用 Zstd 压缩;TCP 保持连接(空闲 60 秒,探测 15 秒)防止空闲流超时。
- 指标 –
/metrics端点暴露 Prometheus 兼容的 GPU 使用统计,无需额外监控代理。 - 优雅关闭 –
SIGTERM排空正在进行的 CUDA 调用,并可选择运行通过LUPINE_CHECKPOINT_LIBRARY提供的检查点提供程序。 - 多 GPU / 多服务器 – 来自多个服务器的设备呈现为单个序号列表;跨服务器
cuMemcpyPeer通过客户端暂存实现。 - 平台支持 – 预构建的客户端捆绑包适用于 Linux、macOS、Windows(amd64 和 arm64)。Linux 客户端针对 manylinux_2_28 ABI(glibc ≥ 2.28)。
典型工作流程
# GPU 主机
docker run --rm --gpus all -p 14833:14833 \
ghcr.io/lupinemachines/lupine-server:cuda-13.3.1-ubuntu24.04
# 仅 CPU 主机 – 运行任何 CUDA 程序
docker run --rm -it -e LUPINE_SERVER=<gpu-host>:14833 \
ghcr.io/lupinemachines/lupine-client:cuda-13.3.1-ubuntu24.04 nvidia-smi
您还可以构建基于 PyTorch 的客户端镜像(Dockerfile 见 README),并针对远程 GPU 运行小型训练任务(microgpt_train)。
适用对象 – 研究人员或工程师,他们可以访问位于独立数据中心或云虚拟机上的强大 GPU,但希望在轻量级仅 CPU 的工作站上进行开发,而无需在本地安装完整的 CUDA 驱动程序堆栈。
限制
- 无内置身份验证;如果需要安全性,必须将服务器置于 TLS 终止代理之后。
- 跨服务器点对点复制通过客户端暂存,增加了额外的主机内存流量。
- 不再支持较旧的 Linux 发行版(CentOS 7、Ubuntu 18.04)。
了解更多 – 仓库包含有关检查点提供程序、跟踪以及如何在本地编译垫片的详细文档。Prometheus 指标可在 http://<server>:14833/metrics 获取。
以上所有信息均直接取自项目 README。
相关
- 项目
- 项目
- 项目
- Dispatch
- 项目