I try to run “hailomz compile yolov11n --ckpt=best.onnx --hw-arch hailo8 --calib-path train/images --classes 1 --performance”
and raised an error :
raise AccelerasUnsupportedError(
hailo_model_optimization.acceleras.utils.acceleras_exceptions.AccelerasUnsupportedError: layer yolov11n/matmul2 does not support shift delta. To overcome this issue you should force larger range at the inputs of the layer using command quantization_param([layer_name], force_range_in=[range_min, range_max], force_range_index=index) current range of input 0 is [0.001, 0.007] and input 1 is [-2.867, 2.306].You should increase the multiplication of these ranges by a factor of 7.600, e.g. you can apply factor of sqrt(7.600) to both inputs:
quantization_param([yolov11n/matmul2], force_range_in=[0.003, 0.019], force_range_index=0)
quantization_param([yolov11n/matmul2], force_range_in=[-7.904, 6.357], force_range_index=1)
How to solve this problem?
I have the same problem.
I add these two line to cfg/alls/generic/modelname.alls,but new problem comes, saying “script error”.
If you are trying to compile a YOLO model, you can try using our cloud compiler: Early Access to DeGirum Cloud Compiler
Hey @James_Freeman!
Welcome to the Hailo Community!
To resolve the “does not support shift delta” error, you’ll need to widen the quantization ranges for the inputs to that MatMul layer using quantization_param
commands in your model script.
Here’s what you need to do:
Add these lines to the end of your cfg/alls/yolov11n.alls
file:
# widen input 0 range from [0.001,0.007] → [0.003,0.019]
quantization_param(yolov11n/matmul2, force_range_in=[0.003, 0.019], force_range_index=0)
# widen input 1 range from [-2.867,2.306] → [-7.904,6.357]
quantization_param(yolov11n/matmul2, force_range_in=[-7.904, 6.357], force_range_index=1)
Key points to remember:
-
Use the exact layer name (no additional square brackets)
-
Apply the widened ranges from the error message (multiplied by √7.6 ≈ 2.756)
-
Specify the correct index (0 for first input, 1 for second input)
Then recompile with:
hailomz compile yolov11n \
--ckpt=best.onnx \
--hw-arch hailo8 \
--calib-path train/images \
--classes 1 \
--performance
These quantization_param
commands override the default input ranges during quantization, ensuring the compiler allocates sufficient bits to prevent the shift delta overflow.
Hope this helps! Feel free to reach out if you need any clarification.
Thanks for your help!
I applied the change, but problem still unresolved.
I retrain a modle from yolov11n, with 11 classes.
pip list |grep hailo
hailo-dataflow-compiler 3.31.0
hailo-model-zoo 2.15.0
hailort 4.22.0
At the beginning , the error is “layer zttv11n/matmul2 does not support shift delta“.
(yolo) root@056a81609ab0:~/detect/model# hailomz compile zttv11n --ckpt=./640_100_v11n.onnx --hw-arch hailo8 --calib-path=/root/detect/dataset/final/images/train --classes 11 --performance
Start run for network zttv11n …
Initializing the hailo8 runner…
[info] Translation started on ONNX model zttv11n
[info] Restored ONNX model zttv11n (completion time: 00:00:00.06)
[info] Extracted ONNXRuntime meta-data for Hailo model (completion time: 00:00:00.48)
[info] NMS structure of yolov8 (or equivalent architecture) was detected.
[info] In order to use HailoRT post-processing capabilities, these end node names should be used: /model.23/cv3.0/cv3.0.2/Conv /model.23/cv2.0/cv2.0.2/Conv /model.23/cv3.1/cv3.1.2/Conv /model.23/cv2.1/cv2.1.2/Conv /model.23/cv2.2/cv2.2.2/Conv /model.23/cv3.2/cv3.2.2/Conv.
[info] Start nodes mapped from original model: ‘images’: ‘zttv11n/input_layer1’.
[info] End nodes mapped from original model: ‘/model.23/cv2.0/cv2.0.2/Conv’, ‘/model.23/cv3.0/cv3.0.2/Conv’, ‘/model.23/cv2.1/cv2.1.2/Conv’, ‘/model.23/cv3.1/cv3.1.2/Conv’, ‘/model.23/cv2.2/cv2.2.2/Conv’, ‘/model.23/cv3.2/cv3.2.2/Conv’.
[info] Translation completed on ONNX model zttv11n (completion time: 00:00:02.06)
[info] Appending model script commands to zttv11n from string
[info] Added nms postprocess command to model script.
[info] Saved HAR to: /mnt/detect/model/zttv11n.har
Using generic alls script found in /root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/cfg/alls/generic/ztev11n.alls because there is no specific hardware alls
Preparing calibration data…
[info] Loading model script commands to zttv11n from /root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/cfg/alls/generic/ztev11n.alls
[info] Loading model script commands to zttv11n from string
[info] Found model with 3 input channels, using real RGB images for calibration instead of sampling random data.
[info] Starting Model Optimization
[warning] Reducing compression ratio to 0 because the number of parameters in the network is not large enough (2M and need at least 20M). Can be enforced using model_optimization_config(compression_params, auto_4bit_weights_ratio=0.400)
[info] Model received quantization params from the hn
[info] MatmulDecompose skipped
[info] Starting Mixed Precision
[info] Model Optimization Algorithm Mixed Precision is done (completion time is 00:00:01.02)
[info] LayerNorm Decomposition skipped
[info] Starting Statistics Collector
[info] Using dataset with 64 entries for calibration
Calibration: 100%|████████████████████████████████████████████████████████████████| 64/64 [01:02<00:00, 1.02entries/s]
[info] Model Optimization Algorithm Statistics Collector is done (completion time is 00:01:06.90)
[info] Starting Fix zp_comp Encoding
[info] Model Optimization Algorithm Fix zp_comp Encoding is done (completion time is 00:00:00.00)
[info] Starting Matmul Equalization
[info] Model Optimization Algorithm Matmul Equalization is done (completion time is 00:00:00.04)
[info] Starting MatmulDecomposeFix
[info] Model Optimization Algorithm MatmulDecomposeFix is done (completion time is 00:00:00.00)
[info] No shifts available for layer zttv11n/conv22/conv_op, using max shift instead. delta=1.1442
[info] No shifts available for layer zttv11n/conv22/conv_op, using max shift instead. delta=0.5721
[info] No shifts available for layer zttv11n/conv_feature_splitter4_1/conv_op, using max shift instead. delta=1.0293
[info] No shifts available for layer zttv11n/conv_feature_splitter4_1/conv_op, using max shift instead. delta=0.5147
[info] No shifts available for layer zttv11n/conv22/conv_op, using max shift instead. delta=0.5721
[info] No shifts available for layer zttv11n/conv26/conv_op, using max shift instead. delta=0.7985
[info] No shifts available for layer zttv11n/conv26/conv_op, using max shift instead. delta=0.3993
[info] No shifts available for layer zttv11n/conv27/conv_op, using max shift instead. delta=0.3148
[info] No shifts available for layer zttv11n/conv27/conv_op, using max shift instead. delta=0.1574
[info] No shifts available for layer zttv11n/conv26/conv_op, using max shift instead. delta=0.3993
[info] No shifts available for layer zttv11n/conv28/conv_op, using max shift instead. delta=0.6623
[info] No shifts available for layer zttv11n/conv28/conv_op, using max shift instead. delta=0.3312
[info] No shifts available for layer zttv11n/conv31/conv_op, using max shift instead. delta=0.9671
[info] No shifts available for layer zttv11n/conv31/conv_op, using max shift instead. delta=0.4836
[info] No shifts available for layer zttv11n/conv_feature_splitter4_1/conv_op, using max shift instead. delta=0.5147
[info] activation fitting started for zttv11n/reduce_sum_softmax1/act_op
Traceback (most recent call last):
File “/root/anaconda3/envs/yolo/bin/hailomz”, line 8, in
sys.exit(main())
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/main.py”, line 122, in main
run(args)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/main.py”, line 111, in run
return handlersargs.command
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/main_driver.py”, line 248, in compile
_ensure_optimized(runner, logger, args, network_info)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/main_driver.py”, line 91, in _ensure_optimized
optimize_model(
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/core/main_utils.py”, line 353, in optimize_model
runner.optimize(calib_feed_callback)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_common/states/states.py”, line 16, in wrapped_func
return func(self, *args, **kwargs)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_client/runner/client_runner.py”, line 2201, in optimize
result = self._optimize(
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_common/states/states.py”, line 16, in wrapped_func
return func(self, *args, **kwargs)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_client/runner/client_runner.py”, line 2020, in _optimize
checkpoint_info = self._sdk_backend.full_quantization(
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_client/sdk_backend/sdk_backend.py”, line 1196, in full_quantization
new_checkpoint_info = self._full_acceleras_run(
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_client/sdk_backend/sdk_backend.py”, line 1434, in _full_acceleras_run
new_checkpoint_info = self._optimization_flow_runner(optimization_flow, checkpoint_info)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_client/sdk_backend/sdk_backend.py”, line 2088, in _optimization_flow_runner
optimization_flow.run()
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_optimization/tools/orchestator.py”, line 239, in wrapper
return func(self, *args, **kwargs)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_optimization/flows/optimization_flow.py”, line 357, in run
step_func()
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_optimization/tools/subprocess_wrapper.py”, line 142, in parent_wrapper
raise SubprocessTracebackFailure(*child_messages)
hailo_model_optimization.acceleras.utils.acceleras_exceptions.SubprocessTracebackFailure: Subprocess failed with traceback
Traceback (most recent call last):
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_optimization/tools/subprocess_wrapper.py”, line 104, in child_wrapper
func(self, *args, **kwargs)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_optimization/flows/optimization_flow.py”, line 376, in step1
self.core_quantization()
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_optimization/flows/optimization_flow.py”, line 443, in core_quantization
self._create_hw_params()
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_optimization/flows/optimization_flow.py”, line 491, in _create_hw_params
algo.run()
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_optimization/algorithms/optimization_algorithm.py”, line 55, in run
return super().run()
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_optimization/algorithms/algorithm_base.py”, line 159, in run
self._run_int()
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_optimization/algorithms/create_hw_params/create_hw_params.py”, line 353, in _run_int
comp_to_retry = self._create_hw_params_component(matching_component_group)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_optimization/algorithms/create_hw_params/create_hw_params.py”, line 205, in _create_hw_params_component
layer.create_hw_params(layer_clip_cfg, self.optimization_target, hw_shifts=hw_shifts)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_optimization/acceleras/hailo_layers/hailo_matmul.py”, line 201, in create_hw_params
self.matmul_op.create_hw_params(
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_optimization/acceleras/atomic_ops/matmul_op.py”, line 224, in create_hw_params
raise AccelerasUnsupportedError(
hailo_model_optimization.acceleras.utils.acceleras_exceptions.AccelerasUnsupportedError: layer zttv11n/matmul2 does not support shift delta. To overcome this issue you should force larger range at the inputs of the layer using command quantization_param([layer_name], force_range_in=[range_min, range_max], force_range_index=index) current range of input 0 is [0.001, 0.020] and input 1 is [-13.034, 12.641].You should increase the multiplication of these ranges by a factor of 1.755, e.g. you can apply factor of sqrt(1.755) to both inputs:
quantization_param([zttv11n/matmul2], force_range_in=[0.001, 0.026], force_range_index=0)
quantization_param([zttv11n/matmul2], force_range_in=[-17.267, 16.746], force_range_index=1)
And I changed the cfg/alls/generic/zttv11n.alls, as following:
model_optimization_flavor(optimization_level=1, compression_level=2)
normalization1 = normalization([0.0, 0.0, 0.0], [255.0, 255.0, 255.0])
change_output_activation(conv54, sigmoid)
change_output_activation(conv65, sigmoid)
change_output_activation(conv80, sigmoid)
nms_postprocess(“../../postprocess_config/zttv11n_nms_config.json”, meta_arch=yolov8, engine=cpu)
allocator_param(width_splitter_defuse=disabled)
quantization_param(zttv11n/matmul2, force_range_in=[0.001, 0.026], force_range_index=0)
quantization_param(zttv11n/matmul2, force_range_in=[-17.267, 16.746], force_range_index=1)
The error changes to “ValidationError“.
(yolo) root@056a81609ab0:~/detect/model# hailomz compile zttv11n --ckpt=./640_100_v11n.onnx --hw-arch hailo8 --calib-path=/root/detect/dataset/final/images/train --classes 11 --performance
Start run for network zttv11n …
Initializing the hailo8 runner…
[info] Translation started on ONNX model zttv11n
[info] Restored ONNX model zttv11n (completion time: 00:00:00.07)
[info] Extracted ONNXRuntime meta-data for Hailo model (completion time: 00:00:00.47)
[info] NMS structure of yolov8 (or equivalent architecture) was detected.
[info] In order to use HailoRT post-processing capabilities, these end node names should be used: /model.23/cv3.0/cv3.0.2/Conv /model.23/cv2.0/cv2.0.2/Conv /model.23/cv3.1/cv3.1.2/Conv /model.23/cv2.1/cv2.1.2/Conv /model.23/cv2.2/cv2.2.2/Conv /model.23/cv3.2/cv3.2.2/Conv.
[info] Start nodes mapped from original model: ‘images’: ‘zttv11n/input_layer1’.
[info] End nodes mapped from original model: ‘/model.23/cv2.0/cv2.0.2/Conv’, ‘/model.23/cv3.0/cv3.0.2/Conv’, ‘/model.23/cv2.1/cv2.1.2/Conv’, ‘/model.23/cv3.1/cv3.1.2/Conv’, ‘/model.23/cv2.2/cv2.2.2/Conv’, ‘/model.23/cv3.2/cv3.2.2/Conv’.
[info] Translation completed on ONNX model zttv11n (completion time: 00:00:01.82)
[info] Appending model script commands to zttv11n from string
[info] Added nms postprocess command to model script.
[info] Saved HAR to: /mnt/detect/model/zttv11n.har
Using generic alls script found in /root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/cfg/alls/generic/zttv11n.alls because there is no specific hardware alls
Preparing calibration data…
[info] Loading model script commands to zttv11n from /root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/cfg/alls/generic/zttv11n.alls
[info] Loading model script commands to zttv11n from string
[info] Found model with 3 input channels, using real RGB images for calibration instead of sampling random data.
[info] Starting Model Optimization
Traceback (most recent call last):
File “/root/anaconda3/envs/yolo/bin/hailomz”, line 8, in
sys.exit(main())
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/main.py”, line 122, in main
run(args)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/main.py”, line 111, in run
return handlersargs.command
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/main_driver.py”, line 248, in compile
_ensure_optimized(runner, logger, args, network_info)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/main_driver.py”, line 91, in _ensure_optimized
optimize_model(
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_model_zoo/core/main_utils.py”, line 353, in optimize_model
runner.optimize(calib_feed_callback)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_common/states/states.py”, line 16, in wrapped_func
return func(self, *args, **kwargs)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_client/runner/client_runner.py”, line 2201, in optimize
result = self._optimize(
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_common/states/states.py”, line 16, in wrapped_func
return func(self, *args, **kwargs)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_client/runner/client_runner.py”, line 2020, in _optimize
checkpoint_info = self._sdk_backend.full_quantization(
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_client/sdk_backend/sdk_backend.py”, line 1194, in full_quantization
self.setup_quantization(data_continer, work_dir=work_dir)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_client/sdk_backend/sdk_backend.py”, line 1138, in setup_quantization
config = self.apply_quantization_script(data_continer)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_client/sdk_backend/sdk_backend.py”, line 1085, in apply_quantization_script
return self._apply_quantization_script_with_flavor()
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_client/sdk_backend/sdk_backend.py”, line 1103, in _apply_quantization_script_with_flavor
config = verify_commands(self._model, mo_commands, flavor_config)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_common/hailo_nn/model_optimization/configuration_verifier.py”, line 65, in verify_commands
verifier = ModelConfigurationValidator(hn_model, commands, allocation_mode, pre_quantization_mode)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/hailo_sdk_common/hailo_nn/model_optimization/configuration_verifier.py”, line 120, in init
self._config = ModelOptimizationConfig(**commands)
File “/root/anaconda3/envs/yolo/lib/python3.10/site-packages/pydantic/v1/main.py”, line 341, in init
raise validation_error
pydantic.v1.error_wrappers.ValidationError: 1 validation error for ModelOptimizationConfig
translation_config → layers → zttv11n/matmul2 → force_range_in
wrong tuple length 4, expected 2 (type=value_error.tuple.length; actual_length=4; expected_length=2)
Thanks,Ihave already submitted the access application.