Skip to content

Logger module in Efficient Transformers #517

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all 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
8 changes: 7 additions & 1 deletion QEfficient/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#
# -----------------------------------------------------------------------------

import atexit
import os
import warnings

Expand All @@ -16,7 +17,12 @@
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
# Placeholder for all non-transformer models registered in QEfficient
import QEfficient.utils.model_registery # noqa: F401
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: where will this logs be dumped? in the default QEFF_HOME path?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Currently I am placing the logs at "~/.cache/.log, but we can think of a better place to keep all the logs. Only consideration we need to keep is we need to store init time logs also, so at init time many directories or sub-directories won't be available.


# Register the cleanup function
atexit.register(QEFFLogger.close_logger)
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we make the naming as QEffLogger, consistent with other library naming styles.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes agree


# custom warning for the better logging experience
warnings.formatwarning = custom_format_warning
Expand Down
9 changes: 7 additions & 2 deletions QEfficient/base/modeling_qeff.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

import hashlib
import inspect
import logging
import shutil
import subprocess
import warnings
Expand All @@ -24,8 +23,9 @@
from QEfficient.generation.cloud_infer import QAICInferenceSession
from QEfficient.utils import constants, create_json, dump_qconfig, generate_mdp_partition_config, load_json
from QEfficient.utils.cache import QEFF_HOME, to_hashable
from QEfficient.utils.logging_utils import QEFFLogger

logger = logging.getLogger(__name__)
logger = QEFFLogger.get_logger()


class QEFFBaseModel(ABC):
Expand Down Expand Up @@ -63,6 +63,11 @@ def __init__(self, model: torch.nn.Module) -> None:
else:
logger.info(f"Pytorch transforms applied to model: {self.model_name}")

def set_loglevel(loglevel: Optional[str] = "INFO"):
QEFFLogger.set_loglevel(loglevel)
logger.info(f"log level to be set is: {loglevel}")
logger.debug(f"log level set to: {loglevel}")

@property
@abstractmethod
def model_name(self) -> str: ...
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/cloud/export.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@

from QEfficient.base.common import QEFFCommonLoader
from QEfficient.utils import check_and_assign_cache_dir
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()

# Specifically for Docker images.
ROOT_DIR = os.path.dirname(os.path.abspath(""))
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/cloud/infer.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@

from QEfficient.base.common import QEFFCommonLoader
from QEfficient.utils import check_and_assign_cache_dir, load_hf_processor, load_hf_tokenizer
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


# TODO: Remove after adding support for VLM's compile and execute
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/compile/compile_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@

from QEfficient.compile.qnn_compiler import compile as qnn_compile
from QEfficient.utils._utils import load_json, load_yaml
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


def create_and_dump_specializations(
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/compile/qnn_compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@
generate_data_format_config,
generate_qnn_specialization,
)
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


class QNN:
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/exporter/export_hf_to_cloud_ai_100.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@
from QEfficient.utils import load_hf_tokenizer
from QEfficient.utils.constants import QEFF_MODELS_DIR, Constants
from QEfficient.utils.generate_inputs import InputHandler
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


def convert_to_cloud_bertstyle(
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/generation/text_generation_inference.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@

from QEfficient.generation.cloud_infer import QAICInferenceSession
from QEfficient.utils import padding_check_and_fix
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


@dataclass
Expand Down
4 changes: 2 additions & 2 deletions QEfficient/peft/auto.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
# ----------------------------------------------------------------------------

import hashlib
import logging
import warnings
from typing import List, Optional, Union

Expand All @@ -28,8 +27,9 @@
from QEfficient.utils import constants
from QEfficient.utils._utils import get_padding_shape_from_config
from QEfficient.utils.cache import to_hashable
from QEfficient.utils.logging_utils import QEFFLogger

logger = logging.getLogger(__name__)
logger = QEFFLogger.get_logger()


class QEffAutoPeftModelForCausalLM(QEFFBaseModel):
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/peft/lora/auto.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
from QEfficient.peft.lora.pytorch_transforms import LoraModelInputsTransform, TargetModulesTransform
from QEfficient.utils import constants, get_padding_shape_from_config
from QEfficient.utils.cache import to_hashable
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


class QEffAutoLoraModelForCausalLM(QEFFAutoModelForCausalLM):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@
GraniteMoeRotaryEmbedding,
GraniteMoeTopKGating,
load_balancing_loss_func,
logger,
repeat_kv,
rotate_half,
)

from QEfficient.transformers.cache_utils import QEffDynamicCache
from QEfficient.transformers.modeling_attn_mask_utils import _create_causal_mask
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


