SpaCy的日志工具
项目描述
spacy-loggers: SpaCy的日志工具
从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_id 和 run_id ,则可以省略(默认:None )。 |
experiment_id |
Optional[str] |
创建当前运行时要使用的现有实验的 ID。仅当 run_id 为 None 时适用(默认:None )。 |
run_name |
Optional[str] |
新运行的名称。仅当 run_id 为 None 时适用(默认: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_dir 或log_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文档中指定的内存池值之一:all 、large_pool 、small_pool (默认:all )。 |
cuda_mem_metric |
str |
PyTorch文档中指定的内存指标值之一:current 、peak 、allocated 、freed 。要记录所有指标,请使用all 。 |
CupyLogger
安装
此日志记录器需要安装cupy
。
pip install cupy
使用方法
类似于PyTorchLogger
,spacy.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的问题跟踪器报告错误,或在讨论板上为新问题开启新线程。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。