Transformers 4.37 中文文档(十九)(2)https://developer.aliyun.com/article/1564923
get_process_log_level
( )
根据这个进程是节点 0 的主进程、非 0 节点的主进程还是非主进程,返回要使用的日志级别。
对于主进程,日志级别默认为设置的日志级别(如果您没有做任何操作,则为logging.WARNING
),除非被log_level
参数覆盖。
对于副本进程,默认的日志级别为logging.WARNING
,除非被log_level_replica
参数覆盖。
根据should_log
的返回值来选择主进程和副本进程的设置。
get_warmup_steps
( num_training_steps: int )
获取用于线性预热的步数。
main_process_first
( local = True desc = 'work' )
参数
local
(bool
, optional, defaults toTrue
) — 如果为True
,则首先处理每个节点的排名为 0 的进程,如果为False
,则首先处理排名为 0 的节点 0 的进程。在具有共享文件系统的多节点环境中,您很可能会想要使用local=False
,以便只有第一个节点的主进程会进行处理。但是,如果文件系统不共享,则每个节点的主进程将需要进行处理,这是默认行为。desc
(str
, optional, defaults to"work"
) — 用于调试日志中的工作描述
用于 torch 分布式环境的上下文管理器,在主进程上需要执行某些操作,同时阻塞副本,完成后释放副本。
其中一种用法是用于datasets
的map
功能,为了有效率,应该在主进程上运行一次,完成后保存结果的缓存版本,然后副本会自动加载。
set_dataloader
( train_batch_size: int = 8 eval_batch_size: int = 8 drop_last: bool = False num_workers: int = 0 pin_memory: bool = True persistent_workers: bool = False auto_find_batch_size: bool = False ignore_data_skip: bool = False sampler_seed: Optional = None )
参数
drop_last
(bool
, optional, defaults toFalse
) — 是否丢弃最后一个不完整的批次(如果数据集的长度不可被批次大小整除)。num_workers
(int
, optional, defaults to 0) — 用于数据加载的子进程数量(仅适用于 PyTorch)。0 表示数据将在主进程中加载。pin_memory
(bool
, optional, defaults toTrue
) — 是否要在数据加载器中固定内存。默认为True
。persistent_workers
(bool
, optional, defaults toFalse
) — 如果为 True,则数据加载器在数据集被消耗一次后不会关闭工作进程。这允许保持工作进程的数据集实例保持活动状态。可能会加快训练速度,但会增加内存使用量。默认为False
。auto_find_batch_size
(bool
, optional, defaults toFalse
) — 是否通过指数衰减自动找到适合内存的批次大小,避免 CUDA 内存不足错误。需要安装 accelerate(pip install accelerate
)ignore_data_skip
(bool
, optional, defaults toFalse
) — 在恢复训练时,是否跳过批次和轮次以使数据加载处于与先前训练相同阶段。如果设置为True
,训练将更快开始(因为跳过步骤可能需要很长时间),但不会产生与中断训练相同的结果。sampler_seed
(int
, optional) — 用于数据采样器的随机种子。如果未设置,则数据采样的随机生成器将使用与self.seed
相同的种子。这可用于确保数据采样的可重复性,独立于模型种子。
将所有与数据加载器创建相关的参数重新组合的方法。
示例:
>>> from transformers import TrainingArguments >>> args = TrainingArguments("working_dir") >>> args = args.set_dataloader(train_batch_size=16, eval_batch_size=64) >>> args.per_device_train_batch_size 16
set_evaluate
( strategy: Union = 'no' steps: int = 500 batch_size: int = 8 accumulation_steps: Optional = None delay: Optional = None loss_only: bool = False jit_mode: bool = False )
参数
strategy
(str
或 IntervalStrategy, optional, defaults to"no"
) — 训练过程中采用的评估策略。可能的值为:
"no"
: 训练过程中不进行评估。"steps"
: 每steps
进行评估(并记录日志)。"epoch"
: 每个时代结束时进行评估。
- 设置与
"no"
不同的strategy
将self.do_eval
设置为True
。 steps
(int
, optional, 默认为 500) — 如果strategy="steps"
,两次评估之间的更新步数。batch_size
(int
optional, 默认为 8) — 用于评估的每个设备(GPU/TPU 核心/CPU…)的批量大小。accumulation_steps
(int
, optional) — 在将结果移动到 CPU 之前,累积输出张量的预测步数。如果未设置,整个预测将在 GPU/TPU 上累积后移至 CPU(速度更快但需要更多内存)。delay
(float
, optional) — 等待进行第一次评估的周期数或步数,取决于评估策略。loss_only
(bool
, optional, 默认为False
) — 仅忽略损失以外的所有输出。jit_mode
(bool
, optional) — 是否使用 PyTorch jit 跟踪进行推断。
将所有与评估相关的参数分组的方法。
示例:
>>> from transformers import TrainingArguments >>> args = TrainingArguments("working_dir") >>> args = args.set_evaluate(strategy="steps", steps=100) >>> args.eval_steps 100
set_logging
( strategy: Union = 'steps' steps: int = 500 report_to: Union = 'none' level: str = 'passive' first_step: bool = False nan_inf_filter: bool = False on_each_node: bool = False replica_level: str = 'passive' )
参数
strategy
(str
或 IntervalStrategy, optional, 默认为"steps"
) — 训练期间采用的日志记录策略。可能的值有:
"no"
: 训练期间不保存。"epoch"
: 在每个周期结束时保存。"steps"
: 每save_steps
保存一次。
steps
(int
, optional, 默认为 500) — 如果strategy="steps"
,两次日志记录之间的更新步数。level
(str
, optional, 默认为"passive"
) — 用于主进程的记录器日志级别。可能的选择是字符串形式的日志级别:"debug"
、"info"
、"warning"
、"error"
和"critical"
,以及一个不设置任何内容并让应用程序设置级别的"passive"
级别。report_to
(str
或List[str]
, optional, 默认为"all"
) — 报告结果和日志的集成列表。支持的平台有"azure_ml"
、"clearml"
、"codecarbon"
、"comet_ml"
、"dagshub"
、"dvclive"
、"flyte"
、"mlflow"
、"neptune"
、"tensorboard"
和"wandb"
。使用"all"
报告所有已安装的集成,使用"none"
不报告任何集成。first_step
(bool
, optional, 默认为False
) — 是否记录和评估第一个global_step
。nan_inf_filter
(bool
, optional, 默认为True
) — 是否过滤用于日志记录的nan
和inf
损失。如果设置为True
,则过滤每个步骤的nan
或inf
损失,并取代当前日志窗口的平均损失。nan_inf_filter
仅影响损失值的日志记录,不会改变计算梯度或将梯度应用于模型的行为。on_each_node
(bool
, optional, 默认为True
) — 在多节点分布式训练中,是否每个节点仅使用log_level
一次进行日志记录,或仅在主节点上进行日志记录。replica_level
(str
, optional, 默认为"passive"
) — 用于副本的记录器日志级别。与log_level
相同的选择。
将所有与日志记录相关的参数分组的方法。
示例:
>>> from transformers import TrainingArguments >>> args = TrainingArguments("working_dir") >>> args = args.set_logging(strategy="steps", steps=100) >>> args.logging_steps 100
set_lr_scheduler
( name: Union = 'linear' num_epochs: float = 3.0 max_steps: int = -1 warmup_ratio: float = 0 warmup_steps: int = 0 )
参数
name
(str
或 SchedulerType, optional, 默认为"linear"
) — 要使用的调度程序类型。查看 SchedulerType 的文档以获取所有可能的值。num_epochs(float,
optional, 默认为 3.0) — 要执行的总训练周期数(如果不是整数,则在停止训练之前执行最后一个周期的小数部分百分比)。max_steps
(int
, 可选, 默认为 -1) — 如果设置为正数,则执行的总训练步数。覆盖num_train_epochs
。对于有限的数据集,如果所有数据都用完,则通过数据集重复训练,直到达到max_steps
。warmup_ratio
(float
, 可选, 默认为 0.0) — 用于从 0 到learning_rate
进行线性预热的总训练步骤的比率。warmup_steps
(int
, 可选, 默认为 0) — 用于从 0 到learning_rate
进行线性预热的步骤数。覆盖warmup_ratio
的任何效果。
一个将所有与学习率调度器及其超参数相关联的参数重新分组的方法。
示例:
>>> from transformers import TrainingArguments >>> args = TrainingArguments("working_dir") >>> args = args.set_lr_scheduler(name="cosine", warmup_ratio=0.05) >>> args.warmup_ratio 0.05
set_optimizer
( name: Union = 'adamw_torch' learning_rate: float = 5e-05 weight_decay: float = 0 beta1: float = 0.9 beta2: float = 0.999 epsilon: float = 1e-08 args: Optional = None )
参数
name
(str
或training_args.OptimizerNames
, 可选, 默认为"adamw_torch"
) — 要使用的优化器:“adamw_hf”、“adamw_torch”、“adamw_torch_fused”、“adamw_apex_fused”、“adamw_anyprecision"或"adafactor”。learning_rate
(float
, 可选, 默认为 5e-5) — 初始学习率。weight_decay
(float
, 可选, 默认为 0) — 应用的权重衰减(如果不为零)到所有层,除了所有偏置和 LayerNorm 权重。beta1
(float
, 可选, 默认为 0.9) — Adam 优化器或其变种的 beta1 超参数。beta2
(float
, 可选, 默认为 0.999) — Adam 优化器或其变种的 beta2 超参数。epsilon
(float
, 可选, 默认为 1e-8) — Adam 优化器或其变种的 epsilon 超参数。args
(str
, 可选) — 提供给 AnyPrecisionAdamW 的可选参数(仅在optim="adamw_anyprecision"
时有用)。
一个将所有与优化器及其超参数相关联的参数重新分组的方法。
示例:
>>> from transformers import TrainingArguments >>> args = TrainingArguments("working_dir") >>> args = args.set_optimizer(name="adamw_torch", beta1=0.8) >>> args.optim 'adamw_torch'
set_push_to_hub
( model_id: str strategy: Union = 'every_save' token: Optional = None private_repo: bool = False always_push: bool = False )
参数
model_id
(str
) — 与本地output_dir同步的存储库的名称。它可以是一个简单的模型 ID,此时模型将被推送到您的命名空间。否则,它应该是整个存储库名称,例如"user_name/model"
,这样您就可以将其推送到您是成员的组织中,例如"organization_name/model"
。strategy
(str
或HubStrategy
, 可选, 默认为"every_save"
) — 定义推送到 Hub 的范围和时间。可能的值为:
"end"
: 当调用 save_model()方法时,推送模型、其配置、分词器(如果传递给 Trainer)以及模型卡的草稿。"every_save"
: 每次保存模型时,推送模型、其配置、分词器(如果传递给 Trainer)以及模型卡的草稿。推送是异步的,以避免阻塞训练,如果保存非常频繁,则只有在上一个推送完成后才会尝试新的推送。在训练结束时,使用最终模型进行最后一次推送。"checkpoint"
: 类似于"every_save"
,但最新的检查点也被推送到名为 last-checkpoint 的子文件夹中,这样您可以轻松地使用trainer.train(resume_from_checkpoint="last-checkpoint")
恢复训练。"all_checkpoints"
: 类似于"checkpoint"
,但所有检查点都像它们出现在输出文件夹中一样被推送(因此您将在最终存储库中的每个文件夹中获得一个检查点文件夹)。
token
(str
, 可选) — 用于将模型推送到 Hub 的令牌。将默认使用通过huggingface-cli login
获得的缓存文件夹中的令牌。private_repo
(bool
, 可选, 默认为False
) — 如果为 True,则 Hub 存储库将设置为私有。- always_push(
bool
,可选,默认为False
)— 除非为True
,否则当上一次推送未完成时,Trainer
将跳过推送检查点。
将所有与与 Hub 同步检查点相关的参数进行分组的方法。
调用此方法将设置self.push_to_hub
为True
,这意味着output_dir
将开始一个与存储库同步的 git 目录(由model_id
确定),并且每次触发保存时将推送内容(取决于self.save_strategy
)。调用 save_model()也将触发推送。
示例:
>>> from transformers import TrainingArguments >>> args = TrainingArguments("working_dir") >>> args = args.set_push_to_hub("me/awesome-model") >>> args.hub_model_id 'me/awesome-model'
set_save
( strategy: Union = 'steps' steps: int = 500 total_limit: Optional = None on_each_node: bool = False )
参数
- strategy(
str
或 IntervalStrategy,可选,默认为"steps"
)— 训练期间采用的检查点保存策略。可能的值为:
"no"
:在训练期间不进行保存。"epoch"
:在每个时代结束时保存。"steps"
:每save_steps
保存一次。
steps
(int
,可选,默认为 500)— 如果strategy="steps"
,则在两个检查点保存之前的更新步骤数。- total_limit(
int
,可选)— 如果传递了一个值,将限制检查点的总量。删除output_dir
中的旧检查点。 - on_each_node(
bool
,可选,默认为False
)— 在进行多节点分布式训练时,是否在每个节点上保存模型和检查点,还是仅在主节点上保存。
当不同节点使用相同存储时,不应激活此选项,因为文件将以每个节点相同的名称保存。
将所有与检查点保存相关的参数进行分组的方法。
示例:
>>> from transformers import TrainingArguments >>> args = TrainingArguments("working_dir") >>> args = args.set_save(strategy="steps", steps=100) >>> args.save_steps 100
set_testing
( batch_size: int = 8 loss_only: bool = False jit_mode: bool = False )
参数
- batch_size(
int
可选,默认为 8)— 用于测试的每个设备(GPU/TPU 核心/CPU…)的批量大小。 - loss_only(
bool
,可选,默认为False
)— 除了损失之外,忽略所有输出。 - jit_mode(
bool
,可选)— 是否使用 PyTorch jit 跟踪进行推断。
将所有与在保留数据集上进行测试相关的基本参数进行分组的方法。
调用此方法将自动将self.do_predict
设置为True
。
示例:
>>> from transformers import TrainingArguments >>> args = TrainingArguments("working_dir") >>> args = args.set_testing(batch_size=32) >>> args.per_device_eval_batch_size 32
set_training
( learning_rate: float = 5e-05 batch_size: int = 8 weight_decay: float = 0 num_epochs: float = 3 max_steps: int = -1 gradient_accumulation_steps: int = 1 seed: int = 42 gradient_checkpointing: bool = False )
参数
- learning_rate(
float
,可选,默认为 5e-5)— 优化器的初始学习率。 - batch_size(
int
可选,默认为 8)— 用于训练的每个设备(GPU/TPU 核心/CPU…)的批量大小。 - weight_decay(
float
,可选,默认为 0)— 应用的权重衰减(如果不为零)到优化器中除所有偏置和 LayerNorm 权重之外的所有层。 - num_train_epochs(float,可选,默认为 3.0)— 要执行的总训练时期数(如果不是整数,则在停止训练之前执行最后一个时期的小数部分百分比)。
- max_steps(
int
,可选,默认为-1)— 如果设置为正数,则执行的总训练步数。覆盖num_train_epochs
。对于有限的数据集,如果所有数据都用完,则通过数据集重复训练,直到达到max_steps
。 - gradient_accumulation_steps(
int
,可选,默认为 1)— 在执行向后/更新传递之前,累积梯度的更新步骤数。
在使用梯度累积时,一个步骤被计为一个带有向后传递的步骤。因此,每gradient_accumulation_steps * xxx_step
个训练示例将进行日志记录、评估和保存。 seed
(int
, optional, 默认为 42) — 将在训练开始时设置的随机种子。为了确保在不同运行之间的可重现性,请使用~Trainer.model_init
函数来实例化模型,如果模型有一些随机初始化的参数。gradient_checkpointing
(bool
, optional, 默认为False
) — 如果为 True,则使用梯度检查点来节省内存,但会降低向后传递的速度。
将所有与训练相关的基本参数重新组合的方法。
调用此方法将自动将 self.do_train
设置为 True
。
示例:
>>> from transformers import TrainingArguments >>> args = TrainingArguments("working_dir") >>> args = args.set_training(learning_rate=1e-4, batch_size=32) >>> args.learning_rate 1e-4
to_dict
( )
将此实例序列化,同时用它们的值替换 Enum
(用于 JSON 序列化支持)。通过删除它们的值来混淆令牌值。
to_json_string
( )
将此实例序列化为 JSON 字符串。
to_sanitized_dict
( )
经过清理的序列化,可与 TensorBoard 的 hparams 一起使用
Transformers 4.37 中文文档(十九)(4)https://developer.aliyun.com/article/1564925