菜单

训练系统

相关源文件

训练系统为 Hugging Face Transformers 库中训练和微调 transformer 模型提供了核心基础设施。该系统处理训练循环、优化、评估、检查点、回调和分布式训练协调。

有关模型加载和配置的信息,请参阅核心架构。有关推理期间文本生成细节,请参阅生成系统。有关基于流水线的训练工作流,请参阅流水线系统

概述

训练系统围绕 Trainer 类构建,该类负责协调整个训练过程。它与模型加载系统、分词系统以及各种分布式训练和优化后端集成。

训练系统架构

来源:src/transformers/trainer.py320-413 src/transformers/training_args.py210-211 src/transformers/trainer_callback.py35-94

核心组件

Trainer 类

Trainer 类是训练操作的核心协调器。它管理训练循环、评估、模型保存以及与各种后端的集成。

Trainer 方法结构

来源:src/transformers/trainer.py415-798 src/transformers/trainer.py1837-2044 src/transformers/trainer.py2900-3050

主要职责包括

  • 模型管理:处理模型初始化、设备放置和分布式设置
  • 数据加载:创建和管理具有适当采样的训练/评估数据加载器
  • 优化:设置优化器、学习率调度器和梯度累积
  • 训练循环:执行前向/后向传播、梯度更新和日志记录
  • 评估:运行评估循环和计算指标
  • 检查点:保存和加载模型状态、优化器状态和训练进度
  • 回调:在各种训练事件中管理回调执行

TrainingArguments

TrainingArguments 类通过 dataclass 接口定义了训练行为的所有配置参数。

训练配置类别

类别关键参数描述
训练控制num_train_epochsmax_stepslearning_rate核心训练超参数
批处理per_device_train_batch_sizegradient_accumulation_steps批次大小和累积设置
评估eval_strategyeval_stepseval_accumulation_steps评估时序和行为
保存save_strategysave_stepssave_total_limit模型检查点配置
日志记录logging_strategylogging_stepsreport_to日志记录和监控设置
优化optimweight_decayadam_beta1adam_beta2优化器配置
混合精度fp16bf16half_precision_backend精度和性能设置
分布式local_rankddp_backendfsdp分布式训练配置

来源:src/transformers/training_args.py221-580 src/transformers/training_args.py700-900

回调系统

回调系统提供可扩展的钩子,用于在各种生命周期事件中自定义训练行为。

回调事件流

来源:src/transformers/trainer_callback.py200-350 src/transformers/trainer_callback.py400-600

核心回调类

  • TrainerCallback:具有事件方法的基类回调接口
  • CallbackHandler:管理回调注册和执行
  • TrainerState:跟踪训练进度(epoch、step、metrics)
  • TrainerControl:控制训练流程(提前停止、保存)

训练流程与生命周期

训练过程遵循结构化的生命周期,每个阶段都有回调钩子

训练时序图

来源:src/transformers/trainer.py1837-1900 src/transformers/trainer.py2900-3000 src/transformers/trainer_callback.py600-800

训练实用工具和支持系统

数据处理组件

训练系统通过 trainer_pt_utils 模块管理全面的数据处理工具

  • 数据整理器:通过 DataCollator 类处理批处理和填充
  • 分布式采样:使用 DistributedSampler 协调跨进程的数据加载
  • 动态批处理:通过 LengthGroupedSampler 支持可变序列长度
  • 内存跟踪:使用 TrainerMemoryTracker 监控训练内存使用情况

来源:src/transformers/trainer_pt_utils.py600-800 src/transformers/trainer_pt_utils.py100-200

内存和性能优化

优化特性

功能实现目的
梯度累积gradient_accumulation_steps模拟更大的批次大小
混合精度带有自动缩放的 fp16/bf16减少内存使用
梯度检查点模型级检查点用计算换取内存
内存跟踪TrainerMemoryTracker监控内存使用
DataLoader 优化高效的采样和批处理提高数据加载速度

来源:src/transformers/trainer.py2400-2500 src/transformers/trainer_pt_utils.py1000-1200

分布式训练集成

训练系统通过条件导入和运行时检测与多个分布式训练后端集成

分布式后端集成

来源:src/transformers/trainer.py576-620 src/transformers/trainer.py467-500

与其他系统集成

模型系统集成

训练系统通过几个关键机制与模型加载基础设施集成

  • 通过 _move_model_to_device() 自动模型设备放置
  • 通过 PEFT 集成检查,支持带可训练适配器的量化模型
  • 通过 supports_gradient_checkpointing 配置梯度检查点
  • 通过 compute_loss_func 参数处理自定义损失函数

来源: src/transformers/trainer.py496-575 src/transformers/trainer.py615-650

分词系统集成

与分词器和数据处理的集成通过以下方式实现:

  • 基于 processing_class 类型自动选择数据整理器
  • 为多模态模型管理处理类
  • 通过 label_names 配置进行标签处理和对齐
  • 支持快速和慢速分词器

来源: src/transformers/trainer.py602-612 src/transformers/trainer.py425-430

Hub 集成

训练系统支持通过以下方式进行模型共享和版本管理:

  • 训练期间通过 push_to_hub 配置自动上传模型
  • 通过 HubStrategy 枚举配置 Hub 策略
  • 生成带有训练指标的模型卡
  • PushToHubMixin 集成以进行仓库管理

来源: src/transformers/trainer.py692-695 src/transformers/utils/hub.py