Unverified Commit 1ba35e62 authored by Lintang Sutawika's avatar Lintang Sutawika Committed by GitHub
Browse files

Logging (#2203)



* changed source of eval_logger

* allow eval_logger to be set from args

* removed verbosity arg from non-main methods

* fix logging

* pre-commit

* set verbosity in eval logger

* replace utils.eval_logger

* fix logging in main

* add logging to docs

* add logging message

* nit

* add logging to docs

* refactor setup_logging to utils

---------
Co-authored-by: default avatarBaber <baber@hey.com>
parent 358adaf7
import logging
import os import os
from functools import cached_property from functools import cached_property
from operator import itemgetter from operator import itemgetter
...@@ -6,7 +7,9 @@ from typing import Any, Dict, List, Optional, Tuple, Union ...@@ -6,7 +7,9 @@ from typing import Any, Dict, List, Optional, Tuple, Union
from lm_eval.api.registry import register_model from lm_eval.api.registry import register_model
from lm_eval.models.api_models import TemplateAPI from lm_eval.models.api_models import TemplateAPI
from lm_eval.models.utils import handle_stop_sequences from lm_eval.models.utils import handle_stop_sequences
from lm_eval.utils import eval_logger
eval_logger = logging.getLogger(__name__)
@register_model("local-completions") @register_model("local-completions")
......
import logging
from importlib.util import find_spec from importlib.util import find_spec
from lm_eval import utils
from lm_eval.api.registry import register_model from lm_eval.api.registry import register_model
from lm_eval.models.huggingface import HFLM from lm_eval.models.huggingface import HFLM
from lm_eval.models.utils import get_dtype from lm_eval.models.utils import get_dtype
eval_logger = utils.eval_logger eval_logger = logging.getLogger(__name__)
@register_model("ipex") @register_model("ipex")
......
import json import json
import logging
from importlib.util import find_spec from importlib.util import find_spec
from pathlib import Path from pathlib import Path
from lm_eval import utils
from lm_eval.api.registry import register_model from lm_eval.api.registry import register_model
from lm_eval.models.huggingface import HFLM from lm_eval.models.huggingface import HFLM
eval_logger = utils.eval_logger eval_logger = logging.getLogger(__name__)
@register_model("openvino") @register_model("openvino")
......
...@@ -2,6 +2,7 @@ import collections ...@@ -2,6 +2,7 @@ import collections
import fnmatch import fnmatch
import gc import gc
import itertools import itertools
import logging
import time import time
from functools import wraps from functools import wraps
from typing import ( from typing import (
...@@ -22,7 +23,8 @@ from typing import ( ...@@ -22,7 +23,8 @@ from typing import (
import torch import torch
import transformers import transformers
from lm_eval.utils import eval_logger
eval_logger = logging.getLogger(__name__)
if TYPE_CHECKING: if TYPE_CHECKING:
......
import copy import copy
import logging
from importlib.metadata import version from importlib.metadata import version
from importlib.util import find_spec from importlib.util import find_spec
from typing import TYPE_CHECKING, Dict, List, Literal, Optional, Tuple, Union from typing import TYPE_CHECKING, Dict, List, Literal, Optional, Tuple, Union
...@@ -17,7 +18,6 @@ from lm_eval.models.utils import ( ...@@ -17,7 +18,6 @@ from lm_eval.models.utils import (
undistribute, undistribute,
) )
from lm_eval.utils import ( from lm_eval.utils import (
eval_logger,
get_rolling_token_windows, get_rolling_token_windows,
make_disjoint_window, make_disjoint_window,
) )
...@@ -34,7 +34,7 @@ except ModuleNotFoundError: ...@@ -34,7 +34,7 @@ except ModuleNotFoundError:
if TYPE_CHECKING: if TYPE_CHECKING:
pass pass
eval_logger = eval_logger eval_logger = logging.getLogger(__name__)
@register_model("vllm") @register_model("vllm")
......
import copy import copy
import logging
from typing import Dict, List, Optional from typing import Dict, List, Optional
import transformers import transformers
...@@ -14,7 +15,9 @@ from lm_eval.models.utils import ( ...@@ -14,7 +15,9 @@ from lm_eval.models.utils import (
undistribute, undistribute,
) )
from lm_eval.models.vllm_causallms import VLLM from lm_eval.models.vllm_causallms import VLLM
from lm_eval.utils import eval_logger
eval_logger = logging.getLogger(__name__)
try: try:
......
import ast import ast
import logging
import os import os
from typing import Dict from typing import Dict
from lm_eval import utils from lm_eval import utils
from lm_eval.utils import eval_logger
eval_logger = logging.getLogger(__name__)
# Prompt library. # Prompt library.
# Stores prompts in a dictionary indexed by 2 levels: # Stores prompts in a dictionary indexed by 2 levels:
# prompt category name, and prompt name. # prompt category name, and prompt name.
......
...@@ -13,6 +13,8 @@ from lm_eval.evaluator_utils import get_subtask_list ...@@ -13,6 +13,8 @@ from lm_eval.evaluator_utils import get_subtask_list
GROUP_ONLY_KEYS = list(GroupConfig().to_dict().keys()) GROUP_ONLY_KEYS = list(GroupConfig().to_dict().keys())
eval_logger = logging.getLogger(__name__)
class TaskManager: class TaskManager:
"""TaskManager indexes all tasks from the default `lm_eval/tasks/` """TaskManager indexes all tasks from the default `lm_eval/tasks/`
...@@ -22,14 +24,13 @@ class TaskManager: ...@@ -22,14 +24,13 @@ class TaskManager:
def __init__( def __init__(
self, self,
verbosity="INFO", verbosity: Optional[str] = None,
include_path: Optional[Union[str, List]] = None, include_path: Optional[Union[str, List]] = None,
include_defaults: bool = True, include_defaults: bool = True,
) -> None: ) -> None:
self.verbosity = verbosity if verbosity is not None:
utils.setup_logging(verbosity)
self.include_path = include_path self.include_path = include_path
self.logger = utils.eval_logger
self.logger.setLevel(getattr(logging, f"{verbosity}"))
self._task_index = self.initialize_tasks( self._task_index = self.initialize_tasks(
include_path=include_path, include_defaults=include_defaults include_path=include_path, include_defaults=include_defaults
...@@ -456,7 +457,7 @@ class TaskManager: ...@@ -456,7 +457,7 @@ class TaskManager:
"yaml_path": -1, "yaml_path": -1,
} }
elif tasks_and_groups[tag]["type"] != "tag": elif tasks_and_groups[tag]["type"] != "tag":
self.logger.info( eval_logger.info(
f"The tag '{tag}' is already registered as a group, this tag will not be registered. " f"The tag '{tag}' is already registered as a group, this tag will not be registered. "
"This may affect tasks you want to call." "This may affect tasks you want to call."
) )
...@@ -519,7 +520,7 @@ class TaskManager: ...@@ -519,7 +520,7 @@ class TaskManager:
config, task, tasks_and_groups, print_info config, task, tasks_and_groups, print_info
) )
else: else:
self.logger.debug(f"File {f} in {root} could not be loaded") eval_logger.debug(f"File {f} in {root} could not be loaded")
return tasks_and_groups return tasks_and_groups
......
...@@ -10,7 +10,7 @@ import yaml ...@@ -10,7 +10,7 @@ import yaml
from tqdm import tqdm from tqdm import tqdm
eval_logger = logging.getLogger("lm-eval") eval_logger = logging.getLogger(__name__)
SUBJECTS = { SUBJECTS = {
......
...@@ -11,7 +11,7 @@ import yaml ...@@ -11,7 +11,7 @@ import yaml
from tqdm import tqdm from tqdm import tqdm
eval_logger = logging.getLogger("lm-eval") eval_logger = logging.getLogger(__name__)
SUBJECTS = { SUBJECTS = {
......
...@@ -10,7 +10,7 @@ import yaml ...@@ -10,7 +10,7 @@ import yaml
from tqdm import tqdm from tqdm import tqdm
eval_logger = logging.getLogger("lm-eval") eval_logger = logging.getLogger(__name__)
SUBJECTS = { SUBJECTS = {
......
...@@ -17,13 +17,6 @@ import yaml ...@@ -17,13 +17,6 @@ import yaml
from jinja2 import BaseLoader, Environment, StrictUndefined from jinja2 import BaseLoader, Environment, StrictUndefined
logging.basicConfig(
format="%(asctime)s,%(msecs)03d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s",
datefmt="%Y-%m-%d:%H:%M:%S",
level=logging.INFO,
)
eval_logger = logging.getLogger("lm-eval")
SPACING = " " * 47 SPACING = " " * 47
HIGHER_IS_BETTER_SYMBOLS = { HIGHER_IS_BETTER_SYMBOLS = {
...@@ -32,6 +25,33 @@ HIGHER_IS_BETTER_SYMBOLS = { ...@@ -32,6 +25,33 @@ HIGHER_IS_BETTER_SYMBOLS = {
} }
def setup_logging(verbosity=logging.INFO):
# Configure the root logger
log_level = os.environ.get("LOGLEVEL", verbosity) or verbosity
level_map = {
"DEBUG": logging.DEBUG,
"INFO": logging.INFO,
"WARNING": logging.WARNING,
"ERROR": logging.ERROR,
"CRITICAL": logging.CRITICAL,
}
log_level = level_map.get(str(log_level).upper(), logging.INFO)
if not logging.root.handlers:
logging.basicConfig(
format="%(asctime)s,%(msecs)03d %(levelname)-8s [%(name)s:%(lineno)d] %(message)s",
datefmt="%Y-%m-%d:%H:%M:%S",
level=log_level,
)
if log_level == logging.DEBUG:
third_party_loggers = ["urllib3", "filelock", "fsspec"]
for logger_name in third_party_loggers:
logging.getLogger(logger_name).setLevel(logging.INFO)
else:
logging.getLogger().setLevel(log_level)
def hash_string(string: str) -> str: def hash_string(string: str) -> str:
return hashlib.sha256(string.encode("utf-8")).hexdigest() return hashlib.sha256(string.encode("utf-8")).hexdigest()
......
import argparse import argparse
import logging
import os import os
import yaml import yaml
from promptsource.templates import DatasetTemplates from promptsource.templates import DatasetTemplates
from tqdm import tqdm from tqdm import tqdm
# from lm_eval.api.registry import ALL_TASKS # from lm_eval.api.registry import ALL_TASKS
from lm_eval.logger import eval_logger eval_logger = logging.getLogger(__name__)
# from lm_eval.tasks import include_task_folder # from lm_eval.tasks import include_task_folder
......
...@@ -10,7 +10,6 @@ import os ...@@ -10,7 +10,6 @@ import os
from pytablewriter import LatexTableWriter, MarkdownTableWriter from pytablewriter import LatexTableWriter, MarkdownTableWriter
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
......
...@@ -11,7 +11,6 @@ from pytablewriter import MarkdownTableWriter ...@@ -11,7 +11,6 @@ from pytablewriter import MarkdownTableWriter
from lm_eval import tasks from lm_eval import tasks
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
......
import argparse import argparse
import logging
import os import os
from typing import Dict, List, Tuple from typing import Dict, List, Tuple
...@@ -8,11 +9,11 @@ import torch ...@@ -8,11 +9,11 @@ import torch
import lm_eval.evaluator import lm_eval.evaluator
import lm_eval.models.utils import lm_eval.models.utils
from lm_eval import tasks, utils from lm_eval import tasks
os.environ["TOKENIZERS_PARALLELISM"] = "false" os.environ["TOKENIZERS_PARALLELISM"] = "false"
eval_logger = utils.eval_logger eval_logger = logging.getLogger(__name__)
def memory_stats(): def memory_stats():
......
...@@ -4,6 +4,7 @@ Usage: ...@@ -4,6 +4,7 @@ Usage:
""" """
import argparse import argparse
import logging
import os import os
from typing import List from typing import List
...@@ -14,7 +15,9 @@ from transformers import ( ...@@ -14,7 +15,9 @@ from transformers import (
from lm_eval import simple_evaluate from lm_eval import simple_evaluate
from lm_eval.evaluator import request_caching_arg_to_dict from lm_eval.evaluator import request_caching_arg_to_dict
from lm_eval.utils import eval_logger
eval_logger = logging.getLogger(__name__)
MODULE_DIR = os.path.dirname(os.path.realpath(__file__)) MODULE_DIR = os.path.dirname(os.path.realpath(__file__))
......
import argparse import argparse
import logging
import os import os
import random import random
...@@ -7,7 +8,10 @@ import numpy as np ...@@ -7,7 +8,10 @@ import numpy as np
from lm_eval import tasks from lm_eval import tasks
from lm_eval.evaluator_utils import get_task_list from lm_eval.evaluator_utils import get_task_list
from lm_eval.tasks import TaskManager from lm_eval.tasks import TaskManager
from lm_eval.utils import eval_logger, join_iters from lm_eval.utils import join_iters
eval_logger = logging.getLogger(__name__)
EXAMPLE_DIVIDER = "!!@@##@@!! -- Example {i}\n" EXAMPLE_DIVIDER = "!!@@##@@!! -- Example {i}\n"
......
import argparse import argparse
import json import json
import logging
import os import os
import re import re
from pathlib import Path from pathlib import Path
...@@ -8,13 +9,15 @@ import pandas as pd ...@@ -8,13 +9,15 @@ import pandas as pd
from zeno_client import ZenoClient, ZenoMetric from zeno_client import ZenoClient, ZenoMetric
from lm_eval.utils import ( from lm_eval.utils import (
eval_logger,
get_latest_filename, get_latest_filename,
get_results_filenames, get_results_filenames,
get_sample_results_filenames, get_sample_results_filenames,
) )
eval_logger = logging.getLogger(__name__)
def parse_args(): def parse_args():
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description="Upload your data to the Zeno AI evaluation platform to visualize results. This requires a ZENO_API_KEY in your environment variables. The eleuther harness must be run with log_samples=True and an output_path set for data to be written to disk." description="Upload your data to the Zeno AI evaluation platform to visualize results. This requires a ZENO_API_KEY in your environment variables. The eleuther harness must be run with log_samples=True and an output_path set for data to be written to disk."
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment