commit b3723fd9f1d12dd441f6fa4267c1fbc6c33e5619
parent 870ab574171c7ab57f9e57c893ae63d8c8301fb0
Author: Marcel <MTRNord@users.noreply.github.com>
Date: Fri, 10 Mar 2023 15:47:37 +0000
Fixes to the model code as well as container
Diffstat:
2 files changed, 91 insertions(+), 41 deletions(-)
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
@@ -1,4 +1,9 @@
{
+ "image": "mcr.microsoft.com/devcontainers/universal:2",
+ "hostRequirements": {
+ "cpus": 4
+ },
+ "waitFor": "onCreateCommand",
"customizations": {
"vscode": {
"extensions": [
@@ -15,5 +20,6 @@
"cudnnVersion": "8.5.0.96"
}
},
- "postCreateCommand": "python3 -m pip install --user -r requirements.txt"
+ "postCreateCommand": "",
+ "updateContentCommand": "python3 -m pip install --user -r requirements.txt"
}
\ No newline at end of file
diff --git a/model.ipynb b/model.ipynb
@@ -6,56 +6,94 @@
"metadata": {},
"outputs": [],
"source": [
- "import fastai.callback.tensorboard\n",
"from fastai.text.all import *\n",
- "import os\n"
+ "import os\n",
+ "import fastai"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
+ "outputs": [],
+ "source": [
+ "cwd = os.getcwd()\n",
+ "p = Path(f\"{cwd}/.fastai\")\n",
+ "if not p.exists():\n",
+ " p.mkdir()\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
"outputs": [
{
"data": {
- "text/html": [
- "\n",
- " <div>\n",
- " <progress value='144441344' class='' max='144440600' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
- " 100.00% [144441344/144440600 00:04<00:00]\n",
- " </div>\n",
- " "
- ],
- "text/plain": [
- "<IPython.core.display.HTML object>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
"text/plain": [
"(#4) [Path('/workspaces/spam-ml-mx-v2/.fastai/imdb/train/pos'),Path('/workspaces/spam-ml-mx-v2/.fastai/imdb/train/unsupBow.feat'),Path('/workspaces/spam-ml-mx-v2/.fastai/imdb/train/labeledBow.feat'),Path('/workspaces/spam-ml-mx-v2/.fastai/imdb/train/neg')]"
]
},
- "execution_count": 3,
+ "execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "cwd = os.getcwd()\n",
- "p = Path(f\"{cwd}/.fastai\")\n",
- "if not p.exists():\n",
- " p.mkdir()\n",
"path = untar_data(URLs.IMDB, data=p)\n",
"(path/'train').ls()\n"
]
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Could not do one pass in your dataloader, there is something wrong in it. Please see the stack trace below:\n"
+ ]
+ },
+ {
+ "ename": "RuntimeError",
+ "evalue": "Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[5], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m source \u001b[39m=\u001b[39m untar_data(URLs\u001b[39m.\u001b[39mIMDB, data\u001b[39m=\u001b[39mp)\n\u001b[0;32m----> 2\u001b[0m dls \u001b[39m=\u001b[39m TextDataLoaders\u001b[39m.\u001b[39;49mfrom_folder(source, valid\u001b[39m=\u001b[39;49m\u001b[39m\"\u001b[39;49m\u001b[39mtest\u001b[39;49m\u001b[39m\"\u001b[39;49m, bs\u001b[39m=\u001b[39;49m\u001b[39m64\u001b[39;49m,\n\u001b[1;32m 3\u001b[0m device\u001b[39m=\u001b[39;49mtorch\u001b[39m.\u001b[39;49mdevice(\u001b[39m'\u001b[39;49m\u001b[39mcuda\u001b[39;49m\u001b[39m'\u001b[39;49m))\n\u001b[1;32m 4\u001b[0m dls\u001b[39m.\u001b[39mshow_batch()\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/text/data.py:262\u001b[0m, in \u001b[0;36mTextDataLoaders.from_folder\u001b[0;34m(cls, path, train, valid, valid_pct, seed, vocab, text_vocab, is_lm, tok_tfm, seq_len, splitter, backwards, **kwargs)\u001b[0m\n\u001b[1;32m 257\u001b[0m get_items \u001b[39m=\u001b[39m partial(get_text_files, folders\u001b[39m=\u001b[39m[train,valid]) \u001b[39mif\u001b[39;00m valid_pct \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39melse\u001b[39;00m get_text_files\n\u001b[1;32m 258\u001b[0m dblock \u001b[39m=\u001b[39m DataBlock(blocks\u001b[39m=\u001b[39mblocks,\n\u001b[1;32m 259\u001b[0m get_items\u001b[39m=\u001b[39mget_items,\n\u001b[1;32m 260\u001b[0m splitter\u001b[39m=\u001b[39msplitter,\n\u001b[1;32m 261\u001b[0m get_y\u001b[39m=\u001b[39m\u001b[39mNone\u001b[39;00m \u001b[39mif\u001b[39;00m is_lm \u001b[39melse\u001b[39;00m parent_label)\n\u001b[0;32m--> 262\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mcls\u001b[39;49m\u001b[39m.\u001b[39;49mfrom_dblock(dblock, path, path\u001b[39m=\u001b[39;49mpath, seq_len\u001b[39m=\u001b[39;49mseq_len, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/data/core.py:284\u001b[0m, in \u001b[0;36mDataLoaders.from_dblock\u001b[0;34m(cls, dblock, source, path, bs, val_bs, shuffle, device, **kwargs)\u001b[0m\n\u001b[1;32m 273\u001b[0m \u001b[39m@classmethod\u001b[39m\n\u001b[1;32m 274\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mfrom_dblock\u001b[39m(\u001b[39mcls\u001b[39m, \n\u001b[1;32m 275\u001b[0m dblock, \u001b[39m# `DataBlock` object\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 282\u001b[0m \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs\n\u001b[1;32m 283\u001b[0m ):\n\u001b[0;32m--> 284\u001b[0m \u001b[39mreturn\u001b[39;00m dblock\u001b[39m.\u001b[39;49mdataloaders(source, path\u001b[39m=\u001b[39;49mpath, bs\u001b[39m=\u001b[39;49mbs, val_bs\u001b[39m=\u001b[39;49mval_bs, shuffle\u001b[39m=\u001b[39;49mshuffle, device\u001b[39m=\u001b[39;49mdevice, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/data/block.py:157\u001b[0m, in \u001b[0;36mDataBlock.dataloaders\u001b[0;34m(self, source, path, verbose, **kwargs)\u001b[0m\n\u001b[1;32m 155\u001b[0m dsets \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdatasets(source, verbose\u001b[39m=\u001b[39mverbose)\n\u001b[1;32m 156\u001b[0m kwargs \u001b[39m=\u001b[39m {\u001b[39m*\u001b[39m\u001b[39m*\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdls_kwargs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs, \u001b[39m'\u001b[39m\u001b[39mverbose\u001b[39m\u001b[39m'\u001b[39m: verbose}\n\u001b[0;32m--> 157\u001b[0m \u001b[39mreturn\u001b[39;00m dsets\u001b[39m.\u001b[39;49mdataloaders(path\u001b[39m=\u001b[39;49mpath, after_item\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mitem_tfms, after_batch\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mbatch_tfms, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/data/core.py:337\u001b[0m, in \u001b[0;36mFilteredBase.dataloaders\u001b[0;34m(self, bs, shuffle_train, shuffle, val_shuffle, n, path, dl_type, dl_kwargs, device, drop_last, val_bs, **kwargs)\u001b[0m\n\u001b[1;32m 335\u001b[0m dl \u001b[39m=\u001b[39m dl_type(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39msubset(\u001b[39m0\u001b[39m), \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mmerge(kwargs,def_kwargs, dl_kwargs[\u001b[39m0\u001b[39m]))\n\u001b[1;32m 336\u001b[0m def_kwargs \u001b[39m=\u001b[39m {\u001b[39m'\u001b[39m\u001b[39mbs\u001b[39m\u001b[39m'\u001b[39m:bs \u001b[39mif\u001b[39;00m val_bs \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39melse\u001b[39;00m val_bs,\u001b[39m'\u001b[39m\u001b[39mshuffle\u001b[39m\u001b[39m'\u001b[39m:val_shuffle,\u001b[39m'\u001b[39m\u001b[39mn\u001b[39m\u001b[39m'\u001b[39m:\u001b[39mNone\u001b[39;00m,\u001b[39m'\u001b[39m\u001b[39mdrop_last\u001b[39m\u001b[39m'\u001b[39m:\u001b[39mFalse\u001b[39;00m}\n\u001b[0;32m--> 337\u001b[0m dls \u001b[39m=\u001b[39m [dl] \u001b[39m+\u001b[39m [dl\u001b[39m.\u001b[39mnew(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39msubset(i), \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mmerge(kwargs,def_kwargs,val_kwargs,dl_kwargs[i]))\n\u001b[1;32m 338\u001b[0m \u001b[39mfor\u001b[39;00m i \u001b[39min\u001b[39;00m \u001b[39mrange\u001b[39m(\u001b[39m1\u001b[39m, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mn_subsets)]\n\u001b[1;32m 339\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_dbunch_type(\u001b[39m*\u001b[39mdls, path\u001b[39m=\u001b[39mpath, device\u001b[39m=\u001b[39mdevice)\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/data/core.py:337\u001b[0m, in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 335\u001b[0m dl \u001b[39m=\u001b[39m dl_type(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39msubset(\u001b[39m0\u001b[39m), \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mmerge(kwargs,def_kwargs, dl_kwargs[\u001b[39m0\u001b[39m]))\n\u001b[1;32m 336\u001b[0m def_kwargs \u001b[39m=\u001b[39m {\u001b[39m'\u001b[39m\u001b[39mbs\u001b[39m\u001b[39m'\u001b[39m:bs \u001b[39mif\u001b[39;00m val_bs \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39melse\u001b[39;00m val_bs,\u001b[39m'\u001b[39m\u001b[39mshuffle\u001b[39m\u001b[39m'\u001b[39m:val_shuffle,\u001b[39m'\u001b[39m\u001b[39mn\u001b[39m\u001b[39m'\u001b[39m:\u001b[39mNone\u001b[39;00m,\u001b[39m'\u001b[39m\u001b[39mdrop_last\u001b[39m\u001b[39m'\u001b[39m:\u001b[39mFalse\u001b[39;00m}\n\u001b[0;32m--> 337\u001b[0m dls \u001b[39m=\u001b[39m [dl] \u001b[39m+\u001b[39m [dl\u001b[39m.\u001b[39;49mnew(\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49msubset(i), \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mmerge(kwargs,def_kwargs,val_kwargs,dl_kwargs[i]))\n\u001b[1;32m 338\u001b[0m \u001b[39mfor\u001b[39;00m i \u001b[39min\u001b[39;00m \u001b[39mrange\u001b[39m(\u001b[39m1\u001b[39m, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mn_subsets)]\n\u001b[1;32m 339\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_dbunch_type(\u001b[39m*\u001b[39mdls, path\u001b[39m=\u001b[39mpath, device\u001b[39m=\u001b[39mdevice)\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/text/data.py:218\u001b[0m, in \u001b[0;36mSortedDL.new\u001b[0;34m(self, dataset, **kwargs)\u001b[0m\n\u001b[1;32m 216\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39m'\u001b[39m\u001b[39mval_res\u001b[39m\u001b[39m'\u001b[39m \u001b[39min\u001b[39;00m kwargs \u001b[39mand\u001b[39;00m kwargs[\u001b[39m'\u001b[39m\u001b[39mval_res\u001b[39m\u001b[39m'\u001b[39m] \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m: res \u001b[39m=\u001b[39m kwargs[\u001b[39m'\u001b[39m\u001b[39mval_res\u001b[39m\u001b[39m'\u001b[39m]\n\u001b[1;32m 217\u001b[0m \u001b[39melse\u001b[39;00m: res \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mres \u001b[39mif\u001b[39;00m dataset \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39melse\u001b[39;00m \u001b[39mNone\u001b[39;00m\n\u001b[0;32m--> 218\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39msuper\u001b[39;49m()\u001b[39m.\u001b[39;49mnew(dataset\u001b[39m=\u001b[39;49mdataset, res\u001b[39m=\u001b[39;49mres, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/data/core.py:97\u001b[0m, in \u001b[0;36mTfmdDL.new\u001b[0;34m(self, dataset, cls, **kwargs)\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mhasattr\u001b[39m(\u001b[39mself\u001b[39m, \u001b[39m'\u001b[39m\u001b[39m_n_inp\u001b[39m\u001b[39m'\u001b[39m) \u001b[39mor\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mhasattr\u001b[39m(\u001b[39mself\u001b[39m, \u001b[39m'\u001b[39m\u001b[39m_types\u001b[39m\u001b[39m'\u001b[39m):\n\u001b[1;32m 96\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m---> 97\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_one_pass()\n\u001b[1;32m 98\u001b[0m res\u001b[39m.\u001b[39m_n_inp,res\u001b[39m.\u001b[39m_types \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_n_inp,\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_types\n\u001b[1;32m 99\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mException\u001b[39;00m \u001b[39mas\u001b[39;00m e: \n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/data/core.py:79\u001b[0m, in \u001b[0;36mTfmdDL._one_pass\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 77\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_one_pass\u001b[39m(\u001b[39mself\u001b[39m):\n\u001b[1;32m 78\u001b[0m b \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdo_batch([\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdo_item(\u001b[39mNone\u001b[39;00m)])\n\u001b[0;32m---> 79\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdevice \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m: b \u001b[39m=\u001b[39m to_device(b, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mdevice)\n\u001b[1;32m 80\u001b[0m its \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mafter_batch(b)\n\u001b[1;32m 81\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_n_inp \u001b[39m=\u001b[39m \u001b[39m1\u001b[39m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39misinstance\u001b[39m(its, (\u001b[39mlist\u001b[39m,\u001b[39mtuple\u001b[39m)) \u001b[39mor\u001b[39;00m \u001b[39mlen\u001b[39m(its)\u001b[39m==\u001b[39m\u001b[39m1\u001b[39m \u001b[39melse\u001b[39;00m \u001b[39mlen\u001b[39m(its)\u001b[39m-\u001b[39m\u001b[39m1\u001b[39m\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/torch_core.py:285\u001b[0m, in \u001b[0;36mto_device\u001b[0;34m(b, device, non_blocking)\u001b[0m\n\u001b[1;32m 283\u001b[0m \u001b[39m# if hasattr(o, \"to_device\"): return o.to_device(device)\u001b[39;00m\n\u001b[1;32m 284\u001b[0m \u001b[39mreturn\u001b[39;00m o\n\u001b[0;32m--> 285\u001b[0m \u001b[39mreturn\u001b[39;00m apply(_inner, b)\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/torch_core.py:222\u001b[0m, in \u001b[0;36mapply\u001b[0;34m(func, x, *args, **kwargs)\u001b[0m\n\u001b[1;32m 220\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mapply\u001b[39m(func, x, \u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[1;32m 221\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mApply `func` recursively to `x`, passing on args\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m--> 222\u001b[0m \u001b[39mif\u001b[39;00m is_listy(x): \u001b[39mreturn\u001b[39;00m \u001b[39mtype\u001b[39m(x)([apply(func, o, \u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs) \u001b[39mfor\u001b[39;00m o \u001b[39min\u001b[39;00m x])\n\u001b[1;32m 223\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(x,\u001b[39mdict\u001b[39m): \u001b[39mreturn\u001b[39;00m {k: apply(func, v, \u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs) \u001b[39mfor\u001b[39;00m k,v \u001b[39min\u001b[39;00m x\u001b[39m.\u001b[39mitems()}\n\u001b[1;32m 224\u001b[0m res \u001b[39m=\u001b[39m func(x, \u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/torch_core.py:222\u001b[0m, in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 220\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mapply\u001b[39m(func, x, \u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[1;32m 221\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mApply `func` recursively to `x`, passing on args\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m--> 222\u001b[0m \u001b[39mif\u001b[39;00m is_listy(x): \u001b[39mreturn\u001b[39;00m \u001b[39mtype\u001b[39m(x)([apply(func, o, \u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs) \u001b[39mfor\u001b[39;00m o \u001b[39min\u001b[39;00m x])\n\u001b[1;32m 223\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(x,\u001b[39mdict\u001b[39m): \u001b[39mreturn\u001b[39;00m {k: apply(func, v, \u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs) \u001b[39mfor\u001b[39;00m k,v \u001b[39min\u001b[39;00m x\u001b[39m.\u001b[39mitems()}\n\u001b[1;32m 224\u001b[0m res \u001b[39m=\u001b[39m func(x, \u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/torch_core.py:224\u001b[0m, in \u001b[0;36mapply\u001b[0;34m(func, x, *args, **kwargs)\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[39mif\u001b[39;00m is_listy(x): \u001b[39mreturn\u001b[39;00m \u001b[39mtype\u001b[39m(x)([apply(func, o, \u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs) \u001b[39mfor\u001b[39;00m o \u001b[39min\u001b[39;00m x])\n\u001b[1;32m 223\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(x,\u001b[39mdict\u001b[39m): \u001b[39mreturn\u001b[39;00m {k: apply(func, v, \u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs) \u001b[39mfor\u001b[39;00m k,v \u001b[39min\u001b[39;00m x\u001b[39m.\u001b[39mitems()}\n\u001b[0;32m--> 224\u001b[0m res \u001b[39m=\u001b[39m func(x, \u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m 225\u001b[0m \u001b[39mreturn\u001b[39;00m res \u001b[39mif\u001b[39;00m x \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39melse\u001b[39;00m retain_type(res, x)\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/torch_core.py:282\u001b[0m, in \u001b[0;36mto_device.<locals>._inner\u001b[0;34m(o)\u001b[0m\n\u001b[1;32m 281\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_inner\u001b[39m(o):\n\u001b[0;32m--> 282\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(o,Tensor): \u001b[39mreturn\u001b[39;00m o\u001b[39m.\u001b[39;49mto(device, non_blocking\u001b[39m=\u001b[39;49mnon_blocking)\n\u001b[1;32m 283\u001b[0m \u001b[39m# if hasattr(o, \"to_device\"): return o.to_device(device)\u001b[39;00m\n\u001b[1;32m 284\u001b[0m \u001b[39mreturn\u001b[39;00m o\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/fastai/torch_core.py:372\u001b[0m, in \u001b[0;36mTensorBase.__torch_function__\u001b[0;34m(cls, func, types, args, kwargs)\u001b[0m\n\u001b[1;32m 370\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mcls\u001b[39m\u001b[39m.\u001b[39mdebug \u001b[39mand\u001b[39;00m func\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m \u001b[39mnot\u001b[39;00m \u001b[39min\u001b[39;00m (\u001b[39m'\u001b[39m\u001b[39m__str__\u001b[39m\u001b[39m'\u001b[39m,\u001b[39m'\u001b[39m\u001b[39m__repr__\u001b[39m\u001b[39m'\u001b[39m): \u001b[39mprint\u001b[39m(func, types, args, kwargs)\n\u001b[1;32m 371\u001b[0m \u001b[39mif\u001b[39;00m _torch_handled(args, \u001b[39mcls\u001b[39m\u001b[39m.\u001b[39m_opt, func): types \u001b[39m=\u001b[39m (torch\u001b[39m.\u001b[39mTensor,)\n\u001b[0;32m--> 372\u001b[0m res \u001b[39m=\u001b[39m \u001b[39msuper\u001b[39;49m()\u001b[39m.\u001b[39;49m__torch_function__(func, types, args, ifnone(kwargs, {}))\n\u001b[1;32m 373\u001b[0m dict_objs \u001b[39m=\u001b[39m _find_args(args) \u001b[39mif\u001b[39;00m args \u001b[39melse\u001b[39;00m _find_args(\u001b[39mlist\u001b[39m(kwargs\u001b[39m.\u001b[39mvalues()))\n\u001b[1;32m 374\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39missubclass\u001b[39m(\u001b[39mtype\u001b[39m(res),TensorBase) \u001b[39mand\u001b[39;00m dict_objs: res\u001b[39m.\u001b[39mset_meta(dict_objs[\u001b[39m0\u001b[39m],as_copy\u001b[39m=\u001b[39m\u001b[39mTrue\u001b[39;00m)\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/torch/_tensor.py:1279\u001b[0m, in \u001b[0;36mTensor.__torch_function__\u001b[0;34m(cls, func, types, args, kwargs)\u001b[0m\n\u001b[1;32m 1276\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mNotImplemented\u001b[39m\n\u001b[1;32m 1278\u001b[0m \u001b[39mwith\u001b[39;00m _C\u001b[39m.\u001b[39mDisableTorchFunction():\n\u001b[0;32m-> 1279\u001b[0m ret \u001b[39m=\u001b[39m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m 1280\u001b[0m \u001b[39mif\u001b[39;00m func \u001b[39min\u001b[39;00m get_default_nowrap_functions():\n\u001b[1;32m 1281\u001b[0m \u001b[39mreturn\u001b[39;00m ret\n",
+ "File \u001b[0;32m~/.local/lib/python3.10/site-packages/torch/cuda/__init__.py:229\u001b[0m, in \u001b[0;36m_lazy_init\u001b[0;34m()\u001b[0m\n\u001b[1;32m 227\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39m'\u001b[39m\u001b[39mCUDA_MODULE_LOADING\u001b[39m\u001b[39m'\u001b[39m \u001b[39mnot\u001b[39;00m \u001b[39min\u001b[39;00m os\u001b[39m.\u001b[39menviron:\n\u001b[1;32m 228\u001b[0m os\u001b[39m.\u001b[39menviron[\u001b[39m'\u001b[39m\u001b[39mCUDA_MODULE_LOADING\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m=\u001b[39m \u001b[39m'\u001b[39m\u001b[39mLAZY\u001b[39m\u001b[39m'\u001b[39m\n\u001b[0;32m--> 229\u001b[0m torch\u001b[39m.\u001b[39;49m_C\u001b[39m.\u001b[39;49m_cuda_init()\n\u001b[1;32m 230\u001b[0m \u001b[39m# Some of the queued calls may reentrantly call _lazy_init();\u001b[39;00m\n\u001b[1;32m 231\u001b[0m \u001b[39m# we need to just return without initializing in that case.\u001b[39;00m\n\u001b[1;32m 232\u001b[0m \u001b[39m# However, we must not let any *other* threads in!\u001b[39;00m\n\u001b[1;32m 233\u001b[0m _tls\u001b[39m.\u001b[39mis_initializing \u001b[39m=\u001b[39m \u001b[39mTrue\u001b[39;00m\n",
+ "\u001b[0;31mRuntimeError\u001b[0m: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx"
+ ]
+ }
+ ],
+ "source": [
+ "source = untar_data(URLs.IMDB, data=p)\n",
+ "dls = TextDataLoaders.from_folder(source, valid=\"test\", bs=64,\n",
+ " device=torch.device('cuda'))\n",
+ "dls.show_batch()\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
"metadata": {},
"outputs": [
{
@@ -63,8 +101,8 @@
"text/html": [
"\n",
" <div>\n",
- " <progress value='19011' class='' max='100002' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
- " 19.01% [19011/100002 01:47<07:37]\n",
+ " <progress value='105070592' class='' max='105067061' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
+ " 100.00% [105070592/105067061 00:03<00:00]\n",
" </div>\n",
" "
],
@@ -77,26 +115,32 @@
}
],
"source": [
- "source = untar_data(URLs.IMDB, data=p)\n",
- "dls = TextDataLoaders.from_folder(source, valid=\"test\", bs=64)\n",
- "dls.show_batch()\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
"learn = text_classifier_learner(dls, AWD_LSTM, drop_mult=0.5, metrics=accuracy,\n",
- " cbs=TensorBoardCallback(cwd/'tmp'/'runs'/'tb', trace_model=True))\n"
+ " cbs=fastai.callback.tensorboard.TensorBoardCallback(f\"{cwd}/.fastai/runs/tb\", trace_model=True))\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "",
+ "evalue": "",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[1;31mCanceled future for execute_request message before replies were done"
+ ]
+ },
+ {
+ "ename": "",
+ "evalue": "",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click <a href='https://aka.ms/vscodeJupyterKernelCrash'>here</a> for more info. View Jupyter <a href='command:jupyter.viewOutput'>log</a> for further details."
+ ]
+ }
+ ],
"source": [
"learn.fine_tune(4, 1e-2)\n"
]