speechbrain.utils.logger 模块

日志管理器,工具类

作者

摘要

MultiProcessLoggerAdapter

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

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

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

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

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

使用指定的日志级别记录消息,尊重 main_process_only 标志来决定是否根据当前进程进行日志记录。

参数:
  • 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, **kwargs)[source]

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

参数:
  • *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 自动设置。

参数:

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

返回:

MultiProcessLoggerAdapter 的实例,封装了具有指定名称的日志记录器。

返回类型:

MultiProcessLoggerAdapter

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

设置日志配置。

参数:
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]

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

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

  • abbreviate (bool) – 是否使用缩写 (k,M,G) 或单词 (Thousand, Million, Billion)。数字将像:“123.5k” 或 “123.5 Thousand”。

返回:

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

返回类型:

str

示例

>>> 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 环境的字符串。

有助于使实验尽可能可复现。

返回:

字符串已格式化,可以直接写入文件。

返回类型:

str

示例

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