You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Fresh jarvis-gb10 install fails at image/packs: the built pins predate the edit pack from #78 #84
Hi Jay, thanks for LocalRouter. We're really enjoying getting it running on our Spark.
We hit a snag on a fresh install today, and it looks like it affects anyone installing from scratch since #78 landed.
What happened
On d9a0734, a fresh tools/install/bootstrap.sh --profile jarvis-gb10 --accept on a DGX Spark (GB10, driver 580.178.04, CUDA 13.0) stops at image/packs:
Every other step passed, including the chat and Drama 3 GPU qualifications.
What we think is going on
tools/spark/prepare.sh:105 (added in #78) runs pack --precision edit, which rewrites te/ (749 tensors) and vae/ (230 tensors, now with the encoder). image/packs then checks them against tools/twin/packs/built/qwen-image-2.1-turbo.json, which was last changed in c82bd87 on 22 October and still pins the pre-edit te/ and vae/. A box that already has an image-packs stamp from before #78 won't notice, which is probably why it didn't show up on DGX-01.
Possible fix
Re-pin te/ and vae/ in built/qwen-image-2.1-turbo.json from an edit-pack build, and pin edit.json too.
As a stopgap we did exactly that locally, from our own build on the Spark. The source checkpoints had already passed their pins in image/download. With these values verify_assets.py passes 10/10 and the install goes on. The two manifest hashes are the same ones the edit pack printed when it wrote them. Here they are in case they're useful to compare against a build on DGX-01:
We haven't checked whether the edit pack is byte-for-byte reproducible across boxes, so please treat these as a comparison point rather than the pins to ship.
Thanks for such a clear report, and for the hashes. They pinned the problem down exactly.
You were right about the first part. The built pins (tools/twin/packs/built/qwen-image-2.1-turbo.json) still described te/ and vae/ from before the edit pack, so every fresh install failed image/packs. #118 re-pinned them from a build on our second Spark.
Your table showed a second problem. Your te/weights.safetensors, vae/weights.safetensors and vae/manifest.json match ours byte for byte, so the weights are reproducible across boxes. Your te/manifest.json and edit.json didn't match.
The cause was one field. The edit step copied the vision tower's whole transformers config into te/manifest.json, and that includes transformers_version. Our twin venv installed transformers>=4.57, which gave your box 5.20.2 and ours 5.21.0. When we put "5.20.2" into our manifest, it reproduced your a7014666… exactly. edit.json records that manifest's hash, so it reproduced your 79baea31… too.
The fix is in #130 (commit d2fe032, merged as 059b3ad):
The manifest no longer depends on the transformers version. It stores only the vision tower's architecture fields from the checkpoint, in a fixed order. Two boxes with different transformers versions now write identical bytes; we tested your variant and ours.
Existing packs are fixed in place.tools/spark/prepare.sh rewrites an existing edit pack's te/manifest.json and edit.json the same way. Only metadata changes, so there is no re-pack, and your stopgap pins can go.
The pins are updated for those two files (te/manifest.json 130922 bytes, 91fd46ff…; edit.json64638c30…). The weight pins are unchanged.
The twin venv now pins transformers==5.21.0.
You also mentioned a box with an older image-packs stamp. The stamp is the sha256 of the pin file, so the new pins make image/packs run again on such a box. It doesn't silently pass.
Could you check it on your Spark? Revert your local change to the pin file, pull main (059b3ad or later), and run the same command again:
git checkout -- tools/twin/packs/built/qwen-image-2.1-turbo.json # your local stopgap pins
git pull
tools/install/bootstrap.sh --profile jarvis-gb10 --accept
image/packs should run again. The log should show edit pack metadata normalised (#84), then pass: 11/11 files match, and the install should go on from there. Like any image/packs run, the step wants 64 GiB of free memory. If it still fails, please paste the FAIL lines from install/logs/image-packs.log.
Thanks again, and especially for offering to test.
Activity
jayleaton commentedon Oct 28, 2026
Sorry about that. Let me take a look at this. Thanks for the report
jayleaton commentedon Oct 29, 2026
Thanks for such a clear report, and for the hashes. They pinned the problem down exactly.
You were right about the first part. The built pins (
tools/twin/packs/built/qwen-image-2.1-turbo.json) still describedte/andvae/from before the edit pack, so every fresh install failedimage/packs. #118 re-pinned them from a build on our second Spark.Your table showed a second problem. Your
te/weights.safetensors,vae/weights.safetensorsandvae/manifest.jsonmatch ours byte for byte, so the weights are reproducible across boxes. Yourte/manifest.jsonandedit.jsondidn't match.The cause was one field. The edit step copied the vision tower's whole transformers config into
te/manifest.json, and that includestransformers_version. Our twin venv installedtransformers>=4.57, which gave your box 5.20.2 and ours 5.21.0. When we put "5.20.2" into our manifest, it reproduced youra7014666…exactly.edit.jsonrecords that manifest's hash, so it reproduced your79baea31…too.The fix is in #130 (commit
d2fe032, merged as059b3ad):tools/spark/prepare.shrewrites an existing edit pack'ste/manifest.jsonandedit.jsonthe same way. Only metadata changes, so there is no re-pack, and your stopgap pins can go.te/manifest.json130922 bytes,91fd46ff…;edit.json64638c30…). The weight pins are unchanged.transformers==5.21.0.You also mentioned a box with an older
image-packsstamp. The stamp is the sha256 of the pin file, so the new pins makeimage/packsrun again on such a box. It doesn't silently pass.Could you check it on your Spark? Revert your local change to the pin file, pull main (
059b3ador later), and run the same command again:git checkout -- tools/twin/packs/built/qwen-image-2.1-turbo.json # your local stopgap pins git pull tools/install/bootstrap.sh --profile jarvis-gb10 --acceptimage/packsshould run again. The log should showedit pack metadata normalised (#84), thenpass: 11/11 files match, and the install should go on from there. Like anyimage/packsrun, the step wants 64 GiB of free memory. If it still fails, please paste theFAILlines frominstall/logs/image-packs.log.Thanks again, and especially for offering to test.