ttx: rapid-prototyping loop for 1 and 2 P150a cards (Phase C) #70
No reviewers
Labels
No labels
human-approved
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
bitpartner/tt-stack!70
Loading…
Reference in a new issue
No description provided.
Delete branch "ttx"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Phase C of the harness overhaul: the rapid-prototyping loop for 1 and 2 P150a cards.
What lands
tools/ttx: one stdlib-Python CLI. It covers the arm TOML (bench/arms/), per-card slots over flock (it holds the legacy/tmp/ttlockfor unmigrated drivers), content-addressed overlay staging, a keyed tensor cache (model/rev/weight-env hash, seeded by hardlinks), passthrough of only the arm's cards, and a fail-closed identity check (verify-arm-banners.sh,[expect], served root). It also has the smoke/sweep32k/infbench suites, schema-v1 records, a gracefuldown, a paired TP=1abwith card swap, and thedev sync|cycle|restartedit loop.bench/arms/prod.toml==modules/tenstorrent-serving.nix, enforced by a test that builds the ExecStart and diffs it (plus the prefix-caching variant).scripts/vllm-tt-serve.shis a thin shim overttx serve-legacythat keeps its CLI. A test diffs it against the frozen pre-ttx script.bench/ab/sweep-32k.shruns overttx run --suite sweep32k, and there is a newbench/ab/smoke.sh.images/+tools/tt-image+pins/: tt-base per pin from the nightly ttnn. It was built on nixos and pushed to git.bitp.cz/bitpartner/tt-base (verify_onecommit passes; the negative control fails as it should). tt-serve@digest is design-only in docs/BUILD.md, and the unit is unchanged.tt-card-slotandtt-bench, plus the updated docs/DEV-LOOP.md.Hardware
Measurements are pending on the shared lock and will be posted as a comment with records in
bench/runs/ttx-*.jsonl. They cover TP=1 load, boot and RSS solo and side by side on G2 bfp4, the TP=2 edit->measure cycle, and a prod boot with the B=1 PP/TG probe. TP=1 decode is not usable yet: the MTP branch hits TT_THROW program.cpp:2066 after load. So TP=1 is measured as load and hold only.Not done
🤖 Generated with Claude Code
👀 Security review of PR #70 (ttx: rapid-prototyping loop for 1 and 2 P150a cards, Phase C)
Verdict
approve — security-sensitive surface is clean. No findings.
Tier
T1 — internal developer workflow tool on cfx-llm2 (P150a inference), self-hosted, runs under operator-owned Tailscale. No public exposure, no network egress, no secrets.
Concerns
Injection
Secrets / credentials
Supply chain / remote code fetch
Concurrency / resource
Notes (non-blocking)
Added in
3b7ad10: a disk guard, a cache registry and gc.Why: a tensor-cache build crashed in tt-metal (serialization.cpp written==bytes) when a parallel agent's 20 GB cache filled /var/lib/models-sata.
ttx upreserves what the cache still needs before it boots. That is the expected size (registry-measured for the same checkpoint and mesh, else models.toml cache_gb) minus what is present, plus a 3 GB margin. It subtracts the other ttx builds in flight, and refuses with a record if the space is short.ttx cache ls [--du]lists them.ttx cache gc --keep-days N [--dry-run]deletes only keyed caches ttx built. It never deletes one that the prod unit, a running container, a held slot or a build in flight references.cache lsandgc --dry-runboth run, and gc would delete 0 GB.reserverefuses with rc 3 on box python.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.