SONIC
SkillDev toolsUse when working on SONIC whole-body-control training, export, evaluation, serving, GPU routing, validation, or CUDA alignment.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the SONIC skill
What this skill tells your AI
The instructions your AI receives, as published by nebius/nebius-physical-ai in skills/tools/sonic/SKILL.md and read by ahel’s review.
When To Use
Use this skill for NVIDIA GEAR-SONIC whole-body-control workbench changes, including standalone training, export, evaluation, serving, image routing, and workflow composition with retargeting or MJLab.
Procedure
-
Confirm the current CLI surface before editing:
npa workbench sonic --help -
Use
trainfor policy training,exportfor export artifacts,evalfor evaluation, andservefor runtime serving. Usedeploy,status, andlistfor operational lifecycle. -
Route first-party SONIC images through
npa/src/npa/deploy/sonic_image_manifest.json; do not hardcode image tags in workflows or docs. -
Keep S3 paths run-scoped so retraining and re-evaluation do not overwrite previous artifacts.
Three-Tier Contract
- CLI:
deploy,train,export,eval,serve,status, andlist. - SDK/API: keep train/eval/export/serve request construction shared with service payloads and tests where possible.
- Workflow: SONIC specs live under
workflows/testing/(sonic-train.yaml,sonic-export.yaml,sonic-eval.yaml,sonic-export-eval.yaml,sonic-locomotion-finetuning.yaml). Submit them withnpa workbench workflow submit.sonic export/sonic evalaccepts3://checkpoints, ONNX policies and outputs, so no staging glue is needed. Raw SkyPilot coverage for the submit wrapper lives innpa/tests/fixtures/skypilot/; shipped SONIC workflow authoring stays on thenpa.workflowspecs.
Routing And Validation
- The legacy baked L40S and inherited MuJoCo variants are quarantined because their built bytes contain restricted NVIDIA payloads; resolvers must reject them.
sonic-mujoco-runtime-fetchis an independently rebuilt public release on a digest-pinned Python base and hash-locked CUDA Toolkit/MuJoCo closure. It is not derived from either quarantined image; release promotion is bound to its exact clean, GPU-accepted public development digest.- Use the active host-mounted runtime-fetch image selected by
npa/src/npa/deploy/sonic_image_manifest.jsonfor RTX PRO 6000 Blackwell Kubernetes targets with NVIDIA GPU Operator mounted drivers. A B300 validation image uses the same Dockerfile but must be supplied explicitly by immutable digest until its own accepted release updates the manifest. B300 is compute capability 10.3: that development image must use the digest-pinned CUDA 13 base, PyTorchcu130, CUDA 13 NVRTC, and the truthfulsm80-sm90-sm100-sm103-sm120target contract. The official cu130 PyTorch wheel exposes Blackwell 10.x family SASS assm_100; the literalsm_103requirement applies to CUDA 13 NVRTC JIT compilation on the B300 device. CUDA 12.8 NVRTC rejectssm_103; do not treat environment startup before that JIT boundary as B300 training evidence. - SONIC render validation requires RT-capable GPUs. Use RTX PRO 6000 Blackwell; do not silently fall back to the quarantined H100/L40S images.
sonic eval --backend containerconsumes ONNX plus its metadata sidecar and resolvesisaac-render, including explicit manifest variants. The separatemujoco-evalcontainer entrypoint consumes a checkpoint throughSONIC_EVAL_CHECKPOINT_PATH; it is not a substitute for the ONNX contract. Image resolution must use the workload at every caller that knows its stage.- Generic Blackwell labels containing B200/B300 remain datacenter targets.
Custom workflow
--imageoverrides may select an unpublished runtime without being attributed to a first-party variant; callers must validate those bytes. - The built-in serverless compute-only default is intentionally unavailable:
its L40S/H100/H200 images are quarantined, while the active image requires
Kubernetes GPU Operator driver mounts. A serverless run must supply an
independently validated compute-only
--image, or fail before provisioning.
Runtime Isaac bootstrap (the container ships no Isaac Sim)
Before an Isaac-backed SONIC run, load
skills/atomic/third-party-eula-preflight/SKILL.md.
The npa-sonic image contains no NVIDIA Isaac Sim or Isaac Lab code. It used to bake
Omniverse Kit, which made it non-redistributable; Isaac is now downloaded on first use of
/isaac-sim/python.sh from https://pypi.nvidia.com, into a cache volume, under the
operator's own EULA acceptance. Full rationale:
docs/workbench/container-packaging.md and skills/atomic/solution-licensing/SKILL.md.
What this changes in practice:
- Isaac-backed modes default acceptance; explicit opt-out refuses. NPA
defaults
ACCEPT_EULA=Y. Empty,N,NO,0,FALSE, or--no-accept-eulaexits 78 before download.Y,YES,1, andTRUEare accepted case-insensitively; other values are invalid. The launcher derivesOMNI_KIT_ACCEPT_EULA=YESinternally; do not expose duplicate user plumbing. KeepPRIVACY_CONSENTand telemetry off. - Reach Isaac through
/isaac-sim/python.sh(the value ofISAAC_LAB_PYTHON). That is the bootstrap shim, and it is what every SkyPilot template, the sim2real engine and the workbench CLI already use. A barepython3is the system interpreter and will not find Isaac. - Never invoke the shim from a Dockerfile
RUN. It would download and bake ~4.5 GB of Isaac into a layer. Build-time work uses the image's own venv python. - Budget the first start. Measured on RTX PRO 6000: 111 s cold, 32 ms warm, 10.04 GiB
of cache. Pre-warm a shared volume once per node/PVC with
npa/docker/workbench/common/warm-isaac-cache.yaml, then run workload pods withNPA_ISAAC_CACHE_READONLY=1. Otherwise every pod pays it, and 8 GPU pods on a node download ~36 GB. isaac-bootstrap statusreports what is cached without needing acceptance or network;isaac-bootstrap verifyadditionally launches Isaac Sim headless (needs a GPU).- No NGC credentials are needed to build or run this image.
SONIC's entrypoint picks its interpreter per mode: smoke, eval, train,
finetune and serve go through the Isaac bootstrap and therefore need acceptance, while
mujoco-eval and the S3/GPU-proof helpers run on the baked venv and need neither the
download nor the EULA variables. So npa-sonic-mujoco's eval stays fast and offline.
The image also no longer bakes NVIDIA driver userspace libraries: the container runtime
injects the host driver and the Vulkan ICD given NVIDIA_DRIVER_CAPABILITIES=all
(verified on RTX PRO 6000 — vulkaninfo --summary reports the discrete GPU at driver
580.95.05). VK_ICD_FILENAMES is deliberately not pinned.
The image must carry lxml, open3d, and vector_quantize_pytorch in its baked Python
environment. Real training imports the first two while constructing the motion library
and instantiates vector_quantize_pytorch.FSQ while building the actor-critic, although
the pinned upstream training extra declares none of them. Keep the Dockerfile's
build-time import assertions and the one-iteration real fine-tune smoke together; an
import-only SONIC check is not enough.
Gotchas
- Keep
SONIC_GPU_TYPEandSONIC_IMAGE_VARIANTaligned with the image manifest. Do not assume one image works across VM and Kubernetes targets. - Known issue: job ID reuse anomaly. Treat it as a deferred investigation unless the task directly targets scheduler identity handling.
- The CUDA 13 Kubernetes image's real fine-tune smoke currently reaches Isaac
environment construction on RTX PRO 6000 but can fail in the runtime-fetched
URDF extension while opening
/tmp/IsaacLab/.../pelvis.tmp.usd; a same-pod warm retry reproduced it on 2026-08-03. Do not count native-SASS, imports, or environment startup as SONIC capability validation: require the checkpoint. - CUDA 13 alignment is vendor-paced on NVIDIA x86_64 CUDA 13 and is not a Nebius-blocked item.
Verify
npa/.venv/bin/python -m pytest npa/tests/guardrails/test_skills_index.py -q
The smoke test invokes npa workbench sonic export --help and
npa workbench sonic serve --help so the skill cannot regress to the older
train/eval-only command list.
Signals
- GitHub stars
- 28
- Forks
- 15
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
sonic- Source
- github.com/nebius/nebius-physical-ai