speechbrain.utils.logger 模块

管理日志记录器,实用工具

Author

摘要

类:

MultiProcessLoggerAdapter

处理多进程日志记录的日志适配器,确保日志仅在指定的主进程中写入。

TqdmCompatibleStreamHandler

与TQDM兼容的StreamHandler。

函数:

format_order_of_magnitude

将数字格式化为适当的数量级以便打印。

get_environment_description

返回一个描述当前Python / SpeechBrain环境的字符串。

get_logger

检索具有指定名称的记录器,如果设置了环境变量SB_LOG_LEVEL,则应用其日志级别,否则默认为INFO级别。

setup_logging

设置日志配置。

参考

class speechbrain.utils.logger.MultiProcessLoggerAdapter(logger, extra=None)[source]

基础:LoggerAdapter

处理多进程日志记录的日志适配器,确保日志仅在指定的主进程中写入。此类扩展了logging.LoggerAdapter,并提供了额外的功能,用于在多进程环境中控制日志记录,可以选择将日志限制在主进程中。

这个类深受HuggingFace Accelerate工具包的启发: https://github.com/huggingface/accelerate/blob/85b1a03552cf8d58e036634e004220c189bfb247/src/accelerate/logging.py#L22

log(level: int, msg: str, *args: tuple, **kwargs: dict)[source]

记录一条具有指定日志级别的消息,尊重main_process_only标志来决定是否根据当前进程记录日志。

Parameters:
  • level (int) – 日志记录级别(例如,logging.INFO, logging.WARNING)。

  • msg (str) – 要记录的消息。

  • *args (tuple) – 传递给日志记录器的额外位置参数。

  • **kwargs (dict) – 传递给日志记录器的额外关键字参数,包括: - main_process_only (bool): 如果为True,仅从主进程记录日志(默认值:True)。 - stacklevel (int): 记录日志时使用的堆栈级别(默认值:2)。

注释

如果 main_process_only 为 True,日志将仅在当前进程为主进程时写入,由 if_main_process() 确定。

warning_once(*args: tuple, **kwargs: dict)[source]

通过使用缓存来防止重复警告,仅记录一次警告消息。

Parameters:
  • *args (tuple) – 传递给警告日志的位置参数。

  • **kwargs (dict) – 传递给警告日志的关键字参数。

注释

此方法使用functools.lru_cache(None)进行装饰,确保无论该方法被调用多少次,警告信息只会被记录一次。

speechbrain.utils.logger.get_logger(name: str) MultiProcessLoggerAdapter[source]

检索具有指定名称的记录器,如果设置了环境变量SB_LOG_LEVEL,则应用其日志级别,否则默认为INFO级别。

如果环境变量 SB_LOG_LEVEL 未定义,则默认为 INFO 级别,并在环境中设置此级别以供将来使用。环境变量可以手动设置,也可以在 Brain 类中自动设置,遵循 setup_logging

Parameters:

name (str) – 要检索的记录器的名称。

Returns:

一个MultiProcessLoggerAdapter的实例,用于包装具有指定名称的记录器。

Return type:

MultiProcessLoggerAdapter

speechbrain.utils.logger.setup_logging(config_path='log-config.yaml', overrides={}, default_level='DEBUG')[source]

设置日志配置。

Parameters:
class speechbrain.utils.logger.TqdmCompatibleStreamHandler(stream=None)[source]

基础类: StreamHandler

TQDM 兼容的 StreamHandler。

写入和打印应通过 tqdm.tqdm.write 进行,以免 tqdm 进度条被打乱。

emit(record)[source]

TQDM 兼容的 StreamHandler。

speechbrain.utils.logger.format_order_of_magnitude(number, abbreviate=True)[source]

将数字格式化为适合打印的数量级。

Parameters:
  • number (int, float) – 要格式化的数字。

  • abbreviate (bool) – 是否使用缩写(k,M,G)或单词(千, 百万, 十亿)。数字将显示为:“123.5k” 或 “123.5 千”。

Returns:

格式化后的数字。请注意,数量级标记是字符串的一部分。

Return type:

str

Example

>>> print(format_order_of_magnitude(123456))
123.5k
>>> print(format_order_of_magnitude(0.00000123, abbreviate=False))
1.2 millionths
>>> print(format_order_of_magnitude(5, abbreviate=False))
5
speechbrain.utils.logger.get_environment_description()[source]

返回一个描述当前Python / SpeechBrain环境的字符串。

用于使实验尽可能可重复。

Returns:

字符串已格式化,准备写入文件。

Return type:

str

Example

>>> get_environment_description().splitlines()[0]
'SpeechBrain system description'