by Hanyuyuan6
An Agent Skill for the DL experiment lifecycle: RUN (a GPU you own or rent) → VERIFY the number is real → DELIVER reproducible, single-source figures and tables.
# Add to your Claude Code skills
git clone https://github.com/Hanyuyuan6/remote-gpu-trainerGuides for using ai agents skills like remote-gpu-trainer.
remote-gpu-trainer is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Hanyuyuan6. An Agent Skill for the DL experiment lifecycle: RUN (a GPU you own or rent) → VERIFY the number is real → DELIVER reproducible, single-source figures and tables. It has 50 GitHub stars.
remote-gpu-trainer's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/Hanyuyuan6/remote-gpu-trainer" and add it to your Claude Code skills directory (see the Installation section above). remote-gpu-trainer ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
remote-gpu-trainer is primarily written in Shell. It is open-source under Hanyuyuan6 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh remote-gpu-trainer against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
One skill for the whole arc of a DL experiment: RUN → VERIFY → DELIVER.
profiles/<platform>.md owns every path, proxy, billing verb, and spot rule), invariant at
the core.Two stances run through VERIFY and DELIVER: user sovereignty (the science — seed count, which samples,
whether an aux channel exists — is the user's call; the skill organizes and discloses a tradeoff once,
then stops nagging) and audit → disclose, not enforce (the skill is an honest auditor, not a gate
guard — an integrity issue must surface with the conclusion it affects, but the skill never blocks the
user from shipping). Mantra: "disclose it, or don't claim it."
references/run-local/ and profiles/local.md.references/run-remote/, and pick
your profiles/<platform>.md FIRST (it owns every path/verb/proxy the phases delegate to).references/verifying/) → DELIVER it
(references/delivering/). These two are platform-agnostic; they run the same whether the job trained
locally or on a rental. Skip nothing here just because the run succeeded — a green run is not a real
number, and a real number is not yet a clean deliverable.Already debugging a model that won't converge / OOMs / hangs / NaNs, regardless of where it runs? Jump straight to
references/training/(the 8-file debug layer), then come back to VERIFY before you report.
The load-bearing invariants. One line each; the full cross-platform set (10 invariants for the remote
lifecycle) is in references/run-remote/principles.md — read it before Phase 0 of a remote run.
No meter, no teardown clock — the risks move from money to resource contention and your machine's
stability. The discipline that does not relax: env hygiene, resource awareness, artifact/checkpoint
care, and "state the seed." Start at profiles/local.md, then the matching doc:
base on a persistent box; the 4-step gate (enumerate →
pick the project env → confirm sys.executable → run) → references/run-local/env-hygiene.md.references/run-local/launch.md.torchrun/accelerate DDP env contract, the first-run rank/hang basics →
references/run-local/multi-gpu.md (multi-node → references/run-remote/multinode.md).references/run-local/local-oom.md.Pick your profile FIRST — it binds every concrete path/proxy/credential/billing verb/spot rule the
phases delegate to. Mental verb model (one API across platforms; the profile binds each verb to real
commands): up (rent+reach) → push (code/data on) → run (detached + checkpointing) → watch
(durable monitor) → pull (results off + verify) → down (stop the meter).
| You're on… | Profile | Meter-stop verb (the trap) |
|---|---|---|
| AutoDL (deepest, battle-tested) | profiles/autodl.md |
关机 stops meter, keeps disk (the AutoDL exception) |
| RunPod | profiles/runpod.md |
terminate (stop still bills 2×; destroys volume disk) |
| vast.ai | profiles/vastai.md |
destroy (stop bills disk forever) |
| Lambda | profiles/lambda.md |
terminate (no stop state) |
| Paperspace | profiles/paperspace.md |
destroy + release IP + delete storage |
| 恒源云 / 矩池云 / Featurize / 揽睿星舟 | profiles/china.md |
per-platform (data disk often bills while stopped) |
| Bare SSH / Slurm / K8s / Colab | profiles/generic-ssh.md |
manual (a forgotten box bills 24/7) |
The 6-phase lifecycle (full per-platform checklist → references/run-remote/lifecycle_checklist.md):
0 env audit (df -i not just df -h, cgroup memory.max, checkpoint disk budget) · 1 SSH +
credentials (the prebuilt image is the env — don't conda create on a rental; secrets via stdin) ·
2 wrapper + CPU-smoke gate before renting · 3 detached launch (probe, then hand back — never
a blocking sleep) · 4 durable monitoring (the four-layer architecture →
references/run-remote/monitoring_patterns.md; a session-bound watcher dies with the session) · 5
aggregate + verify + teardown.
Iron Law — teardown gate: NO
release/terminate/destroy/ file-delete until checkpoints are pulled to local AND verified by load (scripts/verify_local.py), and the user has explicitly approved the cost-affecting action. "It looked done in the log" is not evidence. On most platforms the meter-stopping action is irreversible (deletes the disk) — confirmation matters more, not less.
Other remote references: ssh_transport.md (rsync/scp resumable, secrets-via-stdin, CRLF) ·
spot-resilience.md (preemption grace, Young/Daly cadence, atomic-write resume) · china-network.md
(mirrors + HF_ENDPOINT + the no_proxy trap) · parallel_ablation.md (fan-out independence +
reconciliation) · multinode.md (NCCL/fabric, advanced) · gotchas_universal.md (the full U1–U43 catalog
with a grep index).
Once the box runs, training breaks in its own ways — local or remote, the same debug layer
(references/training/, 8 files; each entry symptom → root cause → fix with cited docs). Route by symptom:
oom-memory.md.torchrun/accelerate/deepspeed env contract, DDP/FSDP/ZeRO) → distributed-launch.md.precision-stability.md.torch.compile traps) → throughput-profiling.md.checkpoint-resume.md.by-domain.md.convergence-debugging.md.set_epoch) → data-pipeline.md.Before you trust or report any metric, ablation delta, or "it works now": classify it bug / effect / noise, hold a comparison to exactly one changed variable, and probe leakage / fair-comparison / variance / metric-direction. A number you can't re-derive from the saved artifact is not a result yet. Stance: audit → disclose — surface an integrity issue with the conclusion, never silently pass or hard-block.
references/verifying/methodology.md.real == shuffle, model-ignores-input → references/verifying/representation-collapse.md.references/verifying/smoke-hidden-failures.md.State the metric's direction when comparing (PSNR/SSIM/mAP ↑ better; LPIPS/NMSE/loss ↓ better) — never assume. Tracker forensics / pruning duplicate runs →
scripts/wandb_forensics.py.
Make the deliverable a deterministic function of one immutable, versioned evidence layer; lock provenance
and cross-document consistency by mechanism, not by hand. Eight principles, tiered
(references/delivering/principles.md):
results.json,
not transcribed (so a stale number is physically impossible) · P3 content-addressed + append-only
immutable runs (re-run mints a new <run-id>, never overwrites) · P7 figure-chain traceability
(results.json → source_data.csv → figure + .provenance sidecar) + the pixel re-open gate (a
figure that saved is not a figure that's correct) · P8 delivery = a disclosure gate, not a
blocking one.scripts/repro.sh.template).Mechanics: the on-disk tree → references/delivering/data-architecture.md; the two manifest schemas →
references/delivering/evidence-manifest-schema.md; the one-folder-per-figure convention + pixel gate →
references/delivering/figures.md; the per-number disclosure checklist → references/delivering/delivery-gate.md.
EVIDENCE.jsonis the project-level single source of truth — a machine-readable claims↔evidence map (each claim ← the supporting exp-id / metric / figure + a paper anchor + the repofile:line).scripts/reconcile.pygreps the whole repo against its authoritative values to catch cross-document drift;scripts/manifest_scaffold.pystamps the structure.
Recommended separate installs that deepen RUN / VERIFY / DELIVER; the skill needs none of them and works
fully standalone. One-line-each list, what each adds, and the no-companion fallback →
references/companions.md. In short: figure drawing (nature-figure / publication-chart / scipilot-figure),
experiment verification (the experiment-verifier agent), parallel ablation
(superpowers:dispatching-parallel-agents), HF transport + hosted tracker
(huggingface-skills:hf-cli / huggingface-trackio).
The skill is static, but every run can teach it a gotcha — without corrupting it. Protocol →
references/self-improvement.md: only sediment a root-caused, reproduced, generalizable gotcha (a
one-off flake is a hypothesis, not a gotcha); route user/project-specific facts to the host's memory and
generalizable ones to a proposed catalog edit; never silently rewrite a skill file — draft the
symptom → root cause → fix and let the user approve. Platform facts carry a verified <month> stamp —
re-verify any teardown/billing fact against current docs before betting money or data
(scripts/check_staleness.py).
Load only what the current phase needs (the body sections above name the individual files).
references/run-local/ — own-a-box: env-hygiene · launch · multi-gpu · local-oom.references/run-remote/ — rented-box: principles · lifecycle_checklist · monitoring_patterns · ssh_transport · spot-resilience · china-network · parallel_ablation · multinode · gotchas_universal (U1–U43).references/training/ — the DL-training debug layer (8 files; local/remote-agnostic) — routed above.references/verifying/ — is-the-number-real: methodology · representation-collapse · smoke-hidden-failures.references/delivering/ — deliverable: principles · data-architecture (+EVIDENCE.json) · evidence-manifest-schema · figures · delivery-gate.references/companions.md (optional skills + fallbacks) · references/self-improvement.md (capture-a-gotcha loop).profiles/<platform>.md — per-platform substrate (7 rental profiles + local.md; _schema.md = the fields).scripts/ — wrappers (run_one/run_queue), monitors (mem_monitor, gpu_health, health_patrol.sh.template),
transfer (download_loop, aggregate_to_fs, setup-china-mirrors), verify_local.py, delivering
(manifest_scaffold.py, reconcile.py, repro.sh.template), wandb_forensics.py, check_staleness.py.examples/autodl_sweep/ — one runnable worked case · evals/ — the regression harness.An Agent Skill for the whole life of a DL experiment — RUN a job (on a GPU you own or rent), VERIFY that the number is real, and DELIVER it as organized, single-source, reproducible figures and tables. Its deepest part is still remote-GPU operations (AutoDL, RunPod, vast.ai, Lambda, Paperspace, the Chinese platforms 恒源云 / 矩池云 / Featurize / 揽睿星舟, bare SSH, Slurm, Kubernetes — one instance or a fan-out of many), now wrapped in the full run → verify → deliver arc.
What this is, and what it isn't. "AutoDL" here means the autodl.com GPU-rental platform, not AutoML or NAS. And this is an Agent Skill — a
SKILL.mdwith reference docs and script templates, not a CLI or an SDK. It sits on top of each platform's API and the DL workflow, and captures the operational and judgment knowledge they leave out.
One skill, three phases of one real workflow:
/root survives a power-off, acceleration proxy vs HF mirror,
spot grace windows) are pushed down into one profile per platform.Two stances run through VERIFY and DELIVER: user sovereignty (the science — seed count, which samples,
whether an aux channel exists — is your call; the skill organizes and discloses a tradeoff once, then
stops nagging) and audit → disclose, not enforce (an integrity issue must surface with the conclusion
it affects, but the skill never blocks you from shipping). Mantra: disclose it, or don't claim it.
flowchart TD
TASK(["A DL experiment on a GPU you own or rent"])
TASK --> MATCH{"description keywords<br/>match the task?"}
MATCH -->|skill activates| HUB
HUB["<b>SKILL.md</b> — the always-loaded hub<br/>RUN / VERIFY / DELIVER router + the operating spine"]
HUB --> RUN["<b>RUN</b>"]
HUB --> VER["<b>VERIFY</b><br/>is the number real?"]
HUB --> DEL["<b>DELIVER</b><br/>single-source, reproducible"]
RUN --> RL["references/run-local/ + profiles/local.md<br/>a box you own — no meter"]
RUN --> RR["references/run-remote/ + profiles/×7<br/>a box you rent — billing, spot, teardown"]
RUN --> TR["references/training/ ×8<br/>when the run breaks: OOM · hang · NaN · convergence"]
VER --> VM["references/verifying/<br/>14-probe methodology · collapse · smoke"]
DEL --> DM["references/delivering/<br/>EVIDENCE.json · append-only runs · reconcile"]
Why this exists · How it differs · Architecture and layout · Install and deploy · What's inside · Scope · Verification status · Disclaimer · 中文简介 · Contributing · License · Citing
Renting the GPU is the easy part; so is starting a training run. The costly surprises are everything
around the job — and they don't stop when the job finishes. A box you "stopped" that keeps billing. A
checkpoint that printed synced but never actually wrote, because the disk ran out of inodes rather than
space. A download that hangs behind the wrong mirror. A terminate that takes the only copy of a week's
training with it. Then, after the run: a 1.2 % "win" that is really a misconfigured baseline; a leaked
test split that survives every shallow check; a headline number left stale in the slides because the fix
only landed in the paper. None of this is in any platform's API docs, and you usually learn it after you
have already paid — in money, or in a claim you have to retract.
This skill puts that knowledge where an agent can use it: operating principles that say why each step matters, a six-phase lifecycle where every phase ends in a check you can run, one profile per platform with the exact commands, a probe-by-probe methodology for deciding whether a number is real, and an evidence-layer architecture that makes a stale or hand-typed number physically impossible to ship. It spends its attention on the things that cost money, data, or a retraction.
The infrastructure orchestrators (SkyPilot, dstack, Modal) own or abstract the box and price-shop across Western clouds. They are good at that, this skill does not compete with them, and the two go together — let SkyPilot or dstack move the box, then use this skill to make your code resume correctly so recovery continues the run instead of restarting it. Two things set this apart:
The layout uses the Agent Skills idea of progressive disclosure: a small hub that is always loaded, with the deeper material read in only when a phase needs it. RUN is platform-specific at the edges (one profile per platform owns every concrete path, proxy, billing verb, and spot rule) and invariant at the core; VERIFY and DELIVER are platform-agnostic and run the same whether the job trained locally or on a rental.
The remote-RUN third has a six-phase operational spine; each phase delegates its platform details to the active profile and ends in a check you can run:
flowchart LR
P0["0 · audit<br/>df -i · cgroup · GPU"] --> P1["1 · ssh + creds"]
P1 --> P2["2 · CPU smoke<br/><i>before you rent</i>"]
P2 --> P3["3 · detached launch"]
P3 --> P4["4 · durable monitor<br/>(four-layer)"]
P4 --> P5["5 · verify + teardown<br/><b>Iron Law</b>"]
The folders map onto RUN → VERIFY → DELIVER:
remote-gpu-trainer/
├── SKILL.md # the hub: RUN/VERIFY/DELIVER router + the operating spine
├── references/ # platform-agnostic knowledge, loaded on demand
│ ├── run-local/ # RUN, a box you own: env-hygiene · launch · multi-gpu · local-oom
│ ├── run-remote/ # RUN, a box you rent: principles · 6-phase checklist · monitoring ·
│ │ # ssh · spot-resilience · china-network · parallel-ablation ·
│ │ # multinode · gotchas_universal (U1–U43)
│ ├── verifying/ # VERIFY: methodology (14 probes) · representation-collapse ·
│ │ # smoke-hidden-failures
│ ├── delivering/ # DELIVER: principles · data-architecture (EVIDENCE.json) ·
│ │ # evidence-manifest-schema · figures · delivery-gate
│ ├── training/ # the DL-training debug layer (8 files; local/remote-agnostic):
│ │ # OOM · NCCL-hang · NaN · throughput · ckpt · domain · convergence · data
│ ├── companions.md # optional companion skills + the no-companion fallback
│ └── self-improvement.md # how the skill captures new gotchas without corrupting itself
├── profiles/ # one file per platform — the only place concrete specifics live
│ ├── _schema.md # the shared 8-field contract every profile fills
│ ├── local.md # a box you own (no meter, no teardown clock)
│ ├── autodl.md # deepest, battle-tested
│ ├── runpod.md vastai.md lambda.md paperspace.md
│ ├── china.md # 恒源云 / 矩池云 / Featurize / 揽睿星舟
│ └── generic-ssh.md # bare SSH / Slurm / K8s / Colab-Kaggle
├── scripts/ # parameterized, runnable templates
│ ├── run_one.sh.template run_queue.sh.template health_patrol.sh.template
│ ├── mem_monitor.sh gpu_health.sh reap_vram_zombies.sh
│ ├── aggregate_to_fs.sh download_loop.sh setup-china-mirrors.sh
│ ├── verify_local.py # load-and-verify each artifact before any teardown
│ ├── reconcile.py