Skip to content
Closed
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions QEfficient/base/modeling_qeff.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@ def _compile(
if onnx_path is None and self.onnx_path is None:
self.export()

# import ipdb; ipdb.set_trace()
onnx_path = Path(onnx_path or self.onnx_path)
compile_dir = Path(compile_dir or onnx_path.parent)
qpc_path = compile_dir / "qpc"
Expand Down Expand Up @@ -251,6 +252,7 @@ def _compile(
if num_speculative_tokens:
compile_hash.update(to_hashable({"num_speculative_tokens": num_speculative_tokens}))

# import ipdb; ipdb.set_trace()
# Check if already compiled
compile_hash = compile_hash.hexdigest()[:16]
compile_dir = qpc_path.with_name(qpc_path.name + "-" + compile_hash)
Expand Down
9 changes: 9 additions & 0 deletions QEfficient/base/pytorch_transforms.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,21 @@ class ModuleMappingTransform(PytorchTransform):
def apply(cls, model: nn.Module) -> Tuple[nn.Module, bool]:
transformed = False
for module in model.modules():
# if repl_module := cls._module_mapping.get(type(module)):
if repl_module := cls._module_mapping.get(module.__class__.__name__):
module.__class__ = repl_module
# Handling the __init__ calls in the models
if hasattr(module, "__qeff_init__"):
module.__qeff_init__()
transformed = True

Comment on lines +43 to +50
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

create a new transform named like:

class ModuleMappingViaStringAndClassMatchTransform:
    _module_mapping_via_class: Dict[Type[nn.Module], Type[nn.Module]]
    _module_mapping_via_string: Dict[string, Type[nn.Module]]
    
    @classmethod
    def apply(cls, model):
        transformed=False
        for module in model.modules():
            if  repl_module := cls._module_mapping_via_class.get(type(module)):
                 # replace the class here
            elif repl_module := cls._module_mapping_via_string.get(type(module)):
                 # replace the class here

Create two different dicts basically.

And write a test that makes sure the keys on the two dicts don't match.

if repl_module := cls._module_mapping.get(type(module)):
module.__class__ = repl_module
# Handling the __init__ calls in the models
if hasattr(module, "__qeff_init__"):
module.__qeff_init__()
transformed = True

return model, transformed

@classmethod
Expand Down
9 changes: 9 additions & 0 deletions QEfficient/transformers/modeling_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@
)

from QEfficient.customop import CustomRMSNormAIC
from QEfficient.transformers.models.InternVL.modeling_internvl_chat_vision import (
InternVLChatModel,
QEffInternVisionEmbeddings,
QEffInternVLChatModel,
)

from .models.codegen.modeling_codegen import (
QEffCodeGenAttention,
Expand Down Expand Up @@ -157,6 +162,7 @@
Starcoder2ForCausalLM.__name__,
GPTBigCodeForCausalLM.__name__,
MllamaForCausalLM.__name__,
InternVLChatModel.__name__,
]
)

