Repository navigation
ONNX models with import or runtime issues #18
Copy link
Copy link
Open
Description
Tracking: Models That Fail to Import or Run in Burn
This issue tracks ONNX models that cannot currently be onnx converted, rs built, have runtime problems or output accuracies using burn-import. If you encounter a model that fails to import or execute, please comment below or submit a new issue and reference this tracker.
Checklist of Models with Known Issues (working if checked)
Natural Language Processing (NLP)
- ALBERT/BERT models
- all-MiniLM-L6-v2
- ModernBERT-base
- IBM Granite 4.0 Tiny Preview (models#71) - no public ONNX export exists yet, only GGUF
- Qwen1.5
- Qwen2.5
- Qwen3
- SmolLM
- SmolLM2
Multimodal (Vision-Language)
- CLIP ViT-B-32
- clip-ViT-B-32 Vision
Object Detection
- YOLOv5 model
- YOLOv8n
- YOLOv10 model
- Yolo11x mode
- YOLOv12m
- YOLO12x
- Yolo26x
- Retinaface model (#2037)
- Face Detector (MediaPipe)
- RF-DETR
Depth Estimation
- Depth-Anything-v2
- dpt-dinov2-small-kitti - converts and compiles on
mainfrom theonnx-communityexport as published (#2592 fixed); needs a run/accuracy check - Apple Depth Pro
Generative Models
Audio/Speech
- piper-tts / VITS - converts on
main, generated code does not compile (#534, #533) - NVIDIA FastConformer (streaming Conformer-Hybrid Large en-US) - awaiting a re-test on
main - Silero VAD
- kokoro onnx model
Computer Vision - Classification
- AlexNet
- DenseNet-121
- Inception v1
- Inception v2
- MobileNet v2
- ResNet-50
- Resnet (onnx model)
- ShuffleNet
- SqueezeNet
- VGG-19
- ZFNet-512
Computer Vision - Face Recognition
- ArcFace (LResNet100E-IR)
Segmentation
- Segment Anything 2 (SAM-2)
hiera_tinyencoder - converts and compiles onmain; needs a run/accuracy check
Computer Vision - Other
- waifu2x
cunet- converts and compiles onmain; needs a run/accuracy check - XFeat - converts and compiles on
main(#3110 fixed, ScatterND and TopK both supported now); needs a run/accuracy check - Piiranha - converts and compiles on
main(#2968 fixed); needs a run/accuracy check - DINOv3 (#469 for the
onnx-communityexport; the-MHAexport needscom.microsoft::MultiHeadAttention; the quantized variant also needs #160) - PP-OCRv6 -
detandrecboth convert and compile onmain(#468 fixed); needs a run/accuracy check
Optical Flow & Pose Estimation
- GMFlow models - last known blocker (#20) was fixed by #53; not re-tested since, model is Google Drive only
- RTMW3D-x (#2930, models#74)
How to Use
- Add a comment if you find a new failing model, or if your model is fixed by a PR.
- Check off models as they become supported or fixed.
- Reference this issue when creating new ONNX import failure reports.
For operator-level or feature gaps, please also check:
- SUPPORTED-ONNX-OPS. md for coverage
- Help Wanted: Implementing ONNX Ops for operator implementation tracking
- [burn-import issues](https://github.com/tracel-ai/burn/issues? q=is%3Aissue%20state%3Aopen%20label%3Aonnx)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
[-]ONNX models with import or runtime issues in burn-import[/-][+]ONNX models with import or runtime issues[/+]antimora commentedon Jul 24, 2025
Quick update I am able to convert
yolo11x_opset16.onnxusing this WIP PR: tracel-ai/burn#3381antimora commentedon Aug 16, 2025
CLIP ViT-B-32 is buildable with tracel-ai/burn#3560 (still under review)
antimora commentedon Aug 16, 2025
I'll be working on a test harness to test various large models quickly.
antimora commentedon Aug 17, 2025
RTMW3D-x is buildable with tracel-ai/burn#3564 (still under review)
n1ght-hunter commentedon Aug 18, 2025
i am able to import https://huggingface.co/Xenova/albert-large-v2/resolve/main/onnx/model.onnx but rust code has type errors
coolstudio1678 commentedon Aug 18, 2025
in rust,shou error:
=== Tensor Operation Error ===
Operation: 'Reshape'
Reason:
1. The given shape doesn't have the same number of elements as the current tensor. Current shape: [1035], target shape: [1, 1034].
program in python,
def init(self, input_dim=1035):
super(Net, self).init()
self.attention = ChannelAttention(input_dim)
self.fc1 = nn.Linear(input_dim, 512)
self.fc2 = nn.Linear(512, 256)
self.fc3 = nn.Linear(256, 128)
self.fc4 = nn.Linear(128, 2)
self.relu = nn.ReLU()
have use uv run --script https://raw.githubusercontent.com/tracel-ai/burn/refs/heads/main/crates/burn-import/onnx_opset_upgrade.py
change to opset version 16
antimora commentedon Aug 18, 2025
I have 3 outstanding ONNX related PRs (#3563, tracel-ai/burn#3564, tracel-ai/burn#3550) with fixes. Most likely it's caused by this: tracel-ai/burn#3564.
Hopefully @laggui will have some time to review ;-)
antimora commentedon Aug 18, 2025
Resnet is buildable:
n1ght-hunter commentedon Aug 19, 2025
can we add kokoro to this. as its a very popular tts model. currently has an issue with expand1 - rank which is an already known issue.
it also uses albert internally so will probably require albert model to be working for this to work
https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/kokoro-v1.0.onnx
there is also the bin file for voices
https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/voices-v1.0.bin
antimora commentedon Aug 21, 2025
Even though Yolo11X ONNX file can be converted into rust code, currently the generated rust code can't be built to due to not handing broadcasting (see why automatic full broadcasting is lacking in Burn tracel-ai/burn#1499). I have fixed this broadcasting issue here: tracel-ai/burn#3589
Afterwards, there is another runtime issue with slice that I need to investigate.
notdanilo commentedon Aug 21, 2025
Is failing to import due to a scalar input in ConstantOfShape
https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/blob/main/vae_decoder/model.onnx
attribute in netron
antimora commentedon Aug 25, 2025
I have added a harness to test models: https://github.com/tracel-ai/burn/tree/main/crates/burn-import/model-checks
YOLOx11 is passing for tch and ndarray backends but currently it's failing on metal due to: #51 bug in metal.
I am working on clip-vit-b-32-text next. Locally it's passing (with 5-6 fixes in burn-import related to broadcasting and other issues). I have identified one bug in ndarray backend related to int lower open. I will submit a PR shortly and a bug report for ndarray (if I can't fix it).
torsteingrindvik commentedon Aug 25, 2025
Recently had issues with Apple Depth Pro , could it be added? It has a script for weights.
Another one of interest to me is LVSM: A Large View Synthesis Model with Minimal 3D Inductive Bias also with a list of checkpoints, also with issues importing in Burn (on a recent main).
63 remaining items
ZOXEXIVO commentedon Mar 31, 2026
Yolo26x worked a few months ago (before the burn-onnx crate was extracted)
Currently it fails in runtime for all backends with
AdrianEddy commentedon Mar 31, 2026
@ZOXEXIVO are you using batch size other than 1?
ZOXEXIVO commentedon Mar 31, 2026
I export it as i usually do
AdrianEddy commentedon Mar 31, 2026
but at runtime, does your input tensor include batch size more than 1?
ZOXEXIVO commentedon Mar 31, 2026
Yes, code not changed
antimora commentedon Mar 31, 2026
@ZOXEXIVO filed an issue: #281
antimora commentedon Apr 1, 2026
@ZOXEXIVO
Can you please test if this PR fixes your issue: #285 ?
it's merged on main
ZOXEXIVO commentedon Apr 1, 2026
I tested it — the issue is fixed.
Thanks, @antimora !
antimora commentedon Apr 7, 2026
Added 11 more model-checks, including ArcFace
antimora commentedon Apr 25, 2026
kokoro model works with #372 fix
however, there is accuracy 1% discrepancy with ORT see #371
kingwingfly commentedon May 14, 2026
DINOv3cannot be imported.The model downloaded from hugging face onnx-community failed to be built.
quantized build log
... DEBUG onnx_ir::pipeline: PHASE 3: Type Inference ERROR burn_onnx::logger: PANIC => panicked at /home/louis/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/burn-onnx-0.21.0/src/model_gen.rs:349:33: Failed to parse ONNX file 'models/upgraded_model_quantized.onnx': Type inference failed: Unsupported ONNX operation(s): DynamicQuantizeLinear (node 'dynamr18'), SplitToSequence (node 'splittosequence9'), SplitToSequence (node 'splittosequence10'), SequenceAt (node 'sequenceat17'), SequenceAt (node 'sequenceat18'), SequenceAt (node 'sequenceat19'), SequenceAt (node 'sequenceat20'), DynamicQuantizeLinear (node 'dynamicquantizelinear19'), DynamicQuantizeLinear (node 'dynamicquantizelinear20'), DynamicQuantizeLinear (node 'dynamicquantizelinear21'), DynamicQuantizeLinear (node 'dynamicquantizelinear22'), SplitToSequence (node 'splittosequence11'), SplitToSequence (node 'splittosequence12'), SequenceAt (node 'sequenceat21'), SequenceAt (node 'sequenceat22'), SequenceAt (node 'sequenceat23'), SequenceAt (node 'sequenceat24'), DynamicQuantizeLinear (node 'dynamicquantizelinear23'), DynamicQuantizeLinear (node 'dynamicquantizelinear24'), DynamicQuantizeLinear (node 'dynamicquantizelinear25'), DynamicQuantizeLinear (node 'dynamicquantizelinear26'), SplitToSequence (node 'splittosequence13'), SplitToSequence (node 'splittosequence14'), SequenceAt (node 'sequenceat25'), SequenceAt (node 'sequenceat26'), SequenceAt (node 'sequenceat27'), SequenceAt (node 'sequenceat28'), DynamicQuantizeLinear (node 'dynamicquantizelinear27'), DynamicQuantizeLinear (node 'dynamicquantizelinear28'), DynamicQuantizeLinear (node 'dynamicquantizelinear29'), DynamicQuantizeLinear (node 'dynamicquantizelinear30'), SplitToSequence (node 'splittosequence15'), SplitToSequence (node 'splittosequence16'), SequenceAt (node 'sequenceat29'), SequenceAt (node 'sequenceat30'), SequenceAt (node 'sequenceat31'), SequenceAt (node 'sequenceat32'), DynamicQuantizeLinear (node 'dynamicquantizelinear31'), DynamicQuantizeLinear (node 'dynamicquantizelinear32'), DynamicQuantizeLinear (node 'dynamicquantizelinear33'), DynamicQuantizeLinear (node 'dynamicquantizelinear34'), SplitToSequence (node 'splittosequence17'), SplitToSequence (node 'splittosequence18'), SequenceAt (node 'sequenceat33'), SequenceAt (node 'sequenceat34'), SequenceAt (node 'sequenceat35'), SequenceAt (node 'sequenceat36'), DynamicQuantizeLinear (node 'dynamicquantizelinear35'), DynamicQuantizeLinear (node 'dynamicquantizelinear36'), DynamicQuantizeLinear (node 'dynamicquantizelinear37'), DynamicQuantizeLinear (node 'dynamicquantizelinear38'), SplitToSequence (node 'splittosequence19'), SplitToSequence (node 'splittosequence20'), SequenceAt (node 'sequenceat37'), SequenceAt (node 'sequenceat38'), SequenceAt (node 'sequenceat39'), SequenceAt (node 'sequenceat40'), DynamicQuantizeLinear (node 'dynamicquantizelinear39'), DynamicQuantizeLinear (node 'dynamicquantizelinear40'), DynamicQuantizeLinear (node 'dynamicquantizelinear41'), DynamicQuantizeLinear (node 'dynamicquantizelinear42'), SplitToSequence (node 'splittosequence21'), SplitToSequence (node 'splittosequence22'), SequenceAt (node 'sequenceat41'), SequenceAt (node 'sequenceat42'), SequenceAt (node 'sequenceat43'), SequenceAt (node 'sequenceat44'), DynamicQuantizeLinear (node 'dynamicquantizelinear43'), DynamicQuantizeLinear (node 'dynamicquantizelinear44'), DynamicQuantizeLinear (node 'dynamicquantizelinear45'), DynamicQuantizeLinear (node 'dynamicquantizelinear46'), SplitToSequence (node 'splittosequence23'), SplitToSequence (node 'splittosequence24'), SequenceAt (node 'sequenceat45'), SequenceAt (node 'sequenceat46'), SequenceAt (node 'sequenceat47'), SequenceAt (node 'sequenceat48'), DynamicQuantizeLinear (node 'dynamicquantizelinear47'), DynamicQuantizeLinear (node 'dynamicquantizelinear48'), DynamicQuantizeLinear (node 'dynamicquantizelinear49')not quantized build log
... DEBUG onnx_ir::pipeline: PHASE 3: Type Inference ERROR burn_onnx::logger: PANIC => panicked at /home/louis/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/burn-onnx-0.21.0/src/model_gen.rs:349:33: Failed to parse ONNX file 'models/model.onnx': Type inference failed: Unsupported ONNX operation(s): SplitToSequence (node 'splittosequence1'), SplitToSequence (node 'splittosequence2'), SequenceAt (node 'sequenceat1'), SequenceAt (node 'sequenceat2'), SequenceAt (node 'sequenceat3'), SequenceAt (node 'sequenceat4'), SplitToSequence (node 'splittosequence3'), SplitToSequence (node 'splittosequence4'), SequenceAt (node 'sequenceat5'), SequenceAt (node 'sequenceat6'), SequenceAt (node 'sequenceat7'), SequenceAt (node 'sequenceat8'), SplitToSequence (node 'splittosequence5'), SplitToSequence (node 'splittosequence6'), SequenceAt (node 'sequenceat9'), SequenceAt (node 'sequenceat10'), SequenceAt (node 'sequenceat11'), SequenceAt (node 'sequenceat12'), SplitToSequence (node 'splittosequence7'), SplitToSequence (node 'splittosequence8'), SequenceAt (node 'sequenceat13'), SequenceAt (node 'sequenceat14'), SequenceAt (node 'sequenceat15'), SequenceAt (node 'sequenceat16'), SplitToSequence (node 'splittosequence9'), SplitToSequence (node 'splittosequence10'), SequenceAt (node 'sequenceat17'), SequenceAt (node 'sequenceat18'), SequenceAt (node 'sequenceat19'), SequenceAt (node 'sequenceat20'), SplitToSequence (node 'splittosequence11'), SplitToSequence (node 'splittosequence12'), SequenceAt (node 'sequenceat21'), SequenceAt (node 'sequenceat22'), SequenceAt (node 'sequenceat23'), SequenceAt (node 'sequenceat24'), SplitToSequence (node 'splittosequence13'), SplitToSequence (node 'splittosequence14'), SequenceAt (node 'sequenceat25'), SequenceAt (node 'sequenceat26'), SequenceAt (node 'sequenceat27'), SequenceAt (node 'sequenceat28'), SplitToSequence (node 'splittosequence15'), SplitToSequence (node 'splittosequence16'), SequenceAt (node 'sequenceat29'), SequenceAt (node 'sequenceat30'), SequenceAt (node 'sequenceat31'), SequenceAt (node 'sequenceat32'), SplitToSequence (node 'splittosequence17'), SplitToSequence (node 'splittosequence18'), SequenceAt (node 'sequenceat33'), SequenceAt (node 'sequenceat34'), SequenceAt (node 'sequenceat35'), SequenceAt (node 'sequenceat36'), SplitToSequence (node 'splittosequence19'), SplitToSequence (node 'splittosequence20'), SequenceAt (node 'sequenceat37'), SequenceAt (node 'sequenceat38'), SequenceAt (node 'sequenceat39'), SequenceAt (node 'sequenceat40'), SplitToSequence (node 'splittosequence21'), SplitToSequence (node 'splittosequence22'), SequenceAt (node 'sequenceat41'), SequenceAt (node 'sequenceat42'), SequenceAt (node 'sequenceat43'), SequenceAt (node 'sequenceat44'), SplitToSequence (node 'splittosequence23'), SplitToSequence (node 'splittosequence24'), SequenceAt (node 'sequenceat45'), SequenceAt (node 'sequenceat46'), SequenceAt (node 'sequenceat47'), SequenceAt (node 'sequenceat48')It seems that lack of some operators...
I also tried to download
.pthfrom facebook DINOv3 repo, and manually convert them into.onnxwith this python script:python script to convert pth to onnx
pyproject.tomlAnd loading in
build.rsgot:manually converted build log
dericktseng commentedon Jun 20, 2026
PP-OCRv6does not build.Model downloaded from here doesn't work.
Error Message:
MolotovCherry commentedon Jul 31, 2026
Tried this with waifu2x onnx models which can be downloaded from here:
https://github.com/nagadomi/nunif/releases/tag/0.0.0
And ran into
Used an initial test of this to do it
antimora commentedon Aug 22, 2026
Triaged the reports in this thread against
main(438d2cd). Summary of where each one stands.Filed as new issues
Invalid shape source ScalarNative(I64)inExpandcodegenSplitToSequence/SequenceAtunsupportedauto_pad SAME_UPPER/SAME_LOWER requires static input shapeBoth #467 and #468 reproduce on
mainwith a single-node graph, and each issue carries a shortuvscript that builds the model, so neither needs the original download to work on.@kingwingfly the quantized DINOv3 export additionally needs
DynamicQuantizeLinear, tracked in #160,so the non-quantized export is the one to watch once #467 and #469 land.
Already fixed on
main, please re-testIn each case the specific error reported no longer reproduces. I checked the failing path rather
than the full model, so a re-test on
mainwould be useful to confirm nothing else is behind it.Runtime pads are not supported in burn-onnxwas fixed by Runtime pads are not supported in burn-onnx #405. Runtimepadsnow generate a forward-time read of the pads tensor.Slice: steps other than 1 are not supportedis gone. A negativestep now emits
x.slice(s![.., .., .., -1..i64::MIN; -1]).Cannot determine output rank for Expand nodewas addressedby the rank fallback added in Handle Shape type in Expand node #277.
Pad: padding will only be applied to the last two dimensionswasfixed when n-dimensional padding landed in Add MediaPipe Face Detector model check #153.
the follow-up blocker is supported now too.
All of these are on
mainand not in the released 0.21.0, which is what the reports were run against.Needs more detail
@AdrianEddy you mentioned Yolo11x exported with
dynamic=Truefails to import, without the errortext. If it is a
auto_pad SAME_UPPER/SAME_LOWER requires static input shapepanic then it is #468and will be covered by that fix. If it is something else it is worth its own issue. Could you post
the panic message?
Also updated the checklist above: Retinaface and Resnet were both confirmed working in this thread
but never checked off, and DINOv3 and PP-OCRv6 are added with links to the issues above.
antimora commentedon Sep 22, 2026
Retriaged against
main(a3b8dc0, burn revfaec3983). Last pass was a month ago against 438d2cd.Everything below was re-run, not read off issue state. Two levels of evidence: converts means
onnx2burnproduced Rust, compiles means that Rust was thencargo checked againstburn 0.22.0-pre.3. Neither means the output matches onnxruntime; that still needs a model-check.Unblocked since the last pass
det+recauto_pad SAME_*on dynamic H/Wcunet/art/noise0padsvae_encoderSlice: steps other than 1hiera_tinyencoder@dericktseng PP-OCRv6 was the concrete win: #478 landed the
PaddingConfig2d::Samelowering, and bothPP-OCRv6_medium_det_onnxandPP-OCRv6_medium_rec_onnxnow go straight through from theHuggingFace download with no re-export.
@MolotovCherry waifu2x imports now. I used the
20230504model zip,cunet/art/noise0.onnx.dpt-dinov2-small-kitti no longer needs the opset-16 upgrade step that
burn#2592 ended on. The
onnx-communityexportimports as published, which is the opset-compliance work paying off.
None of these seven are checked off above, because "converts + compiles" is not "runs and matches".
Checking a box needs a model-check under
crates/model-checks/.Still blocked
DINOv3 is unchanged, and all three exports fail differently:
onnx-community/dinov3-vits16-...-ONNXSplitToSequence+SequenceAt, 72 nodesonnx-community/...-ONNX-MHAcom.microsoft::MultiHeadAttentionx12, a contrib op, not standard ONNXtorch.onnx.exportfrom the.pthExpandshape input@kingwingfly on the third one: #470 turned that panic into a real error message, but it is not a
burn-onnx bug. ONNX requires
Expand'sshapeto be 1-D and onnxruntime rejects that graph too, sothe export itself is out of spec. #469 is the one to watch for the
onnx-communityexport. Thequantized variant additionally needs #160.
piper-tts / VITS (@madushan1000) has moved but is not fixed. I asked you to re-test last month;
I did it instead, on
en_US-lessac-medium. It converts now, so #266 and the runtime padding reallyare behind us, but the generated Rust does not compile: 17 errors in two families. Both reduce to
small graphs, both turned out to be bigger than piper, and both are now filed.
Add/Sub/Mul/Div do not rank-lift a Shape operand, emitting a rank mismatch #534.
Add/Sub/Mul/Divdo not rank-lift aShapeoperand. TheShapeis materialized as arank-1 tensor and passed straight to
.add(..), which in burn needs matching ranks:leading_broadcastalready exists and is applied in the tensor-vs-tensor arm of the samematch, just not in theShapearms. 8 sites across the four ops. A three-nodeShape -> Gather -> Addgraph reproduces it.Range is incorrect for float element types: static bounds truncated to i64 and codegen does not compile #533.
Rangeis broken for every float range, not just piper's. One node reproduces it:Range(1.5, 5.0, 1.0)should give[1.5, 2.5, 3.5, 4.5]and we generate[1, 2, 3, 4],because
RangeInput::Staticholds ani64and is filled throughscalar_i64(), whoseF32arm is a bare
as i64. The same graph also fails to build, becausearange().cast(dtype)changes the dtype but not the tensor Kind, so a float range stays
Tensor<1, Int>. There is nofloat case in
crates/onnx-tests/tests/range/and no float snapshot inrange.rs, which is howboth got this far. piper hits a third face of it: a runtime float
limitagainst statici64bounds gives
f32 - i64.This one is worth flagging beyond piper, since the truncation is silent and wrong rather than a
build failure.
GMFlow was never re-tested. Its BatchNorm blocker (#20) was fixed by #53 back in January. The
checklist entry still carries a link labelled
#1560that points at the closed #20, which is why itreads as blocked. I could not re-run it because the model is only on Google Drive. @AdrianEddy if
you still have it, it is worth one try.
IBM Granite 4.0 Tiny Preview has no public ONNX export at all, only GGUF, so there is nothing to
import. models#71 is really a request for someone
to produce an export first.
NVIDIA FastConformer (@LexiconCode) still needs your re-test. I have no way to fetch that model.
Two more codegen defects found while doing this
Both are pre-existing and neither blocks a model, but they show up in every model that hits the path.
TensorData::into_vec::<i64>(), which burn deprecated in 0.22.0 in favour oftry_into_vec::<E>(). 12 emit sites acrosscodegen.rs,pad.rs,tile.rs,squeeze.rsandunsqueeze.rs. It is already firing in our own suite:pad_runtime_axes,pad_runtime_pads,pad_runtime_pads_axesandunsqueeze_runtime_axesall warn on build.onnx-tests/build.rsalready uses
try_into_vecfor its own code, so only codegen is behind.TopKbinds both outputs even when the graph consumes one, so XFeat builds withunused variable: topk1_out1. Same family as avg_pool1d/avg_pool2d ONNX models declare unused inputs x1, x2 #68, folded in there rather than filed separately.