训练系统为 Hugging Face Transformers 库中训练和微调 transformer 模型提供了核心基础设施。该系统处理训练循环、优化、评估、检查点、回调和分布式训练协调。
有关模型加载和配置的信息,请参阅核心架构。有关推理期间文本生成细节,请参阅生成系统。有关基于流水线的训练工作流,请参阅流水线系统。
训练系统围绕 Trainer 类构建,该类负责协调整个训练过程。它与模型加载系统、分词系统以及各种分布式训练和优化后端集成。
训练系统架构
来源:src/transformers/trainer.py320-413 src/transformers/training_args.py210-211 src/transformers/trainer_callback.py35-94
Trainer 类是训练操作的核心协调器。它管理训练循环、评估、模型保存以及与各种后端的集成。
Trainer 方法结构
来源:src/transformers/trainer.py415-798 src/transformers/trainer.py1837-2044 src/transformers/trainer.py2900-3050
主要职责包括
TrainingArguments 类通过 dataclass 接口定义了训练行为的所有配置参数。
训练配置类别
| 类别 | 关键参数 | 描述 |
|---|---|---|
| 训练控制 | num_train_epochs、max_steps、learning_rate | 核心训练超参数 |
| 批处理 | per_device_train_batch_size、gradient_accumulation_steps | 批次大小和累积设置 |
| 评估 | eval_strategy、eval_steps、eval_accumulation_steps | 评估时序和行为 |
| 保存 | save_strategy、save_steps、save_total_limit | 模型检查点配置 |
| 日志记录 | logging_strategy、logging_steps、report_to | 日志记录和监控设置 |
| 优化 | optim、weight_decay、adam_beta1、adam_beta2 | 优化器配置 |
| 混合精度 | fp16、bf16、half_precision_backend | 精度和性能设置 |
| 分布式 | local_rank、ddp_backend、fsdp | 分布式训练配置 |
来源: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() 自动模型设备放置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
训练系统支持通过以下方式进行模型共享和版本管理:
push_to_hub 配置自动上传模型HubStrategy 枚举配置 Hub 策略PushToHubMixin 集成以进行仓库管理来源: src/transformers/trainer.py692-695 src/transformers/utils/hub.py