轻松配置深度学习模型 ?

简介: 轻松配置深度学习模型 ?

动动发财的小手,点个赞吧!

由于所有模块都需要大量参数和设置,因此管理深度学习模型可能很困难。训练模块可能需要诸如 batch_size 或 num_epochs 之类的参数或学习率调度程序的参数。同样,数据预处理模块可能需要 train_test_split 或图像增强参数。

管理这些参数或将这些参数引入管道的一种简单方法是在运行脚本时将它们用作 CLI 参数。命令行参数可能难以输入,并且可能无法在单个文件中管理所有参数。 TOML 文件提供了一种更简洁的配置管理方式,脚本可以以 Python 字典的形式加载配置的必要部分,而无需样板代码来读取/解析命令行参数。

这篇博客中,我们将探讨 TOML 在配置文件中的使用,以及我们如何在训练/部署脚本中有效地使用它们。

什么是 TOML 文件?

TOML,代表 Tom's Obvious Minimal Language,是专门为配置文件设计的文件格式。 TOML 文件的概念与 YAML/YML 文件非常相似,后者能够在树状层次结构中存储键值对。 TOML 优于 YAML 的一个优点是它的可读性,这在有多个嵌套级别时变得很重要。

为什么我们需要在 TOML 中进行配置?

使用 TOML 存储 ML 模型的模型/数据/部署配置有两个优点:

在单个文件中管理所有配置:使用 TOML 文件,我们可以创建不同模块所需的多组设置。例如,在图 1 中,与模型训练过程相关的设置嵌套在 [train] 属性下,类似地,部署模型所需的端口和主机存储在 deploy 下。我们不需要在 train.py 或 deploy.py 之间跳转来更改它们的参数,相反,我们可以从单个 TOML 配置文件中全局化所有设置。

如果我们在虚拟机上训练模型,而代码编辑器或 IDE 不可用于编辑文件,这可能会非常有用。使用大多数 VM 上可用的 vim 或 nano 可以轻松编辑单个配置文件。

我们如何从 TOML 读取配置?

要从 TOML 文件中读取配置,可以使用两个 Python 包,toml 和 munch。 toml 将帮助我们读取 TOML 文件并将文件的内容作为 Python dict 返回。 munch 将转换 dict 的内容以启用元素的属性样式访问。例如,我们可以不写 config[ "training" ][ "num_epochs" ] ,而是写 config.training.num_epochs 以提高可读性。

考虑以下文件结构,

- config.py
- train.py
- project_config.toml

project_config.toml 包含我们 ML 项目的配置,例如,

[data]
vocab_size = 5589
seq_length = 10
test_split = 0.3
data_path = "dataset/"
data_tensors_path = "data_tensors/"

[model]
embedding_dim = 256
num_blocks = 5
num_heads_in_block = 3

[train]
num_epochs = 10
batch_size = 32
learning_rate = 0.001
checkpoint_path = "auto"

在 config.py 中,我们使用 toml 和 munch 创建了一个返回此配置的 munchified 版本的函数,

pip install toml munch
import toml
import munch

def load_global_config( filepath : str = "project_config.toml" ):
    return munch.munchify( toml.load( filepath ) )

def save_global_config( new_config , filepath : str = "project_config.toml" ):
    with open( filepath , "w" ) as file:
        toml.dump( new_config , file )

现在,现在在我们的任何项目文件中,比如 train.py 或 predict.py ,我们可以加载这个配置,

from config import load_global_config

config = load_global_config()

batch_size = config.train.batch_size
lr = config.train.learning_rate

if config.train.checkpoint_path == "auto":
    # Make a directory with name as current timestamp
    pass

print( toml.load( filepath ) ) ) 的输出是,

{
   
   'data': {
   
   'data_path': 'dataset/',
          'data_tensors_path': 'data_tensors/',
          'seq_length': 10,
          'test_split': 0.3,
          'vocab_size': 5589},
 'model': {
   
   'embedding_dim': 256, 'num_blocks': 5, 'num_heads_in_block': 3},
 'train': {
   
   'batch_size': 32,
           'checkpoint_path': 'auto',
           'learning_rate': 0.001,
           'num_epochs': 10}}

