# Introduction

Welcome to the "*Introduction*" tutorial of the "*From Zero to Hero*" series. We will start our journey by taking a quick look at the *Avalanche* main modules to understand its **general architecture**.

As hinted in the getting started introduction *Avalanche* is organized in **five main modules**:

* **`Benchmarks`**: This module maintains a uniform API for data handling: mostly generating a stream of data from one or more datasets. It contains all the major CL benchmarks (similar to what has been done for [torchvision](https://pytorch.org/docs/stable/torchvision/index.html)).
* **`Training`**: This module provides all the necessary utilities concerning model training. This includes simple and efficient ways of implement new *continual learning* strategies as well as a set pre-implemented CL baselines and state-of-the-art algorithms you will be able to use for comparison!
* **`Evaluation`**: This module provides all the utilities and metrics that can help evaluate a CL algorithm with respect to all the factors we believe to be important for a continually learning system. It also includes advanced logging and plotting features, including native [Tensorboard](https://www.tensorflow.org/tensorboard) support.
* **`Models`**: In this module you'll find several model architectures and pre-trained models that can be used for your continual learning experiment (similar to what has been done in [torchvision.models](https://pytorch.org/docs/stable/torchvision/index.html)). Furthermore, we provide everything you need to implement architectural strategies, task-aware models, and dynamic model expansion.
* **`Logging`**: It includes advanced logging and plotting features, including native *stdout*, *file* and [Tensorboard](https://www.tensorflow.org/tensorboard) support (How cool it is to have a complete, interactive dashboard, tracking your experiment metrics in real-time with a single line of code?)

{% code title="Avalanche Main Modules and Sub-Modules" %}

```
Avalanche
├── Benchmarks
│   ├── Classic
│   ├── Datasets
│   ├── Generators
│   ├── Scenarios
│   └── Utils
├── Evaluation
│   ├── Metrics
│   ├── Tensorboard
|   └── Utils
├── Training
│   ├── Strategies
│   ├── Plugins
|   └── Utils
├── Models
└── Loggers

```

{% endcode %}

In this series of tutorials, you'll get the chance to learn in-depth all the features offered by each module and sub-module of *Avalanche*, how to put them together and how to master *Avalanche*, for a **stress-free continual learning prototyping experience**!

{% hint style="info" %}
In the following tutorials we will assume you have already installed *Avalanche on your computer* or server. If you haven't yet, check out how you can do it following our [How to Install](https://avalanche.continualai.org/avalanche-v0.3.1/getting-started/how-to-install) guide.
{% endhint %}

## 🤝 Run it on Google Colab

You can run *this chapter* and play with it on Google Colaboratory: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ContinualAI/avalanche/blob/master/notebooks/from-zero-to-hero-tutorial/01_introduction.ipynb)