class QEffGraniteMoeRotaryEmbedding(GraniteMoeRotaryEmbedding):
Expand Down Expand Up @@ -199,9 +201,7 @@ def forward(
raise ValueError("You must specify exactly one of input_ids or inputs_embeds")

if self.gradient_checkpointing and self.training and use_cache:
logger.warning_once(
"`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`."
)
logger.warning("`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`.")
use_cache = False

if inputs_embeds is None:
Expand All @@ -216,7 +216,7 @@ def forward(
past_key_values = QEffDynamicCache()
else:
past_key_values = QEffDynamicCache.from_legacy_cache(past_key_values)
logger.warning_once(
logger.warning(
"We detected that you are passing `past_key_values` as a tuple of tuples. This is deprecated and "
"will be removed in v4.47. Please convert your cache or use an appropriate `Cache` class "
"(https://huggingface.co/docs/transformers/kv_cache#legacy-cache-format)"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@

from QEfficient.utils import constants
from QEfficient.utils._utils import IOInfo, get_padding_shape_from_config
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


class QEffInternEncoderWrapper(nn.Module):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from transformers.modeling_attn_mask_utils import AttentionMaskConverter
from transformers.modeling_outputs import CausalLMOutputWithPast
from transformers.modeling_utils import PreTrainedModel
from transformers.models.llama.modeling_llama import LlamaMLP, LlamaRMSNorm, logger, repeat_kv
from transformers.models.llama.modeling_llama import LlamaMLP, LlamaRMSNorm, repeat_kv

from QEfficient.transformers.cache_utils import QEffDynamicCache
from QEfficient.transformers.modeling_attn_mask_utils import _create_causal_mask
Expand All @@ -29,6 +29,9 @@
QEffLlamaRotaryEmbedding,
qeff_apply_rotary_pos_emb,
)
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


class QEffLlamaSwiftKVConfig(LlamaConfig):
Expand Down Expand Up @@ -302,7 +305,7 @@ def forward(
past_key_values = QEffDynamicCache()
else:
past_key_values = QEffDynamicCache.from_legacy_cache(past_key_values)
logger.warning_once(
logger.warning(
"We detected that you are passing `past_key_values` as a tuple of tuples. This is deprecated and "
"will be removed in v4.47. Please convert your cache or use an appropriate `Cache` class "
"(https://huggingface.co/docs/transformers/kv_cache#legacy-cache-format)"
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/transformers/models/llava/modeling_llava.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
)

from QEfficient.utils._utils import IOInfo
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()

BS = 1
NUM_CHANNEL = 3
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@

from QEfficient.utils import constants
from QEfficient.utils._utils import IOInfo
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


class QEffLlavaNextEncoderWrapper(nn.Module):
Expand Down Expand Up @@ -65,7 +67,7 @@ def forward(self, pixel_values, image_sizes):
np.prod(image_feature.shape) % (num_patch_height * num_patch_width * height * width) != 0
and vision_feature_select_strategy == "default"
):
logger.warning_once(
logger.warning(
"Image feature shape does not line up with the provided patch size. "
"You may be using the `default` vision_feature_select_strategy with a"
" visual encoder that does not have CLS."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,15 @@
MistralForCausalLM,
MistralModel,
MistralRotaryEmbedding,
logger,
repeat_kv,
rotate_half,
)

from QEfficient.transformers.cache_utils import QEffDynamicCache
from QEfficient.transformers.modeling_attn_mask_utils import _create_causal_mask
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


class QEffMistralRotaryEmbedding(MistralRotaryEmbedding):
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/transformers/models/mllama/modeling_mllama.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
MllamaTextModel,
MllamaTextSelfAttention,
MllamaVisionModel,
logger,
repeat_kv,
rotate_half,
)
Expand All @@ -43,6 +42,9 @@
)
from QEfficient.utils import constants
from QEfficient.utils._utils import IOInfo
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()

MAX_NUM_IMG = 1
NUM_CHANNEL = 3
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/transformers/models/modeling_auto.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,9 @@
get_padding_shape_from_config,
)
from QEfficient.utils.cache import to_hashable
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


class QEFFTransformersBase(QEFFBaseModel):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,14 @@
WhisperForConditionalGeneration,
WhisperModel,
WhisperPositionalEmbedding,
logger,
)

from QEfficient.transformers.cache_utils import QEffEncoderDecoderCache
from QEfficient.transformers.modeling_attn_mask_utils import _create_causal_mask
from QEfficient.utils._utils import IOInfo
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


class QEffWhisperPositionalEmbedding(WhisperPositionalEmbedding):
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/transformers/quantizers/quantizer_awq.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
replace_linear_layer_with_target_layer,
replace_quantization_scales,
)
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


class QEffAwqConfig(AwqConfig):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@
from transformers.utils.quantization_config import CompressedTensorsConfig, QuantizationConfigMixin, QuantizationMethod

from QEfficient.transformers.quantizers.quantizer_utils import get_keys_to_not_convert
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()

FP8_DTYPE = torch.float8_e4m3fn

Expand Down
4 changes: 3 additions & 1 deletion QEfficient/transformers/quantizers/quantizer_gptq.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
repack_zeros,
replace_linear_layer_with_target_layer,
)
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


class QEffGPTQConfig(GPTQConfig):
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/transformers/transform.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
from QEfficient.base.modeling_qeff import QEFFBaseModel
from QEfficient.transformers.cache_utils import QEffDynamicCache
from QEfficient.transformers.modeling_utils import TransformersToQEffModulesDict
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


def replace_module_with_qeff_layers(model: nn.Module) -> None:
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/utils/_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@
)

from QEfficient.utils.constants import QEFF_MODELS_DIR, Constants, QnnConstants
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


class DownloadRetryLimitExceeded(Exception):
Expand Down
4 changes: 3 additions & 1 deletion QEfficient/utils/device_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
import subprocess

from QEfficient.utils.constants import Constants
from QEfficient.utils.logging_utils import logger
from QEfficient.utils.logging_utils import QEFFLogger

logger = QEFFLogger.get_logger()


def is_networks_loaded(stdout):
Expand Down
Loading
Loading