如果您正在使用 W&B Tracking 或 MLFlow 等 MLOps 工具,将配置维护为字典可能会有所帮助,因为我们可以直接将其作为参数传递。

总结

希望您会考虑在下一个 ML 项目中使用 TOML 配置!这是一种管理训练/部署或推理脚本全局或本地设置的简洁方法。

脚本可以直接从 TOML 文件加载配置,而不是编写长 CLI 参数。如果我们希望训练具有不同超参数的模型的两个版本,我们只需要更改 config.py 中的 TOML 文件。我已经开始在我最近的项目中使用 TOML 文件并且实验变得更快。 MLOps 工具还可以管理模型的版本及其配置,但上述方法的简单性是独一无二的,并且需要对现有项目进行最少的更改。

相关文章
|
6月前
|
机器学习/深度学习 算法 定位技术
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
本项目基于YOLOv8模型与C#界面,结合Baumer工业相机,实现裂缝的高效检测识别。支持图像、视频及摄像头输入,具备高精度与实时性,适用于桥梁、路面、隧道等多种工业场景。
847 27
|
5月前
|
机器学习/深度学习 数据可视化 算法
深度学习模型结构复杂、参数众多,如何更直观地深入理解你的模型?
深度学习模型虽应用广泛,但其“黑箱”特性导致可解释性不足,尤其在金融、医疗等敏感领域,模型决策逻辑的透明性至关重要。本文聚焦深度学习可解释性中的可视化分析,介绍模型结构、特征、参数及输入激活的可视化方法,帮助理解模型行为、提升透明度,并推动其在关键领域的安全应用。
546 0
|
4月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
326 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
3月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
6月前
|
机器学习/深度学习 人工智能 PyTorch
AI 基础知识从 0.2 到 0.3——构建你的第一个深度学习模型
本文以 MNIST 手写数字识别为切入点,介绍了深度学习的基本原理与实现流程,帮助读者建立起对神经网络建模过程的系统性理解。
698 15
AI 基础知识从 0.2 到 0.3——构建你的第一个深度学习模型
|
4月前
|
机器学习/深度学习 数据采集 传感器
【WOA-CNN-LSTM】基于鲸鱼算法优化深度学习预测模型的超参数研究(Matlab代码实现)
【WOA-CNN-LSTM】基于鲸鱼算法优化深度学习预测模型的超参数研究(Matlab代码实现)
316 0
|
11月前
|
机器学习/深度学习 数据采集 自然语言处理
深度学习实践技巧:提升模型性能的详尽指南
深度学习模型在图像分类、自然语言处理、时间序列分析等多个领域都表现出了卓越的性能,但在实际应用中,为了使模型达到最佳效果,常规的标准流程往往不足。本文提供了多种深度学习实践技巧,包括数据预处理、模型设计优化、训练策略和评价与调参等方面的详细操作和代码示例,希望能够为应用实战提供有效的指导和支持。
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
AI 基础知识从 0.3 到 0.4——如何选对深度学习模型?
本系列文章从机器学习基础出发,逐步深入至深度学习与Transformer模型,探讨AI关键技术原理及应用。内容涵盖模型架构解析、典型模型对比、预训练与微调策略,并结合Hugging Face平台进行实战演示,适合初学者与开发者系统学习AI核心知识。
564 15
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习模型、算法与应用的全方位解析
深度学习,作为人工智能(AI)的一个重要分支,已经在多个领域产生了革命性的影响。从图像识别到自然语言处理,从语音识别到自动驾驶,深度学习无处不在。本篇博客将深入探讨深度学习的模型、算法及其在各个领域的应用。
1391 3
|
7月前
|
机器学习/深度学习 存储 PyTorch
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
本文通过使用 Kaggle 数据集训练情感分析模型的实例,详细演示了如何将 PyTorch 与 MLFlow 进行深度集成,实现完整的实验跟踪、模型记录和结果可复现性管理。文章将系统性地介绍训练代码的核心组件,展示指标和工件的记录方法,并提供 MLFlow UI 的详细界面截图。
339 2
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统

热门文章

最新文章