tg-me.com/dsproglib/6315
Last Update:
В ML-проектах множество параметров: данные, модели, обучение, инференс. Чтобы не потеряться в этом хаосе, важно организовать конфигурации понятно и масштабируемо.
🎯 Лучшее решение — использовать связку OmegaConf + Hydra.
OmegaConf создана для сложных ML-пайплайнов и позволяет:
• Объединять несколько YAML-файлов в единую структуру
• Обращаться к полям как через config.model.optimizer
, так и config["model"]["optimizer"]
• Использовать проверку типов через dataclasses
или Pydantic
-моделей
• Пример:
# model.yaml
model:
name: resnet50
optimizer:
type: Adam
lr: 0.001
from omegaconf import OmegaConf
cfg = OmegaConf.load("model.yaml")
print(cfg.model.optimizer.lr) # 0.001
Hydra расширяет OmegaConf и упрощает работу с конфигурациями:
• Группировка конфигураций через
defaults:
# config.yaml
defaults:
- data: imagenet.yaml
- model: resnet.yaml
- training: adam.yaml
• Структура может быть произвольной:
conf/
├── config.yaml
├── data/imagenet.yaml
├── model/resnet.yaml
├── training/adam.yaml
• Переопределения из командной строки:
python train.py model.optimizer=SGD training.lr=0.01
• Параметрические прогоны (sweeps):
python train.py -m training.lr=0.001,0.01 model.optimizer=Adam,SGD
Это удобно при автоматизированном поиске гиперпараметров.
Библиотека дата-сайентиста #буст