SebChw / Actually-Robust-Training

Actually Robust Training - Tool Inspired by Andrej Karpathy "Recipe for training neural networks". It allows you to decompose your Deep Learning pipeline into modular and insightful "Steps". Additionally it has many features for testing and debugging neural nets.
MIT License
44 stars 0 forks source link
deep-learning lightning-ai pytorch

image

ART - Actually Robust Training
Robust, explainable, and easy to debug deep learning experiments.

Tests Docs


ART is a Python library that teaches good practices when training deep neural networks with PyTorch. It is inspired by Andrej Karpathy's blog post “A Recipe for Training Neural Networks”. ART encourages the user to train DNNs through a series of steps that ensure the correctness and robustness of their training pipeline. The steps implemented using ART can be viewed not only as guidance for early adepts of deep learning but also as a project template and checklist for more advanced users.

To get the most out of ART, you should have a basic knowledge of (or eagerness to learn):

Table of contents:

Installation

To get started, install ART package using:

pip install art-training

Quickstart

  1. The basic idea behind ART is to split your deep learning pipeline into a series of steps.
  2. Each step should be accompanied by a set of checks. ART will not move to the next step without passing checks from previous steps.
import math
import torch.nn as nn
from torchmetrics import Accuracy
from art.checks import CheckScoreCloseTo, CheckScoreGreaterThan, CheckScoreLessThan
from art.metrics import SkippedMetric
from art.project import ArtProject
from art.steps import CheckLossOnInit, Overfit, OverfitOneBatch
from art.utils.quickstart import ArtModuleExample, LightningDataModuleExample

# Initialize the datamodule, and indicate the model class
datamodule = LightningDataModuleExample()
model_class = ArtModuleExample

# Define metrics and loss functions to be calculated within the project
metric = Accuracy(task="multiclass", num_classes=datamodule.n_classes)
loss_fn = nn.CrossEntropyLoss()

# Create an ART project and register defined metrics
project = ArtProject(name="quickstart", datamodule=datamodule)
project.register_metrics([metric, loss_fn])

# Add steps to the project
EXPECTED_LOSS = -math.log(1 / datamodule.n_classes)
project.add_step(
    CheckLossOnInit(model_class),
    checks=[CheckScoreCloseTo(loss_fn, EXPECTED_LOSS, rel_tol=0.01)],
    skipped_metrics=[SkippedMetric(metric)],
)
project.add_step(
    OverfitOneBatch(model_class, number_of_steps=100),
    checks=[CheckScoreLessThan(loss_fn, 0.1)],
    skipped_metrics=[SkippedMetric(metric)],
)
project.add_step(
    Overfit(model_class, max_epochs=10),
    checks=[CheckScoreGreaterThan(metric, 0.9)],
)

# Run your project
project.run_all()

As a result, you should observe something like this:

    Check failed for step: Overfit. Reason: Score 0.7900000214576721 is not greater than 0.9
    Summary:
    Step: Check Loss On Init, Model: ArtModuleExample, Passed: True. Results:
            CrossEntropyLoss-validate: 2.299098491668701
    Step: Overfit One Batch, Model: ArtModuleExample, Passed: True. Results:
            CrossEntropyLoss-train: 0.03459629788994789
    Step: Overfit, Model: ArtModuleExample, Passed: False. Results:
            MulticlassAccuracy-train: 0.7900000214576721
            CrossEntropyLoss-train: 0.5287203788757324
            MulticlassAccuracy-validate: 0.699999988079071
            CrossEntropyLoss-validate: 0.8762148022651672

Finally, track your progress with the dashboard:

python -m art.cli run-dashboard

image

In summary:

If you want to use all features from ART and create your new Deep Learning Project following good practices check out the tutorials.

Project creation

To get the most out of ART, we encourage you to create a new folder for your project using the CLI tool:

python -m art.cli create-project my_project_name

This will create a new folder called my_project_name with a basic structure for your project. To learn more about ART, for more details we encourage you to read the documentation or go through the tutorials!

Dashboard

After you run some steps, you can compare their execution in the dashboard. To use the dashboard, first install required dependencies:

pip install art-training[dashboard]

and run the following command in the directory of your project (the directory with a folder called art_checkpoints).

python -m art.cli run-dashboard

Optionally you can use the --experiment-folder switch to pass the path to the folder. For more info, use the --help switch.

Tutorials

  1. A showcase of ART's features. To check it out, type:
    python -m art.cli get-started

    and launch tutorial.ipynb

After running all cells run the dashboard with:

python -m art.cli run-dashboard
  1. A tutorial showing how to use ART for transfer learning in an NLP task.
    
    python -m art.cli bert-transfer-learning-tutorial
3. A tutorial showing how to use ART for regularization
```sh
python -m art.cli regularization-tutorial

The source code of tutorials and ART template is available at the separate branches of ART-Templates repo

API Cheatsheet

Contributing

We welcome contributions to ART! Please check out our contributing guide