pytorch / pytorch/executorch

Operator not available in Core ATen opset

Open
#12,404 2 comments 0 reactions 2 assignees View on GitHub

@manuelcandales is already working on this.

Since Jul 14, 2025.

module: kernels triaged
Dominant language
Python
Stars
5k
Forks
1.2k
Avg merge
2d 10h
Merged PRs (30d)
581

Description

Missing torch.ops.aten.uniform.default operator

I'm working on deploying a Neural Network built with ESPnet on a GPU utilizing a Vulkan backend. To achieve this, I am using Executorch.

I am loading my model with the following:
from espnet.asr.pytorch_backend.asr_init import load_trained_model
I am also wrapping my model in a class to provide the nn.Module that Executorch needs. After that, I can export the model successfully:
aten_program = export(wrapped_model, (dummy_input, ))

But the execution flow fails when I try to lower the model with
from executorch.exir import to_edge_transform_and_lower

This is the error message I see:
torch._export.verifier.SpecViolationError:
Operator torch._ops.aten.uniform.default is not in Core ATen opset (https://pytorch.org/docs/stable/torch.compiler_ir.html#core-aten-ir)."
There are a few things to try:

  1. You can proceed with to_edge(compile_config=EdgeCompileConfig(_core_aten_ops_exception_list=[torch.ops.aten.uniform.default])).
    Please make sure that the backend(s) you are planning to lower to is able to handle aten.uniform.default, or you have a corresponding kernel linked to your runtime.
  2. Sometimes inference and training gives slightly different op set. Try adding with torch.no_grad(): context manager if you are export for inference only.
  3. If the error persists after 2, this is likely caused by torch.export() + core ATen decomposition producing unexpected operators for your model.
    If you believe this operator should be included into core ATen opset, please create an issue in https://github.com/pytorch/pytorch/issues and add module: core aten tag.

You can find attached all the messages thrown during execution, including the traceback.

core-ATen-pytorch-ticket.txt

The problem is related with either a missing decomposition or missing operator on the Core ATen. Is it possible for you to implement it?

Alternatives

The program executes successfully using option 1 provided above, but I am not sure if the backend can handle the missing operator:
edge_program = to_edge_transform_and_lower( aten_program, partitioner=[VulkanPartitioner()]), compile_config=EdgeCompileConfig(_core_aten_ops_exception_list=[torch.ops.aten.uniform.default] )

Additional context

This is the virtual environment:

Package Version


aiohappyeyeballs 2.6.1
aiohttp 3.11.18
aiosignal 1.3.2
antlr4-python3-runtime 4.9.3
asteroid-filterbanks 0.4.0
async-timeout 5.0.1
attrs 25.3.0
audioread 3.0.1
certifi 2025.1.31
cffi 1.17.1
chainer 7.8.1
charset-normalizer 3.4.1
ci-sdr 0.0.2
click 8.1.8
ConfigArgParse 1.7
ctc_segmentation 1.7.4
Cython 3.0.12
decorator 5.2.1
Distance 0.1.3
editdistance 0.8.1
einops 0.8.1
espnet 202412
espnet-tts-frontend 0.0.3
exceptiongroup 1.3.0
execnet 2.1.1
executorch 0.6.0
expecttest 0.3.0
fast-bss-eval 0.1.3
filelock 3.18.0
flash_attn 2.8.0.post2
flatbuffers 25.2.10
frozenlist 1.6.0
fsspec 2025.3.2
g2p-en 2.1.0
h5py 3.13.0
humanfriendly 10.0
hydra-core 1.3.2
hypothesis 6.135.22
idna 3.10
importlib-metadata 4.13.0
inflect 7.5.0
iniconfig 2.1.0
jaconv 0.4.0
jamo 0.4.1
Jinja2 3.1.6
joblib 1.4.2
kaldiio 2.18.1
librosa 0.9.2
lightning 2.5.1
lightning-utilities 0.14.3
llvmlite 0.43.0
MarkupSafe 3.0.2
more-itertools 10.7.0
mpmath 1.3.0
multidict 6.4.3
networkx 3.4.2
nltk 3.9.1
numba 0.60.0
numpy 1.23.5
nvidia-cublas-cu12 12.6.4.1
nvidia-cuda-cupti-cu12 12.6.80
nvidia-cuda-nvrtc-cu12 12.6.77
nvidia-cuda-runtime-cu12 12.6.77
nvidia-cudnn-cu12 9.5.1.17
nvidia-cufft-cu12 11.3.0.4
nvidia-cufile-cu12 1.11.1.6
nvidia-curand-cu12 10.3.7.77
nvidia-cusolver-cu12 11.7.1.2
nvidia-cusparse-cu12 12.5.4.2
nvidia-cusparselt-cu12 0.6.3
nvidia-nccl-cu12 2.26.2
nvidia-nvjitlink-cu12 12.6.85
nvidia-nvtx-cu12 12.6.77
omegaconf 2.3.0
onnx 1.18.0
opt_einsum 3.4.0
packaging 24.2
pandas 2.3.0
parameterized 0.9.0
pillow 11.3.0
pip 22.0.2
platformdirs 4.3.7
pluggy 1.6.0
pooch 1.8.2
propcache 0.3.1
protobuf 6.30.2
pycparser 2.22
Pygments 2.19.2
pypinyin 0.44.0
pytest 8.4.1
pytest-rerunfailures 15.1
pytest-xdist 3.8.0
python-dateutil 2.9.0.post0
pytorch-lightning 2.5.1
pytz 2025.2
pyworld 0.3.5
PyYAML 6.0.2
regex 2024.11.6
requests 2.32.3
resampy 0.4.3
ruamel.yaml 0.18.14
ruamel.yaml.clib 0.2.12
scikit-learn 1.6.1
scipy 1.15.2
sentencepiece 0.1.97
setuptools 59.6.0
six 1.17.0
sortedcontainers 2.4.0
soundfile 0.13.1
sympy 1.13.3
tabulate 0.9.0
threadpoolctl 3.6.0
tomli 2.2.1
torch 2.7.0
torch-complex 0.4.4
torchao 0.10.0
torchaudio 2.7.0
torchmetrics 1.7.1
torchvision 0.22.0
tqdm 4.67.1
triton 3.3.0
typeguard 4.4.2
typing_extensions 4.13.2
tzdata 2025.2
Unidecode 1.4.0
urllib3 2.4.0
wheel 0.45.1
yarl 1.20.0
zipp 3.21.0

cc @larryliu0820 @manuelcandales

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.