{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "IMDb_baseline.ipynb", "version": "0.3.2", "provenance": [], "collapsed_sections": [], "toc_visible": true, "include_colab_link": true }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "accelerator": "GPU" }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "o9LbB0krq6z2", "colab_type": "text" }, "source": [ "# Prepare" ] }, { "cell_type": "markdown", "metadata": { "id": "jMnqAd1HJ1Br", "colab_type": "text" }, "source": [ "## References\n", "* [fastai/course-v3/nbs/dl1/lesson3-imdb.ipynb](https://nbviewer.jupyter.org/github/fastai/course-v3/blob/master/nbs/dl1/lesson3-imdb.ipynb) (2019-05-03)\n", "\n", "learner|bs|lr |bptt|wd |drop_mult|`to_fp16(clip)`|fw acc%\n", "-- |-:|--: |--: |--: |--: |-- |--:\n", "lm |48|1e-2|70 |0.01|0.3 |No |34.1371\n", "cf |48|2e-2|70 |0.01|0.5 |No |94.3960\n", "\n", "* [fastai/fastai/examples/ULMFit.ipynb](https://nbviewer.jupyter.org/github/fastai/fastai/blob/master/examples/ULMFit.ipynb) (2019-06-11)\n", "\n", " > Fine-tuning a forward and backward langauge model to get to 95.4% accuracy on the IMDB movie reviews dataset. This tutorial is done with fastai v1.0.53.\n", "\n", " > The example was run on a Titan RTX (24 GB of RAM) so you will probably need to adjust the batch size accordinly. If you divide it by 2, don't forget to divide the learning rate by 2 as well in the following cells. You can also reduce a little bit the bptt to gain a bit of memory.\n", "\n", "learner|bs |lr |bptt|wd |drop_mult|`to_fp16(clip)`|fw acc%|bw acc%|avg acc%\n", "-- |--:|--: |--: |--: |--: |-- |--: |--: |--:\n", "lm |256|2e-2| 80|0.1 |1.0 |Yes; clip=0.1 |34.0075|37.2268|N/A\n", "cf |128|1e-1| 70†|0.1‡|0.5 |No |94.9560|94.7400|95.39\n", "\n", " † both cf's used default bptt=70\n", " ‡ forward cf used default wd=0.01\n", "\n", "* [fastai/course-nlp/nn-imdb-more.ipynb](https://nbviewer.jupyter.org/github/fastai/course-nlp/blob/master/nn-imdb-more.ipynb) (2019-06-12)\n", "\n", "learner|bs |lr |bptt|wd |drop_mult|`to_fp16(clip)`|fw acc%\n", "-- |--:|--: |--: |--: |--: |-- |--:\n", "lm |128|1e-2*bs/48| 70|0.01|1.0 |Yes; clip=None |>27.8265†\n", "cf |128|2e-2*bs/48| 70|0.01|0.5 |Yes; clip=None |94.8080\n", "\n", " † forward lm's final accuracy wasn't shown" ] }, { "cell_type": "code", "metadata": { "id": "QF718toQqs83", "colab_type": "code", "colab": {} }, "source": [ "# Ensure GPU spec; T4 is for colab and one can change it for another env.\n", "gpu_list = !nvidia-smi -L\n", "if gpu_list[0].startswith('NVIDIA-SMI has failed'):\n", " print('Runtime type should be GPU.')\n", "elif not gpu_list[0].startswith('GPU 0: Tesla T4'):\n", " display(gpu_list)\n", " print('Please reset all runtimes. We need a Tesla T4 to reproduce the experiments!')\n", "else:\n", " display(gpu_list)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "0OcNDqMgrCca", "colab_type": "text" }, "source": [ "## Dependency" ] }, { "cell_type": "markdown", "metadata": { "id": "jrjoIzboW09N", "colab_type": "text" }, "source": [ "### Install" ] }, { "cell_type": "code", "metadata": { "id": "2rwtTuykrEWy", "colab_type": "code", "colab": {} }, "source": [ "# Ensure no surprises from conflict packages.\n", "!pip check" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "bymTjo9wrz5f", "colab_type": "code", "colab": {} }, "source": [ "%%capture pip_logs\n", "!pip install -U fastai==1.0.57 ipyexperiments jupyter-console==5.2.0 coverage==4.5.3 coveralls datascience albumentations" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "ojbk71i1xaFi", "colab_type": "code", "colab": {} }, "source": [ "# If package updates demands a restart, a colab_vnd generated button will show.\n", "colab_vnd = 'application/vnd.colab-display-data+json'\n", "for o in pip_logs.outputs:\n", " if colab_vnd in o.data and 'pip_warning' in o.data[colab_vnd]:\n", " o.display()\n", "!pip check" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "7z1_46NArGi_", "colab_type": "text" }, "source": [ "### Import" ] }, { "cell_type": "code", "metadata": { "id": "LMm8qgQqD2eC", "colab_type": "code", "colab": {} }, "source": [ "import gc\n", "import math\n", "from pathlib import Path\n", "import pickle\n", "import random\n", "from shutil import copytree\n", "from typing import Optional, Tuple\n", "\n", "import numpy as np\n", "import torch\n", "from google.colab import drive\n", "\n", "from fastai import basic_data, basic_train, core\n", "from fastai import *\n", "from fastai.callbacks import CSVLogger, MixedPrecision\n", "from fastai.core import plt\n", "from fastai.text import *\n", "from fastprogress import fastprogress\n", "\n", "from ipyexperiments import *" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "DTVchfsRnLgI", "colab_type": "text" }, "source": [ "### Init\n" ] }, { "cell_type": "code", "metadata": { "id": "QnxWkqafNxvA", "colab_type": "code", "colab": {} }, "source": [ "# Not set earlier because pip may require a restart.\n", "SESSN_START, = !date +%Y%m%dT%H%M" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "iTX1BGNQN6VB", "colab_type": "code", "colab": {} }, "source": [ "%load_ext autoreload\n", "%autoreload 2\n", "\n", "%config InlineBackend.figure_formats = {'png', 'retina'}" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "wGlH0nWchbZL", "colab_type": "code", "colab": {} }, "source": [ "# Stylize the plot of `lr_find()`\n", "plt.style.use(['dark_background','seaborn-poster','seaborn-deep'])\n", "plt.rcParams['axes.grid'] = True\n", "plt.rcParams['axes.grid.axis'] = 'x'\n", "plt.rcParams['axes.grid.which'] = 'both'\n", "plt.rcParams['grid.alpha'] = 0.5\n", "plt.rcParams['grid.color'] = 'xkcd:lime green'\n", "plt.rcParams['grid.linestyle'] = ':'" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "db_RafAMN2mK", "colab_type": "code", "colab": {} }, "source": [ "# A special treatment for colab to decrease network traffic.\n", "fastprogress.NO_BAR = True\n", "master_bar, progress_bar = fastprogress.force_console_behavior()\n", "basic_train.master_bar, basic_train.progress_bar = master_bar, progress_bar\n", "basic_data.master_bar, basic_data.progress_bar = master_bar, progress_bar\n", "dataclass.master_bar, dataclass.progress_bar = master_bar, progress_bar\n", "text.master_bar, text.progress_bar = master_bar, progress_bar\n", "text.data.master_bar, text.data.progress_bar = master_bar, progress_bar\n", "core.master_bar, core.progress_bar = master_bar, progress_bar" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "iDMmtPemp8H3", "colab_type": "code", "colab": {} }, "source": [ "COLAB_CONTENT_DIR = Path('/content')\n", "GD_DIR = COLAB_CONTENT_DIR / 'gdrive'\n", "drive.mount(str(GD_DIR), force_remount=True)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "uDRg1_MUpXjy", "colab_type": "code", "colab": {} }, "source": [ "CORPUS = 'imdb'\n", "BASE_DIR = GD_DIR / 'My Drive' / CORPUS\n", "BASE_DIR.mkdir(parents=True, exist_ok=True)\n", "DATA_DIR = BASE_DIR / 'data'\n", "DATA_DIR.mkdir(parents=True, exist_ok=True)\n", "MDLS_DIR = BASE_DIR / 'models'\n", "MDLS_DIR.mkdir(parents=True, exist_ok=True)\n", "LOGS_DIR = BASE_DIR / 'logs'\n", "LOGS_DIR.mkdir(parents=True, exist_ok=True)\n", "\n", "FASTAI_DATA_DIR = Path('/root/.fastai/data')\n", "FASTAI_DATA_DIR.mkdir(parents=True, exist_ok=True)\n", "COLAB_DATA_DIR = COLAB_CONTENT_DIR / 'data'\n", "if not COLAB_DATA_DIR.is_symlink():\n", " COLAB_DATA_DIR.symlink_to(FASTAI_DATA_DIR)\n", "if (COLAB_CONTENT_DIR / 'sample_data').exists():\n", " !rm -rf /content/sample_data/\n", "\n", "CORPUS_IN_COLAB_DATA_DIR = COLAB_DATA_DIR / CORPUS" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "2GRWbysx7IRg", "colab_type": "code", "colab": {} }, "source": [ "downloaded_corpus_dir = untar_data(URLs.IMDB, dest=COLAB_DATA_DIR)\n", "assert downloaded_corpus_dir == CORPUS_IN_COLAB_DATA_DIR" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "O2RKejF7YdPR", "colab_type": "text" }, "source": [ "# Assign" ] }, { "cell_type": "code", "metadata": { "id": "y18xZgbnXVMo", "colab_type": "code", "colab": {} }, "source": [ "#@title Hyper-parameters\n", "\n", "lm_bs = 64 #@param {type: \"number\"}\n", "cf_bs = 64 #@param {type: \"number\"}\n", "bptt = 70 #@param {type: \"number\"}\n", "moms = (0.8, 0.7) #@param\n", "\n", "REFERRED_LM_LR = 1e-2 * lm_bs / 48\n", "REFERRED_CF_LR = 2e-2 * cf_bs / 48\n", "\n", "#@markdown ---\n", "\n", "lm_wd = 0.01 #@param {type: \"number\"}\n", "cf_wd = 0.01 #@param {type: \"number\"}\n", "lm_drop_mult = 1.0 #@param {type: \"number\"}\n", "cf_drop_mult = 0.5 #@param {type: \"number\"}\n", "\n", "FW_LM_DBNCH_FNAME = f'fw_lm_dbnch-b{lm_bs}-bptt{bptt}.pkl'\n", "FW_CF_DBNCH_FNAME = f'fw_cf_dbnch-b{cf_bs}-bptt{bptt}.pkl'\n", "\n", "VOCAB_FILE = DATA_DIR / f'imdb_vocab.pkl'" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "ruGmJGQX9zh-", "colab_type": "code", "colab": {} }, "source": [ "IMDB_CLASSES = ['neg', 'pos']" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "P381SP4eYxv8", "colab_type": "code", "colab": {} }, "source": [ "# Set num_workers to main process since the training set will be shuffled.\n", "N_DBNCH_WRKRS = 0" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "1iOEouOl0WkK", "colab_type": "code", "colab": {} }, "source": [ "# One seed to rule pseudo-random number generators all.\n", "SEED = 42" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "CEfPdqf-I-bZ", "colab_type": "text" }, "source": [ "# Define" ] }, { "cell_type": "markdown", "metadata": { "id": "3S70SGOwBDp_", "colab_type": "text" }, "source": [ "All those helpers are for demonstration. Ideal implementations would be decorators or callbacks.\n", "\n", "However, although fastai prefers callbacks, the order of callback invocations will be another issue." ] }, { "cell_type": "markdown", "metadata": { "id": "tAhmWnGMZh7q", "colab_type": "text" }, "source": [ "## PRNG State Fixer" ] }, { "cell_type": "code", "metadata": { "id": "2QAli-Wt0Z1M", "colab_type": "code", "colab": {} }, "source": [ "@dataclass\n", "class PseudoRandomStatesHolder:\n", " py3_state: Tuple[int, Tuple[int], Optional[float]]\n", " np_state: Tuple[str, np.ndarray, int, int, float]\n", " torch_state: torch.ByteTensor\n", " cuda_states: List[torch.ByteTensor]" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "H6ETnToMbEuG", "colab_type": "code", "colab": {} }, "source": [ "# fastai v1.0.57 does something similar but it won't suffice.\n", "def reset_prng_states(seed=SEED):\n", " random.seed(SEED)\n", " np.random.seed(SEED)\n", " torch.manual_seed(SEED) # This implies torch.cuda.manual_seed_all(SEED) now\n", " # if torch.cuda.is_available(): torch.cuda.manual_seed_all(SEED)\n", " torch.backends.cudnn.deterministic = True # About 15% slower but...\n", " torch.backends.cudnn.benchmark = False" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "ACszEIL30lzu", "colab_type": "code", "colab": {} }, "source": [ "def get_prng_states():\n", " prng_states = PseudoRandomStatesHolder(random.getstate(),\n", " np.random.get_state(),\n", " torch.get_rng_state(),\n", " torch.cuda.get_rng_state_all())\n", " # print(f'Got prng_states:\\n'\n", " # f' py3: {prng_states.py3_state}\\n'\n", " # f' np: {prng_states.np_state}\\n'\n", " # f' torch: {prng_states.torch_state}\\n'\n", " # f' cuda: {prng_states.cuda_states}')\n", " return prng_states" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "j7RHtjHM0n4u", "colab_type": "code", "colab": {} }, "source": [ "def set_prng_states(prng_states: PseudoRandomStatesHolder):\n", " random.setstate(prng_states.py3_state)\n", " np.random.set_state(prng_states.np_state)\n", " torch.set_rng_state(prng_states.torch_state)\n", " torch.cuda.set_rng_state_all(prng_states.cuda_states)\n", " # print(f'Set prng_states:\\n'\n", " # f' py3: {prng_states.py3_state}\\n'\n", " # f' np: {prng_states.np_state}\\n'\n", " # f' torch: {prng_states.torch_state}\\n'\n", " # f' cuda: {prng_states.cuda_states}')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "JIOGaaQO0p1w", "colab_type": "code", "colab": {} }, "source": [ "def save_prng_states(name, prng_states, data_dir=DATA_DIR):\n", " prng_states_pkl_path = data_dir / f'ps-{name}.pkl'\n", " with open(prng_states_pkl_path, 'wb') as f:\n", " pickle.dump(prng_states, f)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "JlbP4Ycg0rXu", "colab_type": "code", "colab": {} }, "source": [ "def load_prng_states(name, data_dir=DATA_DIR):\n", " prng_states_pkl_path = data_dir / f'ps-{name}.pkl'\n", " if (prng_states_pkl_path.exists() and prng_states_pkl_path.is_file()):\n", " with open(prng_states_pkl_path, 'rb') as f:\n", " prng_states = pickle.load(f)\n", " return prng_states\n", " else:\n", " raise FileNotFoundError(f'No {prng_states_pkl_path} to load!')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "WugYIc_SHgkC", "colab_type": "text" }, "source": [ "## Checkpoint Helpers" ] }, { "cell_type": "code", "metadata": { "id": "JrTTQsr2HwOB", "colab_type": "code", "colab": {} }, "source": [ "@dataclass\n", "class Checkpoint:\n", " name: str\n", " frozen_to: int\n", " mp_loss_scale: float" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "HTXpAmZhHn4Z", "colab_type": "code", "colab": {} }, "source": [ "def preserve_event(name, learner, frozen_to=-1, data_dir=DATA_DIR):\n", " save_prng_states(name, get_prng_states())\n", "\n", " learner.save(name, with_opt=True)\n", "\n", " mp_loss_scale = None\n", " for i, cb in enumerate(learner.callbacks):\n", " if isinstance(cb, MixedPrecision):\n", " print(f'Found MixedPrecision loss_scale={cb.loss_scale}')\n", " mp_loss_scale = cb.loss_scale\n", " break\n", "\n", " checkpoint = Checkpoint(name, frozen_to, mp_loss_scale)\n", " checkpoint_fpath = data_dir / f'cp-{name}.pkl'\n", " with open(checkpoint_fpath, 'wb') as f:\n", " pickle.dump(checkpoint, f)\n", " print(f'{checkpoint} saved to {checkpoint_fpath}')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Gzg87e_AIeHj", "colab_type": "code", "colab": {} }, "source": [ "def retain_event(name, learner, data_dir=DATA_DIR):\n", " if name is None:\n", " reset_prng_states()\n", " else:\n", " set_prng_states(load_prng_states(name))\n", "\n", " checkpoint_fpath = data_dir / f'cp-{name}.pkl'\n", " if not (checkpoint_fpath.exists() and checkpoint_fpath.is_file()):\n", " print(f'No {checkpoint_fpath} to load!')\n", " return learner\n", " with open(checkpoint_fpath, 'rb') as f:\n", " checkpoint = pickle.load(f)\n", " print(f'{checkpoint} loaded from {checkpoint_fpath}')\n", "\n", " learner.freeze_to(checkpoint.frozen_to) # This must be before `load()`.\n", " print(f'Frozen to {checkpoint.frozen_to}')\n", "\n", " learner = learner.load(checkpoint.name, with_opt=True)\n", "\n", " if checkpoint.mp_loss_scale:\n", " for i, cb in enumerate(learner.callbacks):\n", " if isinstance(cb, MixedPrecision):\n", " learner.callbacks[i].loss_scale = checkpoint.mp_loss_scale\n", " print('Retained MixedPrecision loss_scale='\n", " f'{learner.callbacks[i].loss_scale}')\n", " break\n", "\n", " return learner" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "UOZDR1xb5_-j", "colab_type": "code", "colab": {} }, "source": [ "def fit_a_named_cycle(name, learner, lrs, moms, wd, clbks, cyc_len, freeze_to,\n", " prev_event_name):\n", " for i, cb in enumerate(learner.callbacks):\n", " if isinstance(cb, MixedPrecision):\n", " print(f'Found MixedPrecision loss_scale={cb.loss_scale}')\n", " learner = retain_event(prev_event_name, learner)\n", "\n", " # `unfreeze()` does just `freeze_to(0)`\n", " # `freeze()` does `freeze_to(-1)` with a size-assertion of layer groups\n", " learner.freeze_to(freeze_to)\n", " learner.fit_one_cycle(cyc_len=cyc_len, max_lr=lrs, moms=moms, wd=wd,\n", " callbacks=clbks)\n", "\n", " preserve_event(name, learner, freeze_to)\n", "\n", " return learner" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "dJwkXFIyJlkB", "colab_type": "text" }, "source": [ "## LM-specific Helpers" ] }, { "cell_type": "code", "metadata": { "id": "Hjm3439wUJUE", "colab_type": "code", "colab": {} }, "source": [ "def set_lm_databunch(fname, bs, bptt, seed=SEED, presort=True,\n", " n_wrkrs=N_DBNCH_WRKRS, data_dir=DATA_DIR,\n", " raw_data_dir=CORPUS_IN_COLAB_DATA_DIR):\n", " reset_prng_states()\n", " tl = TextList.from_folder(raw_data_dir, presort=presort)\n", " il = tl.filter_by_folder(include=['train', 'test', 'unsup'])\n", " ils = il.split_by_rand_pct(0.1, seed) # Set the seed again since in theory one may have called np.random before this.\n", " lls = ils.label_for_lm()\n", " dbnch = lls.databunch(bs=bs, bptt=bptt, num_workers=n_wrkrs)\n", " dbnch.save(data_dir / fname)\n", " return dbnch" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "LcZ9A0JNfA7M", "colab_type": "code", "colab": {} }, "source": [ "def get_lm_databunch(fname, bs, bptt, backwards=False, n_wrkrs=N_DBNCH_WRKRS,\n", " data_dir=DATA_DIR):\n", " reset_prng_states()\n", " return load_data(data_dir, fname, bs, num_workers=n_wrkrs,\n", " backwards=backwards, bptt=bptt)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "NJnkgQiJqCyZ", "colab_type": "code", "colab": {} }, "source": [ "def new_lm_learner_with_ulmfit(name, dbnch, drop_mult, base_dir=BASE_DIR):\n", " reset_prng_states()\n", " lrnr = language_model_learner(dbnch, AWD_LSTM, drop_mult=drop_mult,\n", " path=base_dir)\n", " # lrnr = lrnr.to_fp16(clip=0.1) # 2x faster\n", " lrnr = lrnr.to_fp16() # 2x faster\n", " save_prng_states(name, get_prng_states())\n", " return lrnr" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "k7ygpuHbJo0t", "colab_type": "text" }, "source": [ "## CF-specific Helpers" ] }, { "cell_type": "code", "metadata": { "id": "sPkphOtiXTHH", "colab_type": "code", "colab": {} }, "source": [ "def set_cf_databunch(fname, bs, vocab, tags=IMDB_CLASSES, presort=True,\n", " n_wrkrs=N_DBNCH_WRKRS, data_dir=DATA_DIR,\n", " raw_data_dir=CORPUS_IN_COLAB_DATA_DIR):\n", " reset_prng_states()\n", " tl = TextList.from_folder(raw_data_dir, vocab=vocab, presort=presort)\n", " ils = tl.split_by_folder(valid='test')\n", " lls = ils.label_from_folder(classes=tags)\n", " dbnch = lls.databunch(bs=bs, num_workers=n_wrkrs)\n", " dbnch.save(data_dir / fname)\n", " return dbnch" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "mB5T78sWfQ8V", "colab_type": "code", "colab": {} }, "source": [ "def get_cf_databunch(fname, bs, backwards=False, n_wrkrs=N_DBNCH_WRKRS,\n", " data_dir=DATA_DIR):\n", " reset_prng_states()\n", " return load_data(data_dir, fname, bs, num_workers=n_wrkrs,\n", " backwards=backwards)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "wxk03xtFYkk6", "colab_type": "code", "colab": {} }, "source": [ "def new_cf_learner_with_encoder(name, dbnch, drop_mult, enc_name, bptt,\n", " base_dir=BASE_DIR):\n", " reset_prng_states()\n", " lrnr = text_classifier_learner(dbnch, AWD_LSTM, drop_mult=drop_mult,\n", " path=base_dir, bptt=bptt, pretrained=False)\n", " lrnr = lrnr.to_fp16()\n", " lrnr = lrnr.load_encoder(enc_name)\n", " save_prng_states(name, get_prng_states())\n", " return lrnr" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "4puv1GrLOp5R", "colab_type": "text" }, "source": [ "# Fit" ] }, { "cell_type": "markdown", "metadata": { "id": "g3uudRrTXGq3", "colab_type": "text" }, "source": [ "## Forward LM" ] }, { "cell_type": "markdown", "metadata": { "id": "wopKpHoLPRj5", "colab_type": "text" }, "source": [ "### Process Data Once" ] }, { "cell_type": "code", "metadata": { "id": "aUayc5jQ-ugt", "colab_type": "code", "colab": {} }, "source": [ "if not (DATA_DIR / FW_LM_DBNCH_FNAME).exists():\n", " fw_lm_dbnch = set_lm_databunch(FW_LM_DBNCH_FNAME, lm_bs, bptt)\n", " print(f'Built and saved {DATA_DIR / FW_LM_DBNCH_FNAME}')\n", " # fw_lm_dbnch.show_batch()\n", " if not VOCAB_FILE.exists():\n", " fw_lm_dbnch.vocab.save(VOCAB_FILE)\n", " print(f'Saved {VOCAB_FILE}')\n", "\n", "# fw_lm_dbnch = get_lm_databunch(FW_LM_DBNCH_FNAME, lm_bs, bptt)\n", "# print(f'Loaded {DATA_DIR / FW_LM_DBNCH_FNAME}')\n", "# fw_lm_dbnch.show_batch()\n", "# IMDB_VOC = Vocab.load(VOCAB_FILE)\n", "# print(f'Loaded {VOCAB_FILE}')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "M_IIOjBt8a0O", "colab_type": "text" }, "source": [ "### Find Learning Rate" ] }, { "cell_type": "markdown", "metadata": { "id": "sbwGy8uACFp9", "colab_type": "text" }, "source": [ "I use a different method to approximate a good learning rate." ] }, { "cell_type": "code", "metadata": { "id": "2dflRYKkYtv2", "colab_type": "code", "colab": {} }, "source": [ "%%capture lm_lr_find_scope_begin_log\n", "lm_lr_find_scope = IPyExperimentsPytorch(cl_enable=False)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "bSdFJ6neuGSi", "colab_type": "code", "outputId": "ae4767b7-64f7-40e9-abac-2da61dc89002", "colab": { "base_uri": "https://localhost:8080/", "height": 62 } }, "source": [ "fw_lm_dbnch = get_lm_databunch(FW_LM_DBNCH_FNAME, lm_bs, bptt)\n", "assert fw_lm_dbnch.train_dl.batch_size == lm_bs\n", "lm_epoch_sz = math.ceil(len(fw_lm_dbnch.train_ds) / lm_bs)\n", "ratio = 4 / 5\n", "epoch_scale = ratio * 0.3 # OneCycleScheduler's pct_start=0.3\n", "lm_num_it = math.ceil(lm_epoch_sz * epoch_scale)\n", "print(\n", " f'lm_epoch_sz = {lm_epoch_sz}\\n'\n", " f'lm_num_it = {lm_num_it}')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "lm_epoch_sz = 1407\n", "lm_num_it = 338\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "EYtHdhyQOSZ6", "colab_type": "code", "colab": {} }, "source": [ "fw_lm_lrnr = new_lm_learner_with_ulmfit('new-fw_lm', fw_lm_dbnch, lm_drop_mult)\n", "fw_lm_lrnr.path = COLAB_DATA_DIR" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "jiqmaW1FXGqN", "colab_type": "code", "outputId": "cb42a414-ad15-47e4-ecf5-8b622e3ee0f7", "colab": { "base_uri": "https://localhost:8080/", "height": 150 } }, "source": [ "start_lr = 4.5e-4\n", "end_lr = round(start_lr * 20, 3)\n", "fw_lm_lrnr.lr_find(start_lr, end_lr, lm_num_it, wd=lm_wd)\n", "min_loss = np.min(fw_lm_lrnr.recorder.losses)\n", "min_loss_it = np.argmin(fw_lm_lrnr.recorder.losses) + 1\n", "end_loss = fw_lm_lrnr.recorder.losses[-1].item()\n", "print(f'lr range = [{start_lr}, {end_lr}]\\n'\n", " f'min_loss = {min_loss} @ {min_loss_it}\\n'\n", " f'end_loss = {end_loss} @ {lm_num_it}')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "epoch train_loss valid_loss accuracy time \n", "0 4.593526 #na# 00:55 \n", "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n", "lr range = [0.00045, 0.009]\n", "min_loss = 4.593526363372803 @ 338\n", "end_loss = 4.593526363372803 @ 338\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "UqTHVxFymu4G", "colab_type": "code", "colab": {} }, "source": [ "%%capture lm_lr_find_log\n", "fw_lm_lrnr.recorder.plot(skip_start=0, skip_end=0, suggestion=True)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "9Ib1vF17DxLg", "colab_type": "code", "outputId": "6fac2c4b-c606-461e-b998-bdfdd0d65cbf", "colab": { "base_uri": "https://localhost:8080/", "height": 606 } }, "source": [ "lm_lr_find_log()" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Min numerical gradient: 4.58E-04\n", "Min loss divided by 10: 8.92E-04\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "image/png": "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\ns84669C/77333q5jYLAdGN8R408/Nuf+cae8MJauPPJ4AQAAAACgPAslh/HcBYuyOzsOHjwYP/jB\nDw5dX3LJJYd9faPRiFe+8pWHrr/97W+X+twqNRoRYyuL/xqNqiMafI/98LY59xqNoTjpnFeVej89\nKE/tCrnUok55pppLqnEDeTJnkTpjOD96Xj09KE/tCrnUok55pppLqnF3y9Fb81izZk1cddVVh67v\nuuuu0u/1l3/5l3HBBRdERMS1114bn//85+d97ZVXXhlr166NiIiHH344yYWS0RURl72rWIO7fdNM\nTMw91YvneOy+2+MFr/yVOfdPPvfy+HHrc0f9fnpQntoVcqlFnfJMNZdU4wbyZM4idcZwfvS8enpQ\nntoVcqlFnfJMNZdU4+6WHSXz2LRpU6xevToiIrZt2xa33Tb3//G/UH/6p3966Pita6+9Ns4555yO\nr2s0GvHe97730PUnP/nJ0p9JWvY982Q8/fgP59xfffzpsWrdaRVEBAAAAACQh6wWSt797nfHpk2b\n4uyzz573NWvXro2Pfexj8ba3ve3QvRtvvDEOHjw457WXX355tNvtQ//N54c//GF84hOfiIiIJUuW\nxGc+85k49dRTZ71maGgoPvjBD8Zll10WERFPPfVU/N7v/d5R5UfaHruv82Lcyef+XH8DAQAAAADI\nSCMiun9ieSJuuOGGuPHGGyMi4r777otWqxVbtmyJPXv2xMqVK+OCCy6Iq6++OlasWHHodz760Y/O\nWjR5rssvvzxuvfXWQ9eNwxzYtnbt2vj6179+aDfJ3r1747Of/Wxs3rw5jj322LjmmmsOPRNlcnIy\nfumXfin+5m/+psuMu9dqtSIiotlsLvh3Go1nt2j9zOTeiMOsI/FTo0tXxdW/9tEYGp59It7+Pdvj\n7z7yLyPaMwt+Lz0oT+0KudSiTnmmmkuqcQN5MmeROmM4P3pePT0oT+0KudSiTnmmmku3cZf5PnkQ\nZPuMknPPPTfOPffceX++d+/euOGGG2LTpk09+bynn346Xv3qV8fNN98cr3zlK2PFihXxq7/6qx1f\n9453vGMgFknKarcji3Prem3ywJ7Y9vC34oQzXzbr/rJV6+K4k8+PHY98b8HvpQflqV0hl1rUKc9U\nc0k1biBP5ixSZwznR8+rpwflqV0hl1rUKc9Uc0k17m5ltVDywQ9+MFqtVlx88cVx0UUXxcknnxzr\n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\nVSPGzZPDee7/UM7rcWvDC/+hkxVbQxBd6DGHrYeeRx498B+187FKLaIpT1NzCSRuf88nR5rlryhx\nOBxatmyZYmNjtWPHDv3oRz/qtlASTrfcckvX38uXL4/4IkkgTPrhRyt64D9q52OVWkRTnqbmYmrc\nAKyJY5b52lvqteX1hyXZFJeUrviULCWkZCkuKUOy2WWz2RQTn6zRM67sdSHFZndo1tV36IM/3aHm\n+uPhTyBAzGHroeeRRw/8R+18rFKLaMrT1FxMjTsQll8oueuuu1RcXCy3261bbrlFnZ2dEYkjPj5e\nN910U9fr3/72txGJAwAAAACsw6vWxtNqbTyt2mN7e2yt2PY3zbji2xqWO6XHtpi4JBV/8m6tfvou\nuTtawxEsAAAAQsTSD3OfMmWK7r33XknSI488oo0bN0YslhtvvFFpaWmSpJqaGr344osRiwUAAAAA\n8PcHwD97j8pKev//ZynDR2vedfeocPYnlFVYrLik4WGOEAAAAMFg2StK7HZ71y23Dh48qHvuuSei\n8Xz0tlt/+MMf1NHREcFoAAAAAACSJK9He1Y9qaRhucoeM7fH5oz8acrIn9b1+ti+1dryxs/k9UTm\nbgUAAAA4d5ZdKLnzzjs1b948SdLXv/51tbS0RCyWcePG6aKLLup6/bvf/S5isQSDK16aep2t6/Wu\nF73qiFx5LYke+I/a+VilFtGUp6m5mBo3AGvimGVVXm1543904U0PKWlYbr8jR05coJaGk9qz6onw\nhHaOmMPWQ88jjx74j9r5WKUW0ZSnqbmYGnegLLlQMmnSJN13332Szi5KrFixIqLxfPRqknXr1mnX\nrl1hjyEpKUnJyck93ne5XHK73ef0WTaHNHyC7SOvvQHHh3NDD/xH7XysUotoytPUXEyNG4A1ccyy\nrs62JpW8/CMtuOkhuWIT+h1bMHOpDm56SW1NtWGKbvCYw9ZDzyOPHviP2vlYpRbRlKepuZgad6As\n94ySD2+5FRcXp6qqKt1+++0RjcfhcOjmm2/ueh2ph7jffvvtOnbsWI//pk+fruzs7IjEBAAAAABD\nSePpSm1942fyevr/x2QOZ4zGzbshTFEBAAAgUJa7ouT222/X/PnzJUm33Xab6uvrIxrP0qVLlZOT\nI0lqbGzUn//854jGEwzudunge95urxFe9MB/1M7HKrWIpjxNzcXUuAFYE8csnDi4URte+A+NnXu9\n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\nScaUKVPMcvn5+caIESNu6hz4/P8bAADAS61cufKGrw0cOND8i47NmzcrLS2txPdXrFhR6nFjx47V\n3/72N3PNjvPnz2vjxo1KSEhQVlaW6tWrp9tuu01dunTRXXfdJUnau3evuV1Vy5cv1/DhwyVJhYWF\nWr9+veLi4uTn56e+ffuWeO/pX//6V/35z38utZ7nnntO//M//yPp6rtdd+7cqSNHjigrK0v+/v4K\nCwtTr1691KFDB/OYS5cuafDgwdq4caNb+gIAAAAAsB/u0W80YsSIEgvSb926tcTrvcqzdu1aJSQk\nVKEXRTyeMSMIgiAIovrCFTExMWXWd9999xlJSUlO17Vs2TK39cXf39+YP39+uefLz883XnnllXLr\nefbZZys1Hjt27DA6d+7s8bkkCIIgCIIgCIIgrB2u8PZ79JiYGJfGxTAMY8yYMW7py9VUEwAAgJM2\nbdqkdu3aaejQoXrooYfUo0cPNW7cWHXr1tWlS5d04sQJJSQkaMuWLVq9erVSUlLcdu68vDw99dRT\nio2N1ZNPPql7771XzZo105UrV3T8+HFt2LBB8+fP1+7du8ut57333tO2bdt0//33q3v37rr99tvV\nvHlz1a1bV/n5+Tp//rwOHTqknTt36tNPP9XWrVvd1gcAAAAAANzFG+7RawJevQUAAAAAAAAAAGzL\n4ekGAAAAAAAAAAAAeAqJEgAAAAAAAAAAYFskSgAAAAAAAAAAgG2RKAEAAAAAAAAAALZFogQAAAAA\nAAAAANgWiRIAAAAAAAAAAGBbJEoAAAAAAAAAAIBtkSgBAAAAAAAAAAC2RaIEAAAAAAAAAADYFokS\nAAAAAAAAAABgWyRKAAAAAAAAAACAbZEoAQAAAAAAAAAAtkWiBAAAAAAAAAAA2BaJEgAAAAAAAAAA\nYFskSgAAAAB4vZiYGBmGIcMwFBsb6+nmAAAAAKhBSJQAAAAA1aD4L+YNw/B0cwBJN16X10d+fr4y\nMjKUmJiolStX6plnnlFwcLCnmw0AAABUKxIlAAAAAABJkp+fnxo0aKCIiAgNHTpUH374oY4fP67f\n//73Hm3XmDFjzGTOpk2bPNoWAAAAeB8/TzcAAAAAAOAZ69atK7Hv6+urhg0b6o477lBgYKAkqW7d\nunrvvffUuHFj/eUvf/FEMwEAAIBqRaIEAAAAgNebPn26pk+f7ulm1DgDBw4s9etBQUGaOHGiZsyY\n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\nJMn+/fs1ZcoU9e7dW82bN1ft2rXlcDjMa6ply5bV1RW3/OyU9nMDAAAA78MTJQAAAEANdv0TCC1b\nttSRI0eqXK/D4dDUqVPN/Tlz5ui3v/1tucfUq1evyue1o+JPhlTmCYXS1ju5mdasWaOZM2fqL3/5\niyRp9OjRWrBggTZv3lzmMX/605/M7X/+858aOnSo8vPzyyxfnddU8Z+dl19+WdOnT6+2cwEAAMDa\n+PMYAAAAoAZLTU0tsd+4cWO31NulSxdz/YVLly5p8uTJFR7j7sW27eLo0aPmdmRkpNPHVaZsdZkx\nY0aJxNwbb7xRZtlGjRqpS5cu5v5zzz1XbpJEqt5rqvjPjrt+bgAAAOCdSJQAAAAANVh6eroOHTpk\n7t9zzz1uqbf4AuMJCQk3LIpemt69e7vl3HYTFxdnbrdv315NmjSp8JhWrVpV62upnJWXl6f//u//\nNve7d++uhx9+uNSyt912m7mdlpamw4cPV1i/s9dU8deQObsOzfbt281td/3cAAAAwDuRKAEAAABq\nuHXr1pnbY8eOdUudtWrVqlT5Bg0a6NFHH3XLue1m48aNysnJkST5+vpqwoQJFR4zceLE6m6W0xYv\nXlwi6XHtVVzXq+w15evrq9GjRztV9tKlS+Z2UFCQU8cU/7np3LmzOnXqVKn2AQAAwD5IlAAAAAA1\n3DvvvGMuqt25c2c9++yzVa7z5MmT5naHDh0qXDvjrbfectvC8naTmZmpVatWmftTp07VXXfdVWb5\n7t2767nnnrsZTXNKQUGB/vrXv5r7Xbt21S9/+csbyhW/pho1aqT27duXW++0adNKPNlUntOnT5vb\nrVu3duqYnTt3asuWLeb+nDlzKp3MAQAAgD2QKAEAAABquEOHDumDDz4w92fPnq0XXnhBvr6+5R5X\np04dPfnkk9q4ceMN34uLizP/Sj8oKEjvvvtuqa80cjgcmjlzpp588skq9sLepk2bpqysLElX52XD\nhg167LHH5HAU3ZL5+vpq1KhRWrdunQICApSWluap5t4gNja2xForpT1VcuzYMSUnJ5v7H3zwgQIC\nAkqt73e/+51iYmKcPv+ePXvM9U5CQ0OdfhJlypQpysvLk3T19Vvr1q1T06ZNKzyuV69eWrlypQYM\nGOB0GwEAAGBdfp5uAAAAAGAH2dnZlSr/6quvasaMGeb+5MmTdffddys6Olp+fn567bXXNHHiRC1f\nvlxxcXE6e/as/Pz81KBBA0VGRqpHjx4aMGCAgoKCSvw1/jW5ubmaO3euJk2aJEkaPXq0IiMj9be/\n/U379+9XYGCgOnTooCeffNJ8+mHevHl6+umnqzAK9nX06FFNmDBBH3/8sXx9fdW4cWOtWLFCaWlp\n2r9/v3x8fBQZGamGDRtKkv7v//5P2dnZ5qvWrv2y31Py8/P1+uuvmwm7qKgo/eIXv9Dq1atLlHv7\n7bf13nvvSZL69++vXbt2ac6cOdq9e7ccDofat2+vJ554Qr169ZLk/DWVlZWl1atXm69/W7Rokf78\n5z8rKSmpxNi8+OKL2rdvn7kfFxenZ599VvPmzZMk3X///UpOTtaqVav01Vdf6dixY8rJyVFwcLBa\ntGihLl266IEHHjDXW/nf//1fV4cMAAAAFmMQBEEQBEEQBOHeiImJMaoiJibmhjoDAgKMJUuWVLqu\nU6dOldrGoKAgIy4uzqk6ZsyYYURHR5v7KSkpZfY9Nja23H6UF8WFh4e77Zji8xEbG1tmXSkpKWa5\n6Ohop85fmWOGDRtmZGRklDvWixYtMoKCgoxly5aZX/vtb39bLddlZY719/c3jh8/bh4bFxd3Qxkf\nHx/j888/L7d/1yxZssRo2bKl0+0JDw83jh49Wm6dZY3/sGHDjIsXLzrVruIeeOCBavuMIAiCIAiC\nIGpO8OotAAAAwCJyc3M1atQoDRgwQF999ZW5bklZ9u7dq5kzZyo6OrrU72dnZ6tfv36aN29emU8s\nHDhwQEOGDNG0adOq3H5IK1asUGRkpKZPn67vv/9emZmZunz5sg4dOqSlS5dqwIABGjNmjLKzs9W4\ncWPzuLNnz3qw1Vfl5eXpjTfeMPe7deumhx56qEQZwzA0ZMgQzZgxo8QC7MUdPXpUEydO1KhRo3Q1\nN+KcI0eOqFOnTvrjH/+ozZs3KzU1Vbm5uU4du2LFCrVr107vvfeezp07V27ZtLQ0LV26VA899JC+\n/PJLp9sHAAAA6/LR1YwJAAAAAIsJDg5Wnz59FBYWppCQEBUUFOj8+fNKSkrSnj17dObMGafratSo\nkfr166fw8HBJVxfP3rt3r3bt2lVdzUc5HA6HMjIyFBwcLElq3769EhMTPdyqyrnlllt03333qU2b\nNqpVq5ZOnz6txMREbdu2zaPtcjgcioqKUmRkpEJDQxUQEKCsrCydOHFCCQkJ2r9/v0fbBwAAgJuP\nRAkAAAAA1DDDhw/X8uXLJUlnzpzRrbfe6uEWAQAAAN6LV28BAAAAQA1y22236e233zb3Fy1a5MHW\nAAAAAN6PRAkAAAAA3ARPPPGEPv30Uw0ePFi1a9e+4ftBQUH6zW/8jsKyAAABdklEQVR+ox07dqhp\n06aSpMzMTL3zzjs3u6kAAACArfh5ugEAAAAAYAe+vr4aMmSIhgwZooKCAiUlJen06dMqKChQaGio\nIiMj5e/vb5bPz8/XuHHjdOLECQ+2GgAAAPB+JEoAAAAA4CYoLCw0t/38/NS+fXu1b9++1LLHjh3T\nuHHj9MUXX9ys5gEAAAC2xWLuAAAAAHCT9O7dWwMHDlTPnj3Vpk0bhYaGKigoSFlZWTp79qzi4+O1\nfv16LV26VHl5eZ5uLgAAAGALJEoAAAAAAAAAAIBtsZg7AAAAAAAAAACwLRIlAAAAAAAAAADAtkiU\nAAAAAAAAAAAA2yJRAgAAAAAAAAAAbItECQAAAAAAAAAAsC0SJQAAAAAAAAAAwLZIlAAAAAAAAAAA\nANsiUQIAAAAAAAAAAGyLRAkAAAAAAAAAALAtEiUAAAAAAAAAAMC2SJQAAAAAAAAAAADbIlECAAAA\nAAAAAABsi0QJAAAAAAAAAACwrf8H4DAZNzG3nvgAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "image/png": { "width": 805, "height": 545 } } } ] }, { "cell_type": "code", "metadata": { "id": "wRKl8uPjblRN", "colab_type": "code", "colab": {} }, "source": [ "lm_min_grad_lr = fw_lm_lrnr.recorder.min_grad_lr\n", "lm_min_loss_lr = fw_lm_lrnr.recorder.lrs[np.argmin(fw_lm_lrnr.recorder.losses)]\n", "((_, lm_min_grad_lr_str),\n", " (_, lm_min_loss_lr_dv10_str)\n", " ) = [line.split(': ') for line in lm_lr_find_log.stdout.split('\\n') if line]\n", "assert f'{lm_min_grad_lr:.2E}' == lm_min_grad_lr_str\n", "assert f'{lm_min_loss_lr/10:.2E}' == lm_min_loss_lr_dv10_str\n", "(fw_lm_lrnr.path/fw_lm_lrnr.model_dir/'tmp.pth').unlink()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "tFtJjiVFXH_j", "colab_type": "code", "outputId": "1b9f5da8-1841-4b1f-fd0e-4d85fcaf25d7", "colab": { "base_uri": "https://localhost:8080/", "height": 128 } }, "source": [ "scale = min_loss_it / lm_num_it\n", "my_guess1_lm_lr = lm_min_loss_lr / (ratio * scale)\n", "my_guess2_lm_lr = start_lr * scale * 25\n", "print(\n", " f'referred lm_lr = {REFERRED_LM_LR}\\n'\n", " f'min grad. lm_lr = {lm_min_grad_lr}\\n'\n", " f'min loss lm_lr = {lm_min_loss_lr}\\n'\n", " f'my guess1 lm_lr = {my_guess1_lm_lr}\\n'\n", " f'my guess2 lm_lr = {my_guess2_lm_lr}')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "referred lm_lr = 0.013333333333333334\n", "min grad. lm_lr = 0.0004580479208121953\n", "min loss lm_lr = 0.00892058443532486\n", "my guess1 lm_lr = 0.011150730544156074\n", "my guess2 lm_lr = 0.01125\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "wvzb13qas2rT", "colab_type": "code", "colab": {} }, "source": [ "%%capture lm_lr_find_scope_end_log\n", "lm_lr_find_scope.keep_var_names('my_guess1_lm_lr', 'my_guess2_lm_lr')\n", "del lm_lr_find_scope; gc.collect()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "BKqmxK2NHvbY", "colab_type": "text" }, "source": [ "### Init-fit" ] }, { "cell_type": "markdown", "metadata": { "id": "TJYtBrEKCbAp", "colab_type": "text" }, "source": [ "There will be many redundant variable assignments.\n", "\n", "That is how I indicate the messy global states of a Jupyter notebook.\n", "\n", "Watch [I don't like notebooks]( https://www.youtube.com/watch?v=7jiPeIFXb6U) for details." ] }, { "cell_type": "code", "metadata": { "id": "KSLO-5xrJz3N", "colab_type": "code", "colab": {} }, "source": [ "lm_lr = 0.01 # round(my_guess2_lm_lr, 2)\n", "init_fw_lm_name = f'init_fw_lm-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "print(f'designated lm_lr = {lm_lr}')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "CJHXFu6XqUlT", "colab_type": "code", "colab": {} }, "source": [ "%%capture init_fw_lm_scope_begin_log\n", "init_fw_lm_scope = IPyExperimentsPytorch(cl_enable=False)\n", "fw_lm_dbnch = get_lm_databunch(FW_LM_DBNCH_FNAME, lm_bs, bptt)\n", "fw_lm_lrnr = new_lm_learner_with_ulmfit('new-fw_lm', fw_lm_dbnch, lm_drop_mult)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "UtlmGzaUNDlo", "colab_type": "code", "outputId": "f5dd8ccc-f92a-4ffd-b3df-02bf4f9f41a6", "colab": { "base_uri": "https://localhost:8080/", "height": 172 } }, "source": [ "print(init_fw_lm_name)\n", "init_fw_lm_log_name = LOGS_DIR / f'{SESSN_START}-{init_fw_lm_name}' # w/o .csv\n", "init_fw_lm_clbks = [CSVLogger(fw_lm_lrnr, init_fw_lm_log_name, True)]\n", "fw_lm_lrnr = fit_a_named_cycle(init_fw_lm_name, fw_lm_lrnr, lm_lr, moms, lm_wd,\n", " init_fw_lm_clbks, cyc_len=1, freeze_to=-1,\n", " prev_event_name='new-fw_lm')\n", "# init_fw_lm_lrnr.csv_logger.read_logged_file()\n", "# (init_fw_lm_lrnr.path / init_fw_lm_lrnr.model_dir).ls()" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "init_fw_lm-b64-bptt70-lr0.01115\n", "Found init. loss_scale=65536\n", "No /content/gdrive/My Drive/imdb/data/cp-new-fw_lm.pkl to load!\n", "epoch train_loss valid_loss accuracy time \n", "0 4.433111 4.068985 0.289440 17:41 \n", "Found MixedPrecision loss_scale=1048576.0\n", "Checkpoint(name='init_fw_lm-b64-bptt70-lr0.01115', frozen_to=-1, mp_loss_scale=1048576.0) saved to /content/gdrive/My Drive/imdb/data/cp-init_fw_lm-b64-bptt70-lr0.01115.pkl\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "EVtTYwsyqLmE", "colab_type": "code", "colab": {} }, "source": [ "%%capture init_fw_lm_scope_end_log\n", "del init_fw_lm_scope\n", "gc.collect()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "NhGjAxk1IHCQ", "colab_type": "text" }, "source": [ "### Fine-tune" ] }, { "cell_type": "code", "metadata": { "id": "_ElUVVmHE1MH", "colab_type": "code", "colab": {} }, "source": [ "lm_lr = 0.01125\n", "init_fw_lm_name = f'init_fw_lm-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "fw_enc_name = f'fw_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "finer_lm_lr = round(lm_lr / 10, 6)\n", "tune_fw_lm_name = f'tune_fw_lm-b{lm_bs}-bptt{bptt}-lr{finer_lm_lr}'\n", "print(f'designated finer_lm_lr = {finer_lm_lr}')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "dReSm50WhXG2", "colab_type": "code", "colab": {} }, "source": [ "%%capture tune_fw_lm_scope_begin_log\n", "tune_fw_lm_scope = IPyExperimentsPytorch(cl_enable=False)\n", "fw_lm_dbnch = get_lm_databunch(FW_LM_DBNCH_FNAME, lm_bs, bptt)\n", "fw_lm_lrnr = new_lm_learner_with_ulmfit('new-fw_lm', fw_lm_dbnch, lm_drop_mult)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "948NGiUBj83d", "colab_type": "code", "outputId": "3749eb7f-6683-499a-9d4c-3e6a10e1676b", "colab": { "base_uri": "https://localhost:8080/", "height": 414 } }, "source": [ "print(tune_fw_lm_name)\n", "tune_fw_lm_log_name = LOGS_DIR / f'{SESSN_START}-{tune_fw_lm_name}'\n", "tune_fw_lm_clbks = [CSVLogger(fw_lm_lrnr, tune_fw_lm_log_name, True)]\n", "fw_lm_lrnr = fit_a_named_cycle(tune_fw_lm_name, fw_lm_lrnr, finer_lm_lr, moms,\n", " lm_wd, tune_fw_lm_clbks, cyc_len=10, freeze_to=0,\n", " prev_event_name=init_fw_lm_name)\n", "fw_lm_lrnr.save_encoder(fw_enc_name)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "tune_fw_lm-b64-bptt70-lr0.001125\n", "Found init. loss_scale=65536\n", "Checkpoint(name='init_fw_lm-b64-bptt70-lr0.01125', frozen_to=-1, mp_loss_scale=1048576.0) loaded from /content/gdrive/My Drive/imdb/data/cp-init_fw_lm-b64-bptt70-lr0.01125.pkl\n", "Frozen to -1\n", "Retained mb_loss_scale=1048576.0\n", "epoch train_loss valid_loss accuracy time \n", "0 4.081573 3.880682 0.309587 19:51 \n", "1 4.002107 3.815079 0.318992 19:51 \n", "2 3.955130 3.776459 0.323981 19:50 \n", "3 3.912738 3.736360 0.328587 19:51 \n", "4 3.862216 3.704691 0.332078 19:50 \n", "5 3.812183 3.673317 0.335519 19:51 \n", "6 3.772932 3.647537 0.338416 19:52 \n", "7 3.742402 3.628718 0.340383 19:52 \n", "8 3.704498 3.618565 0.341570 19:50 \n", "9 3.674266 3.616389 0.341848 19:50 \n", "Found MixedPrecision loss_scale=2097152.0\n", "Checkpoint(name='tune_fw_lm-b64-bptt70-lr0.001125', frozen_to=0, mp_loss_scale=2097152.0) saved to /content/gdrive/My Drive/imdb/data/cp-tune_fw_lm-b64-bptt70-lr0.001125.pkl\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "SvF0RhTu-uhH", "colab_type": "code", "colab": {} }, "source": [ "%%capture tune_fw_lm_scope_end_log\n", "del tune_fw_lm_scope\n", "gc.collect()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "V8L_H4uC91mn", "colab_type": "text" }, "source": [ "## Forward CF" ] }, { "cell_type": "markdown", "metadata": { "id": "WEvyF2yEOl1j", "colab_type": "text" }, "source": [ "### Process Data Once" ] }, { "cell_type": "code", "metadata": { "id": "g7L_vAAWiSVl", "colab_type": "code", "colab": {} }, "source": [ "if not (DATA_DIR / FW_CF_DBNCH_FNAME).exists():\n", " IMDB_VOC = Vocab.load(VOCAB_FILE)\n", " print(f'Loaded {VOCAB_FILE}')\n", " fw_cf_dbnch = set_cf_databunch(FW_CF_DBNCH_FNAME, cf_bs, IMDB_VOC)\n", " print(f'Built and saved {DATA_DIR / FW_CF_DBNCH_FNAME}')\n", "\n", "# fw_cf_dbnch = get_cf_databunch(FW_CF_DBNCH_FNAME, cf_bs)\n", "# print(f'Loaded {DATA_DIR / FW_CF_DBNCH_FNAME}')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "9gaU_j93OsEX", "colab_type": "text" }, "source": [ "### Find Learning Rate" ] }, { "cell_type": "code", "metadata": { "id": "LqPH_PI9Qxy0", "colab_type": "code", "colab": {} }, "source": [ "%%capture cf_lr_find_scope_begin_log\n", "cf_lr_find_scope = IPyExperimentsPytorch(cl_enable=False)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "e8k1uFIeY2ah", "colab_type": "code", "outputId": "94b05819-c9d3-4c21-ee28-b68f7adfdf1a", "colab": { "base_uri": "https://localhost:8080/", "height": 62 } }, "source": [ "fw_cf_dbnch = get_cf_databunch(FW_CF_DBNCH_FNAME, cf_bs)\n", "assert fw_cf_dbnch.train_dl.batch_size == cf_bs\n", "cf_epoch_sz = math.ceil(len(fw_cf_dbnch.train_ds) / cf_bs)\n", "ratio = 4 / 5\n", "epoch_scale = ratio * 0.3\n", "cf_num_it = math.ceil(cf_epoch_sz * epoch_scale)\n", "print(\n", " f'cf_epoch_sz = {cf_epoch_sz}\\n'\n", " f'cf_num_it = {cf_num_it}')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "cf_epoch_sz = 391\n", "cf_num_it = 94\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "apd3mZaJZC4p", "colab_type": "code", "colab": {} }, "source": [ "lm_lr = 0.01125\n", "fw_enc_name = f'fw_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "fw_cf_lrnr = new_cf_learner_with_encoder('new-fw_cf', fw_cf_dbnch, cf_drop_mult,\n", " fw_enc_name, bptt)\n", "fw_cf_lrnr.path = COLAB_DATA_DIR" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "F1dWIw3xa0ms", "colab_type": "code", "outputId": "fe074200-e1ab-440f-91ed-1d4bc242804f", "colab": { "base_uri": "https://localhost:8080/", "height": 150 } }, "source": [ "start_lr = 4e-3\n", "end_lr = round(start_lr * 20, 3)\n", "fw_cf_lrnr.lr_find(start_lr, end_lr, cf_num_it, wd=cf_wd)\n", "min_loss = np.min(fw_cf_lrnr.recorder.losses)\n", "min_loss_it = np.argmin(fw_cf_lrnr.recorder.losses) + 1\n", "end_loss = fw_cf_lrnr.recorder.losses[-1].item()\n", "print(f'lr range = [{start_lr}, {end_lr}]\\n'\n", " f'min_loss = {min_loss} @ {min_loss_it}\\n'\n", " f'end_loss = {end_loss} @ {cf_num_it}')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "epoch train_loss valid_loss accuracy time \n", "0 0.291489 #na# 00:13 \n", "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n", "lr range = [0.004, 0.08]\n", "min_loss = 0.27702632546424866 @ 68\n", "end_loss = 0.29148927330970764 @ 94\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "gtZnIS_TZOj3", "colab_type": "code", "colab": {} }, "source": [ "%%capture cf_lr_find_log\n", "fw_cf_lrnr.recorder.plot(skip_start=0, skip_end=0, suggestion=True)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Mf8szjJiL-XG", "colab_type": "code", "outputId": "9aa7a65d-954f-45ec-b5d8-171aac6d64d7", "colab": { "base_uri": "https://localhost:8080/", "height": 606 } }, "source": [ "cf_lr_find_log()" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Min numerical gradient: 4.26E-03\n", "Min loss divided by 10: 3.38E-03\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "image/png": "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\nfQEAAAAA0ClnXkAbg6MRv/TS2sL1t69txtzB4nsml5282BU/ve9b6xleFlbTA5anfkW51KPf8kw1\nn1TjBjB+kTrPcJ70vRr0oRz1K8qlHrnk2QmTF9BGbVPEztNrR103l7xnuZUX41ZedMVqesDy1K8o\nl3r0W56p5pNq3ADGL1LnGc6TvleDPpSjfkW51COXPDth2ygoafbgZBw68OiS+7aNAgAAAADojJUX\n0Mb8bMRdX2wWrlvZv/ueGNnymMK9bcfsiohaRJgtLWO1PaA19SvKpR79lmeq+aQaN4Dxi9R5hvOk\n79WgD+WoX1Eu9cglz05k/cvqySefHK9//evjBS94QezatStGRkbiwQcfjFtvvTU++clPxvXXX9+V\n77n77rvjpJNO6uhvTzrppLjnntbbEm2EiYmJiIio1+s9iyEF//I5r4tTfuUlS+7f9OE3xvS+h3sQ\nEQAAAADAxurm78nZrrx405veFO9617tibGyscP/UU0+NU089NV796lfHNddcExdffHHs37+/JzEe\nOHAgdu/e3ZPvZm2WP7T7RJMXAAAAAABrlOXkxRvf+MZ43/vet3D9zW9+M2644YaYnp6OM844I170\nohfF4OBgXHDBBTE+Ph7nn39+zM3Ndfx973jHO2L79u2reu/v/d7vxYknHjkr4W//9m/jwIEDHX8v\nG2f/7ntb3t+288R4+If/uMHRAAAAAACkLbvJi1NOOSX+/M//fOH6D/7gD+KKK64ovOfMM8+M66+/\nPo477rg477zz4tJLL413vvOdHX/nX/3VX63qfccee2z8yZ/8ycL1hz/84Y6/k421/6f3RrPZiFpt\noHB/3KHdAAAAAABrlt3kxeWXXx7Dw8MREfGpT31qycRFRMTtt98eF110UXzmM5+JiCMTHB/4wAdi\n37596xrbxRdfHIODgxER8b3vfS9uueWWdf0+VlYbiBg/fvF68sGIZmPp+xqHZ2N670Ox5TEnFO5v\nM3lR2mp7QGvqV5RLPfotz1TzSTVuAOMXqfMM50nfq0EfylG/olzqkUuenchq8mLLli3xspe9LCIi\nGo1GXH755cu+97Of/Wx89atfjWc961mxffv2eOlLXxof+9jH1jW+Sy65ZOG1VRfVMDgWcfbrF1dT\n3HxlI2anWr93cvc9SyYvtjzmhBjYtDka84fXM8y+tpYesJT6FeVSj37LM9V8Uo0bwPhF6jzDedL3\n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\nG2+8cWHi4oMf/GD84R/+YezZs6fl+0866aSYn58v9Z2k5+D+3dFszC85oHts+7E9iggAAAAAYONl\nN3lx+eWXx/DwkRNQPvWpTy2ZuIiIuP322+Oiiy6Kz3zmMxFxZILjAx/4QOzbt6/j733HO94RT33q\nUyMi4p3vfGdcdtllbd//ox/9qOPvons2j0Q89YW1hevv/n0zDh9av+9rNubj4P6fxtj24kqL0Ywn\nLza6B/1G/YpyqUe/5ZlqPqnGDWD8InWe4TzpezXoQznqV5RLPXLJsxMDvQ5gI23ZsiVe9rKXRURE\no9GIyy+/fNn3fvazn42vfvWrERGxffv2eOlLX9rx9+7cuTP+/b//9xERceedd8Z/+k//qePPYmMN\nbI449pdqC/8NbMB03/Tk0nMvct42qhc96CfqV5RLPfotz1TzSTVuAOMXqfMM50nfq0EfylG/olzq\nkUuenchq8uL5z39+jI6ORkTEHXfcEXfeeWfb91911VULry+44IKOv/eSSy6JkZGRiIj40Ic+ZDso\n2mp1aPfI1sfGwOahHkQDAAAAALDxsprHOeussxZef/nLX17x/bfccsvC62c84xkdf+/555+/8Prm\nm2+OiIhXvOIV8brXvS7OOOOMeOxjHxt79uyJO+64I6699tr4yEc+ErOzsx1/H93TmIu45382C9fr\n7eC+1od2j257XBx49MfrH0DF9KIH/UT9inKpR7/lmWo+qcYNYPwidZ7hPOl7NehDOepXlEs9csmz\nE7WIaK74rj5x9dVXL6ygePOb3xx/8Rd/0fb9O3bsiEcffXThenx8PPbv37+m7xwYGIjJycnYsmVL\nRBw5MPyDH/xgPO95z1v2b+6+++546UtfGnfccceavms9TExMREREvV7vcST5eMJTfyOecf7/seT+\nrVdfHj/50W09iAgAAAAAYGXd/D05q5UXxx133MLr+++/f8X37927N6ampmLr1q0REXHssceuefLi\nCU94wsLERUTERz/60Tj33HMjIuJzn/tcfOUrX4m5ubl42tOeFi9+8YtjZGQkTj755Lj55pvj7LPP\nju9///tr+r5Obd26NbZt27bk/uDgoG2uNlirbaMiIsYyPrQbAAAAAMhLVpMXR/84f+DAgVX9zfT0\n9MLkRasf91fymMc8pnB97rnnxr59++JlL3tZ3HTTTYV/O+WUU+K6666LpzzlKbF9+/b41Kc+Fc98\n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\nZFqeqfw+mWdeAAlEI1L1PqejMBs9sMeJ+lWUz4u7eTG47HzHNy9MmU+ZlqdX8/Fq3ADA+gWvYw6b\nib67A32wh/pZmVIPU/JMBreNAgCk1IEda3WksiLm9c7dB6lrv9EORAQAAAAAAACvMXrzYsiQIfrJ\nT36ilStX6sCBA6qpqdGmTZv05JNPatas9D1c9plnnlE0Gj3253e/+13aPhsAOkLFqjfjvj5i6hX6\n9I6FAAAAAAAAQOuM3bz45je/qbVr1+q2225TWVmZunbtqoKCAg0dOlRXXXWV3njjDb344ovq1KlT\nh8YxZ84cffGLX+zQzwCAdNux7l01NdTGvN59YKkGjT/PgYgAAAAAAADgJUY+8+LrX/+6fv7znx87\nXrVqld58803V1tZq/Pjxmj17trKzszVnzhx17txZs2bNUlNTU8rj6Nq1qx5//HFJUkNDg3Jzc1P+\nGbAnkCsNmdnyr8S3LIiqucHBgAxED+xxqn7hpnrtWPd3DZlwYczY6NOuV2VFuWqqdnd8IJ9hynzK\ntDy9mo9X4wYA1i94HXPYTPTdHeiDPdTPypR6mJJnMozbvDjppJP0yCOPHDueO3eu7rvvPss5ZWVl\nmjdvnnr37q2zzjpLN998s37605+mPJbHHntMvXr10r59+/Tss8/q29/+dso/A/b4s6VB01sWj4oP\noxKLR1rRA3ucrN/GD59X35NnKreg2PJ6Vnauxp/3HX3w7G2fPpUqjUyZT5mWp1fz8WrcAMD6Ba9j\nDpuJvrsDfbCH+lmZUg9T8kyGcbeNuvvuu49d4fDkk0/GbFxIUnl5ua677rpjx3PnzlVxcXHMeXZc\nfPHFuvLKKyVJ3/nOd3TgwIGUvj8AOK2x7rDWvPN43LGufUdqaPCSNEcEAAAAAAAArzDqyovCwkJ9\n4QtfkCRFIhHdfffdrZ779ttva/HixZo6daqKi4t1ySWX6A9/+ENK4ujSpYt++ctfSpJeffVVPfPM\nM7rzzjtT8t5IrUiztPcfUcsx0ose2ON0/fZs+lA71r2n/qPPiBk7edqV2rdluY5WVqQtHqfrkS6Z\nlqdX8/Fq3ADA+gWvYw6bib67A32wh/pZmVIPU/JMhlGbF+ecc47y8/MlSatXr9aGDRsSnv/8889r\n6tSpkj59sHaqNi8effRR9e7dW4cPH9Y3vvGNlLwnOkZzvbTmz9ETn4gOQw/scUP91r77v+o2YKzy\n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\nstls+uxnPyuLxaJPf/rTk+6nrKxMlZWVE+vNzc3as2ePmpqa5Ha7tWTJEu3YsUNlZWWyWq3667/+\na5WVlen++++PSDsBAAAAAJiLRa+gsLCwsLCwsLDMZfnYxz4WeOWVVwJf+tKXAg8++GBg+fLlAUmB\npqammLvz4qGHHpqI2eVyBW6++eYrtvngBz8Y8Hq9E9tdc801k+7rgQceCAwPDweefPLJwJYtWybd\nxmw2Bz796U8H3YXx0Y9+dNHzwMLCwsLCwsLCwsLCwsLyjmXRA2BhYWFhYWFhCcsSa8ULs9kcOHPm\nzETMH//4x6fc9h//8R8nttu1a9ek21RUVASKi4tndewnnnhiYn+1tbWLngsWFhYWFhYWFhYWFhYW\nlssX04UHAAAAMa+pqUmlpaWSpBtvvFG7du2a0/uTkpL0e7/3e9qxY4fWrFmj3NxcjY6OqrW1Vbt2\n7dI3v/lNvfnmm2GL913vepdefvllSdK5c+dUVlYmv98/6bYZGRlqbm5WcnKyJKm0tFRnz56d97FX\nrFihkydPTqwnJCRodHR03vsDAAAAACCczIsdAAAAQDS499571djYqK997WvasWOHli1bpsTERKWn\np2vlypV65JFHdODAAX3jG9+Q1RqeacPe+973Tjx+9tlnpyxcSJLT6ZwodFyMNxRNTU1B61lZWSHt\nDwAAAACAcGLCbgAAYHgPP/ywnnjiCZnN49/rePvtt7Vr1y61trbKbrdrw4YNuvPOO2W32/XII48o\nKytLDzzwQMjH3bhx48TjvXv3zrj9nj179J73vEeStGHDhpCOXVxcPPHY7/erp6cnpP0BAAAAABBO\nFC8AAIChbdmyRV/96ldlNpvV2dmpj370o3r++eev2K68vFzPPfec1q1bp/vvv1/PP/+8vvOd74R0\n7FWrVk08rq+vn3H706dPTzxevXp1SMe+//77Jx7v27dPXq83pP0BAAAAABBODBsFAAAM7fHHH5fd\nbpfX69WOHTsmLVxIUmNjo+6880653W5J0t/93d+FdFy73R40VFNzc/OM7zl//vzE44KCgnkfOy8v\nT3/91389sf7kk0/Oe18AAAAAACwEihcAAMCw1q1bp+uuu06S9OMf/1gHDx6cdvvW1lb94Ac/kCRV\nVVVp5cqV8z52ampq0Prg4OCM7xkaGpry/bNlNpv13e9+d6JwUltbq6eeempe+wIAAAAAYKFQvAAA\n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\nSfL19dX06dP12Wef6fz58yoqKlJmZqb++c9/aty4cXbNKTo62hz35mNWlp6ebrYLCwuTVL6I9YQJ\nExQXF6czZ86oqKhIWVlZ2rVrl6ZPny53d3e7z40kc+2Iw4cPKzc3V1euXNHJkye1YcMG85hSzeex\nof373/82t/39/dW0adNa+wQEBGjatGlav369vvzyS+Xl5amkpET5+flKSUnRxo0bNWHChFrPXUJC\nggzD0HvvvWf+bMiQIVbXSeVUPn/V+clPfqKFCxfq4MGDyszMVHFxsS5evKhDhw4pJiZGQUFBtb42\nAAAANByDEEIIIYQQ4thER0cblTlq3MGDBxsnTpwwapOenm6EhYXVOt6hQ4dqHavC4cOHjY4dO9Y6\nZmxsrNknOjra8Pf3N3bs2FHtmLGxsVZ9KwsMDDR69uxppKSk2JxXfHy84evra/ff4+ZjVk56errZ\nLiwszOjYsaNx8OBBm8c/cuSI4e/vb9ff78knnzRyc3Ntjrd69WrD29u7ynl01nX56quvWvW5++67\nbbbftm2bcf36dZuvscKpU6eMXr161ThWQkKCXeNUqOmab9GihbF+/fpa51VcXGwsWLCgQf4dQQgh\nhBBCbIcFuwEAAIAfiPHjx+u9996Tp6en+bPs7GydOnVKxcXF6tChg/nN8Y4dOyouLk5PPvmk/vWv\nf9U4Zs+ePc3t0tJSpaamKjs7W8XFxWrVqpVCQkLMBZv79OmjAwcOqFevXvruu+/smrOXl5d27Nih\nvn37mvNNSUmRYRjq0qWLzb4hISHavHmz/Pz8JEnJycnKzMzUHXfcodDQUDVp0kSS9LOf/UyxsbF2\n34VhrzvvvFPr1q1Thw4dJElpaWnKyMiQt7e3QkNDzfPSq1cvffTRRxo4cKDK6wHVGz16tDZt2iQP\nj//9b1h2drZOnjwpi8Wi++67T61atdLTTz8tb29vlZSUOPT11Ffr1q2t9i9fvmyzfWhoqCyW8pv8\nr1+/rvT0dGVlZenatWvy8/NTSEiImjdvLknq3Lmz9u/fr4ceekjHjh2rMlZiYqKKiop0zz33qEeP\nHpKkvLw8JSYmVnvsvLy8Kj8LCAhQfHy8unXrZv6spKREJ06cUF5enlq0aKHu3bvLy8tLnp6emjt3\nrjp06KCIiAibrxMAAAC3n9MrKIQQQgghhPzY4ug7L/r27WsUFxeb4+3fv98YNGhQlXbdu3e3+rZ6\nTk6OzW/K5+TkGG+99ZYxZMgQw9PTs8rvvby8jIiICOO7774zx9y+fbvNuVa+Y6CgoMAwDMNITU01\nHnvsMcPNzc1s5+bmVuVOjsouXrxoGIZhvP/++0ZgYKBVO39/f+PDDz+0al/d+aju72HvnRcVx4+P\njzfuv/9+q3bNmjUzVq5caXX8iRMn1jhuQECAeS4MwzCys7ONcePGGRaLxWzj4eFhREREGPn5+YZh\nGEZWVpbZ3pl3Xhw/ftxs/+2339ba/ujRo8aaNWuMxx57rNo7Ytzd3Y2RI0cap06dMsc9evSozTEj\nIyPNtgkJCXa/Xg8PDyMxMdHsm5uba8yYMcPw8fGxate8eXNj/vz5RllZmdl2xowZDjnnhBBCCCGk\n3nH6BAghhBBCCPnRxZHFC4vFYpw8edIc6/3337f60PvmeHh4GHFxcWb7lStX1ti2adOmds2hU6dO\n5ofqhmEY9913X41tKxcvDMMwzp49a7Rr186u49xs6dKlNl/n0aNHzbarV6+26+9hb/HCMAxj69at\nNs/1zp07zba7d++usd3atWvNdlevXjVCQ0NrbNu/f3+rQpVhOK94MX78eKv2ixcvrrWPvddU69at\njbS0NHPsRx99tMa29S1ezJs3z+yXmZlpdOrUyWb7iIgIs31ubm6VIgchhBBCCGm4sGA3AAAA4OJG\njRqlrl27SpIyMjL0zDPP6MaNGzW2Lysr07Rp08zHDk2aNMl8TM/Nrl69atcc0tLS9Oc//9ncHzly\npL3T1+zZs+1+zFRlp0+f1osvvljj78vKyrRs2TJz/+GHH67zMWwpKCjQ1KlTbZ7rxYsXm9v9+/c3\nH5dUWYsWLTRmzBhz/4033tDXX39d45gHDhzQW2+9Vc9ZO4avr69mzZqlNWvWmD/Lzs7WokWLau1r\n7zWVm5urmJgYc78u15Q9vL299Zvf/MbcnzZtmtLS0mz2WbduneLi4iRJrVq10oQJExw6JwAAANiP\n4gUAAADg4iZNmmRur1y5UkVFRbX2OXv2rPbt2yep/IPohx566Jbn8cUXX5jb/fr1s6tPdna2Pvjg\ng3odb/Xq1SorK7PZZv/+/eZ2UFCQuQ6GI2zevFkFBQU223z++ee6fv26pPLzfO+991ZpM2zYMHN9\njOvXr+udd96p9dgrVqyox4zrbufOnVaJj4/X4cOHlZubqyVLlsjb21uSlJWVpREjRujixYsOPX59\nril7DR8+XP7+/pKklJQU7dixw65+GzZsMLeHDRvm0DkBAADAfizYDQAAALi4QYMGmdt79uyxu9+x\nY8cUHh4uqXyx7U8++aTGthaLRYMHD1bfvn0VHBwsPz8/NW3aVG5ubmabVq1amdsBAQF2zeHAgQPm\nh/t19fnnn9fa5ty5c+a2xWKRn5+fcnJy6nW8+hy/qKhIeXl55ofkLVu2rNKm8ofyKSkpyszMrHXc\ntLQ0nTlzRoGBgXWYcd09+uijNn9/7do1LV26VEuXLlV+fn6dx3/wwQfVv39/devWTS1atFCzZs2s\n7k6pKOpI9l9T9ho8eLC5Xdf3TYU+ffo4dE4AAACwH8ULAAAAwIUFBARYFQ1ef/11u+68kKTOnTub\n2xUfrt/Mzc1Nzz77rObNm6d27drZPS8/Pz+72qWmpto95s0uXLhQa5tr165Z7fv6+tb7ePU5vlT+\nmKSK81vd8Tt06GBuf/PNN3YfPykp6bYXL2rj6+urQYMG1fkxVmPHjtXChQsVFBRkdx97ryl79ejR\nw9weNmyYdu7caVe/ygWVmt43AAAAuP0oXgAAAAAurHXr1lb7Q4YMqdc41X0wbLFYtGnTJo0dO7bO\n43l5ednV7vvvv6/z2BUq1uyoi8p3itwqRx2/RYsW5valS5fsHqu2R1Y5ws3zbdOmjYKCgjR16lRF\nRkaqSZMmGjJkiBISEtS/f39duXKl1jGXLFmiWbNm1Xku9l5T9qr83unSpYu6dOlS5zEcXVABAACA\n/VjzAgAAAHBhTZs2dcg41S0kPWvWLKvCxaFDh/T888+rX79+uuuuu+Tj4yM3Nzcz9Smc2FrsGrY5\n49zl5OTo4MGDmjZtmp544glzzZH7779fy5cvr7X/6NGjrQoXycnJioqK0sCBA3XPPffI19dXFovF\nvKY6dux4u16KQ9471b1vAAAA0DC48wIAAABwYTd/U79jx446c+bMLY9rsVj04osvmvsrVqzQc889\nZ7NP8+bNb/m4jVHlOyjq8k3+6tbPaEg7duzQwoUL9corr0iSIiIitGbNGu3du7fGPr/73e/M7Y8/\n/lijR49WaWlpje1v5zVV+b3zhz/8QfPnz79txwIAAIDj8TUSAAAAwIVlZWVZ7bdt29Yh4/bu3dt8\nnv/Vq1c1Z86cWvs4ekHlxiIjI8PcDgkJsbtfXdreLjExMVbFskWLFtXY1t/fX7179zb3X3jhBZuF\n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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "image/png": { "width": 791, "height": 545 } } } ] }, { "cell_type": "code", "metadata": { "id": "aUpWGtGWZClJ", "colab_type": "code", "colab": {} }, "source": [ "cf_min_grad_lr = fw_cf_lrnr.recorder.min_grad_lr\n", "cf_min_loss_lr = fw_cf_lrnr.recorder.lrs[np.argmin(fw_cf_lrnr.recorder.losses)]\n", "((_, cf_min_grad_lr_str),\n", " (_, cf_min_loss_lr_dv10_str)\n", " ) = [line.split(': ') for line in cf_lr_find_log.stdout.split('\\n') if line]\n", "assert f'{cf_min_grad_lr:.2E}' == cf_min_grad_lr_str\n", "assert f'{cf_min_loss_lr/10:.2E}' == cf_min_loss_lr_dv10_str\n", "(fw_cf_lrnr.path/fw_cf_lrnr.model_dir/'tmp.pth').unlink()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "SLCKbjzFa4cK", "colab_type": "code", "outputId": "14487280-5ef7-46de-da70-4633b72b0dc5", "colab": { "base_uri": "https://localhost:8080/", "height": 128 } }, "source": [ "scale = min_loss_it / cf_num_it\n", "my_guess1_cf_lr = cf_min_loss_lr / (ratio * scale)\n", "my_guess2_cf_lr = start_lr * scale * 25\n", "print(\n", " f'referred cf_lr = {REFERRED_CF_LR}\\n'\n", " f'min grad. cf_lr = {cf_min_grad_lr}\\n'\n", " f'min loss cf_lr = {cf_min_loss_lr}\\n'\n", " f'my guess1 cf_lr = {my_guess1_cf_lr}\\n'\n", " f'my guess2 cf_lr = {my_guess2_cf_lr}')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "referred cf_lr = 0.02666666666666667\n", "min grad. cf_lr = 0.0042632566739214724\n", "min loss cf_lr = 0.03383684654982418\n", "my guess1 cf_lr = 0.05846808043535796\n", "my guess2 cf_lr = 0.0723404255319149\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "XXb7nkIplu-J", "colab_type": "code", "colab": {} }, "source": [ "%%capture cf_lr_find_scope_end_log\n", "cf_lr_find_scope.keep_var_names('my_guess1_cf_lr', 'my_guess2_cf_lr')\n", "del cf_lr_find_scope; gc.collect()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "7tPvS0FSO1lj", "colab_type": "text" }, "source": [ "### Init-fit" ] }, { "cell_type": "code", "metadata": { "id": "Pe813E3IluXW", "colab_type": "code", "outputId": "ab702c03-b77c-44c5-b6e6-1ddf0d61d62a", "colab": { "base_uri": "https://localhost:8080/", "height": 40 } }, "source": [ "lm_lr = 0.01125\n", "fw_enc_name = f'fw_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "cf_lr = 0.07234\n", "init_fw_cf_name = f'init_fw_cf-b{cf_bs}-bptt{bptt}-lr{cf_lr}_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "print(f'designated cf_lr={cf_lr}')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "designated cf_lr=0.07234\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "qC3kqw_I5auE", "colab_type": "code", "colab": {} }, "source": [ "%%capture init_fw_cf_scope_begin_log\n", "init_fw_cf_scope = IPyExperimentsPytorch(cl_enable=False)\n", "fw_cf_dbnch = get_cf_databunch(FW_CF_DBNCH_FNAME, cf_bs)\n", "fw_cf_lrnr = new_cf_learner_with_encoder('new-fw_cf', fw_cf_dbnch, cf_drop_mult,\n", " fw_enc_name, bptt)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "cDTlJW0gqgWT", "colab_type": "code", "outputId": "9ffcdc5b-ec68-4c0c-eb22-b622cdde2731", "colab": { "base_uri": "https://localhost:8080/", "height": 172 } }, "source": [ "print(init_fw_cf_name)\n", "init_fw_cf_log_name = LOGS_DIR / f'{SESSN_START}-{init_fw_cf_name}'\n", "init_fw_cf_clbks = [CSVLogger(fw_cf_lrnr, init_fw_cf_log_name, True)]\n", "fw_cf_lrnr = fit_a_named_cycle(init_fw_cf_name, fw_cf_lrnr, cf_lr, moms, cf_wd,\n", " init_fw_cf_clbks, cyc_len=1, freeze_to=-1,\n", " prev_event_name='new-fw_cf')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "init_fw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125\n", "Found init. loss_scale=65536\n", "No /content/gdrive/My Drive/imdb/data/cp-new-fw_cf.pkl to load!\n", "epoch train_loss valid_loss accuracy time \n", "0 0.237411 0.180904 0.931880 01:38 \n", "Found MixedPrecision loss_scale=65536\n", "Checkpoint(name='init_fw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125', frozen_to=-1, mp_loss_scale=65536) saved to /content/gdrive/My Drive/imdb/data/cp-init_fw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125.pkl\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "fjWyQpAnPE5W", "colab_type": "code", "colab": {} }, "source": [ "%%capture init_fw_cf_scope_end_log\n", "del init_fw_cf_scope; gc.collect()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "9CJYZDCaQ6hf", "colab_type": "text" }, "source": [ "### Fine-tune" ] }, { "cell_type": "markdown", "metadata": { "id": "gKFddmm_9fMC", "colab_type": "text" }, "source": [ "#### Act-1" ] }, { "cell_type": "code", "metadata": { "id": "kAXnpfmwvFDi", "colab_type": "code", "outputId": "038a7fe1-5b5e-41e7-84cb-a51f462c0223", "colab": { "base_uri": "https://localhost:8080/", "height": 40 } }, "source": [ "lm_lr = 0.01125\n", "fw_enc_name = f'fw_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "cf_lr = 0.07234\n", "init_fw_cf_name = f'init_fw_cf-b{cf_bs}-bptt{bptt}-lr{cf_lr}_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "finer_cf_1_lr = cf_lr / 2\n", "finer_cf_1_lrs = slice(finer_cf_1_lr / (2.6 ** 4), finer_cf_1_lr)\n", "tune_fw_cf_1_name = f'tune_fw_cf-b{cf_bs}-bptt{bptt}-lr{finer_cf_1_lr}_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "print(f'designated finer_cf_lr={finer_cf_1_lr}')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "designated finer_cf_lr=0.03617\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "uBT8fTSkjcL4", "colab_type": "code", "colab": {} }, "source": [ "%%capture tune_fw_cf_1_scope_begin_log\n", "tune_fw_cf_1_scope = IPyExperimentsPytorch(cl_enable=False)\n", "fw_cf_dbnch = get_cf_databunch(FW_CF_DBNCH_FNAME, cf_bs)\n", "fw_cf_lrnr = new_cf_learner_with_encoder('new-fw_cf', fw_cf_dbnch, cf_drop_mult,\n", " fw_enc_name, bptt)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "N-PZHLOEqlRN", "colab_type": "code", "outputId": "2ead1622-2a92-47ee-8ca8-2159ea9c4de8", "colab": { "base_uri": "https://localhost:8080/", "height": 216 } }, "source": [ "print(tune_fw_cf_1_name)\n", "tune_fw_cf_1_log_name = LOGS_DIR / f'{SESSN_START}-{tune_fw_cf_1_name}'\n", "tune_fw_cf_1_clbks = [CSVLogger(fw_cf_lrnr, tune_fw_cf_1_log_name, True)]\n", "fw_cf_lrnr = fit_a_named_cycle(tune_fw_cf_1_name, fw_cf_lrnr, finer_cf_1_lrs,\n", " moms, cf_wd, tune_fw_cf_1_clbks, cyc_len=1,\n", " freeze_to=-2, prev_event_name=init_fw_cf_name)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "tune_fw_cf-b64-bptt70-lr0.03617_enc-b64-bptt70-lr0.01125\n", "Found init. loss_scale=65536\n", "Checkpoint(name='init_fw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125', frozen_to=-1, mp_loss_scale=65536) loaded from /content/gdrive/My Drive/imdb/data/cp-init_fw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125.pkl\n", "Frozen to -1\n", "Retained mb_loss_scale=65536\n", "epoch train_loss valid_loss accuracy time \n", "0 0.195903 0.157349 0.942600 01:55 \n", "Found MixedPrecision loss_scale=65536\n", "Checkpoint(name='tune_fw_cf-b64-bptt70-lr0.03617_enc-b64-bptt70-lr0.01125', frozen_to=-2, mp_loss_scale=65536) saved to /content/gdrive/My Drive/imdb/data/cp-tune_fw_cf-b64-bptt70-lr0.03617_enc-b64-bptt70-lr0.01125.pkl\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "hFapoFlVKCDE", "colab_type": "code", "colab": {} }, "source": [ "%%capture tune_fw_cf_1_scope_end_log\n", "del tune_fw_cf_1_scope; gc.collect()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "Sg2n_jDD9h-I", "colab_type": "text" }, "source": [ "#### Act-2" ] }, { "cell_type": "code", "metadata": { "id": "SAocmJ62KBwX", "colab_type": "code", "outputId": "7f65dcae-2806-412a-fd1d-235819953dea", "colab": { "base_uri": "https://localhost:8080/", "height": 40 } }, "source": [ "lm_lr = 0.01125\n", "fw_enc_name = f'fw_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "cf_lr = 0.07234\n", "finer_cf_1_lr = cf_lr / 2\n", "tune_fw_cf_1_name = f'tune_fw_cf-b{cf_bs}-bptt{bptt}-lr{finer_cf_1_lr}_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "finer_cf_2_lr = cf_lr / (2 * 2)\n", "finer_cf_2_lrs = slice(finer_cf_2_lr / (2.6 ** 4), finer_cf_2_lr)\n", "tune_fw_cf_2_name = f'tune_fw_cf-b{cf_bs}-bptt{bptt}-lr{finer_cf_2_lr}_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "print(f'designated finer_cf_lr={finer_cf_2_lr}')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "designated finer_cf_lr=0.018085\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "dU2dZ8dcR7jV", "colab_type": "code", "colab": {} }, "source": [ "%%capture tune_fw_cf_2_scope_begin_log\n", "tune_fw_cf_2_scope = IPyExperimentsPytorch(cl_enable=False)\n", "fw_cf_dbnch = get_cf_databunch(FW_CF_DBNCH_FNAME, cf_bs)\n", "fw_cf_lrnr = new_cf_learner_with_encoder('new-fw_cf', fw_cf_dbnch, cf_drop_mult,\n", " fw_enc_name, bptt)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "mvCliEWmqWL8", "colab_type": "code", "outputId": "a6d5a020-c5fa-4062-c1cf-15e8f804d526", "colab": { "base_uri": "https://localhost:8080/", "height": 216 } }, "source": [ "print(tune_fw_cf_2_name)\n", "tune_fw_cf_2_log_name = LOGS_DIR / f'{SESSN_START}-{tune_fw_cf_2_name}'\n", "tune_fw_cf_2_clbks = [CSVLogger(fw_cf_lrnr, tune_fw_cf_2_log_name, True)]\n", "fw_cf_lrnr = fit_a_named_cycle(tune_fw_cf_2_name, fw_cf_lrnr, finer_cf_2_lrs,\n", " moms, cf_wd, tune_fw_cf_2_clbks, cyc_len=1,\n", " freeze_to=-3, prev_event_name=tune_fw_cf_1_name)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "tune_fw_cf-b64-bptt70-lr0.018085_enc-b64-bptt70-lr0.01125\n", "Found init. loss_scale=65536\n", "Checkpoint(name='tune_fw_cf-b64-bptt70-lr0.03617_enc-b64-bptt70-lr0.01125', frozen_to=-2, mp_loss_scale=65536) loaded from /content/gdrive/My Drive/imdb/data/cp-tune_fw_cf-b64-bptt70-lr0.03617_enc-b64-bptt70-lr0.01125.pkl\n", "Frozen to -2\n", "Retained mb_loss_scale=65536\n", "epoch train_loss valid_loss accuracy time \n", "0 0.180266 0.140276 0.948160 02:25 \n", "Found MixedPrecision loss_scale=65536\n", "Checkpoint(name='tune_fw_cf-b64-bptt70-lr0.018085_enc-b64-bptt70-lr0.01125', frozen_to=-3, mp_loss_scale=65536) saved to /content/gdrive/My Drive/imdb/data/cp-tune_fw_cf-b64-bptt70-lr0.018085_enc-b64-bptt70-lr0.01125.pkl\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "FBm_C0E1SkrQ", "colab_type": "code", "colab": {} }, "source": [ "%%capture tune_fw_cf_2_scope_end_log\n", "del tune_fw_cf_2_scope; gc.collect()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "k_7WWgsT9me3", "colab_type": "text" }, "source": [ "#### Act-3" ] }, { "cell_type": "code", "metadata": { "id": "plTUEU6Ce3-T", "colab_type": "code", "outputId": "b378e7f5-29f7-44b7-a378-f8f56cf947ea", "colab": { "base_uri": "https://localhost:8080/", "height": 40 } }, "source": [ "lm_lr = 0.01125\n", "fw_enc_name = f'fw_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "cf_lr = 0.07234\n", "finer_cf_2_lr = cf_lr / (2 * 2)\n", "tune_fw_cf_2_name = f'tune_fw_cf-b{cf_bs}-bptt{bptt}-lr{finer_cf_2_lr}_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "finer_cf_3_lr = round(cf_lr / (2 * 2 * 5), 6)\n", "finer_cf_3_lrs = slice(finer_cf_3_lr / (2.6 ** 4), finer_cf_3_lr)\n", "tune_fw_cf_3_name = f'tune_fw_cf-b{cf_bs}-bptt{bptt}-lr{finer_cf_3_lr}_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "print(f'designated finer_cf_lr={finer_cf_3_lr}')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "designated finer_cf_lr=0.003617\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "TDc-iSnZe3x2", "colab_type": "code", "colab": {} }, "source": [ "%%capture tune_fw_cf_3_scope_begin_log\n", "tune_fw_cf_3_scope = IPyExperimentsPytorch(cl_enable=False)\n", "fw_cf_dbnch = get_cf_databunch(FW_CF_DBNCH_FNAME, cf_bs)\n", "fw_cf_lrnr = new_cf_learner_with_encoder('new-fw_cf', fw_cf_dbnch, cf_drop_mult,\n", " fw_enc_name, bptt)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "OWPB0FNeqqVi", "colab_type": "code", "outputId": "4448f511-9f62-4178-d5f5-0614bace8b8e", "colab": { "base_uri": "https://localhost:8080/", "height": 238 } }, "source": [ "print(tune_fw_cf_3_name)\n", "tune_fw_cf_3_log_name = LOGS_DIR / f'{SESSN_START}-{tune_fw_cf_3_name}'\n", "tune_fw_cf_3_clbks = [CSVLogger(fw_cf_lrnr, tune_fw_cf_3_log_name, True)]\n", "fw_cf_lrnr = fit_a_named_cycle(tune_fw_cf_3_name, fw_cf_lrnr, finer_cf_3_lrs,\n", " moms, cf_wd, tune_fw_cf_3_clbks, cyc_len=2,\n", " freeze_to=0, prev_event_name=tune_fw_cf_2_name)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "tune_fw_cf-b64-bptt70-lr0.003617_enc-b64-bptt70-lr0.01125\n", "Found init. loss_scale=65536\n", "Checkpoint(name='tune_fw_cf-b64-bptt70-lr0.018085_enc-b64-bptt70-lr0.01125', frozen_to=-3, mp_loss_scale=65536) loaded from /content/gdrive/My Drive/imdb/data/cp-tune_fw_cf-b64-bptt70-lr0.018085_enc-b64-bptt70-lr0.01125.pkl\n", "Frozen to -3\n", "Retained mb_loss_scale=65536\n", "epoch train_loss valid_loss accuracy time \n", "0 0.122708 0.151304 0.948120 02:49 \n", "1 0.073715 0.153107 0.948840 03:03 \n", "Found MixedPrecision loss_scale=32768.0\n", "Checkpoint(name='tune_fw_cf-b64-bptt70-lr0.003617_enc-b64-bptt70-lr0.01125', frozen_to=0, mp_loss_scale=32768.0) saved to /content/gdrive/My Drive/imdb/data/cp-tune_fw_cf-b64-bptt70-lr0.003617_enc-b64-bptt70-lr0.01125.pkl\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "AuJCtsfre3P1", "colab_type": "code", "colab": {} }, "source": [ "%%capture tune_fw_cf_3_scope_end_log\n", "del tune_fw_cf_3_scope\n", "gc.collect()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "wHXVFNpK-ioI", "colab_type": "text" }, "source": [ "## Backward LM" ] }, { "cell_type": "code", "metadata": { "id": "QhP0h1Xd-mbr", "colab_type": "code", "colab": {} }, "source": [ "if not (DATA_DIR / FW_LM_DBNCH_FNAME).exists():\n", " fw_lm_dbnch = set_lm_databunch(FW_LM_DBNCH_FNAME, lm_bs, bptt)\n", " print(f'Built and saved {DATA_DIR / FW_LM_DBNCH_FNAME}')\n", " fw_lm_dbnch.vocab.save(VOCAB_FILE)\n", " print(f'Saved {VOCAB_FILE}') " ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "bp3phunULiki", "colab": {} }, "source": [ "lm_lr = 0.01\n", "init_bw_lm_name = f'init_bw_lm-b{lm_bs}-bptt{bptt}-lr{lm_lr}'" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "4KDYPjq0Likm", "colab": {} }, "source": [ "%%capture init_lm_scope_begin_log\n", "init_lm_scope = IPyExperimentsPytorch(cl_enable=False)\n", "bw_lm_dbnch = get_lm_databunch(FW_LM_DBNCH_FNAME, lm_bs, bptt, backwards=True)\n", "bw_lm_lrnr = new_lm_learner_with_ulmfit('new-bw_lm', bw_lm_dbnch, lm_drop_mult)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "YEVHEZgDu1uU", "colab_type": "code", "outputId": "84ba6025-92b9-40be-9deb-3eb4d380e83c", "colab": { "base_uri": "https://localhost:8080/", "height": 172 } }, "source": [ "print(init_bw_lm_name)\n", "init_bw_lm_log_name = LOGS_DIR / f'{SESSN_START}-{init_bw_lm_name}'\n", "init_bw_lm_clbks = [CSVLogger(bw_lm_lrnr, init_bw_lm_log_name, append=True)]\n", "bw_lm_lrnr = fit_a_named_cycle(init_bw_lm_name, bw_lm_lrnr, lm_lr, moms, lm_wd,\n", " init_bw_lm_clbks, cyc_len=1, freeze_to=-1,\n", " prev_event_name='new-bw_lm')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "init_bw_lm-b64-bptt70-lr0.01\n", "Found init. loss_scale=65536\n", "No /content/gdrive/My Drive/imdb/data/cp-new-bw_lm.pkl to load!\n", "epoch train_loss valid_loss accuracy time \n", "0 4.430530 4.088774 0.323355 17:11 \n", "Found MixedPrecision loss_scale=2097152.0\n", "Checkpoint(name='init_bw_lm-b64-bptt70-lr0.01', frozen_to=-1, mp_loss_scale=2097152.0) saved to /content/gdrive/My Drive/imdb/data/cp-init_bw_lm-b64-bptt70-lr0.01.pkl\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "AseLa6Z6eWZv", "colab_type": "code", "colab": {} }, "source": [ "%%capture init_lm_scope_end_log\n", "del init_lm_scope\n", "gc.collect()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "O2dtSQlUmjPZ", "outputId": "f8ee3077-b0f3-4d9e-d74e-0175f47f4d1f", "colab": { "base_uri": "https://localhost:8080/", "height": 40 } }, "source": [ "lm_lr = 0.01\n", "init_bw_lm_name = f'init_bw_lm-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "bw_enc_name = f'bw_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "tune_lm_lr = round(lm_lr/10, 6)\n", "tune_bw_lm_name = f'tune_bw_lm-b{lm_bs}-bptt{bptt}-lr{tune_lm_lr}'\n", "tune_lm_lr" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.001" ] }, "metadata": { "tags": [] }, "execution_count": 327 } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "FGGDP7zJmjPn", "colab": {} }, "source": [ "%%capture tune_lm_scope_begin_log\n", "tune_lm_scope = IPyExperimentsPytorch(cl_enable=False)\n", "bw_lm_dbnch = get_lm_databunch(FW_LM_DBNCH_FNAME, lm_bs, bptt, backwards=True)\n", "bw_lm_lrnr = new_lm_learner_with_ulmfit('new-bw_lm', bw_lm_dbnch, lm_drop_mult)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "zgiCvxjOu-pb", "colab_type": "code", "outputId": "a859f635-a1d6-4641-ba82-3817f83a9a06", "colab": { "base_uri": "https://localhost:8080/", "height": 414 } }, "source": [ "print(tune_bw_lm_name)\n", "tune_bw_lm_log_name = LOGS_DIR / f'{SESSN_START}-{tune_bw_lm_name}'\n", "tune_bw_lm_clbks = [CSVLogger(bw_lm_lrnr, tune_bw_lm_log_name, append=True)]\n", "bw_lm_lrnr = fit_a_named_cycle(tune_bw_lm_name, bw_lm_lrnr, tune_lm_lr, moms,\n", " lm_wd, tune_bw_lm_clbks, cyc_len=10, freeze_to=0,\n", " prev_event_name=init_bw_lm_name)\n", "bw_lm_lrnr.save_encoder(bw_enc_name)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "tune_bw_lm-b64-bptt70-lr0.001\n", "Found init. loss_scale=65536\n", "Checkpoint(name='init_bw_lm-b64-bptt70-lr0.01', frozen_to=-1, mp_loss_scale=2097152.0) loaded from /content/gdrive/My Drive/imdb/data/cp-init_bw_lm-b64-bptt70-lr0.01.pkl\n", "Frozen to -1\n", "Retained mb_loss_scale=2097152.0\n", "epoch train_loss valid_loss accuracy time \n", "0 4.139020 3.909299 0.342562 19:14 \n", "1 4.023977 3.837232 0.351800 19:14 \n", "2 3.993114 3.801412 0.356898 19:14 \n", "3 3.927130 3.760121 0.361401 19:14 \n", "4 3.902025 3.729016 0.364868 19:14 \n", "5 3.840148 3.703532 0.367997 19:14 \n", "6 3.799663 3.679397 0.370541 19:14 \n", "7 3.751141 3.662572 0.372433 19:14 \n", "8 3.744811 3.653554 0.373469 19:14 \n", "9 3.711873 3.651567 0.373691 19:14 \n", "Found MixedPrecision loss_scale=4194304.0\n", "Checkpoint(name='tune_bw_lm-b64-bptt70-lr0.001', frozen_to=0, mp_loss_scale=4194304.0) saved to /content/gdrive/My Drive/imdb/data/cp-tune_bw_lm-b64-bptt70-lr0.001.pkl\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "pKqFeTGKn2Yx", "colab_type": "code", "colab": {} }, "source": [ "%%capture tune_lm_scope_end_log\n", "del tune_lm_scope\n", "gc.collect()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "4-hoCyr3-qBS", "colab_type": "text" }, "source": [ "## Backward CF" ] }, { "cell_type": "code", "metadata": { "id": "zrP_-kGk-sUx", "colab_type": "code", "outputId": "cbafd8ed-8989-4c53-b992-ec66a23a1900", "colab": { "base_uri": "https://localhost:8080/", "height": 40 } }, "source": [ "lm_lr = 0.01125\n", "bw_enc_name = f'bw_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "cf_lr = 0.07234\n", "init_bw_cf_name = f'init_bw_cf-b{cf_bs}-bptt{bptt}-lr{cf_lr}_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "print(f'designated cf_lr={cf_lr}')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "designated cf_lr=0.07234\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "HqJvhwsVolzv", "colab": {} }, "source": [ "%%capture init_bw_cf_scope_begin_log\n", "init_bw_cf_scope = IPyExperimentsPytorch(cl_enable=False)\n", "bw_cf_dbnch = get_cf_databunch(FW_CF_DBNCH_FNAME, cf_bs, backwards=True)\n", "bw_cf_lrnr = new_cf_learner_with_encoder('new-bw_cf', bw_cf_dbnch, cf_drop_mult,\n", " bw_enc_name, bptt)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "g4PmIsv8nbK8", "colab_type": "code", "outputId": "34bd957d-bb86-4282-d497-d464ba8081a9", "colab": { "base_uri": "https://localhost:8080/", "height": 172 } }, "source": [ "print(init_bw_cf_name)\n", "init_bw_cf_log_name = LOGS_DIR / f'{SESSN_START}-{init_bw_cf_name}'\n", "init_bw_cf_clbks = [CSVLogger(bw_cf_lrnr, init_bw_cf_log_name, True)]\n", "bw_cf_lrnr = fit_a_named_cycle(init_bw_cf_name, bw_cf_lrnr, cf_lr,\n", " moms, cf_wd, init_bw_cf_clbks, cyc_len=1,\n", " freeze_to=-1, prev_event_name='new-bw_cf')" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "init_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125\n", "Found init. loss_scale=65536\n", "No /content/gdrive/My Drive/imdb/data/cp-new-bw_cf.pkl to load!\n", "epoch train_loss valid_loss accuracy time \n", "0 0.290525 0.214515 0.919880 01:38 \n", "Found MixedPrecision loss_scale=65536\n", "Checkpoint(name='init_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125', frozen_to=-1, mp_loss_scale=65536) saved to /content/gdrive/My Drive/imdb/data/cp-init_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125.pkl\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "j4c3YTumolz4", "colab": {} }, "source": [ "%%capture init_bw_cf_scope_end_log\n", "del init_bw_cf_scope\n", "gc.collect()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "ubQWJn9WpfkE", "colab": {} }, "source": [ "lm_lr = 0.01125\n", "bw_enc_name = f'bw_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "cf_lr = 0.07234\n", "init_bw_cf_name = f'init_bw_cf-b{cf_bs}-bptt{bptt}-lr{cf_lr}_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "tune_bw_cf_name = f'tune_bw_cf-b{cf_bs}-bptt{bptt}-lr{cf_lr}_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "colab_type": "code", "id": "HT74CzhRpfkJ", "colab": {} }, "source": [ "%%capture tune_bw_cf_scope_begin_log\n", "tune_bw_cf_scope = IPyExperimentsPytorch(cl_enable=False)\n", "bw_cf_dbnch = get_cf_databunch(FW_CF_DBNCH_FNAME, cf_bs, backwards=True)\n", "bw_cf_lrnr = new_cf_learner_with_encoder('new-bw_cf', bw_cf_dbnch, cf_drop_mult,\n", " bw_enc_name, bptt)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "quqBlxyenfJP", "colab_type": "code", "outputId": "343b9852-5494-4073-e873-1e8c5f8e649e", "colab": { "base_uri": "https://localhost:8080/", "height": 656 } }, "source": [ "print(tune_bw_cf_name)\n", "tune_bw_cf_log_name = LOGS_DIR / f'{SESSN_START}-{tune_bw_cf_name}'\n", "tune_bw_cf_clbks = [CSVLogger(bw_cf_lrnr, tune_bw_cf_log_name, True)]\n", "\n", "finer_cf_1_lr = cf_lr / 2\n", "print(finer_cf_1_lr)\n", "cf_lrs = slice(finer_cf_1_lr / (2.6 ** 4), finer_cf_1_lr)\n", "bw_cf_lrnr = fit_a_named_cycle(tune_bw_cf_name, bw_cf_lrnr, cf_lrs, moms, cf_wd,\n", " tune_bw_cf_clbks, cyc_len=1, freeze_to=-2,\n", " prev_event_name=init_bw_cf_name)\n", "\n", "finer_cf_2_lr = cf_lr / 2 / 2\n", "print(finer_cf_2_lr)\n", "cf_lrs = slice(finer_cf_2_lr / (2.6 ** 4), finer_cf_2_lr)\n", "bw_cf_lrnr = fit_a_named_cycle(tune_bw_cf_name, bw_cf_lrnr, cf_lrs, moms, cf_wd,\n", " tune_bw_cf_clbks, cyc_len=1, freeze_to=-3,\n", " prev_event_name=tune_bw_cf_name)\n", "\n", "finer_cf_3_lr = round(cf_lr / 2 / 2 / 5, 6)\n", "print(finer_cf_3_lr)\n", "cf_lrs = slice(finer_cf_3_lr / (2.6 ** 4), finer_cf_3_lr)\n", "bw_cf_lrnr = fit_a_named_cycle(tune_bw_cf_name, bw_cf_lrnr, cf_lrs, moms, cf_wd,\n", " tune_bw_cf_clbks, cyc_len=2, freeze_to=0,\n", " prev_event_name=tune_bw_cf_name)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "tune_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125\n", "0.03617\n", "Found init. loss_scale=65536\n", "Checkpoint(name='init_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125', frozen_to=-1, mp_loss_scale=65536) loaded from /content/gdrive/My Drive/imdb/data/cp-init_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125.pkl\n", "Frozen to -1\n", "Retained mb_loss_scale=65536\n", "epoch train_loss valid_loss accuracy time \n", "0 0.210443 0.161169 0.942480 01:56 \n", "Found MixedPrecision loss_scale=65536\n", "Checkpoint(name='tune_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125', frozen_to=-2, mp_loss_scale=65536) saved to /content/gdrive/My Drive/imdb/data/cp-tune_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125.pkl\n", "0.018085\n", "Found init. loss_scale=65536\n", "Checkpoint(name='tune_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125', frozen_to=-2, mp_loss_scale=65536) loaded from /content/gdrive/My Drive/imdb/data/cp-tune_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125.pkl\n", "Frozen to -2\n", "Retained mb_loss_scale=65536\n", "epoch train_loss valid_loss accuracy time \n", "0 0.192305 0.151440 0.945640 02:24 \n", "Found MixedPrecision loss_scale=32768.0\n", "Checkpoint(name='tune_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125', frozen_to=-3, mp_loss_scale=32768.0) saved to /content/gdrive/My Drive/imdb/data/cp-tune_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125.pkl\n", "0.003617\n", "Found init. loss_scale=32768.0\n", "Checkpoint(name='tune_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125', frozen_to=-3, mp_loss_scale=32768.0) loaded from /content/gdrive/My Drive/imdb/data/cp-tune_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125.pkl\n", "Frozen to -3\n", "Retained mb_loss_scale=32768.0\n", "epoch train_loss valid_loss accuracy time \n", "0 0.137555 0.149634 0.947200 02:48 \n", "1 0.087071 0.159235 0.947920 03:03 \n", "Found MixedPrecision loss_scale=16384.0\n", "Checkpoint(name='tune_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125', frozen_to=0, mp_loss_scale=16384.0) saved to /content/gdrive/My Drive/imdb/data/cp-tune_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125.pkl\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "M6EkkUVvPaeG", "colab_type": "code", "colab": {} }, "source": [ "%%capture tune_bw_cf_scope_end_log\n", "del tune_bw_cf_scope\n", "gc.collect()" ], "execution_count": 0, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "-5jXi1C4y5BT", "colab_type": "text" }, "source": [ "# Ensemble" ] }, { "cell_type": "code", "metadata": { "id": "wZHHvpyAniU7", "colab_type": "code", "outputId": "20d9ec15-0a8d-4b75-f851-66ce1bf1164e", "colab": { "base_uri": "https://localhost:8080/", "height": 106 } }, "source": [ "lm_lr = 0.01125\n", "fw_enc_name = f'fw_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "cf_lr = 0.07234\n", "finer_cf_3_lr = round(cf_lr / (2 * 2 * 5), 6)\n", "tune_fw_cf_3_name = f'tune_fw_cf-b{cf_bs}-bptt{bptt}-lr{finer_cf_3_lr}_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "fw_cf_dbnch = get_cf_databunch(FW_CF_DBNCH_FNAME, cf_bs)\n", "fw_cf_lrnr = new_cf_learner_with_encoder('new-fw_cf', fw_cf_dbnch, cf_drop_mult,\n", " fw_enc_name, bptt)\n", "\n", "set_prng_states(load_prng_states(tune_fw_cf_3_name))\n", "fw_cf_lrnr = retain_event(tune_fw_cf_3_name, fw_cf_lrnr)\n", "fw_preds, tgt_lbls = fw_cf_lrnr.get_preds(ordered=True)\n", "accuracy(fw_preds, tgt_lbls)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Checkpoint(name='tune_fw_cf-b64-bptt70-lr0.003617_enc-b64-bptt70-lr0.01125', frozen_to=0, mp_loss_scale=32768.0) loaded from /content/gdrive/My Drive/imdb/data/cp-tune_fw_cf-b64-bptt70-lr0.003617_enc-b64-bptt70-lr0.01125.pkl\n", "Frozen to 0\n", "Retained mb_loss_scale=32768.0\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "text/plain": [ "tensor(0.9488)" ] }, "metadata": { "tags": [] }, "execution_count": 392 } ] }, { "cell_type": "code", "metadata": { "id": "wi2p14TrnkUj", "colab_type": "code", "outputId": "0056515c-ef76-4d04-9efd-6b7132345938", "colab": { "base_uri": "https://localhost:8080/", "height": 106 } }, "source": [ "lm_lr = 0.01125\n", "bw_enc_name = f'bw_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "cf_lr = 0.07234\n", "tune_bw_cf_name = f'tune_bw_cf-b{cf_bs}-bptt{bptt}-lr{cf_lr}_enc-b{lm_bs}-bptt{bptt}-lr{lm_lr}'\n", "\n", "bw_cf_dbnch = get_cf_databunch(FW_CF_DBNCH_FNAME, cf_bs, backwards=True)\n", "bw_cf_lrnr = new_cf_learner_with_encoder('new-bw_cf', bw_cf_dbnch, cf_drop_mult,\n", " bw_enc_name, bptt)\n", "\n", "set_prng_states(load_prng_states(tune_bw_cf_name))\n", "bw_cf_lrnr = retain_event(tune_bw_cf_name, bw_cf_lrnr)\n", "\n", "bw_preds, tgt_lbls = bw_cf_lrnr.get_preds(ordered=True)\n", "accuracy(bw_preds, tgt_lbls)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Checkpoint(name='tune_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125', frozen_to=0, mp_loss_scale=16384.0) loaded from /content/gdrive/My Drive/imdb/data/cp-tune_bw_cf-b64-bptt70-lr0.07234_enc-b64-bptt70-lr0.01125.pkl\n", "Frozen to 0\n", "Retained mb_loss_scale=16384.0\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "text/plain": [ "tensor(0.9479)" ] }, "metadata": { "tags": [] }, "execution_count": 393 } ] }, { "cell_type": "code", "metadata": { "id": "3j07IMoAnmE6", "colab_type": "code", "outputId": "ee911e6e-e315-4790-ff0e-5ffdc46485b5", "colab": { "base_uri": "https://localhost:8080/", "height": 62 } }, "source": [ "print(f'lm_lr={lm_lr}\\tcf_lr={cf_lr}')\n", "avg_preds = (fw_preds + bw_preds) / 2\n", "accuracy(avg_preds, tgt_lbls)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "lm_lr=0.01125\tcf_lr=0.07234\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "text/plain": [ "tensor(0.9545)" ] }, "metadata": { "tags": [] }, "execution_count": 394 } ] } ] }