macOS wheel: libquantized_ops_aot_lib.dylib never loads, so PT2E models fail later with "Missing out variants"
メンテナーはふだん 1 日以内に返信
@JakeStevens がすでに取り組んでいます。
2026年9月1日 から。
評価
この issue はまだ評価されていません。
説明
Summary
On the macOS arm64 wheel, libquantized_ops_aot_lib.dylib cannot be loaded, so the quantized_decomposed out-variants are never registered. Nothing reports it — the load sits in a bare except: that logs at INFO — and the first sign is to_executorch() failing on a model with nothing obviously wrong with it.
executorch 1.4.0, torch 2.13.0, Python 3.12, macOS arm64, installed from the pip wheel. I have not checked the Linux wheels or a source build.
What you see
RuntimeError: Missing out variants: {'quantized_decomposed::dequantize_per_channel',
'quantized_decomposed::choose_qparams', 'quantized_decomposed::dequantize_per_tensor'}
It happens for any PT2E-quantized graph that leaves a q/dq node outside the delegate. Grounding DINO tiny is a good example of how little it takes: dynamic int8 quantises 350 of its 392 aten.linear nodes, XnnpackPartitioner takes 71.5% of the graph, and exactly three quantized ops end up on the portable path —
quantized_decomposed.dequantize_per_channel.default : 1
quantized_decomposed.choose_qparams.tensor : 1
quantized_decomposed.dequantize_per_tensor.tensor : 1
— the same three the error names. One linear out of 392 not taken by the delegate is enough to stop the export. Models that delegate everything never see this, which is why it can sit unnoticed.
Cause
$ python -c "import ctypes; ctypes.CDLL('.../executorch/kernels/quantized/libquantized_ops_aot_lib.dylib')"
OSError: dlopen(...libquantized_ops_aot_lib.dylib, 0x0006):
Library not loaded: @rpath/_portable_lib.cpython-312-darwin.so
Referenced from: .../executorch/kernels/quantized/libquantized_ops_aot_lib.dylib
otool -L confirms the reference. The @rpath does not resolve from executorch/kernels/quantized/, and executorch/kernels/quantized/__init__.py wraps torch.ops.load_library in
except:
import logging
logging.info("libquantized_ops_aot_lib is not loaded")
so the failure is invisible at the point where it happens.
Workaround
Put _portable_lib in the process first; the dylib then finds it by install name.
import torch
from executorch.extension.pybindings import portable_lib # noqa: F401
from pathlib import Path
import executorch.kernels.quantized as q
torch.ops.load_library(str(next(Path(q.__file__).parent.glob("**/*quantized_ops_aot_lib.*"))))
After that torch.ops.quantized_decomposed carries choose_qparams, dequantize_per_channel and dequantize_per_tensor, and the same export completes — the Grounding DINO run above goes from the error to a 254 MB .pte with nothing else changed.
Suggestions
- Give the dylib an rpath that reaches
extension/pybindings, so it loads on its own. - Whatever the packaging does, do not swallow the exception. A warning naming the dylib would have turned a confusing
Missing out variantsinto a one-line fix.
Happy to send a PR for either.
cc @kimishpatel @jerryzh168 @metascroy @digantdesai @freddan80 @per @zingo @oscarandersson8218 @mansnils @Sebastian-Larsson @robell @rascani
- 主要言語
- Python
- スター
- 5k
- フォーク
- 1.2k
- 平均マージ
- 2日 7時間
- マージ済み PR(30日)
- 521
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
pytorch/executorch のほかの issue
-
enhancement triaged
難易度 2/5 半日 初心者へのやさしさ 68/100
pytorch/executorch#21640 ·
メンテナーはふだん 1 日以内に返信
-
[RFC] ExecuTorch Persisting Device Specialized Delegate Artifacts対応中かも @JacobSzwejbka が 1 日前に担当しました。 オープン
pytorch/executorch#23192 · コメント 1 件 · リアクション 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
[QNN] Enable ConvTranspose + BatchNorm fusion after #23170対応中かも @psiddh が 1 日前に担当しました。 オープンmodule: qnn partner: qualcomm
pytorch/executorch#23185 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
enhancement module: examples
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
pytorch/executorch#23164 · コメント 7 件 · リアクション 2 件 ·
メンテナーはふだん 1 日以内に返信
-
Qualcomm: 8-bit per-channel weight scales are floored at the 16-bit eps, and the HTP miscomputes near-zero channels対応中かも @psiddh が 4 日前に担当しました。 オープンmodule: qnn module: quantization partner: qualcomm
pytorch/executorch#23160 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
pytorch/executorch の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
PedestrianDynamics/pyFDS-Evac#343 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
theskumar/python-dotenv#708 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
メンテナーはふだん 2 日以内に返信
-
Docs Timedelta
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
pandas-dev/pandas#69919 ·
メンテナーはふだん 1 日以内に返信
-
API documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
zephyrproject-rtos/west#1009 · コメント 2 件 ·
メンテナーはふだん 3 日以内に返信