Skip to content

NVIDIA Cosmos (Predict2.5) on DGX Spark (ARM / aarch64) #120

Description

@amirtd

I'm not able to run NVIDIA Cosmos (Predict2.5 / text2world) on DGX Spark (ARM / aarch64)?
I’m hitting dependency blockers around Transformer Engine / flash-attn and some configs that seem x86_64-centric. Curious if anyone has a confirmed working setup, workarounds, or if Cosmos is currently x86-only in practice.

Environment

  • Hardware: NVIDIA DGX Spark
  • Architecture: aarch64 (ARM)
  • OS: Ubuntu (Spark image)
  • Kernel: 6.14.0-1015-nvidia
  • GPU: NVIDIA GB10
  • Driver: 580.126.09
  • CUDA: 13.0
  • Python: 3.10 (Conda)
  • Cosmos Version: cosmos-predict2.5

Key Issues Encountered

1. Transformer Engine Is a Hard Dependency (and Not Available on ARM)
Multiple Cosmos modules unconditionally import transformer_engine, including:

  • minimal_v4_dit.py
  • wan2pt1.py
  • fused_adam_dtensor.py
  • optimizer and attention layers
    Example failure:

ModuleNotFoundError: No module named 'transformer_engine'

Even after:

  • Rewriting attention layers
  • Introducing fallback implementations
  • Removing explicit class inheritance from DotProductAttention

…the import graph still eventually requires transformer_engine.

Root problem:
transformer-engine wheels are not available for aarch64, and building from source is not supported on DGX Spark.

2. flash-attn / flash-attn-2 Is x86_64-Centric
Cosmos enforces availability checks such as:

assert is_flash_attn_2_available()

On DGX Spark:

  • flash-attn is not available
  • flash-attn-2 cannot be installed
  • CUDA + ARM + GB10 has no supported build
    This causes early termination even when the feature is not strictly required for inference.

3. Config System Assumes Missing Experiment Modules
Text2world config attempts to auto-import:

cosmos_predict2._src.predict2.configs.text2world.experiment
But the directory does not exist in the repo, leading to:
ModuleNotFoundError:
No module named 'cosmos_predict2._src.predict2.configs.text2world.experiment'

This suggests:

  • Incomplete packaging
  • Internal-only config assumptions
  • Or missing repo components

4. Inference Path Is Hardwired to Video2World
Even with:

  • --inference-type=text2world
  • Environment overrides
  • Patched model_loader.py

The system still instantiates:

Video2WorldInference(...)

This drags in:

  • Vision-language models
  • Qwen-VL
  • Transformer Engine
  • Flash attention paths

There is no clean text-only inference path that avoids these dependencies.

5. Cascading Failures from Partial Patching

Attempts to patch around missing dependencies led to secondary failures:

  • NoneType takes no arguments (class inheritance on disabled components)
  • NameError: _SACConfig not defined
  • SyntaxError: return outside function (after fallback edits)

This indicates the codebase is not designed for partial feature removal.

What Would Be Needed to Support DGX Spark

  1. Optional Transformer Engine
  • Clean fallbacks
  • No hard imports
  • No class inheritance from TE types
  1. flash-attn Optionality
  • Runtime feature flags
  • Safe PyTorch attention fallback
  1. True Text-Only Inference Path
  • No Video2World initialization
  • No vision or VLM imports
  1. ARM-Compatible Build Artifacts
  • TE or equivalent kernels for aarch64
  • Or official statement of non-support

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions