跳转到主要内容

SpaCy的日志工具

项目描述

spacy-loggers: SpaCy的日志工具

PyPi Version

从spaCy v3.2开始,替代日志记录器被移动到单独的包中,这样它们就可以独立于核心spaCy库进行添加和更新。

spacy-loggers目前提供了以下日志记录器

spacy-loggers还提供了额外的实用日志记录器,以促进各个日志记录器之间的交互。

如果您想添加新的日志记录器或日志选项,请向此存储库提交PR!

设置和安装

spacy-loggers应该与spaCy v3.2+自动安装,因此您通常不需要单独安装它。您可以使用pip或从conda通道conda-forge安装它

pip install spacy-loggers
conda install -c conda-forge spacy-loggers

日志记录器

WandbLogger

安装

此日志记录器需要安装和配置wandb

pip install wandb
wandb login

使用方法

spacy.WandbLogger.v5是一个将每个训练步骤的结果发送到Weights & Biases工具仪表板的日志记录器。要使用此日志记录器,应安装Weights & Biases,并且您应该登录。此日志记录器将发送完整的配置文件到W&B,以及各种系统信息,如内存利用率、网络流量、磁盘IO、GPU统计信息等。这还将包括有关您的计算机名称和操作系统以及Python可执行文件位置的信息。

spacy.WandbLogger.v4和以下版本会自动调用默认控制台日志记录器。然而,从spacy.WandbLogger.v5开始,控制台日志记录必须通过使用ChainLogger来激活。这允许用户根据其偏好配置控制台日志记录器的参数。

注意:默认情况下,完整的(插值)训练配置将被发送到W&B仪表板。如果您想排除某些信息,例如路径名称,您可以在“点表示法”中列出这些字段在remove_config_values参数中。这些字段将在上传之前从配置中删除,但将在本地系统上存储的配置文件中保留。

示例配置

[training.logger]
@loggers = "spacy.WandbLogger.v5"
project_name = "monitor_spacy_training"
remove_config_values = ["paths.train", "paths.dev", "corpora.train.path", "corpora.dev.path"]
log_dataset_dir = "corpus"
model_log_interval = 1000
名称 类型 描述
project_name str 在Weights & Biases界面中项目的名称。如果项目不存在,则会自动创建。
remove_config_values List[str] 要排除在配置上传到W&B之前的值列表(默认:[])。
model_log_interval Optional[int] 在将模型检查点记录到W&B仪表板之间等待的步骤数(默认:None)。在spacy.WandbLogger.v2中添加。
log_dataset_dir Optional[str] 包含要记录和版本化的W&B工件的数据集目录(默认:None)。在spacy.WandbLogger.v2中添加。
entity Optional[str] 实体是您发送运行的用户名或团队名称。如果您不指定实体,则运行将发送到默认实体,通常是您的用户名(默认:None)。在spacy.WandbLogger.v3中添加。
run_name Optional[str] 运行的名称。如果您不指定运行名称,则名称将由wandb库创建(默认:None)。在spacy.WandbLogger.v3中添加。
log_best_dir Optional[str] 包含由spaCy保存的最佳训练模型(默认在training/model-best)的目录,将记录和版本化为W&B工件(默认:None)。在spacy.WandbLogger.v4中添加。
log_latest_dir Optional[str] 包含由spaCy保存的最新训练模型(默认在training/model-latest)的目录,将记录和版本化为W&B工件(默认:None)。在spacy.WandbLogger.v4中添加。
log_custom_stats Optional[List[str]] 应用于传递给日志记录器的info字典的正则表达式列表(默认:None)。与这些正则表达式匹配的统计和度量将自动记录。在spacy.WandbLogger.v5中添加。

MLflowLogger

安装

此记录器需要安装和配置mlflow

pip install mlflow

使用方法

spacy.MLflowLogger.v2是一种记录器,使用MLflow工具跟踪每个训练步骤的结果。要使用此记录器,应安装MLflow。在每次模型训练操作开始时,记录器将初始化一个新的MLflow运行,并将其设置为活动运行,在活动运行下将记录指标和参数。然后记录器将记录整个配置文件作为活动运行参数。在每个训练步骤之后,执行以下操作

  • 最终分数将在score指标下记录。
  • 各个组件的分数将记录在其默认名称下。
  • 不同组件的损失值将使用loss_前缀记录。
  • 如果最终分数高于当前运行的先前最佳分数,则将模型工件上传到MLflow。此操作仅在训练管道初始化阶段提供output_path参数时执行。

默认情况下,跟踪API将数据写入本地./mlruns目录中的文件。

spacy.MLflowLogger.v1 及以下版本会自动调用 默认控制台记录器。然而,从 spacy.MLflowLogger.v2 开始,必须通过使用 ChainLogger 来激活控制台记录。这允许用户根据他们的偏好配置控制台记录器的参数。

