Skip to content

Convert Model

netspresso.np_qai.converter.NPQAIConverter.convert_model(input_model_path, output_dir, target_device_name, input_shapes=None, options=CompileOptions(), job_name=None, single_compile=True, calibration_data=None, retry=True)

Convert a model in the QAI hub.

Parameters:

Name Type Description Default
input_model_path Union[str, Path]

The path to the input model.

required
output_dir str

The directory to save the converted model.

required
target_device_name Union[Device, List[Device]]

The device to compile the model for.

required
input_shapes Optional[InputSpecs]

The input shapes of the model.

None
options Union[CompileOptions, str]

The options to use for the conversion.

CompileOptions()
job_name Optional[str]

The name of the job.

None
single_compile bool

Whether to compile the model in a single step.

True
calibration_data Union[Dataset, DatasetEntries, str, None]

The calibration data to use for the conversion.

None
retry bool

Whether to retry the conversion if it fails.

True

Returns:

Type Description
Union[ConverterMetadata, List[ConverterMetadata]]

Union[ConverterMetadata, List[ConverterMetadata]]: Returns a converter metadata object if successful.

Note

For details, see submit_compile_job in QAI Hub API.

Example

from netspresso import NPQAI
from netspresso.np_qai import Device
from netspresso.np_qai.options import CompileOptions, Runtime, ComputeUnit, QuantizeFullType

QAI_HUB_API_TOKEN = "YOUR_QAI_HUB_API_TOKEN"
np_qai = NPQAI(api_token=QAI_HUB_API_TOKEN)

converter = np_qai.converter()

convert_options = CompileOptions(
    target_runtime=Runtime.TFLITE,
    compute_unit=[ComputeUnit.NPU],
    quantize_full_type=QuantizeFullType.INT8,
    quantize_io=True,
    quantize_io_type=QuantizeFullType.INT8,
)

IMG_SIZE = 640
INPUT_MODEL_PATH = "YOUR_INPUT_MODEL_PATH"
OUTPUT_DIR = "YOUR_OUTPUT_DIR"
JOB_NAME = "YOUR_JOB_NAME"
DEVICE_NAME = "QCS6490 (Proxy)"
converted_result = converter.convert_model(
    input_model_path=INPUT_MODEL_PATH,
    output_dir=OUTPUT_DIR,
    target_device_name=Device(DEVICE_NAME),
    options=convert_options,
    input_shapes=dict(image=(1, 3, IMG_SIZE, IMG_SIZE)),
    job_name=JOB_NAME,
)

print("Conversion task started")

# Monitor task status
while True:
    status = converter.get_convert_task_status(converted_result.convert_task_info.convert_task_uuid)
    if status.finished:
        converted_result = converter.update_convert_task(converted_result)
        print("Conversion task completed")
        break
    else:
        print("Conversion task is still running")