compute-env-setup · git:20261016.9a04658 · 2026-10-16 · sha256 0efdeb60999a221b

compute-env-setup git:20261016.9a04658A

Immutable. This exact content never changes and is served at /api/v1/blob/0efdeb60999a221b.

---
name: compute-env-setup
description: Set up a reproducible compute environment for research jobs. Use when a task needs Python/R packages, GPU libraries, containers, Modal, SSH, caches, or managed model runtime setup.
---

# Compute Environment Setup

Use this skill before running a research job that needs a nontrivial runtime.

Workflow:

1. Identify the job type, hardware need, data size, package stack, secrets, and expected artifacts.
2. Choose the smallest working route: local notebook runtime, project virtualenv/conda, Modal, SSH/Slurm, or managed endpoint.
3. Verify credentials and CLIs through environment variables or CLI status checks without printing secret values.
4. Write an environment note containing package versions, install commands, cache paths, hardware, and failure modes.
5. Run a tiny smoke job before the expensive job and save the smoke logs.

The done state is a recorded, reproducible environment plus a successful smoke or a precise missing dependency.

## Environment failure escalation: search GitHub before replace

When a runtime failure resists the obvious fixes, do not conclude that the
machine, driver, or stack "cannot run" the workload, and do not propose
replacement (another machine, driver upgrade, migration, abandoning the
host) before an explicit external search:

1. Search GitHub issues and discussions for the exact error signature: the
   top function names, the error strings, and the version tuple (library,
   CUDA, driver). Do a general web search too. Record the queries and
   candidate hits in the campaign notes.
2. Exhaust library-level fixes before infrastructure-level conclusions.
   Many "hardware wall" failures are library bugs replaceable without root:
   pip-installable versions (NCCL, vLLM, torch, flash-attn), `LD_PRELOAD`
   for statically linked libraries, and library environment variables.
3. Report "this environment cannot run X" only after each applicable layer
   is ruled out with evidence. A BLOCKER whose options include replacing or
   abandoning the environment must cite the search performed and why each
   candidate fix does not apply.

Canonical case (2026-10-14, host 242.196): FSDP multi-rank SIGSEGV in
`ncclCommInitRankConfig` was attributed to the old driver as a "binary
wall". The real cause was the NCCL 2.27.5 library (CUDA 12.8 build) on an
older-driver host. Fixed without root and without touching the driver:
`pip install nvidia-nccl-cu12==2.28.7` + `LD_PRELOAD` of the 2.28.7
`libnccl.so.2`, plus `NCCL_CUMEM_ENABLE=0`, `NCCL_RAS_ENABLE=0`, and
`sync_module_states=False` in the FSDP wrapper (NVIDIA/nccl #2449, #2159,
#1996; 2.28.7 release discussion #1879). "Driver too old so this host
cannot train" had converged too early; the library layer was never tried.