{
 "cells": [
  {
   "cell_type": "markdown",
   "source": [
    "---\n",
    "description: Understand the Avalanche Package Structure\n",
    "---\n",
    "\n",
    "# Introduction\n",
    "\n",
    "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**.\n",
    "\n",
    "As hinted in the getting started introduction _Avalanche_ is organized in **five main modules**:\n",
    "\n",
    "* **`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)\\).\n",
    "* **`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!\n",
    "* **`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.\n",
    "* **`Models`**: In this module you'll be able to 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)\\).\n",
    "* **`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?\\)\n",
    "\n",
    "{% code title=\"Avalanche Main Modules and Sub-Modules\" %}\n",
    "```text\n",
    "Avalanche\n",
    "├── Benchmarks\n",
    "│   ├── Classic\n",
    "│   ├── Datasets\n",
    "│   ├── Generators\n",
    "│   ├── Scenarios\n",
    "│   └── Utils\n",
    "├── Evaluation\n",
    "│   ├── Metrics\n",
    "│   ├── Tensorboard\n",
    "|   └── Utils\n",
    "├── Training\n",
    "│   ├── Strategies\n",
    "│   ├── Plugins\n",
    "|   └── Utils\n",
    "├── Models\n",
    "└── Loggers\n",
    "\n",
    "```\n",
    "{% endcode %}\n",
    "\n",
    "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**!\n",
    "\n",
    "{% hint style=\"info\" %}\n",
    "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](../getting-started/how-to-install.md) guide.\n",
    "{% endhint %}\n",
    "\n",
    "## 🤝 Run it on Google Colab\n",
    "\n",
    "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/colab/blob/master/notebooks/avalanche/introduction.ipynb)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  }
 ],
 "metadata": {},
 "nbformat": 4,
 "nbformat_minor": 2
}