{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "5e8f7886",
   "metadata": {},
   "source": [
    "\n",
    "# TPU training with PyTorch Lightning\n",
    "\n",
    "* **Author:** PL team\n",
    "* **License:** CC BY-SA\n",
    "* **Generated:** 2021-07-17T09:05:13.252067\n",
    "\n",
    "In this notebook, we'll train a model on TPUs. Updating one Trainer flag is all you need for that. The most up to documentation related to TPU training can be found [here](https://pytorch-lightning.readthedocs.io/en/latest/advanced/tpu.html).\n",
    "\n",
    "---\n",
    "Open in [![Open In Colab](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHUAAAAUCAYAAACzrHJDAAAIuUlEQVRoQ+1ZaVRURxb+qhdolmbTUVSURpZgmLhHbQVFZIlGQBEXcMvJhKiTEzfigjQg7oNEJ9GMGidnjnNMBs2czIzajksEFRE1xklCTKJiQLRFsUGkoUWw+82pamn79etGYoKek1B/4NW99/tu3e/dquJBAGD27NkHALxKf39WY39gyrOi+i3xqGtUoePJrFmznrmgtModorbTu8YRNZk5cybXTvCtwh7o6NR2KzuZMWNGh6jtVt7nA0ymT5/eJlF9POrh7PAQl6s8bGYa3PUum//htmebVtLRqW0q01M5keTk5FZFzU0oRle3+zxwg5Hgtb+PZiL/ZVohxCI+hL5JgjmfjPxZ26+33BG3dA+ealHPM4gQAo5rU59gsI8bRvl54t3Ca62mvHyUAhtOlLd5WSQpKcluBjumnoCLs1EARkVd9E8l3p9y2i7RbQ1B6pFwu/YDgW8KbHJHMTQrwnjz2oZm9M4pavOCfo5jWrgCaaMVcMs6/pNhDr0+AMN93XlxV7R6DNpyzi7W/OE+yIrsjU6rTrbKV5cd/pNyItOmTbMp6sbBB+EqaYJY4cWE3VUciNt1TpgfcRFv71Fi54xT5kSoyLvOBEJMOMxWXkFlBeBSX4u6Zkcs+3KszYRtiapbNRqF31UgetVuc8z9vBXIv1qD+F1f83B6uDlCUyfsZGepGPpmg01OB7EITQbhS9ribKy+DmP1DUiClLz4bnIHVOqa7BY+Z1wg5g3zgUvyehiNpnJKxSLc/ts76LKm0BzX3c0RNy1yXjDcB5lWoro4iNHQxM+f1kWeWQARAWQS++trISJTp061Kep25X/MycwtjuctSC5rxo7ppi7VNUox5+PhPHtrsS2O1qJ6yx1QujQUzm9sh6hbkBlvvGcN8hYnwjUjH6kjfZEd5c/jitz5Jc5U3ENnFynKl4eB7nyEgP2UZ+Yz3/rVEbyYr27qELrtC4FIC0J7sc7xWnmccdHfRRTs0VB+cA4lt+oFcRR/wUeH8FG5w2Mbx8FQ8TXEvv1xYf4wBP3O2WyL3/UVjpXWgIqaFeUPr+wTmDvUB7njH6/bOv+HRg4SqioAg5GDe1aB3ZeMTJkyRSBqkLsWqSEm0fZVBEN94zEZnYvrdx1JL5cxe+a+AbhSJecRRHW/ikTFRTa38dtQlNZ5CRKwFvUtZU/kvBoEF9Uxni/XqIM+dwKbTw3rhcxIf7gmr2M+H6SMwx8iBzJbw5oxeG3Lv5FX9B3AGaHPS8e8z77H7v9VMpvPG5ug1enh7eGK8h0LBTwUb+GInqzInlRUK65DmTPQu4c3+uQKjwKK77zwUxBX4Tq7yR1RuiwUsqlrABCM6esHdXoy47fk4+prYKy8ZF574x4V5BnHQBuf4g9Z9ld8U36L2aktZNNplNfw7zotwWTy5MkCUft4aLEopJj5/OPHl1BQqeAVOnHgNSQOqmBzq9V9cfEm/yx5ubMGKS9cYPZ3vx2OS/c6PVHUuUO7Y1Pci3BO/1zgq18byebfGemLtNF+6JRtOvMk926ibussZqM+1mNz4TWkH7rCbM5phwGRGDAaoF8fY5OHFnlldAA8sgoEXKnDukA1NgSeNjqkJT9brbN4pC9WRweYXyLugR73c+MYvyWfu0yC6+mjzN1Isfw3FKJS98CU/zI1IHFkFPR52cHL2FJk0sB6kMTERIGo9GzcPkLNfA0cwdwi/hfEYO86ZMd9w+y1egfM2T2Eh/vesMNwljSzuZRT420SW3eqy8N6aHMmwmnFUZ7/PGVPbIoNZvNU1BURdHs0bT2+HjL8sDSM2e6vi4Lj5NW8WOLVA6RTT2azxLV+bglaFNqLieqemS/gWkw7NyoAHo+2dEsiivengjKsPFoqWOvbSh/kxPaxyW/JRzH2Fl3EzD9/xjAefJqB3usKUFn/0Gb+S/d/jy3FN2yLOmnSJJtn6oehByEiHPSeXnDxFGPRnoFoaBJjcdQlbDwcjL1zTNuQpoxD7R0OG0uUTMi0fkVwdzBdYIwcwZunxrVJVLplNm54BZp7jfDfYLoNyqQi1K6KxIdHzmN+QQ2WjFIwUT2zTGdlRXo4NFXVUO4sgX5dFC7f0aP/ZlNeUjFBuL8Xjl6uRuP6aMjSjpjzsH62FDU7JhBuGccEXIvDfJFFBc/gHw80dklfCVYnRaDfpiJcutPA4F7qJsfJeUPQI+1fqMlNhFx1FM0GDqkjFVg7NojlQ0Vt4aM5ReSqcbpaCg8nCW5lRsBvbT4T1TLfFptsfh7gItzuKTdJSEiwKSrt1vcmnEXXrsLbYnWDA1bu+z2WKy9Arq+1KRqdfKsoBo0GcdtEpS/B1bO4v0cFiUhkjskvKcMrWwtAPHuwQq8Z+4LZ1vTQANfXt4J0DwZX9gWa9qh4XDM/voC9JXfwYEMMHJcfNtusn82ihvliVUwg5KrPGVf6GH94ZJpEZBen6EC4qYTHA1dXhW0JIex8txzv//c8lhzXIi/BFxOH9jGbQhZsRalTIBZZ8KkGyZAxeRQvXkFF1TWz/Hm46jNYUnjPbt3JxIkT7f6dSj8qfJJyVvBxgaIlblOyjtysNHWN9fjjqWi7glJfW3/S0Hlj2XnA8PhKT9w6g3Qx3XiXhvuxQsuT1proxBKI/AaZqY1Xz5muvY8G8XkRRCaHsfQsRAFDH/tZPbcYuHotOG0FRIqB4HR3wNVoIPLtz8ycTguu+jpEigE218vd1YCr5m+HpHMvEI9u4LTXwNWaLjl0iPwGAmIpeHx1VeCqTJdPs1/vweweQPO3HC24NhOhnTphwoQnfv6QSY2ICbkNmdSA4h87oaLaiYfn5diIEd4att2erOwJXbPUHp953p6orQVSUVWRAXBT8c/dJ5L9xhzaJGp71GR/wFP8P5V2z10NSC9T93QM2xUg8fHxT+zU9ijeU4naHon8CjFJXFzc8/kn+dN06q9QgF98SYSo2Xen2NjYZy5sR6f+4nLSK5Iam2PH/x87a1YN/t5sBgAAAABJRU5ErkJggg==){height=\"20px\" width=\"117px\"}](https://colab.research.google.com/github/PytorchLightning/lightning-tutorials/blob/publication/.notebooks/lightning_examples/mnist-tpu-training.ipynb)\n",
    "\n",
    "Give us a ⭐ [on Github](https://www.github.com/PytorchLightning/pytorch-lightning/)\n",
    "| Check out [the documentation](https://pytorch-lightning.readthedocs.io/en/latest/)\n",
    "| Join us [on Slack](https://join.slack.com/t/pytorch-lightning/shared_invite/zt-pw5v393p-qRaDgEk24~EjiZNBpSQFgQ)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fc9e852b",
   "metadata": {},
   "source": [
    "### Setup\n",
    "This notebook requires some packages besides pytorch-lightning."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d4059183",
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "LfrJLKPFyhsK",
    "lines_to_next_cell": 0
   },
   "outputs": [],
   "source": [
    "! pip install --quiet \"torchvision\" \"torchmetrics>=0.3\" \"pytorch-lightning>=1.3\" \"torch>=1.6, <1.9\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a0e3ea2",
   "metadata": {},
   "source": [
    "###  Install Colab TPU compatible PyTorch/TPU wheels and dependencies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ea42bbf9",
   "metadata": {},
   "outputs": [],
   "source": [
    "! pip install cloud-tpu-client==0.10 https://storage.googleapis.com/tpu-pytorch/wheels/torch_xla-1.8-cp37-cp37m-linux_x86_64.whl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a98eb4da",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn.functional as F\n",
    "from pytorch_lightning import LightningDataModule, LightningModule, Trainer\n",
    "from torch import nn\n",
    "from torch.utils.data import DataLoader, random_split\n",
    "from torchmetrics.functional import accuracy\n",
    "from torchvision import transforms\n",
    "# Note - you must have torchvision installed for this example\n",
    "from torchvision.datasets import MNIST\n",
    "\n",
    "BATCH_SIZE = 1024"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "28bc18a6",
   "metadata": {
    "lines_to_next_cell": 2
   },
   "source": [
    "### Defining The `MNISTDataModule`\n",
    "\n",
    "Below we define `MNISTDataModule`. You can learn more about datamodules\n",
    "in [docs](https://pytorch-lightning.readthedocs.io/en/latest/extensions/datamodules.html)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "be77bbfc",
   "metadata": {
    "lines_to_next_cell": 2
   },
   "outputs": [],
   "source": [
    "class MNISTDataModule(LightningDataModule):\n",
    "\n",
    "    def __init__(self, data_dir: str = './'):\n",
    "        super().__init__()\n",
    "        self.data_dir = data_dir\n",
    "        self.transform = transforms.Compose([\n",
    "            transforms.ToTensor(), transforms.Normalize((0.1307, ), (0.3081, ))\n",
    "        ])\n",
    "\n",
    "        # self.dims is returned when you call dm.size()\n",
    "        # Setting default dims here because we know them.\n",
    "        # Could optionally be assigned dynamically in dm.setup()\n",
    "        self.dims = (1, 28, 28)\n",
    "        self.num_classes = 10\n",
    "\n",
    "    def prepare_data(self):\n",
    "        # download\n",
    "        MNIST(self.data_dir, train=True, download=True)\n",
    "        MNIST(self.data_dir, train=False, download=True)\n",
    "\n",
    "    def setup(self, stage=None):\n",
    "\n",
    "        # Assign train/val datasets for use in dataloaders\n",
    "        if stage == 'fit' or stage is None:\n",
    "            mnist_full = MNIST(self.data_dir, train=True, transform=self.transform)\n",
    "            self.mnist_train, self.mnist_val = random_split(mnist_full, [55000, 5000])\n",
    "\n",
    "        # Assign test dataset for use in dataloader(s)\n",
    "        if stage == 'test' or stage is None:\n",
    "            self.mnist_test = MNIST(self.data_dir, train=False, transform=self.transform)\n",
    "\n",
    "    def train_dataloader(self):\n",
    "        return DataLoader(self.mnist_train, batch_size=BATCH_SIZE)\n",
    "\n",
    "    def val_dataloader(self):\n",
    "        return DataLoader(self.mnist_val, batch_size=BATCH_SIZE)\n",
    "\n",
    "    def test_dataloader(self):\n",
    "        return DataLoader(self.mnist_test, batch_size=BATCH_SIZE)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "77df25f1",
   "metadata": {
    "lines_to_next_cell": 2
   },
   "source": [
    "### Defining the `LitModel`\n",
    "\n",
    "Below, we define the model `LitMNIST`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "79e57e98",
   "metadata": {},
   "outputs": [],
   "source": [
    "class LitModel(LightningModule):\n",
    "\n",
    "    def __init__(self, channels, width, height, num_classes, hidden_size=64, learning_rate=2e-4):\n",
    "\n",
    "        super().__init__()\n",
    "\n",
    "        self.save_hyperparameters()\n",
    "\n",
    "        self.model = nn.Sequential(\n",
    "            nn.Flatten(), nn.Linear(channels * width * height, hidden_size), nn.ReLU(), nn.Dropout(0.1),\n",
    "            nn.Linear(hidden_size, hidden_size), nn.ReLU(), nn.Dropout(0.1),\n",
    "            nn.Linear(hidden_size, num_classes)\n",
    "        )\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = self.model(x)\n",
    "        return F.log_softmax(x, dim=1)\n",
    "\n",
    "    def training_step(self, batch, batch_idx):\n",
    "        x, y = batch\n",
    "        logits = self(x)\n",
    "        loss = F.nll_loss(logits, y)\n",
    "        self.log('train_loss', loss)\n",
    "        return loss\n",
    "\n",
    "    def validation_step(self, batch, batch_idx):\n",
    "        x, y = batch\n",
    "        logits = self(x)\n",
    "        loss = F.nll_loss(logits, y)\n",
    "        preds = torch.argmax(logits, dim=1)\n",
    "        acc = accuracy(preds, y)\n",
    "        self.log('val_loss', loss, prog_bar=True)\n",
    "        self.log('val_acc', acc, prog_bar=True)\n",
    "        return loss\n",
    "\n",
    "    def configure_optimizers(self):\n",
    "        optimizer = torch.optim.Adam(self.parameters(), lr=self.hparams.learning_rate)\n",
    "        return optimizer"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c75ebe94",
   "metadata": {},
   "source": [
    "### TPU Training\n",
    "\n",
    "Lightning supports training on a single TPU core or 8 TPU cores.\n",
    "\n",
    "The Trainer parameters `tpu_cores` defines how many TPU cores to train on (1 or 8) / Single TPU core to train on [1].\n",
    "\n",
    "For Single TPU training, Just pass the TPU core ID [1-8] in a list.\n",
    "Setting `tpu_cores=[5]` will train on TPU core ID 5."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fa173f57",
   "metadata": {},
   "source": [
    "Train on TPU core ID 5 with `tpu_cores=[5]`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e23e2f58",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Init DataModule\n",
    "dm = MNISTDataModule()\n",
    "# Init model from datamodule's attributes\n",
    "model = LitModel(*dm.size(), dm.num_classes)\n",
    "# Init trainer\n",
    "trainer = Trainer(max_epochs=3, progress_bar_refresh_rate=20, tpu_cores=[5])\n",
    "# Train\n",
    "trainer.fit(model, dm)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "589f8c4e",
   "metadata": {},
   "source": [
    "Train on single TPU core with `tpu_cores=1`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d9d469e8",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Init DataModule\n",
    "dm = MNISTDataModule()\n",
    "# Init model from datamodule's attributes\n",
    "model = LitModel(*dm.size(), dm.num_classes)\n",
    "# Init trainer\n",
    "trainer = Trainer(max_epochs=3, progress_bar_refresh_rate=20, tpu_cores=1)\n",
    "# Train\n",
    "trainer.fit(model, dm)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "40552324",
   "metadata": {},
   "source": [
    "Train on 8 TPU cores with `tpu_cores=8`.\n",
    "You might have to restart the notebook to run it on 8 TPU cores after training on single TPU core."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "432fc169",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Init DataModule\n",
    "dm = MNISTDataModule()\n",
    "# Init model from datamodule's attributes\n",
    "model = LitModel(*dm.size(), dm.num_classes)\n",
    "# Init trainer\n",
    "trainer = Trainer(max_epochs=3, progress_bar_refresh_rate=20, tpu_cores=8)\n",
    "# Train\n",
    "trainer.fit(model, dm)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be63a2ce",
   "metadata": {},
   "source": [
    "## Congratulations - Time to Join the Community!\n",
    "\n",
    "Congratulations on completing this notebook tutorial! If you enjoyed this and would like to join the Lightning\n",
    "movement, you can do so in the following ways!\n",
    "\n",
    "### Star [Lightning](https://github.com/PyTorchLightning/pytorch-lightning) on GitHub\n",
    "The easiest way to help our community is just by starring the GitHub repos! This helps raise awareness of the cool\n",
    "tools we're building.\n",
    "\n",
    "### Join our [Slack](https://join.slack.com/t/pytorch-lightning/shared_invite/zt-pw5v393p-qRaDgEk24~EjiZNBpSQFgQ)!\n",
    "The best way to keep up to date on the latest advancements is to join our community! Make sure to introduce yourself\n",
    "and share your interests in `#general` channel\n",
    "\n",
    "\n",
    "### Contributions !\n",
    "The best way to contribute to our community is to become a code contributor! At any time you can go to\n",
    "[Lightning](https://github.com/PyTorchLightning/pytorch-lightning) or [Bolt](https://github.com/PyTorchLightning/lightning-bolts)\n",
    "GitHub Issues page and filter for \"good first issue\".\n",
    "\n",
    "* [Lightning good first issue](https://github.com/PyTorchLightning/pytorch-lightning/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)\n",
    "* [Bolt good first issue](https://github.com/PyTorchLightning/lightning-bolts/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)\n",
    "* You can also contribute your own notebooks with useful examples !\n",
    "\n",
    "### Great thanks from the entire Pytorch Lightning Team for your interest !\n",
    "\n",
    "![Pytorch Lightning](data:image/png;base64,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){height=\"60px\" width=\"240px\"}"
   ]
  }
 ],
 "metadata": {
  "jupytext": {
   "cell_metadata_filter": "colab_type,id,colab,-all",
   "formats": "ipynb,py:percent",
   "main_language": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}