Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
261 changes: 23 additions & 238 deletions quick_start_pytorch.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
},
"source": [
"# Paperspace Gradient: PyTorch Quick Start\n",
"Last modified: Nov 18th 2021"
"Last modified: June 3rd 2022"
]
},
{
Expand Down Expand Up @@ -83,90 +83,27 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"gradient": {
"editing": false,
"execution_count": 1,
"id": "86ef45c8-089d-4d76-b919-99bccbd7edbb",
"kernelId": "",
"source_hidden": false
},
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com\n",
"Collecting ipywidgets\n",
" Downloading ipywidgets-7.6.5-py2.py3-none-any.whl (121 kB)\n",
"\u001b[K |████████████████████████████████| 121 kB 26.7 MB/s eta 0:00:01\n",
"\u001b[?25hRequirement already satisfied: ipykernel>=4.5.1 in /opt/conda/lib/python3.8/site-packages (from ipywidgets) (6.4.1)\n",
"Requirement already satisfied: nbformat>=4.2.0 in /opt/conda/lib/python3.8/site-packages (from ipywidgets) (5.1.3)\n",
"Collecting jupyterlab-widgets>=1.0.0\n",
" Downloading jupyterlab_widgets-1.0.2-py3-none-any.whl (243 kB)\n",
"\u001b[K |████████████████████████████████| 243 kB 26.2 MB/s eta 0:00:01\n",
"\u001b[?25hRequirement already satisfied: traitlets>=4.3.1 in /opt/conda/lib/python3.8/site-packages (from ipywidgets) (5.1.0)\n",
"Requirement already satisfied: ipython-genutils~=0.2.0 in /opt/conda/lib/python3.8/site-packages (from ipywidgets) (0.2.0)\n",
"Requirement already satisfied: ipython>=4.0.0 in /opt/conda/lib/python3.8/site-packages (from ipywidgets) (7.28.0)\n",
"Collecting widgetsnbextension~=3.5.0\n",
" Downloading widgetsnbextension-3.5.2-py2.py3-none-any.whl (1.6 MB)\n",
"\u001b[K |████████████████████████████████| 1.6 MB 27.8 MB/s eta 0:00:01\n",
"\u001b[?25hRequirement already satisfied: jupyter-client<8.0 in /opt/conda/lib/python3.8/site-packages (from ipykernel>=4.5.1->ipywidgets) (7.0.6)\n",
"Requirement already satisfied: debugpy<2.0,>=1.0.0 in /opt/conda/lib/python3.8/site-packages (from ipykernel>=4.5.1->ipywidgets) (1.5.0)\n",
"Requirement already satisfied: matplotlib-inline<0.2.0,>=0.1.0 in /opt/conda/lib/python3.8/site-packages (from ipykernel>=4.5.1->ipywidgets) (0.1.3)\n",
"Requirement already satisfied: tornado<7.0,>=4.2 in /opt/conda/lib/python3.8/site-packages (from ipykernel>=4.5.1->ipywidgets) (6.1)\n",
"Requirement already satisfied: setuptools>=18.5 in /opt/conda/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets) (58.2.0)\n",
"Requirement already satisfied: pickleshare in /opt/conda/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets) (0.7.5)\n",
"Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /opt/conda/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets) (3.0.20)\n",
"Requirement already satisfied: decorator in /opt/conda/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets) (5.1.0)\n",
"Requirement already satisfied: pexpect>4.3 in /opt/conda/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets) (4.8.0)\n",
"Requirement already satisfied: pygments in /opt/conda/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets) (2.10.0)\n",
"Requirement already satisfied: jedi>=0.16 in /opt/conda/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets) (0.18.0)\n",
"Requirement already satisfied: backcall in /opt/conda/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets) (0.2.0)\n",
"Requirement already satisfied: parso<0.9.0,>=0.8.0 in /opt/conda/lib/python3.8/site-packages (from jedi>=0.16->ipython>=4.0.0->ipywidgets) (0.8.2)\n",
"Requirement already satisfied: nest-asyncio>=1.5 in /opt/conda/lib/python3.8/site-packages (from jupyter-client<8.0->ipykernel>=4.5.1->ipywidgets) (1.5.1)\n",
"Requirement already satisfied: jupyter-core>=4.6.0 in /opt/conda/lib/python3.8/site-packages (from jupyter-client<8.0->ipykernel>=4.5.1->ipywidgets) (4.8.1)\n",
"Requirement already satisfied: entrypoints in /opt/conda/lib/python3.8/site-packages (from jupyter-client<8.0->ipykernel>=4.5.1->ipywidgets) (0.3)\n",
"Requirement already satisfied: pyzmq>=13 in /opt/conda/lib/python3.8/site-packages (from jupyter-client<8.0->ipykernel>=4.5.1->ipywidgets) (22.3.0)\n",
"Requirement already satisfied: python-dateutil>=2.1 in /opt/conda/lib/python3.8/site-packages (from jupyter-client<8.0->ipykernel>=4.5.1->ipywidgets) (2.8.2)\n",
"Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in /opt/conda/lib/python3.8/site-packages (from nbformat>=4.2.0->ipywidgets) (4.0.1)\n",
"Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /opt/conda/lib/python3.8/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets) (0.18.0)\n",
"Requirement already satisfied: attrs>=17.4.0 in /opt/conda/lib/python3.8/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets) (21.2.0)\n",
"Requirement already satisfied: ptyprocess>=0.5 in /opt/conda/lib/python3.8/site-packages (from pexpect>4.3->ipython>=4.0.0->ipywidgets) (0.7.0)\n",
"Requirement already satisfied: wcwidth in /opt/conda/lib/python3.8/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython>=4.0.0->ipywidgets) (0.2.5)\n",
"Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.8/site-packages (from python-dateutil>=2.1->jupyter-client<8.0->ipykernel>=4.5.1->ipywidgets) (1.16.0)\n",
"Requirement already satisfied: notebook>=4.4.1 in /opt/conda/lib/python3.8/site-packages (from widgetsnbextension~=3.5.0->ipywidgets) (6.4.1)\n",
"Requirement already satisfied: argon2-cffi in /opt/conda/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (21.1.0)\n",
"Requirement already satisfied: nbconvert in /opt/conda/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (6.2.0)\n",
"Requirement already satisfied: terminado>=0.8.3 in /opt/conda/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.12.1)\n",
"Requirement already satisfied: jinja2 in /opt/conda/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (3.0.1)\n",
"Requirement already satisfied: prometheus-client in /opt/conda/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.11.0)\n",
"Requirement already satisfied: Send2Trash>=1.5.0 in /opt/conda/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.8.0)\n",
"Requirement already satisfied: cffi>=1.0.0 in /opt/conda/lib/python3.8/site-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.14.6)\n",
"Requirement already satisfied: pycparser in /opt/conda/lib/python3.8/site-packages (from cffi>=1.0.0->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (2.20)\n",
"Requirement already satisfied: MarkupSafe>=2.0 in /opt/conda/lib/python3.8/site-packages (from jinja2->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (2.0.1)\n",
"Requirement already satisfied: nbclient<0.6.0,>=0.5.0 in /opt/conda/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.5.4)\n",
"Requirement already satisfied: bleach in /opt/conda/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (4.1.0)\n",
"Requirement already satisfied: pandocfilters>=1.4.1 in /opt/conda/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.5.0)\n",
"Requirement already satisfied: testpath in /opt/conda/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.5.0)\n",
"Requirement already satisfied: mistune<2,>=0.8.1 in /opt/conda/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.8.4)\n",
"Requirement already satisfied: defusedxml in /opt/conda/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.7.1)\n",
"Requirement already satisfied: jupyterlab-pygments in /opt/conda/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.1.2)\n",
"Requirement already satisfied: webencodings in /opt/conda/lib/python3.8/site-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.5.1)\n",
"Requirement already satisfied: packaging in /opt/conda/lib/python3.8/site-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (21.0)\n",
"Requirement already satisfied: pyparsing>=2.0.2 in /opt/conda/lib/python3.8/site-packages (from packaging->bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (2.4.7)\n",
"Installing collected packages: widgetsnbextension, jupyterlab-widgets, ipywidgets\n",
"Successfully installed ipywidgets-7.6.5 jupyterlab-widgets-1.0.2 widgetsnbextension-3.5.2\n",
"\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\n"
]
}
],
"source": [
"!pip install ipywidgets"
"outputs": [],
"source": [
"!pip install ipywidgets widgetsnbextension\n",
"!jupyter nbextension enable --py widgetsnbextension"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!pip install torch==1.2.0+cu92 torchvision==0.4.0+cu92 -f https://download.pytorch.org/whl/torch_stable.html"
]
},
{
Expand Down Expand Up @@ -295,16 +232,7 @@
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Shape of X [N, C, H, W]: torch.Size([64, 1, 28, 28])\n",
"Shape of y: torch.Size([64]) torch.int64\n"
]
}
],
"outputs": [],
"source": [
"batch_size = 64\n",
"\n",
Expand Down Expand Up @@ -364,25 +292,7 @@
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Using cuda device\n",
"NeuralNetwork(\n",
" (flatten): Flatten(start_dim=1, end_dim=-1)\n",
" (linear_relu_stack): Sequential(\n",
" (0): Linear(in_features=784, out_features=512, bias=True)\n",
" (1): ReLU()\n",
" (2): Linear(in_features=512, out_features=512, bias=True)\n",
" (3): ReLU()\n",
" (4): Linear(in_features=512, out_features=10, bias=True)\n",
" )\n",
")\n"
]
}
],
"outputs": [],
"source": [
"# Get cpu or gpu device for training\n",
"device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n",
Expand Down Expand Up @@ -587,90 +497,7 @@
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1\n",
"-------------------------------\n",
"loss: 2.303235 [ 0/60000]\n",
"loss: 2.289679 [ 6400/60000]\n",
"loss: 2.273108 [12800/60000]\n",
"loss: 2.267172 [19200/60000]\n",
"loss: 2.248831 [25600/60000]\n",
"loss: 2.225987 [32000/60000]\n",
"loss: 2.227034 [38400/60000]\n",
"loss: 2.194261 [44800/60000]\n",
"loss: 2.190697 [51200/60000]\n",
"loss: 2.161292 [57600/60000]\n",
"Test Error: \n",
" Accuracy: 53.8%, Avg loss: 2.155593 \n",
"\n",
"Epoch 2\n",
"-------------------------------\n",
"loss: 2.169532 [ 0/60000]\n",
"loss: 2.153734 [ 6400/60000]\n",
"loss: 2.097200 [12800/60000]\n",
"loss: 2.113983 [19200/60000]\n",
"loss: 2.057467 [25600/60000]\n",
"loss: 2.015557 [32000/60000]\n",
"loss: 2.031434 [38400/60000]\n",
"loss: 1.952968 [44800/60000]\n",
"loss: 1.957087 [51200/60000]\n",
"loss: 1.897905 [57600/60000]\n",
"Test Error: \n",
" Accuracy: 60.1%, Avg loss: 1.885614 \n",
"\n",
"Epoch 3\n",
"-------------------------------\n",
"loss: 1.924514 [ 0/60000]\n",
"loss: 1.886686 [ 6400/60000]\n",
"loss: 1.767823 [12800/60000]\n",
"loss: 1.810671 [19200/60000]\n",
"loss: 1.700105 [25600/60000]\n",
"loss: 1.668604 [32000/60000]\n",
"loss: 1.677238 [38400/60000]\n",
"loss: 1.577084 [44800/60000]\n",
"loss: 1.603734 [51200/60000]\n",
"loss: 1.514089 [57600/60000]\n",
"Test Error: \n",
" Accuracy: 60.3%, Avg loss: 1.522196 \n",
"\n",
"Epoch 4\n",
"-------------------------------\n",
"loss: 1.592778 [ 0/60000]\n",
"loss: 1.553160 [ 6400/60000]\n",
"loss: 1.404765 [12800/60000]\n",
"loss: 1.476303 [19200/60000]\n",
"loss: 1.357471 [25600/60000]\n",
"loss: 1.362992 [32000/60000]\n",
"loss: 1.364555 [38400/60000]\n",
"loss: 1.289281 [44800/60000]\n",
"loss: 1.328217 [51200/60000]\n",
"loss: 1.238191 [57600/60000]\n",
"Test Error: \n",
" Accuracy: 62.5%, Avg loss: 1.260456 \n",
"\n",
"Epoch 5\n",
"-------------------------------\n",
"loss: 1.338341 [ 0/60000]\n",
"loss: 1.316752 [ 6400/60000]\n",
"loss: 1.157560 [12800/60000]\n",
"loss: 1.258749 [19200/60000]\n",
"loss: 1.131236 [25600/60000]\n",
"loss: 1.164936 [32000/60000]\n",
"loss: 1.173478 [38400/60000]\n",
"loss: 1.111497 [44800/60000]\n",
"loss: 1.156012 [51200/60000]\n",
"loss: 1.079641 [57600/60000]\n",
"Test Error: \n",
" Accuracy: 64.0%, Avg loss: 1.098095 \n",
"\n",
"Done!\n"
]
}
],
"outputs": [],
"source": [
"epochs = 5\n",
"for t in range(epochs):\n",
Expand Down Expand Up @@ -723,15 +550,7 @@
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saved PyTorch Model State to model.pth\n"
]
}
],
"outputs": [],
"source": [
"torch.save(model.state_dict(), \"model.pth\")\n",
"print(\"Saved PyTorch Model State to model.pth\")"
Expand Down Expand Up @@ -768,18 +587,7 @@
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<All keys matched successfully>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"outputs": [],
"source": [
"model = NeuralNetwork()\n",
"model.load_state_dict(torch.load(\"model.pth\"))"
Expand Down Expand Up @@ -814,15 +622,7 @@
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Predicted: \"Ankle boot\", Actual: \"Ankle boot\"\n"
]
}
],
"outputs": [],
"source": [
"classes = [\n",
" \"T-shirt/top\",\n",
Expand Down Expand Up @@ -872,34 +672,19 @@
"\n",
"To proceed with PyTorch in Gradient, you can:\n",
" \n",
" - Look at other Gradient material, such as the [tutorials](https://docs.paperspace.com/gradient/get-started/tutorials-list), [ML Showcase](https://ml-showcase.paperspace.com), [blog](https://blog.paperspace.com), or [community](https://community.paperspace.com)\n",
" - Look at other Gradient material, such as the [tutorials](https://docs.paperspace.com/gradient/get-started/tutorials-list) or [blog](https://blog.paperspace.com)\n",
" - Try out further [PyTorch tutorials](https://pytorch.org/tutorials/beginner/basics/intro.html)\n",
" - Start writing your own projects, using our [documentation](https://docs.paperspace.com/gradient) when needed\n",
" \n",
"If you get stuck or need help, [contact support](https://support.paperspace.com), and we will be happy to assist.\n",
"\n",
"Good luck!"
]
},
{
"cell_type": "markdown",
"metadata": {
"gradient": {
"editing": false,
"id": "a4d2e55f-6c65-48fe-a9e7-165931791ff2",
"kernelId": ""
}
},
"source": [
"## Original PyTorch copyright notice\n",
"\n",
"© Copyright 2021, PyTorch."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
Expand All @@ -913,7 +698,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.12"
"version": "3.6.9"
}
},
"nbformat": 4,
Expand Down