本页介绍 labml_nn 仓库中不同模型使用的核心训练基础设施。该基础设施为深度学习模型的训练提供模块化和可配置的组件,包括
有关具体的模型实现,请参阅Transformer 架构、微调技术或生成模型。
该代码库中的训练基础设施遵循模块化设计模式,组件可以针对不同任务进行混合和匹配。其核心是可配置的实验类、优化器以及用于管理训练工作流的实用工具。
来源: labml_nn/experiments/nlp_autoregression.py labml_nn/optimizers/__init__.py labml_nn/normalization/batch_norm/__init__.py labml_nn/normalization/layer_norm/__init__.py
该代码库使用配置系统来定义和定制不同任务的训练工作流。
训练配置的基类是 TrainValidConfigs,它提供训练和验证循环、指标跟踪以及模型管理的共享功能。
特定任务的配置扩展此基类,以定制不同场景的训练过程。
NLPAutoRegressionConfigs 专为自回归文本生成任务设计,具有
关键组件
step(): 处理训练或验证步骤sample(): 在训练期间生成文本样本来源: labml_nn/experiments/nlp_autoregression.py41-104
示例配置选项
该代码库实现了 PyTorch Optimizer 类的扩展,包含一系列优化算法。
来源: labml_nn/optimizers/__init__.py70-164 labml_nn/optimizers/adam.py50-214
GenericAdaptiveOptimizer 作为 Adam 及其变体等自适应优化算法的基类。它提供通用功能
来源: labml_nn/optimizers/__init__.py70-164
权重衰减作为单独的类实现,以允许
来源: labml_nn/optimizers/__init__.py167-218
该仓库包含多种优化器实现
| 优化器 | 主要功能 | 来源 |
|---|---|---|
| Adam | Adam 基本实现 | labml_nn/optimizers/adam.py |
| AMSGrad | 维持二阶矩的最大值 | labml_nn/optimizers/amsgrad.py |
| RAdam | 带有方差校正的 Rectified Adam | labml_nn/optimizers/radam.py |
| AdaBelief | 使用梯度方差进行自适应学习 | labml_nn/optimizers/ada_belief.py |
| Noam | 带有指数衰减的预热期 | labml_nn/optimizers/noam.py |
| AdamWarmup | 学习率线性预热 | labml_nn/optimizers/adam_warmup.py |
| AdamWarmupCosineDecay | 预热 + 余弦衰减调度 | labml_nn/optimizers/adam_warmup_cosine_decay.py |
每种方法都以不同方式扩展优化过程,主要通过修改
该代码库实现了两种主要的归一化技术:批量归一化 (Batch Normalization) 和层归一化 (Layer Normalization)。
批量归一化在批次维度上对激活进行归一化,这通过减少内部协变量偏移来帮助稳定训练。
主要特性
实现细节
来源: labml_nn/normalization/batch_norm/__init__.py103-206
层归一化在特征维度上进行归一化,使其更适用于序列模型和批量大小较小的情况。
主要特性
实现细节
来源: labml_nn/normalization/layer_norm/__init__.py43-131
该训练基础设施实现了一个标准化的训练工作流,并为不同任务提供了定制点。
来源: labml_nn/experiments/nlp_autoregression.py124-172 labml_nn/optimizers/mnist_experiment.py64-105
训练循环的核心是 step 函数,它
NLPAutoRegressionConfigs 的示例
来源: labml_nn/experiments/nlp_autoregression.py124-172
训练基础设施组件协同工作,创建一个灵活模块化的系统。以下是它们如何用于 NLP 任务的示例
来源: labml_nn/experiments/nlp_autoregression.py labml_nn/transformers/gpt/__init__.py221-260
该训练基础设施为实现和训练深度学习模型提供了一个全面的框架
该基础设施使得在重用通用训练组件和模式的同时,能够实现各种模型架构。