fix(cuda): persist and restore native model package profiles - #19
Conversation
There was a problem hiding this comment.
All reported issues were addressed across 9 files
You’re at about 92% of the monthly reviewed-line limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
|
Both P2s addressed in 95f0a47: certification evidence now resolves the model's own worker path from the catalog (spec.worker_bin) instead of the default probe, and the probe runs in tokio::task::spawn_blocking so a hung worker cannot block an executor thread. Added regression cuda_certification_evidence_uses_model_worker_without_blocking asserting (1) the model-specific worker is the probe source (its driver_api value lands in evidence.observed) and (2) the probe stays pending on a current-thread executor while a slow probe runs, proving the async path is not blocked. Catalog regression and clippy -D warnings pass locally. |
|
Confirmed the defect at source on master before reading the fix, and it is worse than the description says: this is boot-blocking for the whole module, not for the one model. The fix reads correctly: the owned profile is built through one helper for both owned engines, the CUDA arm carries family, dtype, execution, and the config/extra locators, and normalization preserves the locators instead of dropping them. Moving Two things before merge:
|
|
Please handle the current-master integration on your merge branch; I will not rebase this head while your hardware verification is in progress. Thank you for testing the actual restart failure. The native AFT acceptance check also found a separate discovery omission: models.list omits recommended_batch for owned-cuda, which AFT correctly rejects. A targeted regression reproduced it, and extending the existing module batch-policy arm to CUDA passes locally. I am keeping that follow-up separate from your restart verification. |
|
The separate batch-advice fix is now commit Qiiks/synapse@920d27f on fix/owned-cuda-batch-advice (one producer arm plus regression). Feel free to cherry-pick it during integration; I have left this PR head unchanged. Real consumer proof after deploying that module and certifying: AFT indexed 4 fixture entries at 1024 dimensions; its search made 1 live native embed call and returned refund_cancelled_purchase with semantic_score 0.58378899, no lexical-only fallback. Before the fix, AFT failed discovery with no usable recommended_batch rows/token_budget. Published values are the module-enforced limits: rows=8, token_budget=3072. Targeted regression, fmt, strict Clippy, and release build passed. |
|
Landed at ecfb092 through the CI train, with the report in The restart proof on a rented RTX 4090 ($0.20) holds on both trees. Master, after one owned-CUDA Two things the run recorded that are worth knowing, neither a defect in the PR:
Thank you — this one would have taken the daemon down for anyone using |
Summary
Fix the owned-CUDA model.load path so persisted models retain their owned profile and package locators across restart. Previously, a dynamically loaded CUDA model could persist without the required owned family and prevent module startup on reload.
This branch is stacked on PR #18 (head 6ee5494); the catalog-specific commit is 65bdbdd. Please land after #18 or review that commit independently.
Verification
Consumer migration and OMP lifecycle verification are separate and are not claimed by this PR.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Fixes owned-CUDA
model.loadand restart handling so dynamically loaded models no longer lose the metadata needed to start after reload. CUDA certification evidence now probes the model's worker in a blocking task, keeping the async path responsive.Persistence
Hardware and Packaging
Written for commit 95f0a47. Summary will update on new commits.