From 357d57dda6f87d5cf206e2c47aac881d4bcd3a86 Mon Sep 17 00:00:00 2001 From: Qualcomm AI Stack Models Bot Date: Tue, 10 Sep 2024 15:03:41 -0700 Subject: [PATCH] v0.13.0 See https://github.com/quic/ai-hub-models/releases/v0.13.0 for changelog. Signed-off-by: QAIHM Team --- .gitignore | 4 + qai_hub_models/_version.py | 2 +- qai_hub_models/models/_shared/llama/app.py | 18 +- qai_hub_models/models/_shared/llama/demo.py | 6 + qai_hub_models/models/_shared/llama/model.py | 61 +- qai_hub_models/models/aotgan/export.py | 11 +- .../models/baichuan_7b_quantized/info.yaml | 1 - .../models/controlnet_quantized/info.yaml | 1 - qai_hub_models/models/convnext_tiny/export.py | 11 +- .../convnext_tiny_w8a16_quantized/export.py | 17 +- .../convnext_tiny_w8a8_quantized/export.py | 17 +- qai_hub_models/models/ddrnet23_slim/export.py | 11 +- .../models/deeplabv3_plus_mobilenet/export.py | 11 +- .../export.py | 17 +- .../models/deeplabv3_resnet50/export.py | 11 +- qai_hub_models/models/densenet121/export.py | 11 +- .../models/detr_resnet101/export.py | 11 +- .../models/detr_resnet101_dc5/export.py | 11 +- qai_hub_models/models/detr_resnet50/export.py | 11 +- .../models/detr_resnet50_dc5/export.py | 11 +- .../models/efficientnet_b0/export.py | 11 +- qai_hub_models/models/esrgan/export.py | 11 +- qai_hub_models/models/fastsam_s/export.py | 11 +- qai_hub_models/models/fastsam_x/export.py | 11 +- qai_hub_models/models/fcn_resnet50/export.py | 11 +- .../models/fcn_resnet50_quantized/export.py | 17 +- .../models/ffnet_122ns_lowres/export.py | 11 +- qai_hub_models/models/ffnet_40s/export.py | 11 +- .../models/ffnet_40s_quantized/export.py | 17 +- qai_hub_models/models/ffnet_54s/export.py | 11 +- .../models/ffnet_54s_quantized/export.py | 17 +- qai_hub_models/models/ffnet_78s/export.py | 11 +- .../models/ffnet_78s_lowres/export.py | 11 +- .../models/ffnet_78s_quantized/export.py | 17 +- qai_hub_models/models/googlenet/export.py | 11 +- .../models/googlenet_quantized/export.py | 17 +- qai_hub_models/models/hrnet_pose/export.py | 11 +- .../models/hrnet_pose_quantized/export.py | 17 +- .../huggingface_wavlm_base_plus/export.py | 11 +- qai_hub_models/models/inception_v3/export.py | 11 +- .../models/inception_v3_quantized/export.py | 17 +- qai_hub_models/models/lama_dilated/export.py | 11 +- qai_hub_models/models/litehrnet/export.py | 11 +- .../gen_ondevice_llama/README.md | 211 +++++++ .../gen_ondevice_llama/__init__.py | 4 + .../gen_ondevice_llama/gen_ondevice_llama.py | 67 ++ .../gen_ondevice_llama/requirements.txt | 6 + .../gen_ondevice_llama/tokenizer.zip | Bin 0 -> 487922 bytes .../gen_ondevice_llama/utils.py | 581 ++++++++++++++++++ .../llama_v2_7b_chat_quantized/model.py | 24 +- .../modeling_llama.py | 88 ++- .../models/llama_v3_8b_chat_quantized/demo.py | 1 + .../llama_v3_8b_chat_quantized/model.py | 129 +++- .../models/mediapipe_face/export.py | 14 +- .../models/mediapipe_face_quantized/export.py | 22 +- .../models/mediapipe_hand/export.py | 14 +- .../models/mediapipe_pose/export.py | 14 +- .../models/mediapipe_selfie/export.py | 11 +- qai_hub_models/models/midas/export.py | 11 +- .../models/midas_quantized/export.py | 17 +- qai_hub_models/models/mnasnet05/export.py | 11 +- qai_hub_models/models/mobilenet_v2/export.py | 11 +- .../models/mobilenet_v2_quantized/export.py | 17 +- .../models/mobilenet_v3_large/export.py | 11 +- .../mobilenet_v3_large_quantized/export.py | 17 +- .../models/mobilenet_v3_small/export.py | 11 +- qai_hub_models/models/openai_clip/export.py | 14 +- qai_hub_models/models/openpose/export.py | 11 +- .../models/posenet_mobilenet/export.py | 11 +- .../posenet_mobilenet_quantized/export.py | 17 +- .../models/quicksrnetlarge/export.py | 11 +- .../quicksrnetlarge_quantized/export.py | 17 +- .../models/quicksrnetmedium/export.py | 11 +- .../quicksrnetmedium_quantized/export.py | 17 +- .../models/quicksrnetsmall/export.py | 11 +- .../quicksrnetsmall_quantized/export.py | 17 +- .../models/real_esrgan_general_x4v3/export.py | 11 +- .../models/real_esrgan_x4plus/export.py | 11 +- qai_hub_models/models/regnet/export.py | 11 +- .../models/regnet_quantized/export.py | 17 +- qai_hub_models/models/resnet101/export.py | 11 +- .../models/resnet101_quantized/export.py | 17 +- qai_hub_models/models/resnet18/export.py | 11 +- .../models/resnet18_quantized/export.py | 17 +- qai_hub_models/models/resnet50/export.py | 11 +- .../models/resnet50_quantized/export.py | 17 +- qai_hub_models/models/resnext101/export.py | 11 +- .../models/resnext101_quantized/export.py | 17 +- qai_hub_models/models/resnext50/export.py | 11 +- .../models/resnext50_quantized/export.py | 17 +- .../models/riffusion_quantized/info.yaml | 1 - qai_hub_models/models/sam/export.py | 14 +- qai_hub_models/models/sesr_m5/export.py | 11 +- .../models/sesr_m5_quantized/export.py | 17 +- qai_hub_models/models/shufflenet_v2/export.py | 11 +- .../models/shufflenet_v2_quantized/export.py | 17 +- qai_hub_models/models/sinet/export.py | 11 +- qai_hub_models/models/squeezenet1_1/export.py | 11 +- .../models/squeezenet1_1_quantized/export.py | 17 +- .../stable_diffusion_v1_5_quantized/info.yaml | 1 - .../stable_diffusion_v2_1_quantized/info.yaml | 1 - qai_hub_models/models/swin_base/export.py | 11 +- qai_hub_models/models/swin_small/export.py | 11 +- qai_hub_models/models/swin_tiny/export.py | 11 +- qai_hub_models/models/trocr/export.py | 14 +- .../models/unet_segmentation/export.py | 11 +- qai_hub_models/models/vit/export.py | 11 +- .../models/whisper_base_en/export.py | 14 +- .../models/whisper_small_en/export.py | 14 +- .../models/whisper_tiny_en/export.py | 14 +- qai_hub_models/models/wideresnet50/export.py | 11 +- .../models/wideresnet50_quantized/export.py | 17 +- qai_hub_models/models/xlsr/export.py | 11 +- .../models/xlsr_quantized/export.py | 17 +- qai_hub_models/models/yolonas/export.py | 11 +- .../models/yolonas_quantized/export.py | 17 +- qai_hub_models/models/yolov6/export.py | 11 +- qai_hub_models/models/yolov7/export.py | 11 +- .../models/yolov7_quantized/export.py | 17 +- qai_hub_models/models/yolov8_det/export.py | 11 +- .../models/yolov8_det_quantized/export.py | 17 +- qai_hub_models/models/yolov8_seg/export.py | 11 +- qai_hub_models/requirements.txt | 4 +- .../test/test_async_compile_jobs.py | 2 +- .../test/test_utils/test_info_specs.py | 1 + qai_hub_models/utils/config_loaders.py | 2 +- qai_hub_models/utils/quantization_aimet.py | 14 +- qai_hub_models/utils/scorecard/job_summary.py | 2 +- 128 files changed, 1288 insertions(+), 1290 deletions(-) create mode 100644 qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/README.md create mode 100644 qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/__init__.py create mode 100644 qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/gen_ondevice_llama.py create mode 100644 qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/requirements.txt create mode 100644 qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/tokenizer.zip create mode 100644 qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/utils.py diff --git a/.gitignore b/.gitignore index 61a38f52..ca33d5a4 100644 --- a/.gitignore +++ b/.gitignore @@ -115,3 +115,7 @@ dmypy.json qai_hub_models/**/README.md # Hugging Face Model Cards (these are autogenerated) qai_hub_models/**/HF_MODEL_CARD.md + +# Allow following files +# TODO: #12151 wt shared llama binary support in export.py +!qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/README.md diff --git a/qai_hub_models/_version.py b/qai_hub_models/_version.py index 73a2ed86..501812d2 100644 --- a/qai_hub_models/_version.py +++ b/qai_hub_models/_version.py @@ -2,4 +2,4 @@ # Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. # SPDX-License-Identifier: BSD-3-Clause # --------------------------------------------------------------------- -__version__ = "0.12.2" +__version__ = "0.13.0" diff --git a/qai_hub_models/models/_shared/llama/app.py b/qai_hub_models/models/_shared/llama/app.py index 0247b437..540fd7a3 100644 --- a/qai_hub_models/models/_shared/llama/app.py +++ b/qai_hub_models/models/_shared/llama/app.py @@ -36,12 +36,14 @@ def __init__( num_past_key_val_heads: int, model_split_map: Dict[int, Tuple[int, int]], is_token_generator: bool = False, + is_bundled_kvcache: bool = True, ): self.num_splits = num_splits self.is_token_generator = is_token_generator self.num_past_key_val_heads = num_past_key_val_heads self.model_split_map = model_split_map self.model_type = "TokenGenerator" if is_token_generator else "PromptProcessor" + self.is_bundled_kvcache = is_bundled_kvcache def __call__( self, @@ -91,9 +93,10 @@ def forward_tg( model = self.load_model_part(i) print(f"Running {self.model_type} {i}/{self.num_splits}") layer_start, layer_end = self.model_split_map[i] - num_of_key_vals = ( - self.num_past_key_val_heads * 2 * (layer_end - layer_start) + num_past_key_val_head = ( + 1 if self.is_bundled_kvcache else self.num_past_key_val_heads ) + num_of_key_vals = num_past_key_val_head * 2 * (layer_end - layer_start) end_past_key_offset = start_past_key_offset + num_of_key_vals past_values = past_key_values[start_past_key_offset:end_past_key_offset] @@ -157,12 +160,14 @@ def __init__( num_past_key_val_heads: int, model_split_map: Dict[int, Tuple[int, int]], is_token_generator: bool = False, + is_bundled_kvcache: bool = True, ): super().__init__( len(hub_model_ids), num_past_key_val_heads, model_split_map, is_token_generator=is_token_generator, + is_bundled_kvcache=is_bundled_kvcache, ) self.models = [] for i, model_id in enumerate(hub_model_ids): @@ -202,6 +207,7 @@ def __init__( num_past_key_val_heads: int, model_split_map: Dict[int, Tuple[int, int]], is_token_generator: bool = False, + is_bundled_kvcache: bool = True, ): self.models = models self.num_splits = num_splits @@ -211,6 +217,7 @@ def __init__( num_past_key_val_heads=num_past_key_val_heads, model_split_map=model_split_map, is_token_generator=is_token_generator, + is_bundled_kvcache=is_bundled_kvcache, ) def load_model_part(self, model_part: int): @@ -262,7 +269,11 @@ def __init__( self.num_past_key_val_heads = num_past_key_val_heads def generate_output_prompt( - self, input_prompt: str, max_seq_len: int, max_output_tokens: int + self, + input_prompt: str, + max_seq_len: int, + max_output_tokens: int, + bundled_kvcache: bool = True, ): input_prompt_processed = self.get_input_prompt_with_tags( user_input_prompt=input_prompt @@ -302,6 +313,7 @@ def generate_output_prompt( output[1:], past_key_start=0, num_of_past_key_heads=self.num_past_key_val_heads, + bundled_kvcache=bundled_kvcache, ).values() output_prompt = self.tokenizer.decode(output_token) print() diff --git a/qai_hub_models/models/_shared/llama/demo.py b/qai_hub_models/models/_shared/llama/demo.py index e758c915..fa7e1f66 100644 --- a/qai_hub_models/models/_shared/llama/demo.py +++ b/qai_hub_models/models/_shared/llama/demo.py @@ -46,6 +46,7 @@ def llama_chat_demo( default_prompt: str = DEFAULT_USER_PROMPT, is_test: bool = False, available_target_runtimes: List[TargetRuntime] = [TargetRuntime.QNN], + bundled_kvcache: bool = True, ): """ Shared Chat Demo App to generate output for provided input prompt @@ -125,6 +126,7 @@ def llama_chat_demo( num_splits=num_splits, num_past_key_val_heads=num_key_val_heads, model_split_map=model_split_map, + is_bundled_kvcache=bundled_kvcache, ) token_generator = LlamaModelPipeline( model_cls.from_pretrained(), @@ -132,6 +134,7 @@ def llama_chat_demo( num_past_key_val_heads=num_key_val_heads, model_split_map=model_split_map, is_token_generator=True, + is_bundled_kvcache=bundled_kvcache, ) else: hub_model_ids = args.hub_model_id.split(",") @@ -156,6 +159,7 @@ def llama_chat_demo( get_model_class=get_model_class, num_past_key_val_heads=num_key_val_heads, model_split_map=model_split_map, + is_bundled_kvcache=bundled_kvcache, ) token_generator = OnDeviceLlamaModelPipeline( hub_model_ids[num_splits:], @@ -165,6 +169,7 @@ def llama_chat_demo( num_past_key_val_heads=num_key_val_heads, model_split_map=model_split_map, is_token_generator=True, + is_bundled_kvcache=bundled_kvcache, ) has_model_access(hf_repo_name, hf_repo_url) @@ -182,4 +187,5 @@ def llama_chat_demo( args.prompt, max_seq_len=args.prompt_processor_input_seq_len, max_output_tokens=args.max_output_tokens, + bundled_kvcache=bundled_kvcache, ) diff --git a/qai_hub_models/models/_shared/llama/model.py b/qai_hub_models/models/_shared/llama/model.py index 09fd9d40..25f44dfa 100644 --- a/qai_hub_models/models/_shared/llama/model.py +++ b/qai_hub_models/models/_shared/llama/model.py @@ -30,10 +30,24 @@ def get_hidden_layer_range_from_split(split_part: int, model_split_map: dict): def get_past_key_names( - start: int = 0, end: int = 8, num_of_past_key_heads=32, suffix="" + start: int = 0, + end: int = 8, + num_of_past_key_heads: int = 32, + suffix: str = "", + bundled_kvcache: bool = True, ): past_key_val_name = [] + if bundled_kvcache: + # Key and Values are concatanated on batch dimension + for i in range(start, end): + past_key_val_name += [ + f"past_key_{i}{suffix}", + f"past_value_{i}{suffix}", + ] + return past_key_val_name + + # Key and Values are separate for each head for i in range(start, end): cache_names = [ f"past_key_{i}_h{j}{suffix}" for j in range(num_of_past_key_heads) @@ -118,11 +132,27 @@ def get_past_keyval_with_shift( past_key_start: int, num_of_past_key_heads: int = 32, new_key_suffix: str = "", + bundled_kvcache: bool = True, ): """ Clip past key value to feed next iteration """ tg_inputs = {} + if bundled_kvcache: + # Key and Values are concatanated on batch dimension + for i in range(0, len(past_key_vals), 2): + l_num = i // 2 + past_key_num = l_num + past_key_start + tg_inputs[f"past_key_{past_key_num}{new_key_suffix}"] = past_key_vals[i][ + :, :, :, 1: + ].detach() + + tg_inputs[f"past_value_{past_key_num}{new_key_suffix}"] = past_key_vals[ + i + 1 + ][:, :, 1:, :].detach() + return tg_inputs + + # Key and Values separate for each head total_key_val = num_of_past_key_heads * 2 for i in range(0, len(past_key_vals), total_key_val): l_num = i // total_key_val @@ -138,16 +168,34 @@ def get_past_keyval_with_shift( tg_inputs[f"past_value_{past_key_num}_h{j}{new_key_suffix}"] = val[ :, :, 1:, : ].detach() - return tg_inputs def make_torch_compatible_past_key_values( - decode_layers, past_key_val_per_layer, *past_values_flattened + decode_layers: int, + past_key_val_per_layer: int, + bundled_kvcache: bool = True, + *past_values_flattened, ): past_key_values = [] total_past_entries = len(past_values_flattened) + if bundled_kvcache: + # Key and Value are concatanated on batch dimension + if decode_layers * 2 != total_past_entries: + raise RuntimeError( + "Incorrect number of past key-values provided for model." + f"Expecting {decode_layers * 2}, got {total_past_entries}." + ) + + for i in range(0, total_past_entries, 2): + past_key_values.append( + (past_values_flattened[i], past_values_flattened[i + 1]) + ) + return tuple(past_key_values) + + # Key and Value are separate for each head + # past values consists of # 1. k decode/hidden layers # 2. each decode layer has 2 entries: key and value @@ -248,6 +296,7 @@ def get_output_names( start: int = 0, end: int = 8, past_key_val_heads: int = 32, + bundled_kvcache: bool = True, output_name: str = "", ) -> List[str]: # Clipped hidden layers are named same as first part for all parts @@ -256,7 +305,11 @@ def get_output_names( output_list = [output_name if output_name else f"layers_{end - 1}_add_out_0"] output_list += get_past_key_names( - start, end, num_of_past_key_heads=past_key_val_heads, suffix="_out" + start, + end, + num_of_past_key_heads=past_key_val_heads, + bundled_kvcache=bundled_kvcache, + suffix="_out", ) return output_list diff --git a/qai_hub_models/models/aotgan/export.py b/qai_hub_models/models/aotgan/export.py index 5a4f56a6..77108ed0 100644 --- a/qai_hub_models/models/aotgan/export.py +++ b/qai_hub_models/models/aotgan/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/baichuan_7b_quantized/info.yaml b/qai_hub_models/models/baichuan_7b_quantized/info.yaml index ccdd5824..cee1c0d1 100644 --- a/qai_hub_models/models/baichuan_7b_quantized/info.yaml +++ b/qai_hub_models/models/baichuan_7b_quantized/info.yaml @@ -31,7 +31,6 @@ technical_details: Token generator output: 1 output token + KVCache for next iteration Decoding length: 1024 (1 output token + 1023 from KVCache) Use: Initiate conversation with prompt-processor and then token generator for subsequent iterations. - QNN-SDK: "2.19" applicable_scenarios: - Dialogue - Content Generation diff --git a/qai_hub_models/models/controlnet_quantized/info.yaml b/qai_hub_models/models/controlnet_quantized/info.yaml index cefe0707..eb325644 100644 --- a/qai_hub_models/models/controlnet_quantized/info.yaml +++ b/qai_hub_models/models/controlnet_quantized/info.yaml @@ -18,7 +18,6 @@ source_repo: https://github.com/lllyasviel/ControlNet technical_details: Input: Text prompt and input image as a reference Conditioning Input: Canny-Edge - QNN-SDK: '2.19' Text Encoder Number of parameters: 340M UNet Number of parameters: 865M VAE Decoder Number of parameters: 83M diff --git a/qai_hub_models/models/convnext_tiny/export.py b/qai_hub_models/models/convnext_tiny/export.py index fddce04e..8978b685 100644 --- a/qai_hub_models/models/convnext_tiny/export.py +++ b/qai_hub_models/models/convnext_tiny/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/convnext_tiny_w8a16_quantized/export.py b/qai_hub_models/models/convnext_tiny_w8a16_quantized/export.py index d56a5e41..6e8156b7 100644 --- a/qai_hub_models/models/convnext_tiny_w8a16_quantized/export.py +++ b/qai_hub_models/models/convnext_tiny_w8a16_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/convnext_tiny_w8a8_quantized/export.py b/qai_hub_models/models/convnext_tiny_w8a8_quantized/export.py index dd9b7388..528a94d8 100644 --- a/qai_hub_models/models/convnext_tiny_w8a8_quantized/export.py +++ b/qai_hub_models/models/convnext_tiny_w8a8_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/ddrnet23_slim/export.py b/qai_hub_models/models/ddrnet23_slim/export.py index 3fe7edb3..b5bda96e 100644 --- a/qai_hub_models/models/ddrnet23_slim/export.py +++ b/qai_hub_models/models/ddrnet23_slim/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/deeplabv3_plus_mobilenet/export.py b/qai_hub_models/models/deeplabv3_plus_mobilenet/export.py index af4a9fb7..1253dbae 100644 --- a/qai_hub_models/models/deeplabv3_plus_mobilenet/export.py +++ b/qai_hub_models/models/deeplabv3_plus_mobilenet/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/deeplabv3_plus_mobilenet_quantized/export.py b/qai_hub_models/models/deeplabv3_plus_mobilenet_quantized/export.py index 821fa325..40d30e93 100644 --- a/qai_hub_models/models/deeplabv3_plus_mobilenet_quantized/export.py +++ b/qai_hub_models/models/deeplabv3_plus_mobilenet_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/deeplabv3_resnet50/export.py b/qai_hub_models/models/deeplabv3_resnet50/export.py index 7603ea34..0a04fe11 100644 --- a/qai_hub_models/models/deeplabv3_resnet50/export.py +++ b/qai_hub_models/models/deeplabv3_resnet50/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/densenet121/export.py b/qai_hub_models/models/densenet121/export.py index 8137ad46..41e926b9 100644 --- a/qai_hub_models/models/densenet121/export.py +++ b/qai_hub_models/models/densenet121/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/detr_resnet101/export.py b/qai_hub_models/models/detr_resnet101/export.py index 4cc305ef..a81ee5f5 100644 --- a/qai_hub_models/models/detr_resnet101/export.py +++ b/qai_hub_models/models/detr_resnet101/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/detr_resnet101_dc5/export.py b/qai_hub_models/models/detr_resnet101_dc5/export.py index 5fd9e4f8..02992c1f 100644 --- a/qai_hub_models/models/detr_resnet101_dc5/export.py +++ b/qai_hub_models/models/detr_resnet101_dc5/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/detr_resnet50/export.py b/qai_hub_models/models/detr_resnet50/export.py index 12ce5677..832937a9 100644 --- a/qai_hub_models/models/detr_resnet50/export.py +++ b/qai_hub_models/models/detr_resnet50/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/detr_resnet50_dc5/export.py b/qai_hub_models/models/detr_resnet50_dc5/export.py index e568a288..9aae6249 100644 --- a/qai_hub_models/models/detr_resnet50_dc5/export.py +++ b/qai_hub_models/models/detr_resnet50_dc5/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/efficientnet_b0/export.py b/qai_hub_models/models/efficientnet_b0/export.py index e5c3b954..6bbaa963 100644 --- a/qai_hub_models/models/efficientnet_b0/export.py +++ b/qai_hub_models/models/efficientnet_b0/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/esrgan/export.py b/qai_hub_models/models/esrgan/export.py index 7e541aac..c2500bb2 100644 --- a/qai_hub_models/models/esrgan/export.py +++ b/qai_hub_models/models/esrgan/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/fastsam_s/export.py b/qai_hub_models/models/fastsam_s/export.py index 59ad974d..693fa04a 100644 --- a/qai_hub_models/models/fastsam_s/export.py +++ b/qai_hub_models/models/fastsam_s/export.py @@ -174,18 +174,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/fastsam_x/export.py b/qai_hub_models/models/fastsam_x/export.py index 0eeaca7f..1f6d6347 100644 --- a/qai_hub_models/models/fastsam_x/export.py +++ b/qai_hub_models/models/fastsam_x/export.py @@ -174,18 +174,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/fcn_resnet50/export.py b/qai_hub_models/models/fcn_resnet50/export.py index eb8e3b99..dc224c2a 100644 --- a/qai_hub_models/models/fcn_resnet50/export.py +++ b/qai_hub_models/models/fcn_resnet50/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/fcn_resnet50_quantized/export.py b/qai_hub_models/models/fcn_resnet50_quantized/export.py index 8774e973..c924339c 100644 --- a/qai_hub_models/models/fcn_resnet50_quantized/export.py +++ b/qai_hub_models/models/fcn_resnet50_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/ffnet_122ns_lowres/export.py b/qai_hub_models/models/ffnet_122ns_lowres/export.py index 5ea85d8d..0425ca37 100644 --- a/qai_hub_models/models/ffnet_122ns_lowres/export.py +++ b/qai_hub_models/models/ffnet_122ns_lowres/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/ffnet_40s/export.py b/qai_hub_models/models/ffnet_40s/export.py index de8128cd..fa548011 100644 --- a/qai_hub_models/models/ffnet_40s/export.py +++ b/qai_hub_models/models/ffnet_40s/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/ffnet_40s_quantized/export.py b/qai_hub_models/models/ffnet_40s_quantized/export.py index 87492bcb..bd887a0c 100644 --- a/qai_hub_models/models/ffnet_40s_quantized/export.py +++ b/qai_hub_models/models/ffnet_40s_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/ffnet_54s/export.py b/qai_hub_models/models/ffnet_54s/export.py index 88e0590f..6ccbe17b 100644 --- a/qai_hub_models/models/ffnet_54s/export.py +++ b/qai_hub_models/models/ffnet_54s/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/ffnet_54s_quantized/export.py b/qai_hub_models/models/ffnet_54s_quantized/export.py index 5773741a..6f04f1aa 100644 --- a/qai_hub_models/models/ffnet_54s_quantized/export.py +++ b/qai_hub_models/models/ffnet_54s_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/ffnet_78s/export.py b/qai_hub_models/models/ffnet_78s/export.py index 0ac2f10a..b132d494 100644 --- a/qai_hub_models/models/ffnet_78s/export.py +++ b/qai_hub_models/models/ffnet_78s/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/ffnet_78s_lowres/export.py b/qai_hub_models/models/ffnet_78s_lowres/export.py index 29fbea87..37083091 100644 --- a/qai_hub_models/models/ffnet_78s_lowres/export.py +++ b/qai_hub_models/models/ffnet_78s_lowres/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/ffnet_78s_quantized/export.py b/qai_hub_models/models/ffnet_78s_quantized/export.py index 4bab5a5a..8b6958f4 100644 --- a/qai_hub_models/models/ffnet_78s_quantized/export.py +++ b/qai_hub_models/models/ffnet_78s_quantized/export.py @@ -118,10 +118,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -133,7 +129,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -176,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/googlenet/export.py b/qai_hub_models/models/googlenet/export.py index 0c39792e..426e0c40 100644 --- a/qai_hub_models/models/googlenet/export.py +++ b/qai_hub_models/models/googlenet/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/googlenet_quantized/export.py b/qai_hub_models/models/googlenet_quantized/export.py index ffc16499..4e01f6b7 100644 --- a/qai_hub_models/models/googlenet_quantized/export.py +++ b/qai_hub_models/models/googlenet_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/hrnet_pose/export.py b/qai_hub_models/models/hrnet_pose/export.py index 36ef9b84..bb988900 100644 --- a/qai_hub_models/models/hrnet_pose/export.py +++ b/qai_hub_models/models/hrnet_pose/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/hrnet_pose_quantized/export.py b/qai_hub_models/models/hrnet_pose_quantized/export.py index c46f1d0a..4ea15418 100644 --- a/qai_hub_models/models/hrnet_pose_quantized/export.py +++ b/qai_hub_models/models/hrnet_pose_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/huggingface_wavlm_base_plus/export.py b/qai_hub_models/models/huggingface_wavlm_base_plus/export.py index 29893fe3..6975b7b5 100644 --- a/qai_hub_models/models/huggingface_wavlm_base_plus/export.py +++ b/qai_hub_models/models/huggingface_wavlm_base_plus/export.py @@ -171,18 +171,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/inception_v3/export.py b/qai_hub_models/models/inception_v3/export.py index b6a1c6c8..0fcd398e 100644 --- a/qai_hub_models/models/inception_v3/export.py +++ b/qai_hub_models/models/inception_v3/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/inception_v3_quantized/export.py b/qai_hub_models/models/inception_v3_quantized/export.py index b0fa4676..ab81be05 100644 --- a/qai_hub_models/models/inception_v3_quantized/export.py +++ b/qai_hub_models/models/inception_v3_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/lama_dilated/export.py b/qai_hub_models/models/lama_dilated/export.py index 177b4635..21bfde22 100644 --- a/qai_hub_models/models/lama_dilated/export.py +++ b/qai_hub_models/models/lama_dilated/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/litehrnet/export.py b/qai_hub_models/models/litehrnet/export.py index 0177897d..6b9aa5bd 100644 --- a/qai_hub_models/models/litehrnet/export.py +++ b/qai_hub_models/models/litehrnet/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/README.md b/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/README.md new file mode 100644 index 00000000..c9ae148b --- /dev/null +++ b/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/README.md @@ -0,0 +1,211 @@ +# Generating Genie-compatible QNN binaries from AI Hub + +In this tutorial we will show how an end to end workflow of deploying HuggingFace Llama2 7b model to run on Snapdragon® platform such as Snapdragon® 8 Gen 2 (e.g., Samsung Galaxy S23 family) and 8 Gen 3 chipset (e.g., Samsung Galaxy S24 family) and Snapdragon® X (e.g. Snapdragon® based Microsoft Surface Pro). Windows platform must have at least 16GB memory. + +## Overview + +On x86 Linux host PC +1. Get access to [llama2 weights from huggingface](https://huggingface.co/meta-llama/Llama-2-7b-chat-hf]) +2. Use Qualcomm AI Hub Model to split model into 8 parts (4 Prompt Processor, 4 Token Generator) +3. Use Qualcomm AI Hub Compile ONNX model with quantization encoding to shared model library +4. Install [QNN SDK](https://qpm.qualcomm.com/main/tools/details/qualcomm_ai_engine_direct) +5. Convert Prompt processor and Token generator library into weight shared QNN context binary to be run on Genie, an on-device app for running LLMs on Snapdragon® platform +6. Push assets required by Genie from x86 Linux host to device + +On Android / Windows PC with Snapdragon® platform +7. Run Genie on device with an example prompt + +Note that because this is a large model, it may take over 2-3 hours to generate required assets. +This is an early preview. We're working on simplifying the workflow. + +If you have more questions, please feel free to post on [AI Hub slack channel](https://aihub.qualcomm.com/community/slack) + +## Requirements + +1. x86 Linux host (We tested on Ubuntu 22.04) +2. [QNN SDK](https://qpm.qualcomm.com/main/tools/details/qualcomm_ai_engine_direct) +3. [qai-hub-models](https://pypi.org/project/qai-hub-models/) +4. [qai-hub](https://pypi.org/project/qai-hub/) + +## 1. Generate Genie compatible QNN binaries from AI Hub + +### Set up virtual envs + +On x86 Linux host (e.g., Ubuntu 22.04), we will create two virtual envs. One +for qai-hub-models, and the other for QNN SDK. This is to avoid conflict in +dependency requirements between the two. We recommend a +[virtualenv](https://virtualenv.pypa.io/en/latest/) with +python3.10, but +[conda](https://conda.io/projects/conda/en/latest/user-guide/install/index.html) works as well. + +For clarity, we recommend using two shell sessions, one for each venv. + +``` +# In shell session 1 (Hub Model) +python3.10 -m venv hub_model +``` +``` +# In shell session 2 (QNN) +python3.10 -m venv qnn +``` + +### Export Llama model via AI Hub Models + +In shell session 1, install `qai-hub-models` under `hub_model` virtual env + +```bash +source hub_model/bin/activate +pip install "qai_hub_models[llama-v2-7b-chat-quantized]>=0.12.0" +``` + +Ensure at least 40GB of memory (RAM + swap). On Ubuntu you can check it by + +``` +free -h +``` + +Increase swap size if needed. + +We use +[qai-hub-models](https://github.com/quic/ai-hub-models/tree/main/qai_hub_models/) +to adapt Huggingface Llama models for on-device inference. + +```bash +# In shell session 1 +python -m qai_hub_models.models.llama_v2_7b_chat_quantized.export --skip-downloading --skip-profiling --skip-inferencing +``` + +This can take a few hours to complete. Once finished, you should see something +like + +**Sample output** +```bash +... +output of export.py +... +Run compiled models on a hosted device on sample data using: +python qai_hub_models/models/llama_v2_7b_chat_quantized/demo.py --on-device --hub-model-id {comma-separated-model-ids} --device {device} +``` + +Please note down `{comma-separated-model-ids}` portion for next steps. + +Also visit the compilation job on Hub to find the QNN version used on AI Hub. +We'll need to use the same QNN version in the next steps. + +### Generate Genie-compatible QNN binaries + +Unless specified otherwise, this section will happen in shell session 2. + +Install [QNN +SDK](https://qpm.qualcomm.com/main/tools/details/qualcomm_ai_engine_direct) +QNN version matching AI Hub's (which is 2.25 as of 2024-9-5) for x86 Linux host. Note that the first time after log in you would be redirected +to qpm home page. Click on the link again to get to QNN download page. + +If successful, you'd see message like + +``` +SUCCESS: Installed qualcomm_ai_engine_direct.Core at /opt/qcom/aistack/qairt/2.25.0.240728 +``` + +Record `/opt/qcom/aistack/qairt/2.26.1.240828` path and set it as +`$QNN_SDK_ROOT` + +``` +export QNN_SDK_ROOT=/opt/qcom/aistack/qairt/2.25.0.240728 +``` + +Now, install python dependency for QNN converter in `qnn` virtual env + +```bash +source qnn/bin/activate +pip install -r requirements.txt +``` + +Setup required environment variables via + +``` +source ${QNN_SDK_ROOT}/bin/envsetup.sh +``` + +(Optional) See [QNN +doc](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-2/setup.html?product=1601111740010412) for more details + + + +Use `gen_ondevice_llama.py` to generate genie-compatible QNN binaries. Make +sure you have 130GB or more of disk space available before running. + +Please run following to get information about all the options: + +```bash +python gen_ondevice_llama.py -h +``` + +For example, to generate Genie-compatible binary and bundle: + +(a) For Snapdragon® 8 Gen 3 Android device: + +```bash +python gen_ondevice_llama.py --hub-model-id --output-dir ./export --tokenizer-zip-path ./tokenizer.zip --target-gen snapdragon-gen3 --target-os android +``` + +(b) For Windows with Snapdragon® X Elite + +```bash +python gen_ondevice_llama.py --hub-model-id --output-dir ./export --tokenizer-zip-path ./tokenizer.zip --target-gen snapdragon-gen2 --target-os windows +``` + +The commands above may take over 15 mins to finish. + +## 2. Running generated QNN binaries on-device + +### Copy generated assets to target device + +1. Copy content from `export/shared_bin_{target_gen}` to device which includes + - 4 binaries with each binary having two graph sharing weights + - htp configuration + - genie configuration + - all required libraries copied from QNN SDK + +### Run Genie on Windows devices with Snapdragon® X + +In Powershell, navigate to the directory containing the above contents and run + +``` +.\genie-t2t-run -c htp-model-config-llama2-7b.json -p "<>\nYou are a helpful AI assistant.<>\n\n[INST] have we been to Mars? [/INST]" +``` + +See below for sample outputs. + +### Run Genie on Android devices with Snapdragon® 8 Gen 2 and Gen 3 + +Set `LD_LIBRARY_PATH` to directory content from 1. copied into + +```bash +export LD_LIBRARY_PATH= +``` + +Input prompt for genie requires tags similar to source llama2 model and must follow similar pattern for better results + +```text +<>\nYou are a helpful AI assistant.<>\n\n[INST] have we been to the Mars? [/INST] +``` + +```bash +# Optional: connect to device (e.g. adb shell) +cd {parent dir of genie binary} +./genie-t2t-run -c htp-model-config-llama2-7b.json -p "<>\nYou are a helpful AI assistant.<>\n\n[INST] have we been to Mars? [/INST]" +``` + +**Sample output** + +```text +130|e2q:/data/local/tmp/llama2 $ ./genie-t2t-run -c htp-model-config-llama2-7b.json -p "<>\nYou are a helpful AI assistant.<>\n\n[INST] have we been to Mars? [/INST]" +Using libGenie.so version 1.0.0 + +[WARN] "Unable to initialize logging in backend extensions." +[INFO] "Allocated total size = 431294976 across 8 buffers" +[PROMPT]: <>\nYou are a helpful AI assistant.<>\n\n[INST] have we been to Mars? [/INST] + +[BEGIN]: As a helpful AI assistant, I can tell you that humans have not yet visited Mars.Ћ However, there have been several robotic missions to Mars, including NASA's Curiosity rover, which has been exploring the planet since 2012. These missions have helped scientists learn more about the Martian environment and geology, and have provided valuable insights into the potential habitability of the planet. +``` diff --git a/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/__init__.py b/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/__init__.py new file mode 100644 index 00000000..21a22b31 --- /dev/null +++ b/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/__init__.py @@ -0,0 +1,4 @@ +# --------------------------------------------------------------------- +# Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. +# SPDX-License-Identifier: BSD-3-Clause +# --------------------------------------------------------------------- diff --git a/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/gen_ondevice_llama.py b/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/gen_ondevice_llama.py new file mode 100644 index 00000000..c989de49 --- /dev/null +++ b/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/gen_ondevice_llama.py @@ -0,0 +1,67 @@ +# --------------------------------------------------------------------- +# Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. +# SPDX-License-Identifier: BSD-3-Clause +# --------------------------------------------------------------------- +import argparse + +from utils import generate_shared_bins + + +def main(): + parser = argparse.ArgumentParser( + prog="AI-Hub-QNN-Bin-Generator", + description="Converts AI Hub model to weight shared QNN bins for llama family models.", + ) + + parser.add_argument( + "--hub-model-id", + type=str, + required=True, + help="Provide comma separated model-ids provided by export.py" + " Expects comma separated 8 model-ids (first four prompt processor, last four token generator).", + ) + parser.add_argument( + "--output-dir", + type=str, + required=True, + help="Output directory to emit shared binaries, intermediate data.", + ) + parser.add_argument( + "--tokenizer-zip-path", + type=str, + required=True, + help="Output tokenizer zip path.", + ) + parser.add_argument( + "--target-gen", + type=str, + default="snapdragon-gen3", + choices=["snapdragon-gen2", "snapdragon-gen3"], + help="Snapdragon generation to target QNN binaries to. Valid options: snapdragon-gen2 or snapdragon-gen3.", + ) + parser.add_argument( + "--target-os", + type=str, + default="android", + choices=["android", "windows"], + help="Target Operating System to prepare app to run on.", + ) + + args = parser.parse_args() + output_dir = args.output_dir + model_ids = args.hub_model_id.split(",") + if len(model_ids) != 8: + raise RuntimeError( + f"Expecting 8 model-ids of target models produced by AI Hub. Got {len(model_ids)}." + ) + + num_of_splits = len(model_ids) // 2 + model_ids = {"pp": model_ids[:num_of_splits], "tg": model_ids[num_of_splits:]} + + generate_shared_bins( + output_dir, model_ids, args.tokenizer_zip_path, args.target_gen, args.target_os + ) + + +if __name__ == "__main__": + main() diff --git a/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/requirements.txt b/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/requirements.txt new file mode 100644 index 00000000..94f99690 --- /dev/null +++ b/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/requirements.txt @@ -0,0 +1,6 @@ +--extra-index-url https://download.pytorch.org/whl/cpu +torch==1.13.1+cpu +qai-hub +onnx==1.16.0 +pyyaml +pandas diff --git a/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/tokenizer.zip b/qai_hub_models/models/llama_v2_7b_chat_quantized/gen_ondevice_llama/tokenizer.zip new file mode 100644 index 0000000000000000000000000000000000000000..daabe780d5e6596ad50c21e65e759d23156807c1 GIT binary patch literal 487922 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ʨvb2BSx1JWMlQfg(c2Frwz>?K-% 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

