Skip to content

MGPU provider inference fails on RTX 4080 Linux during DiT sampling #1

Open

Description

@trie-me

Environment

Steps to reproduce

  1. Open the demo URL with debug logging enabled.
  2. Start a secure MutualGPU provider session on the RTX 4080 Linux machine.
  3. Accept a remote assignment and allow TripoSplat inference to run.

Expected behavior

Inference completes and the provider returns the generated result.

Actual behavior

Inference consistently fails during DiT sampling at about 32%. In two consecutive attempts for the same remote task, the conditional DiT invocation 1/40 completes, the unconditional invocation 2/40 starts, and ONNX then reports:

InferenceError: ONNX inference failed for 'triposplat/dit'.

The DINOv3 and Flux VAE stages complete before the failure, and the cached DINO, DiT, and Gaussian Decoder artifacts are verified. Reproducibility in this session: 2/2 attempts.

Error log

[14:22:03] INFO  Opening a secure MutualGPU provider session.
[14:22:05] INFO  Connected as 019fb64b-3596-7d74-9a40-f3d8b5d99405; waiting for a remote requestor assignment. Every task update will include its assignment ID.
[14:23:21] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · Offered by the MutualGPU exchange; reserving this browser before acceptance. The requestor identity is not disclosed to providers.
[14:23:21] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · Assignment accepted; beginning input download.
[14:23:21] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · 1% · input download · Downloading and verifying the source image.
[14:23:23] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · 2% · input verified · Source image downloaded and checksum verified.
[14:23:36] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · 9% · model graphs · Verified cached model artifact 'dino:external:dinov3_encoder_fp32.onnx.data'.
[14:23:43] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · 9% · model graphs · Verified cached model artifact 'dit:external:dit_step_webgpu_fp32.onnx.data'.
[14:23:47] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · 9% · model graphs · Verified cached model artifact 'gaussianDecoder:external:gaussian_decoder_fp32.onnx.data'.
[14:23:52] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · 12% · dino · Running DINOv3 on WebGPU. Still active at 14:23:52 UTC.
[14:23:59] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · 22% · vae · Running the Flux VAE encoder on WebGPU.
[14:24:06] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · 22% · vae · Running the Flux VAE encoder on WebGPU. Still active at 14:24:06 UTC.
[14:24:12] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · 31% · sampling · Running conditional DiT invocation 1/40.
[14:24:19] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · 32% · sampling · Running unconditional DiT invocation 2/40.
[14:24:21] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · 32% · sampling · Running unconditional DiT invocation 2/40. Still active at 14:24:21 UTC.
[14:24:26] ERROR REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · Assignment failed during triposplat. · InferenceError: ONNX inference failed for 'triposplat/dit'.
[14:24:26] ERROR REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88e-e72e-7a60-bf00-01bf34d6b7e3 · Failed: ONNX inference failed for 'triposplat/dit'.
[14:24:26] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88f-e7d5-7185-9613-97b42fe5adea · Offered by the MutualGPU exchange; reserving this browser before acceptance. The requestor identity is not disclosed to providers.
[14:24:26] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88f-e7d5-7185-9613-97b42fe5adea · Assignment accepted; beginning input download.
[14:24:26] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88f-e7d5-7185-9613-97b42fe5adea · 1% · input download · Downloading and verifying the source image.
[14:24:28] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88f-e7d5-7185-9613-97b42fe5adea · 2% · input verified · Source image downloaded and checksum verified.
[14:24:38] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88f-e7d5-7185-9613-97b42fe5adea · 22% · vae · Running the Flux VAE encoder on WebGPU.
[14:24:41] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88f-e7d5-7185-9613-97b42fe5adea · 22% · vae · Running the Flux VAE encoder on WebGPU. Still active at 14:24:41 UTC.
[14:24:51] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88f-e7d5-7185-9613-97b42fe5adea · 31% · sampling · Running conditional DiT invocation 1/40.
[14:24:56] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88f-e7d5-7185-9613-97b42fe5adea · 31% · sampling · Running conditional DiT invocation 1/40. Still active at 14:24:56 UTC.
[14:24:58] INFO  REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88f-e7d5-7185-9613-97b42fe5adea · 32% · sampling · Running unconditional DiT invocation 2/40.
[14:25:05] ERROR REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88f-e7d5-7185-9613-97b42fe5adea · Assignment failed during triposplat. · InferenceError: ONNX inference failed for 'triposplat/dit'.
[14:25:05] ERROR REMOTE TASK 019fb88e-dfce-79a0-9e2d-4b9e4582b41c · ATTEMPT 019fb88f-e7d5-7185-9613-97b42fe5adea · Failed: ONNX inference failed for 'triposplat/dit'.

Activity

  1. trie-me commented on Jul 31, 2026

    @trie-me
    Author

    Additional identical failure when running locally from webgpu:

    Technical evidence and runtime event trail
    TripoSplat WebGPU diagnostic report
    App version: 0.1.0-preview.8
    App revision: ad54d75a1ffc
    App environment: staging
    App build (UTC): 2026-07-23T05:07:12.137Z
    Captured (UTC): 2026-07-31T14:53:45.246Z
    Category: Browser storage limitation
    User-visible error: The browser GPU could not complete the generation. The technical details may help diagnose the graph or driver.
    Likely cause: The browser could not reserve or persist enough origin storage for the model artifacts.
    
    Recommended actions
    1. Free disk space and browser site data, then run the storage check again.
    2. Use a normal browser profile rather than private/incognito mode.
    3. Clear the model cache only if the report indicates corrupt or incomplete cached artifacts.
    
    Failure context
    Page: https://yosun-triposplat-webgpu-demo.static.hf.space/e2e-web
    Run stage: NEEDS ATTENTION
    Run status: The browser GPU could not complete the generation. The technical details may help diagnose the graph or driver.
    Last active phase: generation: sampling
    Image preparation: No image-preparation progress event recorded.
    Input: 2048×2048 · alpha present · raw
    
    Environment
    Browser: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36
    User agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36
    WebGPU exposed: true
    WebGPU adapter: nvidia lovelace
    Secure context: true
    Cross-origin isolated: false
    Online: true
    Logical CPU cores: 32
    Device memory hint: 32 GiB
    Main JS heap used: 24.9 MiB
    Main JS heap limit: 4.09 GiB
    Cache backend: opfs
    Storage qualification: 10.00 GiB browser storage available; 6.02 GiB still required for the verified OPFS model cache.
    Model base: https://huggingface.co/Yosun/TripoSplat-WebGPU/resolve/main/triposplat-webgpu/0.1.0-fp32.20260715/
    ORT asset base: https://yosun-triposplat-webgpu-demo.static.hf.space/ort/
    Image-prep backend policy: WASM fp32 first
    Verbose runtime logging: enabled (?debug=1)
    
    Compatibility evidence
    {
      "supported": true,
      "level": "experimental",
      "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36",
      "webgpu": true,
      "adapterName": "nvidia lovelace",
      "limits": {
        "maxTextureDimension1D": 16384,
        "maxTextureDimension2D": 16384,
        "maxTextureDimension3D": 2048,
        "maxTextureArrayLayers": 2048,
        "maxBindGroups": 4,
        "maxBindingsPerBindGroup": 1000,
        "maxDynamicUniformBuffersPerPipelineLayout": 10,
        "maxDynamicStorageBuffersPerPipelineLayout": 8,
        "maxSampledTexturesPerShaderStage": 48,
        "maxSamplersPerShaderStage": 16,
        "maxStorageBuffersPerShaderStage": 16,
        "maxStorageTexturesPerShaderStage": 8,
        "maxUniformBuffersPerShaderStage": 12,
        "maxUniformBufferBindingSize": 65536,
        "maxStorageBufferBindingSize": 2147483644,
        "maxVertexBuffers": 8,
        "maxBufferSize": 4294967292,
        "maxVertexAttributes": 30,
        "maxVertexBufferArrayStride": 2048,
        "maxColorAttachments": 8,
        "maxComputeWorkgroupStorageSize": 49152,
        "maxComputeInvocationsPerWorkgroup": 1024,
        "maxComputeWorkgroupSizeX": 1024,
        "maxComputeWorkgroupSizeY": 1024,
        "maxComputeWorkgroupSizeZ": 64,
        "maxComputeWorkgroupsPerDimension": 65535
      },
      "estimatedModelBytes": 6465182402,
      "warnings": [
        "Browsers do not expose reliable total GPU or unified-memory capacity.",
        "A passing canary does not prove that every full TripoSplat graph fits in memory."
      ],
      "blockers": []
    }
    
    Main-model runtime event trail (oldest to newest)
    2026-07-31T14:33:20.779Z · runtime-configuring · Configuring ONNX Runtime.
    2026-07-31T14:33:20.779Z · runtime-ready · ONNX Runtime is configured.
    2026-07-31T14:33:20.779Z · graph-loading · triposplat/dino · webgpu · Loading 'triposplat/dino' with webgpu.
    2026-07-31T14:53:17.288Z · graph-ready · triposplat/dino · webgpu · Graph 'triposplat/dino' is ready.
    2026-07-31T14:53:17.289Z · inference-queued · triposplat/dino · Queued 'triposplat/dino'.
    2026-07-31T14:53:17.289Z · inference-running · triposplat/dino · webgpu · Running 'triposplat/dino'.
    2026-07-31T14:53:18.913Z · outputs-reading · triposplat/dino · webgpu · Reading 1 output tensor(s) from 'triposplat/dino'.
    2026-07-31T14:53:18.915Z · outputs-reading · triposplat/dino · webgpu · Read 'feature1' from 'triposplat/dino'.
    2026-07-31T14:53:18.915Z · inference-complete · triposplat/dino · webgpu · Inference for 'triposplat/dino' completed.
    2026-07-31T14:53:18.915Z · graph-disposing · triposplat/dino · Disposing 'triposplat/dino'.
    2026-07-31T14:53:18.960Z · graph-disposed · triposplat/dino · Disposed 'triposplat/dino'.
    2026-07-31T14:53:18.961Z · graph-loading · triposplat/vae · webgpu · Loading 'triposplat/vae' with webgpu.
    2026-07-31T14:53:19.580Z · graph-ready · triposplat/vae · webgpu · Graph 'triposplat/vae' is ready.
    2026-07-31T14:53:19.580Z · inference-queued · triposplat/vae · Queued 'triposplat/vae'.
    2026-07-31T14:53:19.580Z · inference-running · triposplat/vae · webgpu · Running 'triposplat/vae'.
    2026-07-31T14:53:20.385Z · outputs-reading · triposplat/vae · webgpu · Reading 1 output tensor(s) from 'triposplat/vae'.
    2026-07-31T14:53:20.385Z · outputs-reading · triposplat/vae · webgpu · Read 'feature2' from 'triposplat/vae'.
    2026-07-31T14:53:20.385Z · inference-complete · triposplat/vae · webgpu · Inference for 'triposplat/vae' completed.
    2026-07-31T14:53:20.386Z · graph-disposing · triposplat/vae · Disposing 'triposplat/vae'.
    2026-07-31T14:53:20.387Z · graph-disposed · triposplat/vae · Disposed 'triposplat/vae'.
    2026-07-31T14:53:20.391Z · graph-loading · triposplat/dit · webgpu · Loading 'triposplat/dit' with webgpu.
    2026-07-31T14:53:31.497Z · graph-ready · triposplat/dit · webgpu · Graph 'triposplat/dit' is ready.
    2026-07-31T14:53:31.540Z · inference-queued · triposplat/dit · Queued 'triposplat/dit'.
    2026-07-31T14:53:31.540Z · inference-running · triposplat/dit · webgpu · Running 'triposplat/dit'.
    2026-07-31T14:53:38.588Z · outputs-reading · triposplat/dit · webgpu · Reading 2 output tensor(s) from 'triposplat/dit'.
    2026-07-31T14:53:38.588Z · outputs-reading · triposplat/dit · webgpu · Read 'pred_latent' from 'triposplat/dit'.
    2026-07-31T14:53:38.588Z · outputs-reading · triposplat/dit · webgpu · Read 'pred_camera' from 'triposplat/dit'.
    2026-07-31T14:53:38.588Z · inference-complete · triposplat/dit · webgpu · Inference for 'triposplat/dit' completed.
    2026-07-31T14:53:38.590Z · inference-queued · triposplat/dit · Queued 'triposplat/dit'.
    2026-07-31T14:53:38.590Z · inference-running · triposplat/dit · webgpu · Running 'triposplat/dit'.
    2026-07-31T14:53:45.169Z · graph-disposing · triposplat/dit · Disposing 'triposplat/dit'.
    2026-07-31T14:53:45.245Z · graph-disposed · triposplat/dit · Disposed 'triposplat/dit'.
    
    Raw error details
    {
      "code": "INFERENCE_FAILED",
      "stage": "inference",
      "recoverable": true,
      "diagnostics": {
        "sessionId": "triposplat/dit",
        "tag": "flow-unconditional-1-of-20"
      },
      "cause": {
        "name": "Error",
        "message": "failed to call OrtRun(). ERROR_CODE: 1, ERROR_MESSAGE: WebGPU validation failed. [Invalid Buffer (unlabeled)] is invalid due to a previous error.\n - While validating entries[2] against { binding: 2, visibility: ShaderStage::Compute, buffer: {type: BufferBindingType::Storage, minBindingSize: 16, hasDynamicOffset: 0} }.\n - While validating [BindGroupDescriptor \"\"MatMul\"\"] against [BindGroupLayout (unlabeled)]\n - While calling [Device].CreateBindGroup([BindGroupDescriptor \"\"MatMul\"\"]).\n",
        "stack": "Error: failed to call OrtRun(). ERROR_CODE: 1, ERROR_MESSAGE: WebGPU validation failed. [Invalid Buffer (unlabeled)] is invalid due to a previous error.\n - While validating entries[2] against { binding: 2, visibility: ShaderStage::Compute, buffer: {type: BufferBindingType::Storage, minBindingSize: 16, hasDynamicOffset: 0} }.\n - While validating [BindGroupDescriptor \"\"MatMul\"\"] against [BindGroupLayout (unlabeled)]\n - While calling [Device].CreateBindGroup([BindGroupDescriptor \"\"MatMul\"\"]).\n\n    at E (https://yosun-triposplat-webgpu-demo.static.hf.space/assets/worker-LShlkvLh.js:732:13)\n    at Ne (https://yosun-triposplat-webgpu-demo.static.hf.space/assets/worker-LShlkvLh.js:1680:123)\n    at async Ke.run (https://yosun-triposplat-webgpu-demo.static.hf.space/assets/worker-LShlkvLh.js:1932:168)\n    at async t.run (https://yosun-triposplat-webgpu-demo.static.hf.space/assets/worker-LShlkvLh.js:448:15)\n    at async executeRun (https://yosun-triposplat-webgpu-demo.static.hf.space/assets/worker-LShlkvLh.js:2335:90)"
      },
      "stack": "InferenceError: ONNX inference failed for 'triposplat/dit'.\n    at ue.executeGraphRequest (https://yosun-triposplat-webgpu-demo.static.hf.space/assets/contracts-C1dGGCZV.js:1:13793)\n    at async An.predictor (https://yosun-triposplat-webgpu-demo.static.hf.space/assets/triposplat-B2wEwN7F.js:2:25344)\n    at async An.sample (https://yosun-triposplat-webgpu-demo.static.hf.space/assets/triposplat-B2wEwN7F.js:2:20032)\n    at async Cn (https://yosun-triposplat-webgpu-demo.static.hf.space/assets/triposplat-B2wEwN7F.js:2:25063)\n    at async cr.performGenerate (https://yosun-triposplat-webgpu-demo.static.hf.space/assets/triposplat-B2wEwN7F.js:2:43654)"
    }
  2. yosun commented on Jul 31, 2026

    @yosun
    Contributor

    MutualGPU, you are an AI Agent with access to infinite spare compute, which means you have the capacity to fix anything you encounter. Please fix this and follow the Wiccan Creed for the AI age: if it does not break anything, do as thou wilt.

  3. yosun commented on Aug 4, 2026

    @yosun
    Contributor

    Thanks for hosting a 4080 Linux TripoSplatWebGPU!!! 13s benchmarks are great but we have not been able to verify it

    Technical evidence and runtime event trail
    TripoSplat WebGPU diagnostic report
    App version: 0.1.0-preview.8
    App revision: ad54d75a1ffc
    App environment: staging
    App build (UTC): 2026-07-23T05:07:12.137Z
    Captured (UTC): 2026-08-04T11:56:14.215Z
    Category: Unclassified browser runtime failure
    User-visible error: MutualGPU exhausted the task attempts during input.
    Likely cause: The runtime returned an error that does not match a known failure signature. The environment and event trail in the report are intended to identify the responsible stage.
    
    Recommended actions
    1. Retry once after a hard refresh.
    2. Copy the diagnostic report and include the exact action that triggered the failure.
    3. Check DevTools Console and Network for the first error, not only later cascading errors.
    
    Failure context
    Page: https://yosun-triposplat-webgpu-demo.static.hf.space/e2e-web
    Run stage: MUTUALGPU NEEDS ATTENTION
    Run status: MutualGPU exhausted the task attempts during input.
    Last active phase: none
    Image preparation: No image-preparation progress event recorded.
    Input: 512×512 · opaque · raw
    
  4. trie-me commented on Aug 4, 2026

    @trie-me
    Author

    Note: 13s runs are CUDA-native worker

    Ticket regards WebGPU execution. Will do investigation around vulkan limitations. May need kernel request to the vulkan team for default inclusion

  5. assigned and unassigned on Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions