--- title: "ML Ops" center: true theme: black transition: slide margin: 0.04 revealOptions: transition: 'slide' css: - ./css/custom.css --- # ML Ops Examples #### [`saforem2/mlops`](https://www.github.com/saforem2/mlops) Sam Foreman May, 2022 ::: block [](https://github.com/saforem2) [](https://samforeman.me) [](https://twitter.com/saforem2) ::: --- # 📊 ML Ops **Goal**: Allow researchers to focus on their science / model development without all the boilerplate. --- ### MLOps --- [![](assets/logo_comet_dark.png)](https://comet.ml) ```python # For Comet to start tracking a training run, # just add these two lines at the top of your training script: import comet_ml experiment = comet_ml.Experiment( api_key="API_KEY", project_name="PROJECT_NAME" ) # Metrics from this training run will now be visible in the Comet UI ``` --- # Why Comet? ::: block ::: block > While some ML platform vendors offer stand-alone experiment tracking or model production monitoring systems, Comet offers both. >
— [comet.ml](https://comet.ml) ::: - Features: - Experiment tracking and management - Dataset versioning - Model registry - Model production monitoring - Code panels - Reports ::: --- # Comet ![](assets/comet-features.png) --- # First Steps 1. Setup a Comet account 2. Get an API key - Make sure you're logged into comet.ml - Go to [settings](https://www.comet.ml/api/my/settings) - Developer Information --> **Generate API Key** 3. Install Comet ```bash python3 -m pip install comet_ml ``` 4. Create an Experiment and log to Comet ```python from comet_ml import Experiment experiment = Experiment( api_key="API_KEY", project_name="PROJECT_NAME", workspace="WORKSPACE_NAME", ) params = {'batch_size': 32, 'lr': 0.001} metrics = {'accuracy': 0.9, 'loss': 0.01} experiment.log_metrics(metrics, step=1) experiment.log_parameters(parameters) ``` --- # Comet + - [comet-ml/comet-examples](https://github.com/comet-ml/comet-examples) - [`saforem2/mlops`](https://github.com/saforem2/mlops) - **PyTorch**: - [`ddp.py`](https://github.com/saforem2/mlops/src/comet/torch/lightning.py) - ️️[`lightning.py`](https://github.com/saforem2/mlops/src/comet/torch/lightning.py) - **TensorFlow**: - [`main.py`](https://github.com/saforem2/mlops/src/comet/tensorflow) - [dashboard](https://www.comet.ml/saforem2/mlops/2cc1b07491554afcb42af1c7f040353e?experiment-tab=chart&showOutliers=true&smoothing=0&transformY=smoothing&xAxis=step) ---
note: - Background iframe --- --- # ⚡️ Pytorch Lightning - Tutorial on [Tracking and Visualizing Experiments](https://pytorch-lightning.readthedocs.io/en/latest/visualize/logging_intermediate.html) from PyTorch Lightning - Built-in support for multiple different "loggers" - [`base`](https://pytorch-lightning.readthedocs.io/en/latest/api/pytorch_lightning.loggers.base.html#module-pytorch_lightning.loggers.base) - [`comet`](https://pytorch-lightning.readthedocs.io/en/latest/api/pytorch_lightning.loggers.comet.html#module-pytorch_lightning.loggers.comet) - [`csv_logs`](https://pytorch-lightning.readthedocs.io/en/latest/api/pytorch_lightning.loggers.csv_logs.html#module-pytorch_lightning.loggers.csv_logs) - [`mlflow`](https://pytorch-lightning.readthedocs.io/en/latest/api/pytorch_lightning.loggers.mlflow.html#module-pytorch_lightning.loggers.mlflow) - [`neptune`](https://pytorch-lightning.readthedocs.io/en/latest/api/pytorch_lightning.loggers.neptune.html#module-pytorch_lightning.loggers.neptune) - [`tensorboard`](https://pytorch-lightning.readthedocs.io/en/latest/api/pytorch_lightning.loggers.tensorboard.html#module-pytorch_lightning.loggers.tensorboard) - [`wandb`](https://pytorch-lightning.readthedocs.io/en/latest/api/pytorch_lightning.loggers.wandb.html#module-pytorch_lightning.loggers.wandb) --- # ⚡️ Pytorch Lightning - **Loggers**: ```python from pytorch_lightning import loggers as pl_loggers ``` - **Tensorboard**: ```python tensorboard = pl_loggers.TensorBoardLogger(save_dir='') trainer = Trainer(logger=tensorboard) def training_step(self): tensorboard = self.logger.experiment tensorboard.add_image() tensorboard.add_histogram() tensorboard.add_figure() ``` - [**Comet.ml**](https://comet.ml): (docs on [`CometLogger`](https://pytorch-lightning.readthedocs.io/en/latest/extensions/generated/pytorch_lightning.loggers.CometLogger.html#pytorch_lightning.loggers.CometLogger)) ```python comet_logger = pl_loggers.CometLogger("YOUR_API_KEY") trainer = Trainer(logger=comet_logger) class LitModel(LightningModule): def any_lightning_module_function_or_hook(self): comet = self.logger.experiment fake_images = torch.Tensor(32, 3, 28, 28) comet.add_image('generated_images', fake_images, 0) ``` --- # ⚡️ Pytorch Lightning - **MLflow**: ```python from pytorch_lightning.loggers import MLFlowLogger mlf_logger = MLFlowLogger(experiment_name='experiment', tracking_uri='file:./ml-runs') trainer = Trainer(logger=mlf_logger) class LitModel(LightningModule): def any_lightning_module_function_or_hook(self): mlf_logger = self.logger.experiment fake_images = torch.Tensor(32, 3, 28, 28) mlf_logger.add_aimge('generated_images', fake_images, 0) ``` ---