Skip to content

fix(personaplex): declare the official reference einops dependency - #1238

Open
chaofengw-nv wants to merge 1 commit into
NVIDIA:mainfrom
chaofengw-nv:fix/personaplex-reference-dependency
Open

chaofengw-nv wants to merge 1 commit into
NVIDIA:mainfrom
chaofengw-nv:fix/personaplex-reference-dependency

Conversation

@chaofengw-nv

Copy link
Copy Markdown
Collaborator

Background

PersonaPlex's pinned official reference imports einops, but the family requirements only declare soundfile. A family environment can therefore fail with ModuleNotFoundError before reaching checkpoint loading. The required version is declared by the pinned upstream Moshi project.

Exit Criteria

Installing the family requirements provides the reference's tensor-rearrangement dependency, and the real reference subprocess completes imports before validating the checkpoint. No oracle implementation, accuracy threshold, or E2E acceptance criterion changes.

Implementation

Declare einops==0.7.0 in PersonaPlex's requirements, matching the pinned upstream source. Add an import smoke test using the existing reference subprocess and an empty checkpoint directory: it must reach the specific missing-checkpoint error, not fail on an import. The new smoke test requires TRTMC_REFERENCE_SOURCE_DIR; it explicitly skips when no source checkout is supplied. Existing E2E tests are unchanged. No API, ABI, or bundle-format changes.

Change categories

  • Model or runtime behavior
  • Public API
  • ABI
  • Bundle or artifact format
  • Dependencies
  • Documentation only
  • CI or developer tooling

Validation

Commands and Results

With the official source checkout supplied through TRTMC_REFERENCE_SOURCE_DIR and the disposable verification venv on PATH:

  • python -m pytest families/personaplex/tests/test_official_reference.py -q --tb=short: 4 passed. Before adding/installing einops, the same smoke test failed with ModuleNotFoundError: No module named 'einops' (1 failed, 3 passed).
  • Family tests with -m 'not e2e and not gpu and not trt' -q -rs: 10 passed, 3 skipped; the skips require explicit E2E selection.
  • ruff check families/personaplex/tests/test_official_reference.py: passed.
  • git diff --check github/main...HEAD: passed.

Hardware, Environment, and Revisions

Tested tree: 3bf025c49d6179c13cbf4ab48826289c4b7d86ff, based on dddd2663336753c1102e47c281a925d96d899ac2. Official source: NVIDIA/personaplex@3428dfd95309a7f3c84fd93259ded0f810d1ff91. Linux x86_64, Python 3.12.3, NumPy 2.4.6, torch 2.12.0+cu130, einops 0.7.0, soundfile 0.14.0, sentencepiece 0.2.2. The disposable venv reuses existing base packages; it is not a clean reproduction of the target runtime image. The import smoke test uses no model weights or GPU execution.

Not Run / Remaining Gaps

Full GPU PersonaPlex generation/parity and target-platform dependency installation still require CI. Successful imports do not establish model correctness or compatibility with every upstream dependency. No premerge pass is claimed.

Contributor Self-Review

  • I have completed a self-review of this change.

Checked the pinned upstream dependency/import closure and confirmed the test calls the real wrapper without loading weights, mocking imports, or altering the oracle.

Notes For Future Readers

The official source is not installed as a package by this workflow, so its needed dependencies must be available through the family/base environment. Keep the source pin and dependency compatible. This PR is independent of tensor-parallel sharding fixes and does not modify global CI resource policy.

Risk level

  • Low
  • Medium
  • High

The only production change adds one pure-Python, family-local dependency at the upstream-required version; reference behavior and E2E criteria remain unchanged.

Match the einops version required by the pinned official Moshi source. Exercise real reference imports through the existing subprocess entrypoint before checkpoint validation, without model downloads or GPU execution.

Signed-off-by: chaofengw <chaofengw@nvidia.com>
@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: f7813505-d642-45e1-833c-58603a7d5cde

📥 Commits

Reviewing files that changed from the base of the PR and between dddd266 and 3bf025c.

📒 Files selected for processing (2)
  • families/personaplex/requirements.txt
  • families/personaplex/tests/test_official_reference.py

Included review availability: Your plan provides up to 12 included reviews per hour; 10 remain after this review.


📝 Summary

Summary

  • Adds einops==0.7.0 to PersonaPlex family requirements.
  • Adds a reference subprocess smoke test.
  • The test confirms that imports complete before the expected missing-checkpoint error.
  • The test skips when TRTMC_REFERENCE_SOURCE_DIR is unavailable.
  • No public API, ABI, bundle format, accuracy, or E2E behavior changes.

Architecture impact

  • Family-owned files: families/personaplex/requirements.txt and families/personaplex/tests/test_official_reference.py.
  • Shared surfaces: None identified.
  • Dependency direction: PersonaPlex now depends on the pinned einops==0.7.0 version used by upstream Moshi.
  • Affected consumers: PersonaPlex reference validation and related family test workflows.
  • Unresolved blast-radius questions: Full GPU generation, parity validation, and target-platform dependency installation remain CI concerns.
  • Status: PASS

Walkthrough

The change pins einops==0.7.0 for Personaplex and adds a subprocess smoke test for official-reference imports and missing checkpoint validation.

Changes

Personaplex validation

Layer / File(s) Summary
Dependency and import validation
families/personaplex/requirements.txt, families/personaplex/tests/test_official_reference.py
The requirements pin einops==0.7.0. The smoke test invokes official_reference.generate with bounded settings and verifies missing official weights are reported after imports. It does not download weights or require a GPU.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 3bf02

This change pins the missing Personaplex reference dependency and adds a smoke test confirming imports reach checkpoint validation. No current merge-blocking risk remains.

🚥 Pre-merge checks | ✅ 8 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 1 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (8 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely identifies the primary change: declaring the official PersonaPlex reference dependency on einops.
Description check ✅ Passed The description completes the required sections. It explains the problem, exit criteria, implementation, dependency category, validation results, environment, remaining gaps, self-review, and risk. It…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Family Ownership Boundary ✅ Passed PASS. The authoritative diff changes only families/personaplex/requirements.txt and families/personaplex/tests/test_official_reference.py. The new requirement at line 5 adds the external package `…
Shared Semantic Neutrality ✅ Passed PASS. The review range changes only families/personaplex/requirements.txt and families/personaplex/tests/test_official_reference.py. Both files are family-owned. The dependency declaration and the…
Benchmark Validation Integrity ✅ Passed PASS. The pull request adds only einops==0.7.0 and an import-order smoke test. The new test runs the official reference with an empty checkpoint directory and checks the missing-weight error; it doe…
Shared Change Blast Radius ✅ Passed The check is inapplicable. The authoritative PR diff changes only families/personaplex/requirements.txt and families/personaplex/tests/test_official_reference.py. The changes add a PersonaPlex-onl…
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 1 files. (1 skipped: 1 unsupported.)


Comment @coderabbitai help to get the list of available commands.

@chaofengw-nv chaofengw-nv added run-internal-ci Maintainer-approved dispatch to internal CI and removed run-internal-ci Maintainer-approved dispatch to internal CI labels Sep 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-internal-ci Maintainer-approved dispatch to internal CI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant