File size: 1,883 Bytes
3c4cb64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23e93fb
 
 
 
3c4cb64
23e93fb
3c4cb64
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import torchvision
import torchvision.transforms as transforms

import pytorch_lightning as pl
from pytorch_lightning.loggers import CSVLogger
from pytorch_lightning.callbacks import EarlyStopping, ModelCheckpoint

from pathlib import Path
import yaml
import logging

from src import model

def setup_logging(nivel : str):
    path_final = get_project_root()
    Path(path_final/"logs").mkdir(exist_ok=True)
    path_final = path_final / "logs"/ "mdl-mlops.log"

    logging.basicConfig(
        level = getattr(logging, nivel.upper(), logging.DEBUG),
        format = "%(asctime)s | %(levelname)-8s | %(funcName)s.%(lineno)s | %(message)s",
        datefmt="%Y-%m-%d %H:%M:%S",
        handlers = [
            logging.StreamHandler(),
            logging.FileHandler(path_final)
        ]
    )

def get_project_root() -> Path:
    return Path(__file__).resolve().parents[1]

def load_config(nombre : str) -> dict:
    logger = logging.getLogger(__name__)
    logger.info("Cargando configuración...")
    raiz_proyecto = get_project_root()
    fichero_leer = raiz_proyecto / "config" / nombre

    with open(fichero_leer) as file:
        output = yaml.safe_load(file)
        logger.info("Carga de configuración completada")
        return output

def download_mnist():
    transform = transforms.Compose([
        transforms.ToTensor()
    ])

    train_dataset = torchvision.datasets.MNIST(
        root='./data', train=True, download=True, transform=transform
    )
    test_dataset = torchvision.datasets.MNIST(
        root='./data', train=False, download=True, transform=transform
    )

def load_model_config():
    config = load_config("gbl_config.yaml")
    return load_config(config["model_configuration"])

def load_best_model():
    config = load_model_config()
    return model.ConvCVAE.load_from_checkpoint(f"models/main/best_model-{config['model_version']}.ckpt")