注意 默认情况下,完整的(插值)训练配置会发送到 MLflow。如果您想 排除某些信息,例如路径名称,可以在 remove_config_values 参数中以“点表示法”列出这些字段。这些字段将在上传之前从配置中删除,但将保留在本地系统上的配置文件中。

示例配置

[training.logger]
@loggers = "spacy.MLflowLogger.v2"
experiment_id = "1"
run_name = "with_fast_alignments"
nested = False
remove_config_values = ["paths.train", "paths.dev", "corpora.train.path", "corpora.dev.path"]
名称 类型 描述
run_id Optional[str] 已存在 MLflow 运行的唯一 ID,用于记录参数和指标。如果提供了 experiment_idrun_id,则可以省略(默认:None)。
experiment_id Optional[str] 创建当前运行时要使用的现有实验的 ID。仅当 run_idNone 时适用(默认:None)。
run_name Optional[str] 新运行的名称。仅当 run_idNone 时适用(默认:None)。
nested bool 控制运行是否嵌套在父运行中。将 True 创建嵌套运行(默认:False)。
tags Optional[Dict[str, Any]] 一个字符串键和值字典,用于在运行上设置标记。如果正在恢复运行,则在这些标记上设置恢复的运行。如果正在创建新运行,则在这些标记上设置新运行(默认:None)。
remove_config_values List[str] 在上传到 MLflow 之前从配置中排除的值列表(默认:[])。
log_custom_stats Optional[List[str]] 应用于传递给记录器的 info 字典的正则表达式列表(默认:None)。与这些正则表达式匹配的统计和指标将被自动记录。在 spacy.MLflowLogger.v2 中添加。

ClearMLLogger

安装

此记录器需要安装和配置 clearml

pip install clearml
clearml-init

使用方法

spacy.ClearMLLogger.v2 是一个记录器,使用 ClearML 工具跟踪每个训练步骤的结果。要使用此记录器,ClearML 应该已安装,并且您应该已初始化(使用上面的命令)。记录器会将所有收集到的信息发送到您的 ClearML 服务器,无论是 托管免费层 还是开源的 自托管服务器。此记录器捕获以下信息,所有这些信息都在 ClearML 网络用户界面中可见

  • 完整的 spaCy 配置文件内容。
  • 代码信息,例如 Git 存储库、提交 ID 和未提交的更改。
  • 完整的控制台输出。
  • 如时间、Python 版本和硬件信息等杂项信息。
  • 输出标量
    • 最终得分在标量 score 下记录。
    • 单个组件得分在单个标量图中分组(可以通过网络用户界面进行筛选)。
    • 不同组件的损失值将使用loss_前缀记录。

除了上述内容外,还可以选择性地捕获以下项目

  • 最佳模型目录(已压缩)。
  • 最新模型目录(已压缩)。
  • 用于训练的数据集。
    • 使用 ClearML 数据进行版本控制,并在网络用户界面的配置 -> 用户属性下链接。

spacy.ClearMLLogger.v1 及以下版本会自动调用 默认控制台记录器。然而,从 spacy.ClearMLLogger.v2 开始,必须通过使用 ChainLogger 来激活控制台记录。这允许用户根据他们的偏好配置控制台记录器的参数。

注意 默认情况下,完整的(插值)训练配置将发送到ClearML。如果您希望排除某些信息,例如路径名称,您可以在remove_config_values参数中以“点表示法”列出这些字段。这些字段将在上传前从配置中删除,但将保留在本地系统上的配置文件中。

示例配置

[training.logger]
@loggers = "spacy.ClearMLLogger.v2"
project_name = "Hello ClearML!"
task_name = "My spaCy Task"
model_log_interval = 1000
log_best_dir = training/model-best
log_latest_dir = training/model-last
log_dataset_dir = corpus
remove_config_values = ["paths.train", "paths.dev", "corpora.train.path", "corpora.dev.path"]
名称 类型 描述
project_name str ClearML界面中项目的名称。如果项目不存在,将自动创建。
task_name str ClearML任务的名称。任务是一个存在于项目中的实验。可以非唯一。
remove_config_values List[str] 在上传到ClearML之前从配置中排除的值列表(默认:[])。
model_log_interval Optional[int] 在将模型检查点记录到ClearML仪表板之间等待的步骤(默认:None)。如果没有设置log_best_dirlog_latest_dir,则不会有任何效果。
log_dataset_dir Optional[str] 包含要记录和版本化的数据集目录的目录,作为ClearML数据集(默认:None)。
log_best_dir Optional[str] 包含由spaCy保存的最佳训练模型(默认在training/model-best中),要记录和版本化为ClearML工件(默认:None)的目录。
log_latest_dir Optional[str] 包含由spaCy保存的最新训练模型(默认在training/model-last中),要记录和版本化为ClearML工件(默认:None)的目录。
log_custom_stats Optional[List[str]] 应用于传递给日志记录器的info字典的正则表达式列表(默认:None)。与这些正则表达式匹配的统计信息和指标将自动记录。在spacy.ClearMLLogger.v2中添加。

