Skip to content

GB10/Blackwell installability: relax torch pin, fix meta-tensor load crash, voice-prompt dtype cast - #102

Open
jethac wants to merge 2 commits into
NVIDIA:mainfrom
jethac:pr-build-fixes
Open

GB10/Blackwell installability: relax torch pin, fix meta-tensor load crash, voice-prompt dtype cast#102
jethac wants to merge 2 commits into
NVIDIA:mainfrom
jethac:pr-build-fixes

Conversation

@jethac

@jethac jethac commented Jul 24, 2026

Copy link
Copy Markdown

Motivation

PersonaPlex cannot currently be installed or loaded on NVIDIA GB10-class
machines (DGX Spark, ThinkStation PGX, Jetson Thor — sm_121, aarch64):

  1. moshi/pyproject.toml pins torch < 2.5, but sm_121 requires the CUDA
    13.0 aarch64 wheels (torch >= 2.9, download.pytorch.org/whl/cu130).
    Community GB10 threads carry this fix already (amarrmb fork does too).
  2. loaders.get_moshi_lm initializes the LM on the meta device (PR fix: reduce memory need during model init #18
    init-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 and
    crashes the final .to() with "Cannot copy out of meta tensor". This
    fires for base-Moshi dep_q=8 checkpoints (depformer_emb.7.weight is
    not 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 any
    model 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

  • Lenovo ThinkStation PGX, NVIDIA GB10 (sm_121, 48 SMs, 25MB L2), aarch64,
    128GB unified LPDDR5X (~273 GB/s), 20-core Grace (Cortex-X925/A725)
  • Ubuntu 24.04, driver 595.71.05, CUDA 13.0/13.2, python 3.12.3
  • torch 2.13.0+cu130, triton 3.7.1 (bundled ptxas-blackwell replaced by
    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 change
is inert when checkpoints are complete.

Attribution

Also in this branch

This branch (pr-build-fixes) now also carries @amarrmb's
encode_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 based
on this branch.

Upstream overlap (pre-flight scan, 2026-07-24)

🤖 Generated with Claude Code

jethac and others added 2 commits July 24, 2026 11:43
…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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants