Download src/train.py from lm-jim/mdl-mlops: direct link, hf CLI and curl.
- Browser
- Download file 2.02 kB
-
https://huggingface.co/spaces/lm-jim/mdl-mlops/resolve/main/src/train.py
- Command line
-
hf download hf://spaces/lm-jim/mdl-mlops/src/train.py
-
curl -L -o train.py https://huggingface.co/spaces/lm-jim/mdl-mlops/resolve/main/src/train.py
2.02 kB
| from pytorch_lightning.loggers import CSVLogger, WandbLogger | |
| from pytorch_lightning.callbacks import EarlyStopping, ModelCheckpoint | |
| import pytorch_lightning as pl | |
| import wandb | |
| def train_model(model, data_module, model_name="main", batch_size=256, max_epochs=40, version="0", save_output=True): | |
| conv_model = model | |
| loggers = [] | |
| if save_output: | |
| csv_logger = CSVLogger( | |
| save_dir=f"models/{model_name}/logs", | |
| version=version, | |
| ) | |
| loggers.append(csv_logger) | |
| wandb_logger = WandbLogger( | |
| project="mdl-mlops", | |
| name=f"{model_name}-v{version}", | |
| config={ | |
| "model_name": model_name, | |
| "version": version, | |
| "max_epochs": max_epochs, | |
| "batch_size": batch_size, | |
| "latent_dim": getattr(model, "latent_dim", "unknown"), | |
| "learning_rate": getattr(model, "lr", "unknown") | |
| } | |
| ) | |
| loggers.append(wandb_logger) | |
| callbacks = [] | |
| early_stopping_callback = EarlyStopping( | |
| monitor="val_loss", | |
| patience=5, | |
| mode="min" | |
| ) | |
| callbacks.append(early_stopping_callback) | |
| if save_output: | |
| checkpoint_callback = ModelCheckpoint( | |
| monitor="val_loss", | |
| mode="min", | |
| save_top_k=1, | |
| dirpath=f"models/{model_name}", | |
| filename=f'best_model-{version}', | |
| enable_version_counter=False | |
| ) | |
| callbacks.append(checkpoint_callback) | |
| trainer = pl.Trainer( | |
| max_epochs=max_epochs, | |
| callbacks=callbacks, | |
| accelerator="auto", | |
| devices=1, | |
| enable_checkpointing=True, | |
| logger=loggers | |
| ) | |
| trainer.fit(conv_model, datamodule=data_module) | |
| if save_output: | |
| artifact = wandb.Artifact( | |
| name=f"{model_name}-v{version}", | |
| type="model" | |
| ) | |
| artifact.add_file(checkpoint_callback.best_model_path) | |
| wandb.log_artifact(artifact) |