GB10/Blackwell installability: relax torch pin, fix meta-tensor load crash, voice-prompt dtype cast - #102
Open
jethac wants to merge 2 commits into
Open
GB10/Blackwell installability: relax torch pin, fix meta-tensor load crash, voice-prompt dtype cast#102jethac wants to merge 2 commits into
jethac wants to merge 2 commits into
Conversation
…ys in meta-device load The torch <2.5 pin blocks the CUDA 13.0 aarch64 wheels needed on sm_121 (reported in NVIDIA#3 by @acatovic; fix first shipped in the amarrmb fork, commit 94cbbbd). The loaders change zero-inits checkpoint-missing keys that survive meta-device load_state_dict as meta tensors (e.g. depformer_emb.7.weight with base-Moshi dep_q=8 checkpoints); no behavior change for personaplex checkpoints. See docs/pr-drafts/01-build-fixes.md. Co-authored-by: amarrmb <amar@devicenexus.ai> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Raw WAV voice prompts are float32 but Mimi encoder runs in FP16. Without this cast, encode_from_sphn() fails with RuntimeError: Input type (float) and bias type (c10::Half) should be the same. (cherry picked from commit add7726)
This was referenced Jul 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
PersonaPlex cannot currently be installed or loaded on NVIDIA GB10-class
machines (DGX Spark, ThinkStation PGX, Jetson Thor — sm_121, aarch64):
moshi/pyproject.tomlpinstorch < 2.5, but sm_121 requires the CUDA13.0 aarch64 wheels (torch >= 2.9,
download.pytorch.org/whl/cu130).Community GB10 threads carry this fix already (amarrmb fork does too).
loaders.get_moshi_lminitializes the LM on the meta device (PR fix: reduce memory need during model init #18init-OOM fix). Any checkpoint key that is neither present nor covered by
the dep_q 8->16 backfill patches survives
load_state_dict(strict=False, assign=True)as a meta tensor andcrashes the final
.to()with "Cannot copy out of meta tensor". Thisfires for base-Moshi dep_q=8 checkpoints (
depformer_emb.7.weightisnot in the checkpoint and not covered by the 8..15 backfill).
Diff summary (isolated)
moshi/pyproject.toml:torch >= 2.2.0, < 2.5->torch >= 2.2.0(1 line).moshi/moshi/models/loaders.py: after the dep_q backfill, zero-init anymodel key still absent from the checkpoint, with a warning (13 lines).
No behavior change for personaplex-7b-v1 checkpoints (all keys present).
Evidence
Verified on the env below: stock repo fails to pip-install (pin) and, with
the pin fixed, fails to load kyutai/moshiko-pytorch-bf16 (meta crash);
with this PR both work, and personaplex-7b-v1 loads byte-identically
(loader path unchanged when no keys are missing).
Pinned environment
128GB unified LPDDR5X (~273 GB/s), 20-core Grace (Cortex-X925/A725)
system /usr/local/cuda/bin/ptxas 13.0.88 via symlink)
Tolerance-ladder tier
Tier 0 (build/load correctness; no numerics).
Known unknowns
sm_121, n=1 machine. The relaxed pin is unbounded above; maintainers may
prefer
< 3.0. Not tested on sm_80/sm_90 (no hardware); the loader changeis inert when checkpoints are complete.
Attribution
github.com/amarrmb/personaplex); the pin conflict was reported in the
GB10 discussion thread (PersonaPlex produces choppy/unusable audio on DGX Spark (GB10) #3, @acatovic). This PR
carries the same one-line change with a Co-authored-by trailer.
upstream PR fix: reduce memory need during model init #18's meta-device init.
amend.
Also in this branch
This branch (
pr-build-fixes) now also carries @amarrmb'sencode_from_sphn dtype-cast bugfix, cherry-picked with authorship
preserved (their add7726) - it is a correctness fix independent of the
performance series. The performance work is consolidated into a single
second PR (
pr-gb10-realtime, see 02-gb10-realtime.md), which is basedon this branch.
Upstream overlap (pre-flight scan, 2026-07-24)
version ranges in pyproject.toml and overlaps our torch-pin change.
Credit to them for flagging the install failures broadly. Ours is
deliberately narrower: a torch-only relax, since blanket-unpinning every
dependency risks breakage from untested majors. We would happily rebase
this PR on fix: widen dependency version ranges to resolve install failures #78 if the maintainer prefers the broader approach.
(motivated by Python 3.13 support) — same one-line intent as our pin
relax; credit to them as an earlier report of the constraint. Either PR
merging first makes that hunk of ours a no-op rebase.
unrelated reasons (macOS/Nix, client fixes, UI, stdio runtime, Docker).
🤖 Generated with Claude Code