菜单

实验配置

相关源文件

本文档解释了labml_nn仓库中不同模型的实验如何配置和运行。实验配置系统提供了一种标准化方法,用于设置、训练、验证和跟踪从Transformer到GAN和强化学习算法的各种模型架构的机器学习实验。有关这些实验中使用的特定优化器的信息,请参阅优化器;有关归一化技术的信息,请参阅归一化技术

配置优先级

实验配置系统遵循分层结构,其中专用配置继承自更通用的基类。

来源:labml_nn/experiments/nlp_autoregression.py41-92 labml_nn/transformers/gpt/__init__.py87-105 labml_nn/lora/experiment.py26-62 labml_nn/transformers/configs.py144-197 labml_nn/experiments/mnist.py24-41

基本配置系统

实验框架的核心是TrainValidConfigs类,它处理基本的训练和验证循环,并跟踪指标和模型输出。

TrainValidConfigs

TrainValidConfigs类提供:

  • 训练和验证循环管理
  • 轮次和迭代跟踪
  • 模型和优化器配置
  • 指标跟踪和日志记录
  • 模型检查点

来源:labml_nn/experiments/nlp_autoregression.py41-45 labml_nn/experiments/mnist.py24-63

任务特定配置

基本配置系统经过扩展,可以处理特定类型的任务,例如NLP自回归或图像分类。

NLPAutoRegressionConfigs

此类扩展了TrainValidConfigs,用于自回归NLP任务。

NLPAutoRegressionConfigs的主要特点:

  • 文本数据集处理
  • 分词配置
  • 序列长度和批次大小管理
  • 训练和验证数据加载器
  • 损失和准确率跟踪
  • 训练期间的样本生成

来源:labml_nn/experiments/nlp_autoregression.py41-198

MNISTConfigs

NLPAutoRegressionConfigs类似,MNISTConfigs类扩展了TrainValidConfigs,用于使用MNIST数据集的图像分类任务。

来源:labml_nn/experiments/mnist.py24-106

模型特定配置

不同的模型有自己的配置类,这些类继承自任务特定配置,并添加了模型特定参数。

Transformer配置

TransformerConfigs类为Transformer模型提供了全面的配置系统。

来源:labml_nn/transformers/configs.py144-326

GPT配置

GPT模型通过Transformer特定配置扩展了NLPAutoRegressionConfigs

来源:labml_nn/transformers/gpt/__init__.py87-105

LoRA微调配置

LoRA模块中的Trainer类配置了使用LoRA对预训练模型进行微调的实验。

来源:labml_nn/lora/experiment.py26-62

实验配置组件

让我们检查构成实验配置的关键组件。

模型配置

模型通过专用配置类或直接在实验配置中进行配置。

来源:labml_nn/transformers/gpt/__init__.py146-158 labml_nn/lora/experiment.py119-135

优化器配置

优化器通过OptimizerConfigs类或自定义优化器选项进行配置。

来源:labml_nn/transformers/gpt/__init__.py161-218 labml_nn/experiments/nlp_autoregression.py201-212 labml_nn/transformers/configs.py52-60

数据集配置

数据集使用各种选项进行配置,数据加载器专门针对任务进行定制。

来源:labml_nn/experiments/nlp_autoregression.py257-337 labml_nn/lora/experiment.py172-189

实验执行流程

实验执行遵循不同模型架构的标准化过程。

来源:labml_nn/transformers/gpt/__init__.py221-265 labml_nn/lora/experiment.py143-169 labml_nn/experiments/nlp_autoregression.py104-172

配置生命周期

实验配置的典型生命周期包括:

  1. 创建:为特定模型创建配置对象。
  2. 初始化:为配置参数设置默认值。
  3. 自定义:使用特定实验设置覆盖默认值。
  4. 验证:确保所有必需参数都已设置且有效。
  5. 执行:使用配置的设置运行实验。
  6. 跟踪:在执行期间监控和记录指标。
  7. 检查点:定期保存模型状态。

示例:配置GPT实验

来源:labml_nn/transformers/gpt/__init__.py221-265

示例:配置LoRA微调实验

来源:labml_nn/lora/experiment.ipynb18-62

配置选项系统

配置系统使用基于装饰器的方法来定义配置参数的选项。

例如,为NLPAutoRegressionConfigs定义优化器:

来源:labml_nn/experiments/nlp_autoregression.py201-212 labml_nn/transformers/configs.py52-60

跟踪和指标

实验配置系统与跟踪系统集成,用于在训练和验证期间监控和记录指标。

跟踪的关键指标包括:

  • 损失值
  • 准确率测量
  • 模型参数和梯度
  • 模型激活
  • 生成的样本

来源:labml_nn/experiments/nlp_autoregression.py104-111 labml_nn/experiments/mnist.py49-62

总结

labml_nn中的实验配置系统为设置和运行不同模型和任务的机器学习实验提供了一个灵活且可扩展的框架。它提供:

  1. 分层配置:可为特定任务和模型进行扩展的基本配置。
  2. 标准化接口:定义和使用配置的一致方法。
  3. 组件模块化:轻松替换优化器、模型、数据集等。
  4. 指标跟踪:内置跟踪训练进度和结果。
  5. 实验生命周期管理:从初始化到检查点。

该系统使研究人员和实践者能够高效地实验各种深度学习架构和技术,同时保持一致的接口和代码结构。