optimum/intel/__init__.py (368 lines of code) (raw):

# Copyright 2022 The HuggingFace Team. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import importlib.util from typing import TYPE_CHECKING from transformers.utils import OptionalDependencyNotAvailable, _LazyModule from .utils import ( is_accelerate_available, is_diffusers_available, is_ipex_available, is_neural_compressor_available, is_nncf_available, is_openvino_available, is_sentence_transformers_available, ) from .version import __version__ _import_structure = { "openvino": [], "utils.dummy_openvino_and_nncf_objects": [], } try: if not is_ipex_available(): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: from .utils import dummy_ipex_objects _import_structure["utils.dummy_ipex_objects"] = [ "IPEXModelForCausalLM", "IPEXModelForSequenceClassification", "IPEXModelForMaskedLM", "IPEXModelForTokenClassification", "IPEXModelForQuestionAnswering", "IPEXModelForImageClassification", "IPEXModelForAudioClassification", "IPEXModel", ] else: _import_structure["utils.dummy_ipex_objects"] = [] _import_structure["ipex"] = [ "IPEXModelForCausalLM", "IPEXModelForSeq2SeqLM", "IPEXModelForSequenceClassification", "IPEXModelForMaskedLM", "IPEXModelForTokenClassification", "IPEXModelForQuestionAnswering", "IPEXModelForImageClassification", "IPEXModelForAudioClassification", "IPEXModel", ] try: if not (is_ipex_available() and is_sentence_transformers_available()): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: _import_structure["utils.dummy_ipex_objects"].extend(["IPEXSentenceTransformer"]) else: _import_structure["ipex"].extend(["IPEXSentenceTransformer"]) try: if not (is_openvino_available() and is_nncf_available()): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: _import_structure["utils.dummy_openvino_and_nncf_objects"].extend( [ "OVQuantizer", "OVCalibrationDataset", "OVPipelineQuantizationConfig", "OVQuantizationConfig", "OVWeightQuantizationConfig", "OVDynamicQuantizationConfig", "OVMixedQuantizationConfig", ] ) else: _import_structure["openvino"].extend( [ "OVQuantizer", "OVCalibrationDataset", "OVPipelineQuantizationConfig", "OVQuantizationConfig", "OVWeightQuantizationConfig", "OVDynamicQuantizationConfig", "OVMixedQuantizationConfig", ] ) try: if not (is_openvino_available() and is_diffusers_available()): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: _import_structure["utils.dummy_openvino_and_diffusers_objects"] = [ "OVStableDiffusionPipeline", "OVStableDiffusionImg2ImgPipeline", "OVStableDiffusionInpaintPipeline", "OVStableDiffusionXLPipeline", "OVStableDiffusionXLImg2ImgPipeline", "OVStableDiffusionXLInpaintPipeline", "OVStableDiffusion3Pipeline", "OVStableDiffusion3Image2ImagePipeline", "OVStableDiffusion3InpaintPipeline", "OVLatentConsistencyModelPipeline", "OVLatentConsistencyModelImg2ImgPipeline", "OVLTXPipeline", "OVLTXImage2VideoPipeline", "OVFluxPipeline", "OVFluxImg2ImgPipeline", "OVFluxInpaintPipeline", "OVFluxFillPipeline", "OVSanaPipeline", "OVPipelineForImage2Image", "OVPipelineForText2Image", "OVPipelineForInpainting", "OVPipelineForText2Video", "OVDiffusionPipeline", ] else: _import_structure["openvino"].extend( [ "OVStableDiffusionPipeline", "OVStableDiffusionImg2ImgPipeline", "OVStableDiffusionInpaintPipeline", "OVStableDiffusionXLPipeline", "OVStableDiffusionXLImg2ImgPipeline", "OVStableDiffusionXLInpaintPipeline", "OVStableDiffusion3Pipeline", "OVStableDiffusion3Image2ImagePipeline", "OVStableDiffusion3InpaintPipeline", "OVLatentConsistencyModelPipeline", "OVLatentConsistencyModelImg2ImgPipeline", "OVLTXPipeline", "OVFluxPipeline", "OVFluxImg2ImgPipeline", "OVFluxInpaintPipeline", "OVFluxFillPipeline", "OVSanaPipeline", "OVPipelineForImage2Image", "OVPipelineForText2Image", "OVPipelineForInpainting", "OVPipelineForText2Video", "OVDiffusionPipeline", ] ) try: if not is_openvino_available(): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: from .utils import dummy_openvino_objects _import_structure["utils.dummy_openvino_objects"] = [ name for name in dir(dummy_openvino_objects) if not name.startswith("_") ] else: _import_structure["openvino"].extend( [ "OVModelForAudioClassification", "OVModelForAudioFrameClassification", "OVModelForAudioXVector", "OVModelForCausalLM", "OVModelForCTC", "OVModelForCustomTasks", "OVModelForFeatureExtraction", "OVModelForImageClassification", "OVModelForMaskedLM", "OVModelForPix2Struct", "OVModelForQuestionAnswering", "OVModelForSeq2SeqLM", "OVModelForSpeechSeq2Seq", "OVModelForTextToSpeechSeq2Seq", "OVModelForVision2Seq", "OVModelForVisualCausalLM", "OVModelForSequenceClassification", "OVModelForTokenClassification", "OVConfig", "OVModelOpenCLIPVisual", "OVModelOpenCLIPText", "OVModelOpenCLIPForZeroShotImageClassification", "OVModelForZeroShotImageClassification", "OVSamModel", ] ) try: if not is_neural_compressor_available(): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: from .utils import dummy_neural_compressor_objects _import_structure["utils.dummy_neural_compressor_objects"] = [ name for name in dir(dummy_neural_compressor_objects) if not name.startswith("_") ] else: _import_structure["neural_compressor"] = [ "INCConfig", "INCModel", "INCModelForCausalLM", "INCModelForMaskedLM", "INCModelForMultipleChoice", "INCModelForQuestionAnswering", "INCModelForSeq2SeqLM", "INCModelForSequenceClassification", "INCModelForTokenClassification", "INCModelForVision2Seq", "INCQuantizer", "INCSeq2SeqTrainer", "INCTrainer", ] try: if not (is_neural_compressor_available() and is_diffusers_available()): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: _import_structure["utils.dummy_neural_compressor_and_diffusers_objects"] = ["INCStableDiffusionPipeline"] else: _import_structure["neural_compressor"].append("INCStableDiffusionPipeline") try: if not (is_openvino_available() and is_sentence_transformers_available()): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: _import_structure["utils.dummy_openvino_and_sentence_transformers_objects"] = ["OVSentenceTransformer"] else: _import_structure["openvino"].extend(["OVSentenceTransformer"]) if TYPE_CHECKING: try: if not is_ipex_available(): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: from .utils.dummy_ipex_objects import * else: from .ipex import ( IPEXModel, IPEXModelForAudioClassification, IPEXModelForCausalLM, IPEXModelForImageClassification, IPEXModelForMaskedLM, IPEXModelForQuestionAnswering, IPEXModelForSeq2SeqLM, IPEXModelForSequenceClassification, IPEXModelForTokenClassification, ) try: if not (is_ipex_available() and is_sentence_transformers_available()): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: from .utils.dummy_ipex_objects import IPEXSentenceTransformer else: from .ipex import IPEXSentenceTransformer try: if not (is_openvino_available() and is_nncf_available()): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: from .utils.dummy_openvino_and_nncf_objects import ( OVCalibrationDataset, OVDynamicQuantizationConfig, OVMixedQuantizationConfig, OVPipelineQuantizationConfig, OVQuantizationConfig, OVQuantizer, OVWeightQuantizationConfig, ) else: from .openvino import ( OVCalibrationDataset, OVDynamicQuantizationConfig, OVMixedQuantizationConfig, OVPipelineQuantizationConfig, OVQuantizationConfig, OVQuantizer, OVWeightQuantizationConfig, ) try: if not (is_openvino_available() and is_diffusers_available()): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: from .utils.dummy_openvino_and_diffusers_objects import ( OVDiffusionPipeline, OVFluxPipeline, OVLatentConsistencyModelPipeline, OVPipelineForImage2Image, OVPipelineForInpainting, OVPipelineForText2Image, OVSanaPipeline, OVStableDiffusion3Img2ImgPipeline, OVStableDiffusion3InpaintPipeline, OVStableDiffusion3Pipeline, OVStableDiffusionImg2ImgPipeline, OVStableDiffusionInpaintPipeline, OVStableDiffusionPipeline, OVStableDiffusionXLImg2ImgPipeline, OVStableDiffusionXLPipeline, ) else: from .openvino import ( OVDiffusionPipeline, OVFluxPipeline, OVLatentConsistencyModelImg2ImgPipeline, OVLatentConsistencyModelPipeline, OVPipelineForImage2Image, OVPipelineForInpainting, OVPipelineForText2Image, OVSanaPipeline, OVSanaSprintPipeline, OVStableDiffusion3Img2ImgPipeline, OVStableDiffusion3InpaintPipeline, OVStableDiffusion3Pipeline, OVStableDiffusionImg2ImgPipeline, OVStableDiffusionInpaintPipeline, OVStableDiffusionPipeline, OVStableDiffusionXLImg2ImgPipeline, OVStableDiffusionXLInpaintPipeline, OVStableDiffusionXLPipeline, ) try: if not is_openvino_available(): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: from .utils.dummy_openvino_objects import * else: from .openvino import ( OVConfig, OVModelForAudioClassification, OVModelForAudioFrameClassification, OVModelForAudioXVector, OVModelForCausalLM, OVModelForCTC, OVModelForCustomTasks, OVModelForFeatureExtraction, OVModelForImageClassification, OVModelForMaskedLM, OVModelForQuestionAnswering, OVModelForSeq2SeqLM, OVModelForSequenceClassification, OVModelForSpeechSeq2Seq, OVModelForTextToSpeechSeq2Seq, OVModelForTokenClassification, OVModelForVision2Seq, OVModelForVisualCausalLM, OVModelForZeroShotImageClassification, OVModelOpenCLIPForZeroShotImageClassification, OVModelOpenCLIPText, OVModelOpenCLIPVisual, ) try: if not is_neural_compressor_available(): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: from .utils.dummy_neural_compressor_objects import * else: from .neural_compressor import ( INCConfig, INCModel, INCModelForCausalLM, INCModelForMaskedLM, INCModelForMultipleChoice, INCModelForQuestionAnswering, INCModelForSeq2SeqLM, INCModelForSequenceClassification, INCModelForTokenClassification, INCModelForVision2Seq, INCQuantizer, INCSeq2SeqTrainer, INCTrainer, ) try: if not (is_neural_compressor_available() and is_diffusers_available()): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: from .utils.dummy_neural_compressor_and_diffusers_objects import INCStableDiffusionPipeline else: from .neural_compressor import INCStableDiffusionPipeline try: if not (is_openvino_available() and is_sentence_transformers_available()): raise OptionalDependencyNotAvailable() except OptionalDependencyNotAvailable: from .utils.dummy_openvino_and_sentence_transformers_objects import OVSentenceTransformer else: from .openvino import OVSentenceTransformer else: import sys sys.modules[__name__] = _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)