diff --git a/intel_extension_for_transformers/neural_chat/utils/common.py b/intel_extension_for_transformers/neural_chat/utils/common.py index 22c599d6215..4d25f829a16 100644 --- a/intel_extension_for_transformers/neural_chat/utils/common.py +++ b/intel_extension_for_transformers/neural_chat/utils/common.py @@ -69,47 +69,3 @@ def is_hf_model(model_name_or_path): def supported_gpus(): return ['flex', 'max', 'arc'] - -def get_gpu_family(): - ''' Get gpu device family info. - - Return 'flex'|'max'|'arc'| 'no_gpu'| assert - - Note, this function need to import intel_extension_for_pytorch - - - Additional info (common gpu name): - 'Intel(R) Data Center GPU Flex 170' - 'Intel(R) Data Center GPU Max 1100' - 'Intel(R) Arc(TM) A770 Graphics' - ''' - - import intel_extension_for_pytorch as ipex - if not (hasattr(torch, "xpu") and torch.xpu.is_available()): - return 'no_gpu' - - name = torch.xpu.get_device_name() - if 'GPU Flex' in name: - result = 'flex' - elif 'GPU Max' in name: - result = 'max' - elif 'Arc(TM)' in name: - result = 'arc' - else: - assert False, "Unsupported GPU device: {}".format(name) - - if result not in supported_gpus(): - assert False, "Unsupported GPU device: {}".format(name) - else: - return result - -_autoround_available = importlib.util.find_spec("auto_round") is not None -_autoround_version = "N/A" -if _autoround_available: - try: - _autoround_version = importlib_metadata.version("auto_round") - except importlib_metadata.PackageNotFoundError: - _autoround_available = False - -def is_autoround_available(): - return _autoround_available diff --git a/intel_extension_for_transformers/tools/utils.py b/intel_extension_for_transformers/tools/utils.py new file mode 100644 index 00000000000..0e466724380 --- /dev/null +++ b/intel_extension_for_transformers/tools/utils.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright (c) 2024 Intel Corporation +# +# 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. + +"""Utility.""" + +import importlib +import sys +import torch +if sys.version_info < (3, 8): + import importlib_metadata +else: + import importlib.metadata as importlib_metadata + +try: + import habana_frameworks.torch.hpu as hthpu + is_hpu_available = True +except ImportError: + is_hpu_available = False + +def supported_gpus(): + return ['flex', 'max', 'arc'] + +def get_gpu_family(): + ''' Get gpu device family info. + + Return 'flex'|'max'|'arc'| 'no_gpu'| assert + + Note, this function need to import intel_extension_for_pytorch + + + Additional info (common gpu name): + 'Intel(R) Data Center GPU Flex 170' + 'Intel(R) Data Center GPU Max 1100' + 'Intel(R) Arc(TM) A770 Graphics' + ''' + + import intel_extension_for_pytorch as ipex + if not (hasattr(torch, "xpu") and torch.xpu.is_available()): + return 'no_gpu' + + name = torch.xpu.get_device_name() + if 'GPU Flex' in name: + result = 'flex' + elif 'GPU Max' in name: + result = 'max' + elif 'Arc(TM)' in name: + result = 'arc' + else: + assert False, "Unsupported GPU device: {}".format(name) + + if result not in supported_gpus(): + assert False, "Unsupported GPU device: {}".format(name) + else: + return result + +_ipex_available = importlib.util.find_spec("intel_extension_for_pytorch") is not None +_ipex_version = "N/A" +if _ipex_available: + try: + _ipex_version = importlib_metadata.version("intel_extension_for_pytorch") + except importlib_metadata.PackageNotFoundError: + _ipex_available = False + +def is_ipex_available(): + return _ipex_available + +_autoround_available = importlib.util.find_spec("auto_round") is not None +_autoround_version = "N/A" +if _autoround_available: + try: + _autoround_version = importlib_metadata.version("auto_round") + except importlib_metadata.PackageNotFoundError: + _autoround_available = False + +def is_autoround_available(): + return _autoround_available + +def get_device_type(): + if torch.cuda.is_available(): + device = "cuda" + elif is_hpu_available: + device = "hpu" + elif is_ipex_available() and torch.xpu.is_available(): + device = "xpu" + else: + device = "cpu" + return device diff --git a/intel_extension_for_transformers/transformers/dpo_trainer.py b/intel_extension_for_transformers/transformers/dpo_trainer.py index ecb71f211f9..1f41b643aca 100644 --- a/intel_extension_for_transformers/transformers/dpo_trainer.py +++ b/intel_extension_for_transformers/transformers/dpo_trainer.py @@ -29,7 +29,7 @@ from peft import PeftModel, get_peft_model, prepare_model_for_kbit_training import time import logging -from intel_extension_for_transformers.neural_chat.utils.common import is_hpu_available +from intel_extension_for_transformers.tools.utils import is_hpu_available logger = logging.getLogger(__name__) diff --git a/intel_extension_for_transformers/transformers/llm/finetuning/finetuning.py b/intel_extension_for_transformers/transformers/llm/finetuning/finetuning.py index 9388a7f5725..1149827c127 100644 --- a/intel_extension_for_transformers/transformers/llm/finetuning/finetuning.py +++ b/intel_extension_for_transformers/transformers/llm/finetuning/finetuning.py @@ -60,8 +60,8 @@ from transformers.integrations.deepspeed import ( is_deepspeed_available, ) -from intel_extension_for_transformers.neural_chat.utils.common import is_hpu_available -from intel_extension_for_transformers.neural_chat.utils.common import get_device_type +from intel_extension_for_transformers.tools.utils import is_hpu_available +from intel_extension_for_transformers.tools.utils import get_device_type if is_bitsandbytes_available(): diff --git a/intel_extension_for_transformers/transformers/llm/quantization/utils.py b/intel_extension_for_transformers/transformers/llm/quantization/utils.py index 4e5bad8d3a1..9e6bd1f31ac 100644 --- a/intel_extension_for_transformers/transformers/llm/quantization/utils.py +++ b/intel_extension_for_transformers/transformers/llm/quantization/utils.py @@ -26,7 +26,7 @@ from neural_compressor.adaptor.torch_utils.model_wrapper import WeightOnlyLinear from neural_compressor.utils.utility import LazyImport from neural_compressor.config import PostTrainingQuantConfig -from intel_extension_for_transformers.neural_chat.utils.common import is_ipex_available, is_autoround_available +from intel_extension_for_transformers.tools.utils import is_ipex_available, is_autoround_available from transformers import AutoTokenizer if is_ipex_available(): diff --git a/intel_extension_for_transformers/transformers/modeling/trl_models/modeling_base.py b/intel_extension_for_transformers/transformers/modeling/trl_models/modeling_base.py index fcbed718948..a8acf5f9dbf 100644 --- a/intel_extension_for_transformers/transformers/modeling/trl_models/modeling_base.py +++ b/intel_extension_for_transformers/transformers/modeling/trl_models/modeling_base.py @@ -32,7 +32,7 @@ from safetensors.torch import load_file as safe_load_file from transformers import PreTrainedModel import importlib -from intel_extension_for_transformers.neural_chat.utils.common import is_hpu_available +from intel_extension_for_transformers.tools.utils import is_hpu_available def is_peft_available(): diff --git a/requirements.txt b/requirements.txt index abb2e6fd1a1..0b45ec85d3f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,3 @@ -fastapi py-cpuinfo setuptools>=65 setuptools_scm[toml]>=6.2 -uvicorn -yacs diff --git a/tests/CI/test_weight_only_gpu.py b/tests/CI/test_weight_only_gpu.py index 6e72f53a9c4..1221170c51f 100644 --- a/tests/CI/test_weight_only_gpu.py +++ b/tests/CI/test_weight_only_gpu.py @@ -24,7 +24,7 @@ from intel_extension_for_transformers.transformers import GPTQConfig, RtnConfig from math import isclose from transformers import AutoTokenizer -from intel_extension_for_transformers.neural_chat.utils.common import get_gpu_family, is_ipex_available +from intel_extension_for_transformers.tools.utils import get_gpu_family, is_ipex_available from torch.utils.data import DataLoader