From 44e227bbf82ee4ae5e2eede7a2b6309c44d77102 Mon Sep 17 00:00:00 2001 From: jeromeku Date: Mon, 31 Mar 2025 10:22:50 -0700 Subject: [PATCH] add phi --- unsloth/registry/_phi.py | 62 ++++++++++++++++++++++++++++++ unsloth/registry/model_registry.py | 59 ++-------------------------- 2 files changed, 66 insertions(+), 55 deletions(-) create mode 100644 unsloth/registry/_phi.py diff --git a/unsloth/registry/_phi.py b/unsloth/registry/_phi.py new file mode 100644 index 0000000000..a6d18cbd61 --- /dev/null +++ b/unsloth/registry/_phi.py @@ -0,0 +1,62 @@ +from unsloth.registry.registry import ModelInfo, ModelMeta, QuantType, _register_models + +_IS_PHI_REGISTERED = False +_IS_PHI_INSTRUCT_REGISTERED = False + +class PhiModelInfo(ModelInfo): + @classmethod + def construct_model_name(cls, base_name, version, size, quant_type, instruct_tag): + key = f"{base_name}-{version}" + key = cls.append_instruct_tag(key, instruct_tag) + key = cls.append_quant_type(key, quant_type) + return key + +# Phi Model Meta +PhiMeta = ModelMeta( + org="microsoft", + base_name="phi", + instruct_tags=[None], + model_version="4", + model_sizes=["1"], # Assuming only one size + model_info_cls=PhiModelInfo, + is_multimodal=False, + quant_types=[QuantType.NONE, QuantType.BNB, QuantType.UNSLOTH], +) + +# Phi Instruct Model Meta +PhiInstructMeta = ModelMeta( + org="microsoft", + base_name="phi", + instruct_tags=["mini-instruct"], + model_version="4", + model_sizes=["1"], # Assuming only one size + model_info_cls=PhiModelInfo, + is_multimodal=False, + quant_types=[QuantType.NONE, QuantType.BNB, QuantType.UNSLOTH, QuantType.GGUF], +) + +def register_phi_models(include_original_model: bool = False): + global _IS_PHI_REGISTERED + if _IS_PHI_REGISTERED: + return + _register_models(PhiMeta, include_original_model=include_original_model) + _IS_PHI_REGISTERED = True + +def register_phi_instruct_models(include_original_model: bool = False): + global _IS_PHI_INSTRUCT_REGISTERED + if _IS_PHI_INSTRUCT_REGISTERED: + return + _register_models(PhiInstructMeta, include_original_model=include_original_model) + _IS_PHI_INSTRUCT_REGISTERED = True + +register_phi_models(include_original_model=True) +register_phi_instruct_models(include_original_model=True) + +if __name__ == "__main__": + from unsloth.registry.registry import MODEL_REGISTRY, _check_model_info + for model_id, model_info in MODEL_REGISTRY.items(): + model_info = _check_model_info(model_id) + if model_info is None: + print(f"\u2718 {model_id}") + else: + print(f"\u2713 {model_id}") \ No newline at end of file diff --git a/unsloth/registry/model_registry.py b/unsloth/registry/model_registry.py index a0cd71c17a..de9609934c 100644 --- a/unsloth/registry/model_registry.py +++ b/unsloth/registry/model_registry.py @@ -4,11 +4,11 @@ from typing import Callable, Literal from unsloth.registry._llama import LlamaMeta3_1, LlamaMeta3_2 from unsloth.registry.common import ModelInfo, ModelMeta -_IS_LLAMA_REGISTERED = False -_IS_LLAMA_VISION_REGISTERED = False +# _IS_LLAMA_REGISTERED = False +# _IS_LLAMA_VISION_REGISTERED = False -_IS_QWEN_REGISTERED = False -_IS_QWEN_VL_REGISTERED = False +# _IS_QWEN_REGISTERED = False +# _IS_QWEN_VL_REGISTERED = False _IS_GEMMA_REGISTERED = False @@ -17,28 +17,6 @@ _IS_PHI_INSTRUCT_REGISTERED = False -# class QwenModelInfo(ModelInfo): -# @classmethod -# def construct_model_name( -# cls, base_name, version, size, quant_type, instruct_tag -# ): -# key = f"{base_name}{version}-{size}B" -# key = cls.append_instruct_tag(key, instruct_tag) -# key = cls.append_quant_type(key, quant_type) -# return key - - -# class QwenVLModelInfo(ModelInfo): -# @classmethod -# def construct_model_name( -# cls, base_name, version, size, quant_type, instruct_tag -# ): -# key = f"{base_name}{version}-VL-{size}B" -# key = cls.append_instruct_tag(key, instruct_tag) -# key = cls.append_quant_type(key, quant_type) -# return key - - # class PhiModelInfo(ModelInfo): # @classmethod # def construct_model_name( @@ -55,35 +33,6 @@ _IS_PHI_INSTRUCT_REGISTERED = False # # Qwen text only models # # NOTE: Qwen vision models will be registered separately -# _QWEN_INFO = { -# "org": "Qwen", -# "base_name": "Qwen", -# "instruct_tags": [None, "Instruct"], -# "model_versions": ["2.5"], -# "model_sizes": {"2.5": [3, 7]}, -# "is_multimodal": False, -# "model_info_cls": QwenModelInfo, -# } - -# _QWEN_VL_INFO = { -# "org": "Qwen", -# "base_name": "Qwen", -# "instruct_tags": ["Instruct"], # No base, only instruction tuned -# "model_versions": ["2.5"], -# "model_sizes": {"2.5": [3, 7, 32, 72]}, -# "is_multimodal": True, -# "instruction_tuned_only": True, -# "model_info_cls": QwenVLModelInfo, -# } - -# _GEMMA_INFO = { -# "org": "google", -# "base_name": "gemma", -# "instruct_tags": ["pt", "it"], # pt = base, it = instruction tuned -# "model_versions": ["3"], -# "model_sizes": {"3": [1, 4, 12, 27]}, -# "is_multimodal": True, -# } # _PHI_INFO = { # "org": "microsoft",