docs(comfyui): bake RTX VSR provisioning into canonical README
Record the RTXVideoSuperResolution node clone + the nvidia-vfx pip install (scoped --extra-index-url, uid 1000) in the stacks/comfyui runbook. Flag the durability split: the node is persistent (basedir/custom_nodes) but nvidia-vfx lives in the disposable venv (run/), so it must re-run after every fresh bootstrap. Deliberately not a global PIP_EXTRA_INDEX_URL (torch-pin safety). Closes the comfy-dev provisioning ticket.
This commit is contained in:
@@ -112,7 +112,6 @@ no longer deployed sidecars here. See Recent decisions.)
|
||||
_As of 2026-07-18 (later session) — **soong-lab auto-redeploy WIRED + validated** (CI-deploy step live, deploys from /opt/soong-lab, health-gated; dispatch run #5 green — live container recreated onto a new image) and **worldtree-sdk 1.0.0 (Python) published to the vh Gitea PyPI** + acceptance-verified. Prior session's four landed items (Zonos 0.2.1 presets; soong-lab containerize cutover; Wyrd key; wtsdk npm@1.0.0) remain done. **No active in-flight task.**_
|
||||
|
||||
**Open follow-ups (non-blocking — pick one up or not):**
|
||||
- **irv-ml1 ComfyUI — bake RTX VSR into canonical provisioning** (comfy-dev v1.5.0 ticket, 2026-07-19, LOW-priority/not urgent). RTXVideoSuperResolution node + `nvidia-vfx` dep are installed + working on the live container but as MANUAL installs; they survive restarts/`up -d` (persistent bind-mounts: venv `/worktank/comfyui/run/venv`, node `/worktank/comfyui/basedir/custom_nodes`) — only a from-scratch volume rebuild would lose them. Bake TWO items into from-scratch provisioning: (1) pip dep **AS uid 1000** (`docker exec -u 1000:1000 comfyui /comfy/mnt/venv/bin/pip install nvidia-vfx --extra-index-url https://pypi.nvidia.com` — NVIDIA MAXINE VFX SDK 1.2.0, import name `nvvfx`, 597 MB cp312 wheel; **NEVER root-install → venv-ownership crash-loop**, see [[reference_irv_ml1_comfyui_mmartial]]); (2) custom node `git clone https://github.com/Comfy-Org/Nvidia_RTX_Nodes_ComfyUI` into custom_nodes as uid 1000. Reqs already met on irv-ml1 (A6000 Ampere+ Tensor cores, driver 595.58 ≥ 590.44, container OS fine). comfy-dev said no reply needed unless a snag.
|
||||
- **Zonos emotion:** sad axes/text pass on the 3 calibrated voices (only named-sad, untested); emotion-congruent-text pass (validates intensity, may rescue sad id); clone-char (Emmie/Penny/Natalie/Miranda) emotion rows use the mid-region fallback until measured. Presets are **provisional** (neutral-text ear-check was inconclusive). Tools `~/development/zonos-tools/{axes_sweep,strength_ladder,gen_auditions,dial-in-studio,assemble_voice}.py` (run ON irv-ml1; dial-in studio = nohup :8898 on nh3-dev). dvalin thread at rest (`01KXT12FN0AS…`). → `persistent-memory.d/2026-07-18-zonos-gateway-0.2.1-emotion-presets.md`
|
||||
- **zonos-gateway CI-wire:** deployed irv-ml1 tree `/opt/docker/compose/zonos-gateway` is still NON-git (hand-updated build context) — git-connect + build-on-push like the other sisters. (Same pattern soong-lab now has.)
|
||||
- **soong-lab:** cutover DONE + **auto-redeploy DONE + validated 2026-07-18** (CI-deploy step live; dispatch run #5 recreated the live container ...541f7730 → ...07526a08, health-gated green). Deploy dir now **/opt/soong-lab** (deploy-owned, mirrors /opt/worldtree); old `/home/infra-ops/soong-lab-deploy` retired (`.retired-20260718`). Dedicated soong-only ed25519 deploy key on `deploy`'s authorized_keys (fp SHA256:MG7M3Ri…). → `persistent-memory.d/2026-07-18-soong-lab-auto-redeploy.md`.
|
||||
@@ -127,6 +126,8 @@ _As of 2026-07-18 (later session) — **soong-lab auto-redeploy WIRED + validate
|
||||
|
||||
## Recent decisions
|
||||
|
||||
- `[2026-07-19]` **irv-ml1 ComfyUI — RTX VSR baked into canonical provisioning (comfy-dev ticket DONE).** RTXVideoSuperResolution node + `nvidia-vfx` dep were manual installs; documented both in the canonical `stacks/comfyui/README.md` runbook (this stack's provisioning IS the README — no automated provision script). Key durability insight: the **node** lives in `basedir/custom_nodes` (persistent, restic-included → durable) but the **`nvidia-vfx` wheel** lives in the venv under `run/` (disposable, restic-excluded → **dropped by any `rm -rf run/*` fresh-bootstrap**), so the pip step must re-run after every venv rebuild. Both steps run **as uid 1000** (root install → venv-ownership crash-loop, [[reference_irv_ml1_comfyui_mmartial]]); `--extra-index-url https://pypi.nvidia.com` kept **scoped to the nvidia-vfx install**, deliberately NOT a global compose `PIP_EXTRA_INDEX_URL` (would risk perturbing the pinned torch 2.12.1/SageAttention boot bootstrap). Node already live on the box; no host change, canonical runbook now replays it. comfy-dev informed.
|
||||
|
||||
- `[2026-07-19]` **vh private Gitea PyPI — consumer READ-access convention set + wyrd-dev provisioned.** Consuming agents read the internal vh PyPI (`https://gitea.phasefinal.com/api/packages/vh/pypi/simple/`) with a **shared read-only token** (operator call: shared, not per-consumer — read-only blast radius is small, per-agent Gitea identities aren't worth it). Minted a dedicated `read:package`-scoped PAT off **claude-bot** (`POST /users/claude-bot/tokens`, name `vh-pypi-read-consumers`; verified reads worldtree-sdk, write-probe 401), revocable/rotatable independently. uv auth = `UV_INDEX_GITEA_USERNAME=claude-bot` + `UV_INDEX_GITEA_PASSWORD=<token>` (or `~/.netrc`); pyproject uses `[[tool.uv.index]] name=gitea … explicit=true` + `[tool.uv.sources] <pkg> = { index = "gitea" }` (mirrors soong-lab's bifrost setup). Delivered to wyrd-dev (worldtree-sdk adoption) via mode-600 drop on nh3-dev, drop-and-shred. [[reference_claude_bot_gitea_creds]]
|
||||
|
||||
- `[2026-07-18]` **soong-lab auto-redeploy WIRED + validated (queued item CLOSED).** Added a WT-style CI-deploy step to `build-and-push.yml`: after build+push, the pfi-fleet runner SSHes corviduo-dev as the `deploy` user and runs `docker compose pull && up -d` from **/opt/soong-lab**, health-gated on `/api/version` (120s, fails loud). Reused WT's `deploy` account (uid 1001, docker-group → no sudo); relocated the deploy dir /home/infra-ops/soong-lab-deploy → /opt/soong-lab (deploy-owned; old dir retired `.retired-20260718`). Minted a dedicated soong-only ed25519 deploy key, pubkey on `deploy`'s authorized_keys (fp SHA256:MG7M3Ri…). **First dispatch FAILED on a bad DEPLOY_SSH_KEY paste** (`error in libcrypto` — unparseable key bytes; build+push were fine, live Soong untouched); repo secrets are **vh-owner-only** (claude-bot token = write:package only → 403; the vh package-scoped PAT also 403 on secrets), so operator re-set DEPLOY_SSH_KEY/HOST/USER. **Re-dispatch run #5 GREEN**: live container recreated ...541f7730 → ...07526a08, health 200. soong-dev pinged to sync DEPLOY.md's redeploy path (/opt/soong-lab) + close the "auto-pull open follow-up". → `persistent-memory.d/2026-07-18-soong-lab-auto-redeploy.md`
|
||||
|
||||
@@ -118,4 +118,49 @@ ssh irv-ml1 '
|
||||
```
|
||||
|
||||
User state under `/worktank/comfyui/basedir/` is untouched by either
|
||||
pattern.
|
||||
pattern. **But a `run/*` wipe drops any pip deps that live only in the
|
||||
venv — see RTX VSR below; re-run its pip step after every fresh bootstrap.**
|
||||
|
||||
## Custom nodes needing extra provisioning — RTX Video Super Resolution
|
||||
|
||||
The **RTX Video Super Resolution** node (`Nvidia_RTX_Nodes_ComfyUI`, Comfy-Org)
|
||||
needs the NVIDIA MAXINE Video Effects SDK bindings (`nvidia-vfx`, import name
|
||||
`nvvfx`), served from NVIDIA's package index, not public PyPI. Two pieces with
|
||||
**different durability**:
|
||||
|
||||
| Piece | Lives in | Survives a `run/*` venv wipe? |
|
||||
|---|---|---|
|
||||
| the node `Nvidia_RTX_Nodes_ComfyUI` | `basedir/custom_nodes/` (persistent, restic-included) | yes |
|
||||
| the `nvidia-vfx` wheel | the venv under `run/` (disposable, restic-excluded) | **NO — re-install it** |
|
||||
|
||||
So the node itself is durable, but **any venv rebuild (`rm -rf run/*`, the
|
||||
fresh-bootstrap on an image bump) drops `nvidia-vfx`** and the node breaks on
|
||||
`import nvvfx` until it's reinstalled. irv-ml1 already meets the node's
|
||||
requirements (A6000 Ampere+ Tensor cores; driver 595.58 ≥ 590.44; container OS
|
||||
fine).
|
||||
|
||||
Provision from scratch — **both commands run as UID 1000**; a root / `-u 0`
|
||||
install corrupts venv ownership and crash-loops the boot torch step (see the
|
||||
`chown -R 1000:1000 venv` lesson):
|
||||
|
||||
```bash
|
||||
# 1. The node — only if basedir/custom_nodes was wiped (normally persistent):
|
||||
ssh irv-ml1 'git clone https://github.com/Comfy-Org/Nvidia_RTX_Nodes_ComfyUI \
|
||||
/worktank/comfyui/basedir/custom_nodes/Nvidia_RTX_Nodes_ComfyUI'
|
||||
|
||||
# 2. The pip dep — RE-RUN AFTER EVERY venv rebuild (it lives in the disposable venv):
|
||||
ssh irv-ml1 'docker exec -u 1000:1000 comfyui \
|
||||
/comfy/mnt/venv/bin/pip install nvidia-vfx --extra-index-url https://pypi.nvidia.com'
|
||||
|
||||
# Verify:
|
||||
ssh irv-ml1 'docker exec -u 1000:1000 comfyui \
|
||||
/comfy/mnt/venv/bin/python -c "import nvvfx; print(\"nvvfx OK\")"'
|
||||
```
|
||||
|
||||
The `--extra-index-url` is kept **scoped to this one install**, deliberately NOT
|
||||
promoted to a global `PIP_EXTRA_INDEX_URL` in compose: a fleet-wide extra index
|
||||
could perturb the delicate pinned torch/cuda + SageAttention resolution the boot
|
||||
bootstrap depends on (`DISABLE_UPGRADES=true`, torch 2.12.1). The node's own
|
||||
`requirements.txt` lists `nvidia-vfx`, so if ComfyUI ever auto-installs node
|
||||
requirements it will need this index reachable — but scoping it to the manual
|
||||
step keeps the boot bootstrap untouched.
|
||||
|
||||
Reference in New Issue
Block a user