!Jkya`rX>n32XMhAn%)32w`in`o<8&K4 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

rJhx|UvdBCG}-;}N@cw?>k6 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 Jh;au1003 Dict[str, List[np.ndarray]]: + inputs = h5f["data"] + assert isinstance(inputs, h5py.Group) + + # Determine number of inputs & initialize array with that length + input_datas: List[Tuple[str, List[np.ndarray]]] = [("", [])] * len(inputs) + num_batches = 0 + + # Generate a Feature for each input + for input_index, input_id in enumerate(inputs): + # Get Data + all_batches = inputs[input_id] + assert isinstance(all_batches, h5py.Group) + + # Get Name + feature_name = all_batches.attrs["name"] + assert isinstance(feature_name, str) + + # Convert Data to Numpy Array + feature_data = _h5_data_to_np_array(all_batches) + if num_batches == 0: + num_batches = len(feature_data) + elif len(feature_data) != num_batches: + raise ValueError( + f"Dataset feature {feature_data} has {str(len(feature_data))} features, but previous batches have {str(num_batches)} features." + ) + + # Insert into feature mapping with correct order + order = all_batches.attrs.get("order") + if order is None: + order = input_index + input_datas[order] = (feature_name, feature_data) + + return {k: v for k, v in input_datas} + + +def _make_qnn_inputs(output_dir: str, input_values: Dict[str, List[np.ndarray]]) -> str: + """ + Save np values to files and create input_list file for qnn program to + consume via --input_list + + Args: + - input_values: ordered named inputs in np array (dtype matters) + + Returns + - input_list_path: path to use for --input_list in qnn prorams + """ + input_list_path = os.path.join(output_dir, "input_list.txt") + with open(input_list_path, "w") as f: + for sample_idx, sample in enumerate(zip(*input_values.values())): + name_path_pairs = {} + for i, (name, np_val) in enumerate(zip(input_values.keys(), sample)): + val_path = os.path.join(output_dir, f"inputs{sample_idx}_{i}.raw") + np_val.tofile(val_path) + name_path_pairs[name] = val_path + line = " ".join(f"{name}:={path}" for name, path in name_path_pairs.items()) + print(line, file=f) + return input_list_path + + +def _prepare_input_dim_dtype_args( + input_shapes: Dict[str, Tuple[Tuple[int, ...], str]] +) -> List[str]: + input_dim_args = [] + input_dtype_args = [] + for key, (shape, dtype) in input_shapes.items(): + input_dim_args += [ + "--input_dim", + key, + ",".join(str(x) for x in shape), + ] + input_dtype_args += [ + "--input_dtype", + key, + dtype, + ] + return input_dim_args + input_dtype_args + + +def _prepare_data_input_args( + output_dir: str, + input_shapes: List[Tuple[str, Tuple[Tuple[int, ...], str]]], + calibration_dataset_path: str | None, +) -> List[str]: + bitwidth_args = [ + "--bias_bitwidth", + "32", + "--weight_bw", + "8", + "--act_bitwidth", + "16", + ] + + # Ref: build/third_party/qnn_sdk/universal/docs/QNN/general/quantization.html#quantizing-a-model + input_values: Dict[str, List[np.ndarray]] + + calibration_dataset = h5py.File(calibration_dataset_path) + + input_values = _h5_dataset_to_dict(calibration_dataset) + input_names_dataset = input_values.keys() + for i, (name, np_list) in enumerate(input_values.items()): + if name not in input_names_dataset: + raise RuntimeError( + f"Model defines input '{name}', but the calibration dataset does not define that input." + ) + shape_tuple = input_shapes[i][1][0] + for j, t in enumerate(np_list): + if t.shape != shape_tuple: + raise RuntimeError( + f"Input {name} batch {j} has shape " + + f"{t.shape}. Expect: {shape_tuple}" + ) + + input_list_path = _make_qnn_inputs(output_dir, input_values) + + # input shape args + input_shapes_dict = {name: shapetype for name, shapetype in input_shapes} + input_dim_dtype_args = _prepare_input_dim_dtype_args(input_shapes_dict) + + data_input_args = ( + [ + "--input_list", + input_list_path, + ] + + input_dim_dtype_args + + bitwidth_args + ) + return data_input_args + + +def _extract_shapes_from_onnx_list( + tensor_list: Iterable[onnx.ValueInfoProto], +) -> List[Tuple[str, Tuple[Tuple[int, ...], str]]]: + """ + Extracts the shapes from an ONNX model and return a dictionary of input + shapes. + """ + shapes = [] + for x in tensor_list: + dtype = x.type.tensor_type.elem_type + dtype_name = onnx.helper.tensor_dtype_to_np_dtype(dtype).name + shape = tuple( + [ + d.dim_value if d.HasField("dim_value") else -1 + for d in x.type.tensor_type.shape.dim + ] + ) + shapes.append((x.name, (shape, dtype_name))) + return shapes + + +def _get_preserve_io_args( + input_shapes: List[Tuple[str, Tuple[Tuple[int, ...], str]]], + output_shapes: List[Tuple[str, Tuple[Tuple[int, ...], str]]], +) -> List[str]: + preserve_io = [] + for key, _ in input_shapes: + preserve_io.append(key) + + input_layout_other_args = [] + for key, (shape, dtype) in input_shapes: + if key in preserve_io and 3 <= len(shape) <= 5: + input_layout_other_args += ["--input_layout", key, "NONTRIVIAL"] + + for key, _ in output_shapes: + preserve_io.append(key) + + preserve_io_args = [] + if preserve_io: + preserve_io_args = ["--preserve_io", "layout"] + preserve_io + + return preserve_io_args + input_layout_other_args + + +def generate_lib( + onnx_model_path: str, + encoding_file_path: str, + dataset_path: str, + cpp_bin_dir: str, + out_lib_path: str, +): + target_arch = "x86_64-linux-clang" + model_name = str(Path(os.path.basename(onnx_model_path)).with_suffix("")) + + onnx_model = onnx.load_model(onnx_model_path) + model_input_shapes = _extract_shapes_from_onnx_list(onnx_model.graph.input) + model_output_shapes = _extract_shapes_from_onnx_list(onnx_model.graph.output) + + dataset_dir = os.path.join(str(Path(dataset_path).with_suffix("")), "_data") + print(dataset_path, dataset_dir) + os.makedirs(dataset_dir, exist_ok=True) + data_input_args = _prepare_data_input_args( + output_dir=str(dataset_dir), + input_shapes=model_input_shapes, + calibration_dataset_path=dataset_path, + ) + + preserve_io_args = _get_preserve_io_args(model_input_shapes, model_output_shapes) + + intermediate_cpp_file = str(os.path.join(cpp_bin_dir, f"{model_name}.cpp")) + intermediate_bin_file = str(os.path.join(cpp_bin_dir, f"{model_name}.bin")) + args = [ + QNN_SDK_ROOT + "/bin/x86_64-linux-clang/qnn-onnx-converter", + "--input_network", + onnx_model_path, + "--output_path", + intermediate_cpp_file, + "--no_simplification", + "--quantization_overrides", + encoding_file_path, + ] + args += preserve_io_args + args += data_input_args + print(" ".join(args)) + + subprocess.run(args, env=env) + + print("Generating model lib...") + args = [ + QNN_SDK_ROOT + "/bin/x86_64-linux-clang/qnn-model-lib-generator", + "-c", + intermediate_cpp_file, + "-b", + intermediate_bin_file, + "-t", + target_arch, + "-o", + os.path.dirname(out_lib_path), + "-l", + model_name, + ] + + print(" ".join(args)) + subprocess.run(args, env=env) + + output_file = f"{os.path.dirname(out_lib_path)}/{target_arch}/lib{model_name}.so" + + if not os.path.exists(output_file): + raise RuntimeError("The QNN graph compiler did not produce the output file") + + shutil.copyfile(output_file, out_lib_path) + + +def _generate_and_save_htp_config(target_gen: str, output_dir: str): + soc_id = SOC_ID_FROM_GEN[target_gen] + dsp_arch = DSP_ARCH_FROM_GEN[target_gen] + + # HTP backend config file (htp_backend_ext_config.json) example + htp_backend_ext_config_data = { + "devices": [ + { + "soc_id": soc_id, + "dsp_arch": dsp_arch, + "cores": [ + {"core_id": 0, "perf_profile": "burst", "rpc_control_latency": 100} + ], + } + ], + "memory": {"mem_type": "shared_buffer"}, + "context": {"weight_sharing_enabled": True}, + } + + # write the htp config file to the destination + with open(os.path.join(output_dir, "htp_backend_ext_config.json"), "w") as f: + f.write(json.dumps(htp_backend_ext_config_data, indent=4)) + + +def _generate_and_save_genie_config( + model: str, output_dir: str, bin_names: List[str], use_mmap: bool = True +): + + if model != "llama2": + raise RuntimeError("Only Llama2 Genie config is supported.") + + genie_config = { + "dialog": { + "version": 1, + "type": "basic", + "context": { + "version": 1, + "size": CONTEXT_LEN, + "n-vocab": 32000, + "bos-token": 1, + "eos-token": 2, + }, + "sampler": { + "version": 1, + "seed": 42, + "temp": 0.8, + "top-k": 40, + "top-p": 0.95, + }, + "tokenizer": {"version": 1, "path": "tokenizer.json"}, + "engine": { + "version": 1, + "n-threads": 4, + "backend": { + "version": 1, + "type": "QnnHtp", + "QnnHtp": { + "version": 1, + "spill-fill-bufsize": 15000000000, + "use-mmap": use_mmap, + "mmap-budget": 0, + "poll": True, + "pos-id-dim": 64, + "cpu-mask": "0xe0", + "kv-dim": 128, + }, + "extensions": "htp_backend_ext_config.json", + }, + "model": { + "version": 1, + "type": "binary", + "binary": {"version": 1, "ctx-bins": bin_names}, + }, + }, + } + } + + with open(os.path.join(output_dir, "htp-model-config-llama2-7b.json"), "w") as f: + f.write(json.dumps(genie_config, indent=4)) + + +def generate_bin( + output_dir: str, + output_name: str, + graph_names: List[str], + qnn_lib_paths: List[str], + target_gen: str, +): + htp_backend_extensions_data = { + "backend_extensions": { + "shared_library_path": "libQnnHtpNetRunExtensions.so", + "config_file_path": "/tmp/htp_config.json", + }, + } + + with open("/tmp/htp_backend_extensions.json", "w") as f: + f.write(json.dumps(htp_backend_extensions_data, indent=4)) + + # Make sure the graph names matches the names used in calling + # `qnn-onnx-converter -o /path/to/.cpp` + if len(graph_names) != len(qnn_lib_paths): + raise RuntimeError("Graph names must match provided QNN libs.") + + htp_backend_config_data = { + "graphs": [ + { + "graph_names": graph_names, + "fp16_relaxed_precision": 1, + "vtcm_mb": 0, + "O": 3, + } + ], + "devices": [ + { + "dsp_arch": DSP_ARCH_FROM_GEN[target_gen], + "soc_model": SOC_ID_FROM_GEN[target_gen], + } + ], + "memory": {"mem_type": "shared_buffer"}, + "context": {"weight_sharing_enabled": True}, + } + if len(qnn_lib_paths) > 1: + # This is the key to generating QNN context binary with shared weights + htp_backend_config_data["context"] = { + "weight_sharing_enabled": True, + } + + with open("/tmp/htp_config.json", "w") as f: + f.write(json.dumps(htp_backend_config_data, indent=4)) + + model_so_paths = ",".join(qnn_lib_paths) + args = [ + QNN_SDK_ROOT + "/bin/x86_64-linux-clang/qnn-context-binary-generator", + "--model", + f"{model_so_paths}", + "--backend", + "libQnnHtp.so", + "--output_dir", + output_dir, + "--binary_file", + output_name, + "--config_file", + "/tmp/htp_backend_extensions.json", + ] + print(" ".join(args)) + + proc = subprocess.Popen( + args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env + ) + output, error = proc.communicate() + print(output.decode(), error.decode()) + + +def _copy_genie_bin(target_os_sdk_name: str, shared_bins_dir: str): + genie_file_path = os.path.join( + QNN_SDK_ROOT, + "bin", + target_os_sdk_name, + "genie-t2t-run.exe" if "windows" in target_os_sdk_name else "genie-t2t-run", + ) + out_file_name = os.path.basename(genie_file_path) + shutil.copyfile(str(genie_file_path), os.path.join(shared_bins_dir, out_file_name)) + + +def _copy_target_libs(target_gen: str, target_os_sdk_name: str, shared_bins_dir: str): + # Copy hexgaon-v* libs first + lib_dir = os.path.join( + QNN_SDK_ROOT, "lib", f"hexagon-{DSP_ARCH_FROM_GEN[target_gen]}", "unsigned" + ) + for f in os.listdir(lib_dir): + shutil.copyfile(str(os.path.join(lib_dir, f)), os.path.join(shared_bins_dir, f)) + + # Copy target os libs + lib_dir = os.path.join(QNN_SDK_ROOT, "lib", target_os_sdk_name) + for f in os.listdir(lib_dir): + shutil.copyfile(str(os.path.join(lib_dir, f)), os.path.join(shared_bins_dir, f)) + + +def _copy_tokenizer(tokenizer_path: str, shared_bins_dir: str): + with zipfile.ZipFile(tokenizer_path, "r") as zip_ref: + zip_ref.extractall(shared_bins_dir) + + +def generate_shared_bins( + output_dir: str, + model_ids: str, + tokenizer_zip_path: str, + target_gen: str, + target_os_type: str, +): + in_model_dir = str(os.path.join(output_dir, "intermediate_data", "input_models")) + os.makedirs(in_model_dir, exist_ok=True) + + cpp_model_dir = str(os.path.join(output_dir, "intermediate_data", "cpp_models")) + os.makedirs(cpp_model_dir, exist_ok=True) + + model_dir = str(os.path.join(output_dir, "intermediate_data", "model_libs")) + os.makedirs(model_dir, exist_ok=True) + + inter_input_data = str(os.path.join(output_dir, "intermediate_data", "input_data")) + os.makedirs(inter_input_data, exist_ok=True) + + shared_bins_dir = str( + os.path.join(output_dir, f"shared_bins_{target_gen}_{target_os_type}") + ) + os.makedirs(shared_bins_dir, exist_ok=True) + + num_of_splits = len(model_ids["pp"]) + serialized_output_names = [f"llama2_{i}.serialized" for i in range(num_of_splits)] + for i in range(num_of_splits): + graph_names = [] + model_so_list = [] + for model_type in ["pp", "tg"]: + input_data_path = f"{inter_input_data}/data_{model_type}_{i}.h5" + input_model_zip = f"{in_model_dir}/model_{model_type}_{i}.aimet.zip" + extracted_model_path = f"{in_model_dir}/model_{model_type}_{i}" + model_so = f"{model_dir}/model_{model_type}_{i}.so" + + model = model_ids[model_type][i] + job = hub.get_model(model).producer + + graph_names.append(job.model.name.split(".")[0]) + model_so_list.append(model_so) + + if os.path.exists(model_so): + print(f"{model_so} exists. Skipping compilation...") + continue + + if not os.path.exists(input_data_path): + job.calibration_dataset.download(input_data_path) + + if ( + os.path.exists(extracted_model_path) + and len(os.listdir(extracted_model_path)) == 1 + ): + print("Using previously extracted model") + extracted_model_path = ( + f"{extracted_model_path}/{os.listdir(extracted_model_path)[0]}" + ) + else: + if not os.path.exists(input_model_zip): + job.model.download(input_model_zip) + + print("Extracting model") + extracted_model_path = unzip_model( + input_model_zip, extracted_model_path + ) + + input_names = [] + for name, shape_info in job.shapes.items(): + name_shape_type = (name, (shape_info[0], shape_info[1])) + input_names.append(name_shape_type) + + onnx_model_path = None + encoding_file_path = None + for f_name in os.listdir(extracted_model_path): + if f_name.endswith(".onnx"): + onnx_model_path = str(os.path.join(extracted_model_path, f_name)) + elif f_name.endswith(".encodings"): + encoding_file_path = str(os.path.join(extracted_model_path, f_name)) + + if onnx_model_path is None or encoding_file_path is None: + raise RuntimeError("ONNX model or encoding not found.") + + print(f"Generating model lib for split-{i} {model_type}") + generate_lib( + onnx_model_path, + encoding_file_path, + input_data_path, + cpp_model_dir, + model_so, + ) + + print(f"Generating weight shared qnn-bin for split-{i}") + generate_bin( + output_dir=shared_bins_dir, + output_name=serialized_output_names[i], + graph_names=graph_names, + qnn_lib_paths=model_so_list, + target_gen=target_gen, + ) + + # Copy htp config and genie config in output directory + _generate_and_save_htp_config(target_gen, output_dir=shared_bins_dir) + # Mmap is not supported on Windows + use_mmap = target_os_type == "android" + _generate_and_save_genie_config( + model="llama2", + output_dir=shared_bins_dir, + bin_names=[f"{name}.bin" for name in serialized_output_names], + use_mmap=use_mmap, + ) + target_os_sdk_name = TARGET_OS_SDK_NAME[target_os_type] + _copy_genie_bin(target_os_sdk_name, shared_bins_dir) + _copy_target_libs(target_gen, target_os_sdk_name, shared_bins_dir) + _copy_tokenizer(tokenizer_zip_path, shared_bins_dir) + + print("Genie compatible qnn binary generated.") + print( + f"Please copy binaries, htp and genie configuration from {shared_bins_dir} on target {target_gen} device." + ) diff --git a/qai_hub_models/models/llama_v2_7b_chat_quantized/model.py b/qai_hub_models/models/llama_v2_7b_chat_quantized/model.py index 9d3d5783..6c15ff8e 100644 --- a/qai_hub_models/models/llama_v2_7b_chat_quantized/model.py +++ b/qai_hub_models/models/llama_v2_7b_chat_quantized/model.py @@ -47,7 +47,7 @@ MODEL_ID = __name__.split(".")[-2] -MODEL_ASSET_VERSION = 7 +MODEL_ASSET_VERSION = 8 # Configs AIMET_ENCODINGS_PREFIX = "config" @@ -98,7 +98,7 @@ def _get_intermediate_logit_name(split_part): if split_part == 1: return "input_ids" start_layer_num = MODEL_SPLIT_MAP[split_part][0] - return f"layers_{start_layer_num-1}_add_out_0" + return f"layers_{start_layer_num - 1}_add_out_0" def get_input_prompt_with_tags( @@ -180,6 +180,7 @@ def __init__( config.use_conv = True config.mask_neg = -100 config.split_model = split_part + config.concat_head_in_batch_dimension = True if split_part < 1 or split_part > 4: raise RuntimeError( @@ -268,7 +269,7 @@ def forward_token_generator( *past_key_values, ): past_key_values_tuple = make_torch_compatible_past_key_values( - self.total_hidden_layers, 32, *past_key_values + self.total_hidden_layers, 32, True, *past_key_values ) return self.model( input_ids, @@ -861,12 +862,12 @@ def get_input_spec( for past_key_val in past_key_val_names: if "key" in past_key_val: input_spec[past_key_val] = ( - (1, 1, 128, input_seq_length - 1), + (32, 1, 128, input_seq_length - 1), "float32", ) else: input_spec[past_key_val] = ( - (1, 1, input_seq_length - 1, 128), + (32, 1, input_seq_length - 1, 128), "float32", ) return input_spec @@ -951,6 +952,7 @@ def get_model_data(input_seq_len: int = DEFAULT_INPUT_SEQ_LEN): layers_start, _ = get_hidden_layer_range_from_split( split_part=1, model_split_map=MODEL_SPLIT_MAP ) + key_val = get_past_keyval_with_shift( output[1:], layers_start, NUM_KEY_VAL_HEADS, new_key_suffix="_in" ) @@ -1051,12 +1053,12 @@ def get_input_spec( for past_key_val in past_key_val_names: if "key" in past_key_val: input_spec[past_key_val] = ( - (1, 1, 128, input_seq_length - 1), + (32, 1, 128, input_seq_length - 1), "float32", ) else: input_spec[past_key_val] = ( - (1, 1, input_seq_length - 1, 128), + (32, 1, input_seq_length - 1, 128), "float32", ) return input_spec @@ -1209,12 +1211,12 @@ def get_input_spec( for past_key_val in past_key_val_names: if "key" in past_key_val: input_spec[past_key_val] = ( - (1, 1, 128, input_seq_length - 1), + (32, 1, 128, input_seq_length - 1), "float32", ) else: input_spec[past_key_val] = ( - (1, 1, input_seq_length - 1, 128), + (32, 1, input_seq_length - 1, 128), "float32", ) return input_spec @@ -1367,12 +1369,12 @@ def get_input_spec( for past_key_val in past_key_val_names: if "key" in past_key_val: input_spec[past_key_val] = ( - (1, 1, 128, input_seq_length - 1), + (32, 1, 128, input_seq_length - 1), "float32", ) else: input_spec[past_key_val] = ( - (1, 1, input_seq_length - 1, 128), + (32, 1, input_seq_length - 1, 128), "float32", ) return input_spec diff --git a/qai_hub_models/models/llama_v2_7b_chat_quantized/modeling_llama.py b/qai_hub_models/models/llama_v2_7b_chat_quantized/modeling_llama.py index 3c8c0ec3..a36af2fc 100644 --- a/qai_hub_models/models/llama_v2_7b_chat_quantized/modeling_llama.py +++ b/qai_hub_models/models/llama_v2_7b_chat_quantized/modeling_llama.py @@ -220,6 +220,19 @@ def apply_rope_single(x, rope_vals: Tuple[torch.Tensor, torch.Tensor]): return x +# Add Concat Module for AIMET encoding consumption +class Concat(nn.Module): + """Concat module for a functional concat""" + + def __init__(self, axis: int = 0): + super().__init__() + self._axis = axis + + def forward(self, *x) -> torch.Tensor: + """Forward-pass routine for cat op""" + return torch.cat(x, dim=self._axis) + + ### ------- QCOM EDITS ENDS ------- ### @@ -270,7 +283,7 @@ def forward_conv(self, x): return x - ### ------- QCOM EDITS ENDS ------- ### + ### ------- QCOM EDITS ENDS ------- ### def forward(self, x): return self.down_proj(self.act_fn(self.gate_proj(x)) * self.up_proj(x)) @@ -314,8 +327,12 @@ def __init__(self, config: LlamaConfig): if hasattr(config, "return_new_key_value_only") else False ) - - ### ------- QCOM EDITS ENDS ------- ### + self.concat_head_in_batch_dimension = ( + config.concat_head_in_batch_dimension + if hasattr(config, "concat_head_in_batch_dimension") + else False + ) + ### ------- QCOM EDITS ENDS ------- ### def _shape(self, tensor: torch.Tensor, seq_len: int, bsz: int): return ( @@ -348,6 +365,9 @@ def prepare_sha(self): self.o_proj_conv = nn.Conv2d( self.num_heads * self.head_dim, self.hidden_size, 1, bias=False ) + self.cache_cat = nn.ModuleList( + [Concat(0) for _ in range(2)] + ) # 2: (key,value) self.forward_mha = self.forward self.forward = self.forward_sha @@ -397,7 +417,7 @@ def forward_sha( kv_seq_len = value_states[0].shape[-2] if past_key_value is not None: - kv_seq_len += past_key_value[1][0].shape[-2] + kv_seq_len += past_key_value[1].shape[-2] if isinstance(position_ids, (tuple, list)): rope_embedding = position_ids @@ -420,10 +440,25 @@ def forward_sha( present_key_value = ( (tuple(key_states), tuple(value_states)) if use_cache else None ) + if self.concat_head_in_batch_dimension: + present_key_value = ( + tuple( + cat(*present) + for cat, present in zip(self.cache_cat, present_key_value) + ) + if use_cache + else None + ) if past_key_value is not None: # reuse k, v, self_attention - past_key, past_value = past_key_value + if self.concat_head_in_batch_dimension: + past_key, past_value = [ + [past[head : head + 1, ...] for head in range(self.num_heads)] + for past in past_key_value + ] + else: + past_key, past_value = past_key_value key_states = [ torch.cat([pk, k], dim=3) for pk, k in zip(past_key, key_states) ] @@ -477,7 +512,11 @@ def forward_sha( if not output_attentions: attn_weights = None - return attn_output, attn_weights, present_key_value + return ( + attn_output, + attn_weights, + present_key_value if self.return_new_key_value_only else past_key_value, + ) ### ------- QCOM EDITS ENDS ------- ### @@ -510,7 +549,7 @@ def forward( kv_seq_len = key_states.shape[-2] if past_key_value is not None: - kv_seq_len += past_key_value[0].shape[-2] + kv_seq_len += past_key_value[1].shape[-2] if isinstance(position_ids, (tuple, list)): rope_embedding = position_ids @@ -523,16 +562,29 @@ def forward( ) # [bsz, nh, t, hd] + if self.config.transposed_key_cache: + key_states = key_states.transpose(2, 3) + + if self.return_new_key_value_only: + present_key_value = (key_states, value_states) if use_cache else None + if past_key_value is not None: # reuse k, v, self_attention - key_states = torch.cat([past_key_value[0], key_states], dim=2) + dim = 3 if self.config.transposed_key_cache else 2 + key_states = torch.cat([past_key_value[0], key_states], dim=dim) value_states = torch.cat([past_key_value[1], value_states], dim=2) - past_key_value = (key_states, value_states) if use_cache else None + if not self.return_new_key_value_only: + present_key_value = (key_states, value_states) if use_cache else None - attn_weights = torch.matmul( - query_states, key_states.transpose(2, 3) - ) / math.sqrt(self.head_dim) + if self.config.transposed_key_cache: + attn_weights = torch.matmul(query_states, key_states) / math.sqrt( + self.head_dim + ) + else: + attn_weights = torch.matmul( + query_states, key_states.transpose(2, 3) + ) / math.sqrt(self.head_dim) if attn_weights.size() != (bsz, self.num_heads, q_len, kv_seq_len): raise ValueError( @@ -560,14 +612,18 @@ def forward( ) attn_output = attn_output.transpose(1, 2) - attn_output = attn_output.reshape(bsz, q_len, self.hidden_size) + attn_output = attn_output.reshape(bsz, q_len, self.hidden_size) attn_output = self.o_proj(attn_output) if not output_attentions: attn_weights = None - return attn_output, attn_weights, past_key_value + return ( + attn_output, + attn_weights, + present_key_value if self.return_new_key_value_only else past_key_value, + ) class LlamaDecoderLayer(nn.Module): @@ -892,8 +948,8 @@ def forward( past_key_values_length = 0 if past_key_values is not None: - # Get shape from value - past_key_values_length = past_key_values[0][0][1].shape[-2] + # Get shape from past key + past_key_values_length = past_key_values[0][0].shape[-1] seq_length_with_past = seq_length_with_past + past_key_values_length if position_ids is None: diff --git a/qai_hub_models/models/llama_v3_8b_chat_quantized/demo.py b/qai_hub_models/models/llama_v3_8b_chat_quantized/demo.py index d6dcad86..762a20e0 100644 --- a/qai_hub_models/models/llama_v3_8b_chat_quantized/demo.py +++ b/qai_hub_models/models/llama_v3_8b_chat_quantized/demo.py @@ -86,6 +86,7 @@ def llama_3_chat_demo( default_prompt=default_prompt, is_test=is_test, available_target_runtimes=available_target_runtimes, + bundled_kvcache=False, ) diff --git a/qai_hub_models/models/llama_v3_8b_chat_quantized/model.py b/qai_hub_models/models/llama_v3_8b_chat_quantized/model.py index 18bb7404..bb025332 100644 --- a/qai_hub_models/models/llama_v3_8b_chat_quantized/model.py +++ b/qai_hub_models/models/llama_v3_8b_chat_quantized/model.py @@ -47,7 +47,7 @@ MODEL_ID = __name__.split(".")[-2] -MODEL_ASSET_VERSION = 1 +MODEL_ASSET_VERSION = 2 # Configs AIMET_ENCODINGS_PREFIX = "config" @@ -275,7 +275,7 @@ def forward_token_generator( *past_key_values, ): past_key_values_tuple = make_torch_compatible_past_key_values( - self.total_hidden_layers, 8, *past_key_values + self.total_hidden_layers, 8, False, *past_key_values ) return self.model( input_ids, @@ -424,7 +424,10 @@ def get_output_names(): split_part=1, model_split_map=MODEL_SPLIT_MAP ) return Llama_QuantizedMixin.get_output_names( - start=layers_start, end=layers_end, past_key_val_heads=NUM_KEY_VAL_HEADS + start=layers_start, + end=layers_end, + past_key_val_heads=NUM_KEY_VAL_HEADS, + bundled_kvcache=False, ) @staticmethod @@ -538,7 +541,10 @@ def get_output_names(): split_part=2, model_split_map=MODEL_SPLIT_MAP ) return Llama_QuantizedMixin.get_output_names( - start=layers_start, end=layers_end, past_key_val_heads=NUM_KEY_VAL_HEADS + start=layers_start, + end=layers_end, + past_key_val_heads=NUM_KEY_VAL_HEADS, + bundled_kvcache=False, ) @staticmethod @@ -639,7 +645,10 @@ def get_output_names(): split_part=3, model_split_map=MODEL_SPLIT_MAP ) return Llama_QuantizedMixin.get_output_names( - start=layers_start, end=layers_end, past_key_val_heads=NUM_KEY_VAL_HEADS + start=layers_start, + end=layers_end, + past_key_val_heads=NUM_KEY_VAL_HEADS, + bundled_kvcache=False, ) @staticmethod @@ -740,7 +749,10 @@ def get_output_names(): split_part=4, model_split_map=MODEL_SPLIT_MAP ) return Llama_QuantizedMixin.get_output_names( - start=layers_start, end=layers_end, past_key_val_heads=NUM_KEY_VAL_HEADS + start=layers_start, + end=layers_end, + past_key_val_heads=NUM_KEY_VAL_HEADS, + bundled_kvcache=False, ) @staticmethod @@ -843,6 +855,7 @@ def get_output_names(): start=layers_start, end=layers_end, past_key_val_heads=NUM_KEY_VAL_HEADS, + bundled_kvcache=False, output_name="logits", ) @@ -953,8 +966,14 @@ def get_input_spec( } # Collect past_key_values and drop output names + layers_start, layers_end = get_hidden_layer_range_from_split( + split_part=1, model_split_map=MODEL_SPLIT_MAP + ) past_key_val_names = get_past_key_names( - start=0, end=4, num_of_past_key_heads=NUM_KEY_VAL_HEADS + start=layers_start, + end=layers_end, + num_of_past_key_heads=NUM_KEY_VAL_HEADS, + bundled_kvcache=False, ) for past_key_val in past_key_val_names: if "key" in past_key_val: @@ -975,7 +994,10 @@ def get_output_names(): split_part=1, model_split_map=MODEL_SPLIT_MAP ) return Llama_QuantizedMixin.get_output_names( - start=layers_start, end=layers_end, past_key_val_heads=NUM_KEY_VAL_HEADS + start=layers_start, + end=layers_end, + past_key_val_heads=NUM_KEY_VAL_HEADS, + bundled_kvcache=False, ) @staticmethod @@ -1044,7 +1066,12 @@ def get_model_data(input_seq_len: int = DEFAULT_INPUT_SEQ_LEN): "position_ids_sin": position_ids_sin, } - key_val = get_past_keyval_with_shift(output[1:], NUM_KEY_VAL_HEADS) + layers_start, _ = get_hidden_layer_range_from_split( + split_part=1, model_split_map=MODEL_SPLIT_MAP + ) + key_val = get_past_keyval_with_shift( + output[1:], layers_start, NUM_KEY_VAL_HEADS, bundled_kvcache=False + ) for key, val in key_val.items(): data[key] = val @@ -1127,7 +1154,15 @@ def get_input_spec( } # Collect past_key_values and drop output names - past_key_val_names = get_past_key_names(start=0, end=8, num_of_past_key_heads=8) + layers_start, layers_end = get_hidden_layer_range_from_split( + split_part=2, model_split_map=MODEL_SPLIT_MAP + ) + past_key_val_names = get_past_key_names( + start=layers_start, + end=layers_end, + num_of_past_key_heads=8, + bundled_kvcache=False, + ) for past_key_val in past_key_val_names: if "key" in past_key_val: input_spec[past_key_val] = ( @@ -1147,7 +1182,10 @@ def get_output_names(): split_part=2, model_split_map=MODEL_SPLIT_MAP ) return Llama_QuantizedMixin.get_output_names( - start=layers_start, end=layers_end, past_key_val_heads=NUM_KEY_VAL_HEADS + start=layers_start, + end=layers_end, + past_key_val_heads=NUM_KEY_VAL_HEADS, + bundled_kvcache=False, ) @staticmethod @@ -1185,7 +1223,12 @@ def get_model_data(input_seq_len: int = DEFAULT_INPUT_SEQ_LEN): "position_ids_sin": inputs["position_ids_sin"], } - key_val = get_past_keyval_with_shift(output[1:], NUM_KEY_VAL_HEADS) + layers_start, _ = get_hidden_layer_range_from_split( + split_part=2, model_split_map=MODEL_SPLIT_MAP + ) + key_val = get_past_keyval_with_shift( + output[1:], layers_start, NUM_KEY_VAL_HEADS, bundled_kvcache=False + ) for key, val in key_val.items(): data[key] = val @@ -1267,7 +1310,15 @@ def get_input_spec( } # Collect past_key_values and drop output names - past_key_val_names = get_past_key_names(start=0, end=8, num_of_past_key_heads=8) + layers_start, layers_end = get_hidden_layer_range_from_split( + split_part=3, model_split_map=MODEL_SPLIT_MAP + ) + past_key_val_names = get_past_key_names( + start=layers_start, + end=layers_end, + num_of_past_key_heads=8, + bundled_kvcache=False, + ) for past_key_val in past_key_val_names: if "key" in past_key_val: input_spec[past_key_val] = ( @@ -1287,7 +1338,10 @@ def get_output_names(): split_part=3, model_split_map=MODEL_SPLIT_MAP ) return Llama_QuantizedMixin.get_output_names( - start=layers_start, end=layers_end, past_key_val_heads=NUM_KEY_VAL_HEADS + start=layers_start, + end=layers_end, + past_key_val_heads=NUM_KEY_VAL_HEADS, + bundled_kvcache=False, ) @staticmethod @@ -1325,7 +1379,12 @@ def get_model_data(input_seq_len: int = DEFAULT_INPUT_SEQ_LEN): "position_ids_sin": inputs["position_ids_sin"], } - key_val = get_past_keyval_with_shift(output[1:], NUM_KEY_VAL_HEADS) + layers_start, _ = get_hidden_layer_range_from_split( + split_part=3, model_split_map=MODEL_SPLIT_MAP + ) + key_val = get_past_keyval_with_shift( + output[1:], layers_start, NUM_KEY_VAL_HEADS, bundled_kvcache=False + ) for key, val in key_val.items(): data[key] = val @@ -1407,7 +1466,15 @@ def get_input_spec( } # Collect past_key_values and drop output names - past_key_val_names = get_past_key_names(start=0, end=8, num_of_past_key_heads=8) + layers_start, layers_end = get_hidden_layer_range_from_split( + split_part=4, model_split_map=MODEL_SPLIT_MAP + ) + past_key_val_names = get_past_key_names( + start=layers_start, + end=layers_end, + num_of_past_key_heads=8, + bundled_kvcache=False, + ) for past_key_val in past_key_val_names: if "key" in past_key_val: input_spec[past_key_val] = ( @@ -1427,7 +1494,10 @@ def get_output_names(): split_part=4, model_split_map=MODEL_SPLIT_MAP ) return Llama_QuantizedMixin.get_output_names( - start=layers_start, end=layers_end, past_key_val_heads=NUM_KEY_VAL_HEADS + start=layers_start, + end=layers_end, + past_key_val_heads=NUM_KEY_VAL_HEADS, + bundled_kvcache=False, ) @staticmethod @@ -1465,7 +1535,12 @@ def get_model_data(input_seq_len: int = DEFAULT_INPUT_SEQ_LEN): "position_ids_sin": inputs["position_ids_sin"], } - key_val = get_past_keyval_with_shift(output[1:], NUM_KEY_VAL_HEADS) + layers_start, _ = get_hidden_layer_range_from_split( + split_part=4, model_split_map=MODEL_SPLIT_MAP + ) + key_val = get_past_keyval_with_shift( + output[1:], layers_start, NUM_KEY_VAL_HEADS, bundled_kvcache=False + ) for key, val in key_val.items(): data[key] = val @@ -1547,7 +1622,15 @@ def get_input_spec( } # Collect past_key_values and drop output names - past_key_val_names = get_past_key_names(start=0, end=4, num_of_past_key_heads=8) + layers_start, layers_end = get_hidden_layer_range_from_split( + split_part=5, model_split_map=MODEL_SPLIT_MAP + ) + past_key_val_names = get_past_key_names( + start=layers_start, + end=layers_end, + num_of_past_key_heads=8, + bundled_kvcache=False, + ) for past_key_val in past_key_val_names: if "key" in past_key_val: input_spec[past_key_val] = ( @@ -1570,6 +1653,7 @@ def get_output_names(): start=layers_start, end=layers_end, past_key_val_heads=NUM_KEY_VAL_HEADS, + bundled_kvcache=False, output_name="logits", ) @@ -1608,7 +1692,12 @@ def get_model_data(input_seq_len: int = DEFAULT_INPUT_SEQ_LEN): "position_ids_sin": inputs["position_ids_sin"], } - key_val = get_past_keyval_with_shift(output[1:], NUM_KEY_VAL_HEADS) + layers_start, _ = get_hidden_layer_range_from_split( + split_part=5, model_split_map=MODEL_SPLIT_MAP + ) + key_val = get_past_keyval_with_shift( + output[1:], layers_start, NUM_KEY_VAL_HEADS, bundled_kvcache=False + ) for key, val in key_val.items(): data[key] = val diff --git a/qai_hub_models/models/mediapipe_face/export.py b/qai_hub_models/models/mediapipe_face/export.py index b193a770..3ed353ab 100644 --- a/qai_hub_models/models/mediapipe_face/export.py +++ b/qai_hub_models/models/mediapipe_face/export.py @@ -195,22 +195,10 @@ def export_model( # 5. Download the model assets to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) for component_name, compile_job in compile_jobs.items(): target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str( - output_path - / f"{model_name}_{component_name}.{target_runtime_extension}" - ) - ) + target_model.download(str(output_path / component_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/mediapipe_face_quantized/export.py b/qai_hub_models/models/mediapipe_face_quantized/export.py index 5a0d1ad2..58c80292 100644 --- a/qai_hub_models/models/mediapipe_face_quantized/export.py +++ b/qai_hub_models/models/mediapipe_face_quantized/export.py @@ -132,12 +132,6 @@ def export_model( source_model = component.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = component.get_calibration_data( - target_runtime, input_spec - ) # 2. Compile the models to an on-device asset model_compile_options = component.get_hub_compile_options( @@ -149,7 +143,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=f"{model_name}_{component_name}", - calibration_data=quant_calibration_data, + calibration_data=component.get_calibration_data(target_runtime), options=model_compile_options, ) compile_jobs[component_name] = cast( @@ -200,22 +194,10 @@ def export_model( # 5. Download the model assets to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) for component_name, compile_job in compile_jobs.items(): target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str( - output_path - / f"{model_name}_{component_name}.{target_runtime_extension}" - ) - ) + target_model.download(str(output_path / component_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/mediapipe_hand/export.py b/qai_hub_models/models/mediapipe_hand/export.py index 316e30b7..453a3a17 100644 --- a/qai_hub_models/models/mediapipe_hand/export.py +++ b/qai_hub_models/models/mediapipe_hand/export.py @@ -195,22 +195,10 @@ def export_model( # 5. Download the model assets to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) for component_name, compile_job in compile_jobs.items(): target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str( - output_path - / f"{model_name}_{component_name}.{target_runtime_extension}" - ) - ) + target_model.download(str(output_path / component_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/mediapipe_pose/export.py b/qai_hub_models/models/mediapipe_pose/export.py index 8e5d3ca8..92f3e696 100644 --- a/qai_hub_models/models/mediapipe_pose/export.py +++ b/qai_hub_models/models/mediapipe_pose/export.py @@ -195,22 +195,10 @@ def export_model( # 5. Download the model assets to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) for component_name, compile_job in compile_jobs.items(): target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str( - output_path - / f"{model_name}_{component_name}.{target_runtime_extension}" - ) - ) + target_model.download(str(output_path / component_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/mediapipe_selfie/export.py b/qai_hub_models/models/mediapipe_selfie/export.py index bc2bff4b..6b343024 100644 --- a/qai_hub_models/models/mediapipe_selfie/export.py +++ b/qai_hub_models/models/mediapipe_selfie/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/midas/export.py b/qai_hub_models/models/midas/export.py index 1e95ecf1..8ace44a4 100644 --- a/qai_hub_models/models/midas/export.py +++ b/qai_hub_models/models/midas/export.py @@ -174,18 +174,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/midas_quantized/export.py b/qai_hub_models/models/midas_quantized/export.py index 9bfd30ba..5f9ce656 100644 --- a/qai_hub_models/models/midas_quantized/export.py +++ b/qai_hub_models/models/midas_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec, check_trace=False ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/mnasnet05/export.py b/qai_hub_models/models/mnasnet05/export.py index cd36df51..75980b58 100644 --- a/qai_hub_models/models/mnasnet05/export.py +++ b/qai_hub_models/models/mnasnet05/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/mobilenet_v2/export.py b/qai_hub_models/models/mobilenet_v2/export.py index 9a8a6feb..c95018ce 100644 --- a/qai_hub_models/models/mobilenet_v2/export.py +++ b/qai_hub_models/models/mobilenet_v2/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/mobilenet_v2_quantized/export.py b/qai_hub_models/models/mobilenet_v2_quantized/export.py index 6eab798d..84d82d76 100644 --- a/qai_hub_models/models/mobilenet_v2_quantized/export.py +++ b/qai_hub_models/models/mobilenet_v2_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/mobilenet_v3_large/export.py b/qai_hub_models/models/mobilenet_v3_large/export.py index e399efc3..ffb2a98c 100644 --- a/qai_hub_models/models/mobilenet_v3_large/export.py +++ b/qai_hub_models/models/mobilenet_v3_large/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/mobilenet_v3_large_quantized/export.py b/qai_hub_models/models/mobilenet_v3_large_quantized/export.py index d88cd62b..1fef0fa5 100644 --- a/qai_hub_models/models/mobilenet_v3_large_quantized/export.py +++ b/qai_hub_models/models/mobilenet_v3_large_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/mobilenet_v3_small/export.py b/qai_hub_models/models/mobilenet_v3_small/export.py index 657a593e..9c20cc60 100644 --- a/qai_hub_models/models/mobilenet_v3_small/export.py +++ b/qai_hub_models/models/mobilenet_v3_small/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/openai_clip/export.py b/qai_hub_models/models/openai_clip/export.py index 0bb149d7..27dc1f2f 100644 --- a/qai_hub_models/models/openai_clip/export.py +++ b/qai_hub_models/models/openai_clip/export.py @@ -195,22 +195,10 @@ def export_model( # 5. Download the model assets to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) for component_name, compile_job in compile_jobs.items(): target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str( - output_path - / f"{model_name}_{component_name}.{target_runtime_extension}" - ) - ) + target_model.download(str(output_path / component_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/openpose/export.py b/qai_hub_models/models/openpose/export.py index 69200d9e..df283f19 100644 --- a/qai_hub_models/models/openpose/export.py +++ b/qai_hub_models/models/openpose/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/posenet_mobilenet/export.py b/qai_hub_models/models/posenet_mobilenet/export.py index b01785a3..782b4725 100644 --- a/qai_hub_models/models/posenet_mobilenet/export.py +++ b/qai_hub_models/models/posenet_mobilenet/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/posenet_mobilenet_quantized/export.py b/qai_hub_models/models/posenet_mobilenet_quantized/export.py index b88f5cf1..e49489a7 100644 --- a/qai_hub_models/models/posenet_mobilenet_quantized/export.py +++ b/qai_hub_models/models/posenet_mobilenet_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/quicksrnetlarge/export.py b/qai_hub_models/models/quicksrnetlarge/export.py index 6e45881d..0ab69caa 100644 --- a/qai_hub_models/models/quicksrnetlarge/export.py +++ b/qai_hub_models/models/quicksrnetlarge/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/quicksrnetlarge_quantized/export.py b/qai_hub_models/models/quicksrnetlarge_quantized/export.py index 10faee9e..304c66c2 100644 --- a/qai_hub_models/models/quicksrnetlarge_quantized/export.py +++ b/qai_hub_models/models/quicksrnetlarge_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/quicksrnetmedium/export.py b/qai_hub_models/models/quicksrnetmedium/export.py index 2d49f819..b323c890 100644 --- a/qai_hub_models/models/quicksrnetmedium/export.py +++ b/qai_hub_models/models/quicksrnetmedium/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/quicksrnetmedium_quantized/export.py b/qai_hub_models/models/quicksrnetmedium_quantized/export.py index b42e2b3c..7e7734b5 100644 --- a/qai_hub_models/models/quicksrnetmedium_quantized/export.py +++ b/qai_hub_models/models/quicksrnetmedium_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/quicksrnetsmall/export.py b/qai_hub_models/models/quicksrnetsmall/export.py index f8b4da35..ffb7455a 100644 --- a/qai_hub_models/models/quicksrnetsmall/export.py +++ b/qai_hub_models/models/quicksrnetsmall/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/quicksrnetsmall_quantized/export.py b/qai_hub_models/models/quicksrnetsmall_quantized/export.py index 06798926..0c572035 100644 --- a/qai_hub_models/models/quicksrnetsmall_quantized/export.py +++ b/qai_hub_models/models/quicksrnetsmall_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/real_esrgan_general_x4v3/export.py b/qai_hub_models/models/real_esrgan_general_x4v3/export.py index 14473818..afb090df 100644 --- a/qai_hub_models/models/real_esrgan_general_x4v3/export.py +++ b/qai_hub_models/models/real_esrgan_general_x4v3/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/real_esrgan_x4plus/export.py b/qai_hub_models/models/real_esrgan_x4plus/export.py index 66b98d8d..1fe2939e 100644 --- a/qai_hub_models/models/real_esrgan_x4plus/export.py +++ b/qai_hub_models/models/real_esrgan_x4plus/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/regnet/export.py b/qai_hub_models/models/regnet/export.py index 55bb3941..8708b0b2 100644 --- a/qai_hub_models/models/regnet/export.py +++ b/qai_hub_models/models/regnet/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/regnet_quantized/export.py b/qai_hub_models/models/regnet_quantized/export.py index 150b2bf3..af4ea861 100644 --- a/qai_hub_models/models/regnet_quantized/export.py +++ b/qai_hub_models/models/regnet_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/resnet101/export.py b/qai_hub_models/models/resnet101/export.py index 2ba61ca4..e696c7fd 100644 --- a/qai_hub_models/models/resnet101/export.py +++ b/qai_hub_models/models/resnet101/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/resnet101_quantized/export.py b/qai_hub_models/models/resnet101_quantized/export.py index fcb586b1..a6475b28 100644 --- a/qai_hub_models/models/resnet101_quantized/export.py +++ b/qai_hub_models/models/resnet101_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/resnet18/export.py b/qai_hub_models/models/resnet18/export.py index 454da617..ad674bad 100644 --- a/qai_hub_models/models/resnet18/export.py +++ b/qai_hub_models/models/resnet18/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/resnet18_quantized/export.py b/qai_hub_models/models/resnet18_quantized/export.py index c674a1ec..1c8c01d4 100644 --- a/qai_hub_models/models/resnet18_quantized/export.py +++ b/qai_hub_models/models/resnet18_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/resnet50/export.py b/qai_hub_models/models/resnet50/export.py index 3c27ac15..90be297a 100644 --- a/qai_hub_models/models/resnet50/export.py +++ b/qai_hub_models/models/resnet50/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/resnet50_quantized/export.py b/qai_hub_models/models/resnet50_quantized/export.py index 8e3f3cce..ef9458a1 100644 --- a/qai_hub_models/models/resnet50_quantized/export.py +++ b/qai_hub_models/models/resnet50_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/resnext101/export.py b/qai_hub_models/models/resnext101/export.py index 9ce07575..75a62f29 100644 --- a/qai_hub_models/models/resnext101/export.py +++ b/qai_hub_models/models/resnext101/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/resnext101_quantized/export.py b/qai_hub_models/models/resnext101_quantized/export.py index 0f025fcb..212db6b5 100644 --- a/qai_hub_models/models/resnext101_quantized/export.py +++ b/qai_hub_models/models/resnext101_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/resnext50/export.py b/qai_hub_models/models/resnext50/export.py index c45436be..ae3af722 100644 --- a/qai_hub_models/models/resnext50/export.py +++ b/qai_hub_models/models/resnext50/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/resnext50_quantized/export.py b/qai_hub_models/models/resnext50_quantized/export.py index 9a27cd84..568fb54d 100644 --- a/qai_hub_models/models/resnext50_quantized/export.py +++ b/qai_hub_models/models/resnext50_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/riffusion_quantized/info.yaml b/qai_hub_models/models/riffusion_quantized/info.yaml index 99b044a4..ddbb62c3 100644 --- a/qai_hub_models/models/riffusion_quantized/info.yaml +++ b/qai_hub_models/models/riffusion_quantized/info.yaml @@ -18,7 +18,6 @@ deploy_license: https://github.com/CompVis/stable-diffusion/blob/main/LICENSE source_repo: https://github.com/CompVis/stable-diffusion/tree/main technical_details: Input: Text prompt to generate spectrogram image - QNN-SDK: '2.20' Text Encoder Number of parameters: 340M UNet Number of parameters: 865M VAE Decoder Number of parameters: 83M diff --git a/qai_hub_models/models/sam/export.py b/qai_hub_models/models/sam/export.py index ec28bc9b..0188a6e7 100644 --- a/qai_hub_models/models/sam/export.py +++ b/qai_hub_models/models/sam/export.py @@ -205,22 +205,10 @@ def export_model( # 5. Download the model assets to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) for component_name, compile_job in compile_jobs.items(): target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str( - output_path - / f"{model_name}_{component_name}.{target_runtime_extension}" - ) - ) + target_model.download(str(output_path / component_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/sesr_m5/export.py b/qai_hub_models/models/sesr_m5/export.py index b158cc76..defad541 100644 --- a/qai_hub_models/models/sesr_m5/export.py +++ b/qai_hub_models/models/sesr_m5/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/sesr_m5_quantized/export.py b/qai_hub_models/models/sesr_m5_quantized/export.py index 83bd2c20..c202123b 100644 --- a/qai_hub_models/models/sesr_m5_quantized/export.py +++ b/qai_hub_models/models/sesr_m5_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/shufflenet_v2/export.py b/qai_hub_models/models/shufflenet_v2/export.py index b59c3f3e..e919ef3b 100644 --- a/qai_hub_models/models/shufflenet_v2/export.py +++ b/qai_hub_models/models/shufflenet_v2/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/shufflenet_v2_quantized/export.py b/qai_hub_models/models/shufflenet_v2_quantized/export.py index e9c3bb2c..4fe7cfef 100644 --- a/qai_hub_models/models/shufflenet_v2_quantized/export.py +++ b/qai_hub_models/models/shufflenet_v2_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/sinet/export.py b/qai_hub_models/models/sinet/export.py index ac0b31d9..2cd377cd 100644 --- a/qai_hub_models/models/sinet/export.py +++ b/qai_hub_models/models/sinet/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/squeezenet1_1/export.py b/qai_hub_models/models/squeezenet1_1/export.py index 3f44039b..5a41e795 100644 --- a/qai_hub_models/models/squeezenet1_1/export.py +++ b/qai_hub_models/models/squeezenet1_1/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/squeezenet1_1_quantized/export.py b/qai_hub_models/models/squeezenet1_1_quantized/export.py index 6b59e92c..6f94c506 100644 --- a/qai_hub_models/models/squeezenet1_1_quantized/export.py +++ b/qai_hub_models/models/squeezenet1_1_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/stable_diffusion_v1_5_quantized/info.yaml b/qai_hub_models/models/stable_diffusion_v1_5_quantized/info.yaml index 6225130a..b069f178 100644 --- a/qai_hub_models/models/stable_diffusion_v1_5_quantized/info.yaml +++ b/qai_hub_models/models/stable_diffusion_v1_5_quantized/info.yaml @@ -18,7 +18,6 @@ deploy_license: https://github.com/CompVis/stable-diffusion/blob/main/LICENSE source_repo: https://github.com/CompVis/stable-diffusion/tree/main technical_details: Input: Text prompt to generate image - QNN-SDK: '2.20' Text Encoder Number of parameters: 340M UNet Number of parameters: 865M VAE Decoder Number of parameters: 83M diff --git a/qai_hub_models/models/stable_diffusion_v2_1_quantized/info.yaml b/qai_hub_models/models/stable_diffusion_v2_1_quantized/info.yaml index ce1e3a43..cc3d441e 100644 --- a/qai_hub_models/models/stable_diffusion_v2_1_quantized/info.yaml +++ b/qai_hub_models/models/stable_diffusion_v2_1_quantized/info.yaml @@ -18,7 +18,6 @@ deploy_license: https://github.com/CompVis/stable-diffusion/blob/main/LICENSE source_repo: https://github.com/CompVis/stable-diffusion/tree/main technical_details: Input: Text prompt to generate image - QNN-SDK: '2.20' Text Encoder Number of parameters: 340M UNet Number of parameters: 865M VAE Decoder Number of parameters: 83M diff --git a/qai_hub_models/models/swin_base/export.py b/qai_hub_models/models/swin_base/export.py index 4fbeb0ef..73268e34 100644 --- a/qai_hub_models/models/swin_base/export.py +++ b/qai_hub_models/models/swin_base/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/swin_small/export.py b/qai_hub_models/models/swin_small/export.py index f14e1989..e1385c38 100644 --- a/qai_hub_models/models/swin_small/export.py +++ b/qai_hub_models/models/swin_small/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/swin_tiny/export.py b/qai_hub_models/models/swin_tiny/export.py index bba64049..db693e10 100644 --- a/qai_hub_models/models/swin_tiny/export.py +++ b/qai_hub_models/models/swin_tiny/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/trocr/export.py b/qai_hub_models/models/trocr/export.py index d79f58a0..8b99469e 100644 --- a/qai_hub_models/models/trocr/export.py +++ b/qai_hub_models/models/trocr/export.py @@ -195,22 +195,10 @@ def export_model( # 5. Download the model assets to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) for component_name, compile_job in compile_jobs.items(): target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str( - output_path - / f"{model_name}_{component_name}.{target_runtime_extension}" - ) - ) + target_model.download(str(output_path / component_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/unet_segmentation/export.py b/qai_hub_models/models/unet_segmentation/export.py index 9cc2e0fe..e94f1ca9 100644 --- a/qai_hub_models/models/unet_segmentation/export.py +++ b/qai_hub_models/models/unet_segmentation/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/vit/export.py b/qai_hub_models/models/vit/export.py index 9bb9c4b1..0d745f88 100644 --- a/qai_hub_models/models/vit/export.py +++ b/qai_hub_models/models/vit/export.py @@ -174,18 +174,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/whisper_base_en/export.py b/qai_hub_models/models/whisper_base_en/export.py index 71e303a8..978aef9f 100644 --- a/qai_hub_models/models/whisper_base_en/export.py +++ b/qai_hub_models/models/whisper_base_en/export.py @@ -195,22 +195,10 @@ def export_model( # 5. Download the model assets to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) for component_name, compile_job in compile_jobs.items(): target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str( - output_path - / f"{model_name}_{component_name}.{target_runtime_extension}" - ) - ) + target_model.download(str(output_path / component_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/whisper_small_en/export.py b/qai_hub_models/models/whisper_small_en/export.py index b626a255..b36a7bf0 100644 --- a/qai_hub_models/models/whisper_small_en/export.py +++ b/qai_hub_models/models/whisper_small_en/export.py @@ -195,22 +195,10 @@ def export_model( # 5. Download the model assets to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) for component_name, compile_job in compile_jobs.items(): target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str( - output_path - / f"{model_name}_{component_name}.{target_runtime_extension}" - ) - ) + target_model.download(str(output_path / component_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/whisper_tiny_en/export.py b/qai_hub_models/models/whisper_tiny_en/export.py index c64fd947..fa76ff82 100644 --- a/qai_hub_models/models/whisper_tiny_en/export.py +++ b/qai_hub_models/models/whisper_tiny_en/export.py @@ -195,22 +195,10 @@ def export_model( # 5. Download the model assets to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) for component_name, compile_job in compile_jobs.items(): target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str( - output_path - / f"{model_name}_{component_name}.{target_runtime_extension}" - ) - ) + target_model.download(str(output_path / component_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/wideresnet50/export.py b/qai_hub_models/models/wideresnet50/export.py index 7bb3a5ef..1c584735 100644 --- a/qai_hub_models/models/wideresnet50/export.py +++ b/qai_hub_models/models/wideresnet50/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/wideresnet50_quantized/export.py b/qai_hub_models/models/wideresnet50_quantized/export.py index 7cb9b7cc..b9d221a1 100644 --- a/qai_hub_models/models/wideresnet50_quantized/export.py +++ b/qai_hub_models/models/wideresnet50_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/xlsr/export.py b/qai_hub_models/models/xlsr/export.py index 526a340a..5624a374 100644 --- a/qai_hub_models/models/xlsr/export.py +++ b/qai_hub_models/models/xlsr/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/xlsr_quantized/export.py b/qai_hub_models/models/xlsr_quantized/export.py index 16b2eab4..21b08686 100644 --- a/qai_hub_models/models/xlsr_quantized/export.py +++ b/qai_hub_models/models/xlsr_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/yolonas/export.py b/qai_hub_models/models/yolonas/export.py index 7171833c..c21d3b2a 100644 --- a/qai_hub_models/models/yolonas/export.py +++ b/qai_hub_models/models/yolonas/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/yolonas_quantized/export.py b/qai_hub_models/models/yolonas_quantized/export.py index ac0b4bf8..e849400f 100644 --- a/qai_hub_models/models/yolonas_quantized/export.py +++ b/qai_hub_models/models/yolonas_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/yolov6/export.py b/qai_hub_models/models/yolov6/export.py index 9822b728..78875517 100644 --- a/qai_hub_models/models/yolov6/export.py +++ b/qai_hub_models/models/yolov6/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/yolov7/export.py b/qai_hub_models/models/yolov7/export.py index 41eb401e..1dc86556 100644 --- a/qai_hub_models/models/yolov7/export.py +++ b/qai_hub_models/models/yolov7/export.py @@ -172,18 +172,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/yolov7_quantized/export.py b/qai_hub_models/models/yolov7_quantized/export.py index 3279e39a..dba612e4 100644 --- a/qai_hub_models/models/yolov7_quantized/export.py +++ b/qai_hub_models/models/yolov7_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/yolov8_det/export.py b/qai_hub_models/models/yolov8_det/export.py index c54b9eeb..0475c33a 100644 --- a/qai_hub_models/models/yolov8_det/export.py +++ b/qai_hub_models/models/yolov8_det/export.py @@ -174,18 +174,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/yolov8_det_quantized/export.py b/qai_hub_models/models/yolov8_det_quantized/export.py index 08a619a4..18060354 100644 --- a/qai_hub_models/models/yolov8_det_quantized/export.py +++ b/qai_hub_models/models/yolov8_det_quantized/export.py @@ -119,10 +119,6 @@ def export_model( source_model = model.convert_to_hub_source_model( target_runtime, output_path, input_spec ) - if target_runtime == TargetRuntime.TFLITE: - quant_calibration_data = None - else: - quant_calibration_data = model.get_calibration_data(target_runtime, input_spec) # 2. Compile the model to an on-device asset model_compile_options = model.get_hub_compile_options( @@ -134,7 +130,7 @@ def export_model( input_specs=input_spec, device=hub_device, name=model_name, - calibration_data=quant_calibration_data, + calibration_data=model.get_calibration_data(target_runtime), options=model_compile_options, ) compile_job = cast(hub.client.CompileJob, submitted_compile_job) @@ -177,18 +173,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/models/yolov8_seg/export.py b/qai_hub_models/models/yolov8_seg/export.py index 1a363bba..47cd551f 100644 --- a/qai_hub_models/models/yolov8_seg/export.py +++ b/qai_hub_models/models/yolov8_seg/export.py @@ -174,18 +174,9 @@ def export_model( # 5. Download the model asset to a local file if not skip_downloading: - if target_runtime == TargetRuntime.QNN: - target_runtime_extension = "so" - elif target_runtime == TargetRuntime.TFLITE: - target_runtime_extension = "tflite" - elif target_runtime in {TargetRuntime.ONNX, TargetRuntime.PRECOMPILED_QNN_ONNX}: - target_runtime_extension = "onnx" - os.makedirs(output_path, exist_ok=True) target_model: hub.Model = compile_job.get_target_model() # type: ignore - target_model.download( - str(output_path / f"{model_name}.{target_runtime_extension}") - ) + target_model.download(str(output_path / model_name)) # 6. Summarize the results from profiling and inference if not skip_summary and not skip_profiling: diff --git a/qai_hub_models/requirements.txt b/qai_hub_models/requirements.txt index 6259a0c4..a754693b 100644 --- a/qai_hub_models/requirements.txt +++ b/qai_hub_models/requirements.txt @@ -21,7 +21,7 @@ scipy==1.8.1 tabulate==0.9.0 torch==1.13.1 torchvision==0.14.1 -typing-extensions==4.5.0 +typing-extensions>=4.12.2 tqdm==4.66.2 urllib3==1.26.18 -qai_hub>=0.13.0 +qai_hub>=0.15.0 diff --git a/qai_hub_models/test/test_async_compile_jobs.py b/qai_hub_models/test/test_async_compile_jobs.py index 8ba7c243..b34f2731 100644 --- a/qai_hub_models/test/test_async_compile_jobs.py +++ b/qai_hub_models/test/test_async_compile_jobs.py @@ -25,7 +25,7 @@ def test_compile_jobs_success(): for name, job_id in job_ids.items(): job = hub.get_job(job_id) status = job.get_status() - if status.running or status.pending: + if not status.finished: # Wait a maximum of 15 minutes for a compile job timemax = datetime.timedelta(minutes=15) timediff = datetime.datetime.now() - job.date diff --git a/qai_hub_models/test/test_utils/test_info_specs.py b/qai_hub_models/test/test_utils/test_info_specs.py index bfbd07ef..860f4bfa 100644 --- a/qai_hub_models/test/test_utils/test_info_specs.py +++ b/qai_hub_models/test/test_utils/test_info_specs.py @@ -11,6 +11,7 @@ ) HF_PIPELINE_TAGS = { + "keypoint-detection", "text-classification", "token-classification", "table-question-answering", diff --git a/qai_hub_models/utils/config_loaders.py b/qai_hub_models/utils/config_loaders.py index 41e2b3d8..047206bb 100644 --- a/qai_hub_models/utils/config_loaders.py +++ b/qai_hub_models/utils/config_loaders.py @@ -225,7 +225,7 @@ def map_to_hf_pipeline_tag(self): if self.name == "SEMANTIC_SEGMENTATION": return "image-segmentation" if self.name == "POSE_ESTIMATION": - return "image-classification" + return "keypoint-detection" if self.name == "AUDIO_ENHANCEMENT": return "audio-to-audio" if self.name == "VIDEO_GENERATION": diff --git a/qai_hub_models/utils/quantization_aimet.py b/qai_hub_models/utils/quantization_aimet.py index d941b520..3be75c9c 100644 --- a/qai_hub_models/utils/quantization_aimet.py +++ b/qai_hub_models/utils/quantization_aimet.py @@ -444,14 +444,7 @@ def get_calibration_data( """ Calibration dataset for this model and input spec. """ - if target_runtime == TargetRuntime.ONNX: - # TODO(#10896): Restore quantize_io flag when targeting ORT - return None - - if not input_spec: - input_spec = self.get_input_spec() - inputs = make_torch_inputs(input_spec) - return {k: v.numpy() for k, v in zip(input_spec.keys(), inputs)} + return None def get_hub_compile_options( self, @@ -460,11 +453,6 @@ def get_hub_compile_options( device: Optional[Device] = None, ) -> str: quantization_flags = " --quantize_io" - if ( - target_runtime == TargetRuntime.QNN - or target_runtime == TargetRuntime.TFLITE - ): - quantization_flags += " --quantize_full_type int8" if target_runtime == TargetRuntime.TFLITE: # uint8 is the easiest I/O type for integration purposes, # especially for image applications. Images are always diff --git a/qai_hub_models/utils/scorecard/job_summary.py b/qai_hub_models/utils/scorecard/job_summary.py index 2fa7e0be..15963ecc 100644 --- a/qai_hub_models/utils/scorecard/job_summary.py +++ b/qai_hub_models/utils/scorecard/job_summary.py @@ -56,7 +56,7 @@ def job(self) -> Optional[hub.Job]: return None job = hub.get_job(self.job_id) - if job.get_status().running: + if not job.get_status().finished: if self.max_job_wait_secs and self.max_job_wait_secs < 0: return None else: