Juice使用指南:用juicify让任意应用透明访问远程GPU的完整教程 📅 发布时间:2026/8/24 11:01:47 👁 浏览次数: Juice使用指南用juicify让任意应用透明访问远程GPU的完整教程【免费下载链接】Juice-LabsJuice Community Version Public Release项目地址: https://gitcode.com/gh_mirrors/ju/Juice-LabsJuice 是一款 GPU-over-IP网络GPU客户端/服务器软件在装有物理 GPU 的机器上运行 Juice Server任意一台运行 Juice Client 的电脑即可通过网络透明访问这块 GPU。配合juicify命令行工具无需修改任何应用代码用一条命令就能让本地没有显卡的应用直接跑在远程 GPU 上。本文是面向新手的完整教程带你 3 步完成远程 GPU 透明访问。为什么需要 Juice远程GPU的痛点GPU 算力的使用有一个天然限制吃 GPU 的应用必须和 GPU 在同一台物理机上。这导致两个极端问题——️ 终端设备笔记本、云桌面、瘦客户端根本装不下、也带不动大功率显卡 机房里的高端 GPU 大量闲置利用率普遍低于 15%Juice 把应用所在主机和物理 GPU解耦客户端与服务器均可运行在物理机、虚拟机或容器上同时支持 Linux 和 Windows。唯一硬性要求有一块 GPU 可供服务客户端与服务器之间网络连通。整体架构Juice 的三大核心组件组件所在机器职责默认端口Juice ServerAgentGPU 机器把本地 GPU 暴露到网络上TCP 43210Juice Client应用机器让应用以为 GPU 在本地—juicify应用机器一键请求 GPU 会话并拉起你的应用—Controller可选中心节点多台 GPU 的池化管理、会话调度、监控TCP 8080客户端应用完全感知不到 GPU 是远程的这就是透明访问的含义。快速上手3 步完成远程 GPU 透明访问第 1 步在 GPU 机器上启动 Juice ServerAgent# 监听 0.0.0.0:43210把本机 GPU 暴露到网络 juice-agent如果需要启用 HTTPS可加--generate-cert自动生成证书证书生成逻辑见 cmd/agent/main.go。第 2 步在应用机器上安装 Juice Client 与 juicifyClient 和 juicify 一起分发Linux 为JuiceClient包二者放在同一目录即可。第 3 步用 juicify 启动你的任意应用# 语法juicify [选项] 应用 [应用参数] juicify --address192.168.1.100 my-gpu-app --width 1920就这样my-gpu-app会透明地在远程 GPU 上运行。如何用 juicify 配置连接常用参数速查juicify 的所有命令行参数定义在 cmd/juicify/app/juicify.go参数说明--addressip:port要连接的 Juice ServerController地址必填--access-tokentoken连接 Controller 时使用的访问令牌--test-connection只测试与 Server/Controller 的连通性不启动应用--queue-timeout秒等待 GPU 可用的最大排队时长--on-queue-timeoutfail\|continue排队超时后失败退出或降级为本地运行--on-connection-errorfail\|continue连接出错时失败退出或降级为本地运行--juice-path路径指定 Juice 可执行文件所在目录 小技巧也可以把servers、accessToken、requirements等配置写入 juicify 同目录下的juice.cfg文件之后直接juicify 应用即可无需每次传参配置读取逻辑同样在 cmd/juicify/app/juicify.go。juicify 的透明原理应用为什么毫无感知在 Linux 上juicify 获取到 GPU 会话后会注入两组环境变量再启动你的应用实现见 cmd/juicify/app/juicify_linux.goVK_ICD_FILENAMES/VK_DRIVER_FILES指向 Juice 自带的JuiceVlk.json——Vulkan 驱动被悄悄替换为 Juice 的远程驱动LD_PRELOAD注入libjuicejuda.so——图形 API 调用被透明重定向到网络因此任何基于 Vulkan 的应用游戏、渲染器、AI 推理框架都无需改动一行代码。会话在 pkg/restapi/types.go 中定义了queued → assigned → active → closed的完整生命周期juicify 会轮询等待会话变为active后才真正启动应用。如何启动 Juice ServerAgent 参数说明Agent 的启动参数定义在 cmd/agent/app/agent.go参数说明--address0.0.0.0:43210监听地址与端口默认 43210--labelskeyvalue标签供 Controller 按条件匹配分配--pool-idid将本机 GPU 加入指定资源池--taintskeyvalue污点控制哪些会话可以调度到本机--cert-file/--key-file指定 TLS 证书与私钥实现加密传输在 Docker 中部署时需要加--gpus all将 GPU 直通进容器详细说明见 docker/server/README.md。进阶用 Controller 统一管理多台 GPU当 GPU 超过 1 台时建议部署 Controller源码入口 cmd/controller/main.go会话调度多个客户端共享同一张卡按需动态分配显著提高 GPU 利用率资源池Pool与权限按池分组管理 GPUcreate_session、register_agent、admin三级权限控制定义见 pkg/restapi/types.go监控内置 Prometheus 端点可采集 GPU 利用率、显存占用、温度、功耗、风扇转速等指标GpuMetrics结构见 pkg/restapi/types.go存储默认 SQLite 文件controller.db也支持 PostgreSQL初始化脚本见 cmd/controller/storage/postgres/scripts/# 启动 Controller8080 端口 前端 后端 juice-controller --frontend --backend常见问题排查清单症状排查方法连不上远程 GPU先执行juicify --addressip --test-connection测连通性确认 Server 端口 43210 未被防火墙拦截应用卡在等待 GPU加--queue-timeout60限制排队时间或--on-queue-timeoutcontinue超时后降级本地运行连接失败但想先跑起来--on-connection-errorcontinuejuicify 会提示 Running without Juice 并在本地启动应用客户端无法初始化Linux 客户端依赖libstdc.so.6和libvulkan.so.1安装缺失的库即可校验逻辑在 cmd/juicify/app/juicify_linux.go项目关键文件导航 juicify 主程序与参数定义cmd/juicify/app/juicify.go Linux 下透明注入实现cmd/juicify/app/juicify_linux.go️ Windows 客户端实现cmd/juicify/app/juicify_windows.go AgentGPU 端入口cmd/agent/main.go️ Controller调度中心入口cmd/controller/main.go REST API 与指标类型定义pkg/restapi/types.go GPU 端 Docker 部署文档docker/server/README.md 客户端 Docker 镜像构建docker/client/Dockerfile如需从源码构建全部组件可克隆仓库后运行构建脚本 Build-All.ps1Windowsgit clone https://gitcode.com/gh_mirrors/ju/Juice-Labs小结Juice 用 GPU-over-IP 的方式把显卡变成了网络服务而juicify是它最优雅的入口一条命令零代码修改任意应用透明跑在远程 GPU 上。无论是给无显卡的笔记本加速 3D 渲染还是把机房闲置的 GPU 池化共享给整个团队这套 3 步流程都能让你快速落地。【免费下载链接】Juice-LabsJuice Community Version Public Release项目地址: https://gitcode.com/gh_mirrors/ju/Juice-Labs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考