PyTorchLogger

安装

此日志记录器需要安装torch

pip install torch

使用方法

spacy.PyTorchLogger.v1与其他日志记录器不同,它不充当spaCy和外部框架之间的桥梁。相反,它用于查询PyTorch特定的指标并将它们提供给其他日志记录器。因此,它主要用于与ChainLogger一起使用。

每次达到日志检查点时,它都会从PyTorch后端查询统计数据并将它们存储在传递给它的字典中。下游日志记录器可以随后查找这些统计数据并将它们记录到它们首选的框架中。

目前支持以下PyTorch统计数据

示例配置

[training.logger]
@loggers = "spacy.ChainLogger.v1"
logger1 = {"@loggers": "spacy.PyTorchLogger.v1", "prefix": "pytorch", "device": "0", "cuda_mem_metric": "current"}
# Alternatively, you can use any other logger that provides the `log_custom_stats` parameter.
logger2 = {"@loggers": "spacy.LookupLogger.v1", "patterns": ["pytorch"]}
名称 类型 描述
prefix str 所有指标名称都使用点表示法以该字符串作为前缀,例如:<prefix>.<metric>(默认:pytorch)。
device int CUDA设备的标识符(默认:0)。
cuda_mem_pool str PyTorch文档中指定的内存池值之一:alllarge_poolsmall_pool(默认:all)。
cuda_mem_metric str PyTorch文档中指定的内存指标值之一:currentpeakallocatedfreed。要记录所有指标,请使用all

CupyLogger

安装

此日志记录器需要安装cupy

pip install cupy

使用方法

类似于PyTorchLoggerspacy.CupyLogger.v1不充当spaCy和外部框架之间的桥梁,而是与ChainLogger一起使用,以促进指标流向其他日志记录器。《CupyLogger》从CuPy后端查询统计数据并将它们存储在传递给它的info字典中。下游日志记录器可以随后查找这些统计数据并将它们记录到它们首选的框架中。

目前支持以下CuPy统计数据

示例配置

[training.logger]
@loggers = "spacy.ChainLogger.v1"
logger1 = {"@loggers": "spacy.CupyLogger.v1", "prefix": "cupy"}
# Alternatively, you can use any other logger that provides the `log_custom_stats` parameter.
logger2 = {"@loggers": "spacy.LookupLogger.v1", "patterns": ["cupy"]}
名称 类型 描述
prefix str 所有指标名称都使用点表示法以该字符串作为前缀,例如:<prefix>.<metric>(默认:"cupy")。

实用日志记录器

ChainLogger

使用方法

此日志记录器可用于级联多个日志记录器并按顺序执行它们。在链中较早执行的日志记录器可以通过将其添加到传递给它们的字典中来将信息传递给后来者。

目前,最多可以级联10个日志记录器。

示例配置

[training.logger]
@loggers = "spacy.ChainLogger.v1"
logger1 = {"@loggers": "spacy.PyTorchLogger.v1"}
logger2 = {"@loggers": "spacy.ConsoleLogger.v1", "progress_bar": "true"}
名称 类型 描述
logger1 可选[Callable] 链中的第一个日志记录器(默认:None)。
logger2 可选[Callable] 链中的第二个日志记录器(默认:None)。
logger3 可选[Callable] 链中的第三个日志记录器(默认:None)。
logger4 可选[Callable] 链中的第四个日志记录器(默认:None)。
logger5 可选[Callable] 链中的第五个日志记录器(默认:None)。
logger6 可选[Callable] 链中的第六个日志记录器(默认:None)。
logger7 可选[Callable] 链中的第七个日志记录器(默认:None)。
logger8 可选[Callable] 链中的第八个日志记录器(默认:None)。
logger9 可选[Callable] 链中的第九个日志记录器(默认:None)。
logger10 可选[Callable] 链中的第十个日志记录器(默认:None)。

LookupLogger

使用方法

此日志记录器可用于在info字典中查找统计信息并将它们打印到stdout。它主要用作开发新日志记录器时的工具。

示例配置

[training.logger]
@loggers = "spacy.ChainLogger.v1"
logger1 = {"@loggers": "spacy.PyTorchLogger.v1", "prefix": "pytorch"}
logger2 = {"@loggers": "spacy.LookupLogger.v1", "patterns": ["^[pP]ytorch"]}
名称 类型 描述
patterns List[str] 正则表达式列表。如果统计信息的名称与这些之一匹配,它将被打印到stdout

错误报告和其他问题

请使用spaCy的问题跟踪器报告错误,或在讨论板上为新问题开启新线程。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分布

spacy-loggers-1.0.5.tar.gz (20.8 kB 查看哈希)

上传时间

构建分布

spacy_loggers-1.0.5-py3-none-any.whl (22.3 kB 查看哈希)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面