Expand Down Expand Up @@ -241,4 +247,7 @@
GPTBigCodeAttention: QEffGPTBigCodeAttention,
GPTBigCodeBlock: QEffGPTBigCodeBlock,
GPTBigCodeModel: QEffGPTBigCodeModel,
# InternVL
"InternVLChatModel": QEffInternVLChatModel,
"InternVisionEmbeddings": QEffInternVisionEmbeddings,
}
6 changes: 6 additions & 0 deletions QEfficient/transformers/models/InternVL/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# -----------------------------------------------------------------------------
#
# Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
# SPDX-License-Identifier: BSD-3-Clause
#
# -----------------------------------------------------------------------------
137 changes: 137 additions & 0 deletions QEfficient/transformers/models/InternVL/config.json
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove

Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
{
"_commit_hash": null,
"architectures": [
"InternVLChatModel"
],
"auto_map": {
"AutoConfig": "configuration_internvl_chat.InternVLChatConfig",
"AutoModel": "modeling_internvl_chat.InternVLChatModel",
"AutoModelForCausalLM": "modeling_internvl_chat.InternVLChatModel"
},
"downsample_ratio": 0.5,
"dynamic_image_size": true,
"force_image_size": 448,
"llm_config": {
"_name_or_path": "Qwen/Qwen2.5-0.5B-Instruct",
"add_cross_attention": false,
"architectures": [
"Qwen2ForCausalLM"
],
"_attn_implementation": "eager",
"attention_dropout": 0.0,
"bad_words_ids": null,
"begin_suppress_tokens": null,
"bos_token_id": 151643,
"chunk_size_feed_forward": 0,
"cross_attention_hidden_size": null,
"decoder_start_token_id": null,
"diversity_penalty": 0.0,
"do_sample": false,
"early_stopping": false,
"encoder_no_repeat_ngram_size": 0,
"eos_token_id": 151645,
"exponential_decay_length_penalty": null,
"finetuning_task": null,
"forced_bos_token_id": null,
"forced_eos_token_id": null,
"hidden_act": "silu",
"hidden_size": 896,
"id2label": {
"0": "LABEL_0",
"1": "LABEL_1"
},
"initializer_range": 0.02,
"intermediate_size": 4864,
"is_decoder": false,
"is_encoder_decoder": false,
"label2id": {
"LABEL_0": 0,
"LABEL_1": 1
},
"length_penalty": 1.0,
"max_length": 20,
"max_position_embeddings": 32768,
"max_window_layers": 21,
"min_length": 0,
"model_type": "qwen2",
"no_repeat_ngram_size": 0,
"num_attention_heads": 14,
"num_beam_groups": 1,
"num_beams": 1,
"num_hidden_layers": 24,
"num_key_value_heads": 2,
"num_return_sequences": 1,
"output_attentions": false,
"output_hidden_states": false,
"output_scores": false,
"pad_token_id": null,
"prefix": null,
"problem_type": null,
"pruned_heads": {},
"remove_invalid_values": false,
"repetition_penalty": 1.0,
"return_dict": true,
"return_dict_in_generate": false,
"rms_norm_eps": 1e-06,
"rope_theta": 1000000.0,
"sep_token_id": null,
"sliding_window": 32768,
"suppress_tokens": null,
"task_specific_params": null,
"temperature": 1.0,
"tf_legacy_loss": false,
"tie_encoder_decoder": false,
"tie_word_embeddings": false,
"tokenizer_class": null,
"top_k": 50,
"top_p": 1.0,
"torch_dtype": "float32",
"torchscript": false,
"transformers_version": "4.37.2",
"typical_p": 1.0,
"use_bfloat16": false,
"use_cache": true,
"use_sliding_window": false,
"vocab_size": 151674
},
"max_dynamic_patch": 12,
"min_dynamic_patch": 1,
"model_type": "internvl_chat",
"ps_version": "v2",
"select_layer": -1,
"template": "internvl2_5",
"torch_dtype": "float32",
"use_backbone_lora": 0,
"use_llm_lora": 0,
"use_thumbnail": true,
"vision_config": {
"architectures": [
"InternVisionModel"
],
"attention_dropout": 0.0,
"drop_path_rate": 0.0,
"dropout": 0.0,
"hidden_act": "gelu",
"hidden_size": 1024,
"image_size": 448,
"initializer_factor": 1.0,
"initializer_range": 0.02,
"intermediate_size": 4096,
"layer_norm_eps": 1e-06,
"model_type": "intern_vit_6b",
"norm_type": "layer_norm",
"num_attention_heads": 16,
"num_channels": 3,
"num_hidden_layers": 24,
"output_attentions": false,
"output_hidden_states": false,
"patch_size": 14,
"qk_normalization": false,
"qkv_bias": true,
"return_dict": true,
"torch_dtype": "float32",
"transformers_version": "4.37.2",
"use_bfloat16": false,
"use_flash_attn": false
}
}
Loading
Loading