Configure fácilmente modelos de aprendizaje profundo

Mueve tu manita para hacer una fortuna, ¡dale un pulgar hacia arriba!

alternativa

La gestión de modelos de aprendizaje profundo puede ser difícil debido a la gran cantidad de parámetros y configuraciones necesarios para todos los módulos. El módulo de entrenamiento puede requerir parámetros tales como tamaño de lote o número de épocas o parámetros del planificador de tasa de aprendizaje. Asimismo, los módulos de preprocesamiento de datos pueden requerir parámetros de aumento de imágenes o train_test_split.

Una forma fácil de administrar estos parámetros o incluirlos en la canalización es usarlos como parámetros de la CLI al ejecutar scripts. Los argumentos de la línea de comandos pueden ser difíciles de escribir y es posible que no sea posible administrar todos los argumentos en un solo archivo. Los archivos TOML brindan una forma más limpia de administrar la configuración, y los scripts pueden cargar las partes necesarias de la configuración como diccionarios de Python sin código repetitivo para leer/analizar argumentos de la línea de comandos.

En este blog [1] exploraremos el uso de TOML en archivos de configuración y cómo podemos usarlos de manera efectiva en scripts de entrenamiento/implementación.

¿Qué es un archivo TOML?

TOML, que significa Lenguaje mínimo obvio de Tom, es un formato de archivo diseñado específicamente para archivos de configuración. El concepto de un archivo TOML es muy similar a un archivo YAML/YML, que es capaz de almacenar pares clave-valor en una jerarquía similar a un árbol. Una ventaja de TOML sobre YAML es su legibilidad, que se vuelve importante cuando hay múltiples niveles de anidamiento.

alternativa

¿Por qué necesitamos configuración en TOML?

El uso de TOML para almacenar la configuración de modelo/datos/implementación de un modelo ML tiene dos ventajas:

Administre todas las configuraciones en un solo archivo: al usar archivos TOML, podemos crear múltiples conjuntos de configuraciones requeridas por diferentes módulos. Por ejemplo, en la Figura 1, la configuración relacionada con el proceso de entrenamiento del modelo está anidada bajo el atributo [train] y, de manera similar, los puertos y hosts necesarios para implementar el modelo se almacenan en deployment. No necesitamos saltar entre train.py o deployment.py para cambiar sus parámetros, sino que podemos globalizar todas las configuraciones desde un solo archivo de configuración 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 工具还可以管理模型的版本及其配置,但上述方法的简单性是独一无二的,并且需要对现有项目进行最少的更改。

Reference

[1]

Fuente:https://towardsdatascience.com/managing-deep-learning-models-facilmente-con-toml-configurations-fb680b9deabe

Este artículo es publicado por mdnice multiplataforma

Supongo que te gusta

Origin blog.csdn.net/swindler_ice/article/details/131345788
Recomendado
Clasificación