MTKEXT_LOGISTIC generated during INT8 conversion prevents MDLA compilation (Genio 700)

Hi,

I am working on deploying pose estimation models on a Genio 700 platform (MDLA 3.0), using NeuroPilot 8 (mtk_converter) targeting NP6 (npsdk_v6).

System
Ubuntu 22.04
Python 3.10.12

Workflow

The pipeline I am using is:

YOLO (Ultralytics) → ONNX → mtk_converter (INT8, npsdk_v6) → TFLite → ncc-tflite (MDLA)

ONNX export
The ONNX model is generated using Ultralytics with:
yolo export model=yolov8s-pose.pt format=onnx imgsz=640 opset=12 simplify=True dynamic=False nms=False batch=1

Conversion to TFLite

The ONNX model is converted to TFLite using the mtk_converter Python API with these parameters:

tflite_op_export_spec = npsdk_v6
converter.quantize = True
converter.precision_proportion = {‘8W8A’: 1.0}
converter.use_dynamic_quantization = False
converter.prepend_input_quantize_ops = False
converter.append_output_dequantize_ops = False
converter.use_per_output_channel_quantization = False
converter.decompose_silu_ops = True
converter.decompose_grouped_conv2d_ops = True
converter.decompose_log_softmax_ops = True

#And finally
converter.convert_to_tflite(...)

Execution:

python onnx_to_tflite_quantized.py yolov8s-pose.onnx yolov8s-pose-quant.tflite --quantize True

Compiling with ncc-tflite:

$ 20240108_Neuron_SDK_v1.2402.01_neuron-6-0-release/host/bin/ncc-tflite --arch=mdla3.0 yolov8s-pose-quant.tflite
OP[289]: CUSTOM: MTKEXT_LOGISTIC
├ MDLA: unsupported operation
├ EDMA: nir.GetVendorName().compare(“mtk”) == 0 Unsupported vendor name
├ EDMA: nir.GetTargetName().compare(“edma”) == 0 Unsupported target name
├ EDMA: nir.GetVendorName().compare(“mtk”) == 0 Unsupported vendor name
├ EDMA: nir.GetTargetName().compare(“edma”) == 0 Unsupported target name
OP[296]: CUSTOM: MTKEXT_LOGISTIC
├ MDLA: unsupported operation
├ EDMA: nir.GetVendorName().compare(“mtk”) == 0 Unsupported vendor name
├ EDMA: nir.GetTargetName().compare(“edma”) == 0 Unsupported target name
├ EDMA: nir.GetVendorName().compare(“mtk”) == 0 Unsupported vendor name
├ EDMA: nir.GetTargetName().compare(“edma”) == 0 Unsupported target name
ERROR: Cannot find an execution plan because of unsupported operations
ERROR: Fail to compile yolov8s-pose-quant.tflite

Observations

The original ONNX model only contains Sigmoid operations. However, after conversion Onnx to tflite:

Some Sigmoid operations are exported as standard TFLite LOGISTIC, these work correctly
However, some Sigmoid operations (at final of tflite file) are exported as: MTKEXT_LOGISTIC

This happens consistently across different models (YOLOv8 and YOLO11).

From Release v8.4.0 - New YOLO26 Models Release · ultralytics/assets · GitHub
I tried to use models: yolov8s-pose.pt and yolo11n-pose.pt but I’ve got the same error

Question

What conditions cause the converter to generate MTKEXT_LOGISTIC instead of standard LOGISTIC during INT8 conversion?

ls this related to quantization constraints?
Is there a way to generate tflite without MTKEXT_LOGISTIC or to force the converter to emit standard LOGISTIC instead of MTKEXT_LOGISTIC?
What is the recommended way to handle MTKEXT_* custom ops when targeting MDLA?

Thanks in advance.

Hello @Marco_Madrigal

You can also use mtk_converter to remove MTKEXT_LOGISTIC op.
during your conversion step, please ensure you are using tflite_op_export_spec=‘builtin_ignore_version’