DeepSeek Harness Hub
← 返回列表

GPU 调度执行层zytsyj/dsh-gpu

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

自动挑最空闲显卡,跑命令与后台训练任务

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/14 · 已提供中文文档

DeepSeek Harness 的 GPU 感知执行层:gpu_status / gpu_exec / gpu_run_bg 工具、自动卡选择、每步 GPU 上下文

综合分
28.3
GitHub 分
28.3
用户评分
★ Stars
2
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add zytsyj/dsh-gpu
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-jobs@deepseek-ai/dsh-llm@deepseek-ai/dsh-shell@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-gpu

面向 DeepSeek Harness(dsh)的 GPU 感知执行层。树外插件;无需对 harness 打补丁。

Agent 可获得三个工具——gpu_status、gpu_exec、gpu_run_bg——外加可选的每步 GPU 上下文行。显卡会自动选择(最空闲优先),并在命令环境中设置 CUDA_VISIBLE_DEVICES;如果你在意,可以显式指定某张卡。

8 GPU(s), free: [0,1,2,3,4,5,6,7]
GPU0 Tesla V100-SXM2-32GB: 4264/32768MiB 0%util 40C
...
[gpus 1 — GPU 1 (auto: freest 1)] exit 0

工作原理

- gpu_status——一次查询,覆盖所有设备:已用/总显存、SM 利用率、温度,以及空闲/忙碌判定。当显存使用率达到或超过 80% 或利用率达到或超过 50% 时,设备即视为忙碌(两者均可配置)。
- gpu_exec——在选定显卡上执行一次性命令:CUDA_VISIBLE_DEVICES= 会通过挂载的 ctx.shell 执行器环境传入。可自动选择或通过 gpuIndex 指定;可为多 GPU 命令选择 count 张卡。
- gpu_run_bg——长时间运行的 GPU 任务(训练、推理服务、基准测试)会在 ctx.jobs 中注册为 gpu 作业:立即返回作业 id,用 job_output 读取,用 job_kill 停止。
- 每步上下文(可选,默认开启)——向符合条件的步骤注入一行 GPU 快照(time-context 模式),限速为每分钟一次采样。

所有执行都经由挂载的 shell 执行器。无论是本地主机,还是任何远程执行环境(例如 SSH 提供方插件)——dsh-gpu 不关心 GPU 在哪里;它通过 bash 工具所用的同一接缝进行查询和启动。

安装

dsh-gpu 是一个树外包插件。使用官方插件命令在 profile 中安装并激活它:

dsh plugin --profile  add dsh-gpu

该包自带的 cordis.patch.yml 会自动注册插件。若要覆盖其配置,请在 profile 的 cordis.patch.yml 中添加一个具有相同 id 的条目:

- insert:
- id: gpu
name: dsh-gpu
config:
stepContext: true

加载顺序注意事项:请将其放在你的执行环境插件(例如 SSH 提供方)之后,这样它查询的 shell 接缝才是你期望的那个。

配置

- id: gpu
name: dsh-gpu
config:
stepContext: true      # per-step GPU snapshot line (default true)
refreshIntervalMs: 60000  # min spacing between injected snapshots
queryTimeoutMs: 10000     # nvidia-smi timeout
busyMemoryPct: 80         # >= this % memory used => busy
busyUtilPct: 50           # >= this % SM util => busy

注意事项与坑

- nvidia-smi 会忽略 CUDA_VISIBLE_DEVICES——它始终报告物理索引。gpu_exec 的选择对 CUDA 程序仍然按预期工作;只是不要在 gpu_exec 内部用 nvidia-smi 的输出来验证绑定。
- 选择是建议性的,而非预留:两个并发的 agent 仍可能选中同一张卡。如需独占占用,请在同一步中通过 gpu_status 读取并固定 gpuIndex。
- gpu_run_bg 需要在组合中包含 jobs 服务(@deepseek-ai/dsh-jobs + @deepseek-ai/dsh-tool-jobs),与后台 bash 具有相同的依赖。
- 没有 NVIDIA GPU 的主机:gpu_status 会报告干净的 no-gpu 结果,而不是失败。

开发

pnpm install
pnpm typecheck   # tsc --noEmit
pnpm test        # vitest unit and plugin lifecycle tests
pnpm build       # tsdown -> lib/
pnpm check:package  # publint + Are the Types Wrong
node tests/live-v100.mjs   # optional live probe (edit SSH target first)

测试夹具记录自一台真实的 8× Tesla V100-SXM2-32GB 主机(包括一张被占用的卡)——未对 nvidia-smi 输出格式进行任何模拟。

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群