{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Install" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: uv in /Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages (0.1.42)\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "%pip install uv" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!uv pip install dagshub setuptools accelerate toml torch torchvision transformers mlflow datasets ipywidgets python-dotenv evaluate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Setup" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Initialized MLflow to track repo \"amaye15/CanineNet\"\n",
"
\n"
],
"text/plain": [
"Initialized MLflow to track repo \u001b[32m\"amaye15/CanineNet\"\u001b[0m\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Repository amaye15/CanineNet initialized!\n", "\n" ], "text/plain": [ "Repository amaye15/CanineNet initialized!\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import os\n", "import toml\n", "import torch\n", "import mlflow\n", "import dagshub\n", "import datasets\n", "import evaluate\n", "from dotenv import load_dotenv\n", "from torchvision.transforms import v2\n", "from transformers import AutoImageProcessor, AutoModelForImageClassification, TrainingArguments, Trainer\n", "\n", "ENV_PATH = \"/Users/andrewmayes/Openclassroom/CanineNet/.env\"\n", "CONFIG_PATH = \"/Users/andrewmayes/Openclassroom/CanineNet/code/config.toml\"\n", "CONFIG = toml.load(CONFIG_PATH)\n", "\n", "load_dotenv(ENV_PATH)\n", "\n", "dagshub.init(repo_name=os.environ['MLFLOW_TRACKING_PROJECTNAME'], repo_owner=os.environ['MLFLOW_TRACKING_USERNAME'], mlflow=True, dvc=True)\n", "\n", "os.environ['MLFLOW_TRACKING_USERNAME'] = \"amaye15\"\n", "\n", "mlflow.set_tracking_uri(f'https://dagshub.com/' + os.environ['MLFLOW_TRACKING_USERNAME']\n", " + '/' + os.environ['MLFLOW_TRACKING_PROJECTNAME'] + '.mlflow')\n", "\n", "CREATE_DATASET = True\n", "ORIGINAL_DATASET = \"Alanox/stanford-dogs\"\n", "MODIFIED_DATASET = \"amaye15/stanford-dogs\"\n", "REMOVE_COLUMNS = [\"name\", \"annotations\"]\n", "RENAME_COLUMNS = {\"image\":\"pixel_values\", \"target\":\"label\"}\n", "SPLIT = 0.2\n", "\n", "METRICS = [\"accuracy\", \"f1\", \"precision\", \"recall\"]\n", "# MODELS = 'google/vit-base-patch16-224'\n", "# MODELS = \"google/siglip-base-patch16-224\"\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Dataset" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Affenpinscher: 0\n", "Afghan Hound: 1\n", "African Hunting Dog: 2\n", "Airedale: 3\n", "American Staffordshire Terrier: 4\n", "Appenzeller: 5\n", "Australian Terrier: 6\n", "Basenji: 7\n", "Basset: 8\n", "Beagle: 9\n", "Bedlington Terrier: 10\n", "Bernese Mountain Dog: 11\n", "Black And Tan Coonhound: 12\n", "Blenheim Spaniel: 13\n", "Bloodhound: 14\n", "Bluetick: 15\n", "Border Collie: 16\n", "Border Terrier: 17\n", "Borzoi: 18\n", "Boston Bull: 19\n", "Bouvier Des Flandres: 20\n", "Boxer: 21\n", "Brabancon Griffon: 22\n", "Briard: 23\n", "Brittany Spaniel: 24\n", "Bull Mastiff: 25\n", "Cairn: 26\n", "Cardigan: 27\n", "Chesapeake Bay Retriever: 28\n", "Chihuahua: 29\n", "Chow: 30\n", "Clumber: 31\n", "Cocker Spaniel: 32\n", "Collie: 33\n", "Curly Coated Retriever: 34\n", "Dandie Dinmont: 35\n", "Dhole: 36\n", "Dingo: 37\n", "Doberman: 38\n", "English Foxhound: 39\n", "English Setter: 40\n", "English Springer: 41\n", "Entlebucher: 42\n", "Eskimo Dog: 43\n", "Flat Coated Retriever: 44\n", "French Bulldog: 45\n", "German Shepherd: 46\n", "German Short Haired Pointer: 47\n", "Giant Schnauzer: 48\n", "Golden Retriever: 49\n", "Gordon Setter: 50\n", "Great Dane: 51\n", "Great Pyrenees: 52\n", "Greater Swiss Mountain Dog: 53\n", "Groenendael: 54\n", "Ibizan Hound: 55\n", "Irish Setter: 56\n", "Irish Terrier: 57\n", "Irish Water Spaniel: 58\n", "Irish Wolfhound: 59\n", "Italian Greyhound: 60\n", "Japanese Spaniel: 61\n", "Keeshond: 62\n", "Kelpie: 63\n", "Kerry Blue Terrier: 64\n", "Komondor: 65\n", "Kuvasz: 66\n", "Labrador Retriever: 67\n", "Lakeland Terrier: 68\n", "Leonberg: 69\n", "Lhasa: 70\n", "Malamute: 71\n", "Malinois: 72\n", "Maltese Dog: 73\n", "Mexican Hairless: 74\n", "Miniature Pinscher: 75\n", "Miniature Poodle: 76\n", "Miniature Schnauzer: 77\n", "Newfoundland: 78\n", "Norfolk Terrier: 79\n", "Norwegian Elkhound: 80\n", "Norwich Terrier: 81\n", "Old English Sheepdog: 82\n", "Otterhound: 83\n", "Papillon: 84\n", "Pekinese: 85\n", "Pembroke: 86\n", "Pomeranian: 87\n", "Pug: 88\n", "Redbone: 89\n", "Rhodesian Ridgeback: 90\n", "Rottweiler: 91\n", "Saint Bernard: 92\n", "Saluki: 93\n", "Samoyed: 94\n", "Schipperke: 95\n", "Scotch Terrier: 96\n", "Scottish Deerhound: 97\n", "Sealyham Terrier: 98\n", "Shetland Sheepdog: 99\n", "Shih Tzu: 100\n", "Siberian Husky: 101\n", "Silky Terrier: 102\n", "Soft Coated Wheaten Terrier: 103\n", "Staffordshire Bullterrier: 104\n", "Standard Poodle: 105\n", "Standard Schnauzer: 106\n", "Sussex Spaniel: 107\n", "Tibetan Mastiff: 108\n", "Tibetan Terrier: 109\n", "Toy Poodle: 110\n", "Toy Terrier: 111\n", "Vizsla: 112\n", "Walker Hound: 113\n", "Weimaraner: 114\n", "Welsh Springer Spaniel: 115\n", "West Highland White Terrier: 116\n", "Whippet: 117\n", "Wire Haired Fox Terrier: 118\n", "Yorkshire Terrier: 119\n" ] } ], "source": [ "if CREATE_DATASET:\n", " ds = datasets.load_dataset(ORIGINAL_DATASET, token=os.getenv(\"HF_TOKEN\"), split=\"full\", trust_remote_code=True)\n", " ds = ds.remove_columns(REMOVE_COLUMNS).rename_columns(RENAME_COLUMNS)\n", "\n", " labels = ds.select_columns(\"label\").to_pandas().sort_values(\"label\").get(\"label\").unique().tolist()\n", " numbers = range(len(labels))\n", " label2int = dict(zip(labels, numbers))\n", " int2label = dict(zip(numbers, labels))\n", "\n", " for key, val in label2int.items():\n", " print(f\"{key}: {val}\")\n", "\n", " ds = ds.class_encode_column(\"label\")\n", " ds = ds.align_labels_with_mapping(label2int, \"label\")\n", "\n", " ds = ds.train_test_split(test_size=SPLIT, stratify_by_column = \"label\")\n", " #ds.push_to_hub(MODIFIED_DATASET, token=os.getenv(\"HF_TOKEN\"))\n", "\n", " CONFIG[\"label2int\"] = str(label2int)\n", " CONFIG[\"int2label\"] = str(int2label)\n", "\n", " # with open(\"output.toml\", \"w\") as toml_file:\n", " # toml.dump(toml.dumps(CONFIG), toml_file)\n", "\n", " #ds = datasets.load_dataset(MODIFIED_DATASET, token=os.getenv(\"HF_TOKEN\"), trust_remote_code=True, streaming=True)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/huggingface_hub/file_download.py:1132: FutureWarning: `resume_download` is deprecated and will be removed in version 1.0.0. Downloads always resume when possible. If you want to force a new download, use `force_download=True`.\n", " warnings.warn(\n", "Could not find image processor class in the image processor config or the model config. Loading based on pattern matching with the model's feature extractor configuration. Please open a PR/issue to update `preprocessor_config.json` to use `image_processor_type` instead of `feature_extractor_type`. This warning will be removed in v4.40.\n", "Some weights of Swinv2ForImageClassification were not initialized from the model checkpoint at microsoft/swinv2-base-patch4-window16-256 and are newly initialized because the shapes did not match:\n", "- classifier.weight: found shape torch.Size([1000, 1024]) in the checkpoint and torch.Size([120, 1024]) in the model instantiated\n", "- classifier.bias: found shape torch.Size([1000]) in the checkpoint and torch.Size([120]) in the model instantiated\n", "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", "max_steps is given, it will override any value given in num_train_epochs\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3f11443236f74e3aa0d3ea41fcaaaf91", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/1000 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 4.7451, 'grad_norm': 7.392679691314697, 'learning_rate': 4.9500000000000004e-05, 'epoch': 0.08}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b8f571126879442b9bb8bf00fbf6c1a8", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 4.6182661056518555, 'eval_accuracy': 0.07167152575315841, 'eval_f1': 0.06175833391362469, 'eval_precision': 0.06693832428157515, 'eval_recall': 0.06805161257279692, 'eval_runtime': 118.9863, 'eval_samples_per_second': 34.592, 'eval_steps_per_second': 1.084, 'epoch': 0.08}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 4.5204, 'grad_norm': 17.792699813842773, 'learning_rate': 4.9e-05, 'epoch': 0.16}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b29d38bfa09546ad8384d3f8d9d90109", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 4.324223518371582, 'eval_accuracy': 0.20238095238095238, 'eval_f1': 0.14930686647738964, 'eval_precision': 0.18576762567564203, 'eval_recall': 0.1827081374434747, 'eval_runtime': 119.253, 'eval_samples_per_second': 34.515, 'eval_steps_per_second': 1.082, 'epoch': 0.16}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 4.2163, 'grad_norm': 27.42233657836914, 'learning_rate': 4.85e-05, 'epoch': 0.23}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7403045592cf4234aba9e2cf16811a7c", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 3.85136079788208, 'eval_accuracy': 0.3816812439261419, 'eval_f1': 0.3107746196937497, 'eval_precision': 0.3754529363764648, 'eval_recall': 0.3598087581195972, 'eval_runtime': 116.3653, 'eval_samples_per_second': 35.371, 'eval_steps_per_second': 1.109, 'epoch': 0.23}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 3.5996, 'grad_norm': 39.71358871459961, 'learning_rate': 4.8e-05, 'epoch': 0.31}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ad05537e9c5046b89224fdde600fc61e", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 2.993649959564209, 'eval_accuracy': 0.6025267249757046, 'eval_f1': 0.5396699491275935, 'eval_precision': 0.5985274492543927, 'eval_recall': 0.5851786479410009, 'eval_runtime': 116.097, 'eval_samples_per_second': 35.453, 'eval_steps_per_second': 1.111, 'epoch': 0.31}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 2.7565, 'grad_norm': 35.98662567138672, 'learning_rate': 4.75e-05, 'epoch': 0.39}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4c50344bb3c4447cb362115a99ce7108", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 1.8901652097702026, 'eval_accuracy': 0.7738095238095238, 'eval_f1': 0.7419140762746178, 'eval_precision': 0.80018778271747, 'eval_recall': 0.759897512543306, 'eval_runtime': 115.975, 'eval_samples_per_second': 35.49, 'eval_steps_per_second': 1.112, 'epoch': 0.39}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 1.9695, 'grad_norm': 69.04105377197266, 'learning_rate': 4.7e-05, 'epoch': 0.47}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0ead9a11bd9e479f9a84c69fb687c541", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 1.2026917934417725, 'eval_accuracy': 0.8644314868804664, 'eval_f1': 0.851211822050322, 'eval_precision': 0.8810420986229455, 'eval_recall': 0.8584653488560972, 'eval_runtime': 116.5016, 'eval_samples_per_second': 35.33, 'eval_steps_per_second': 1.107, 'epoch': 0.47}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 1.4292, 'grad_norm': 35.54287338256836, 'learning_rate': 4.6500000000000005e-05, 'epoch': 0.54}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "cfb89a2dbe894a7bb3111134ad7560ca", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.8375147581100464, 'eval_accuracy': 0.8901846452866861, 'eval_f1': 0.8767897170357445, 'eval_precision': 0.9034288303237173, 'eval_recall': 0.8852697852467155, 'eval_runtime': 115.813, 'eval_samples_per_second': 35.54, 'eval_steps_per_second': 1.114, 'epoch': 0.54}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 1.1191, 'grad_norm': 36.4020881652832, 'learning_rate': 4.600000000000001e-05, 'epoch': 0.62}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "026f809b056f4c8883256767246fb3a2", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.5400001406669617, 'eval_accuracy': 0.9139941690962099, 'eval_f1': 0.9084552011702601, 'eval_precision': 0.9209161574159062, 'eval_recall': 0.9114069285375231, 'eval_runtime': 117.1034, 'eval_samples_per_second': 35.148, 'eval_steps_per_second': 1.102, 'epoch': 0.62}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.9249, 'grad_norm': 37.288429260253906, 'learning_rate': 4.55e-05, 'epoch': 0.7}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "16da153d2d6a4f82ae0188589b477e11", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.41832435131073, 'eval_accuracy': 0.9193391642371235, 'eval_f1': 0.913590633986456, 'eval_precision': 0.9283911611083989, 'eval_recall': 0.9169393031418399, 'eval_runtime': 116.4522, 'eval_samples_per_second': 35.345, 'eval_steps_per_second': 1.108, 'epoch': 0.7}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.7701, 'grad_norm': 36.70619201660156, 'learning_rate': 4.5e-05, 'epoch': 0.78}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6eb5e91b0ec64038a6b485bdc7b6c513", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.3423353433609009, 'eval_accuracy': 0.923712342079689, 'eval_f1': 0.9167317908696295, 'eval_precision': 0.9265458073145066, 'eval_recall': 0.9207090056403667, 'eval_runtime': 116.9797, 'eval_samples_per_second': 35.186, 'eval_steps_per_second': 1.103, 'epoch': 0.78}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.7036, 'grad_norm': 30.09217643737793, 'learning_rate': 4.4500000000000004e-05, 'epoch': 0.85}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1ccbb1ea839f4560a70d353b6e370a4e", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.3141166865825653, 'eval_accuracy': 0.9258989310009719, 'eval_f1': 0.9199295975579974, 'eval_precision': 0.9270010191480259, 'eval_recall': 0.9228040093614015, 'eval_runtime': 116.9652, 'eval_samples_per_second': 35.19, 'eval_steps_per_second': 1.103, 'epoch': 0.85}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.7279, 'grad_norm': 25.417821884155273, 'learning_rate': 4.4000000000000006e-05, 'epoch': 0.93}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d3cc2129e1d44615a2d2301cf30c9642", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.2813890278339386, 'eval_accuracy': 0.9261418853255587, 'eval_f1': 0.9200313705925975, 'eval_precision': 0.9300531792015672, 'eval_recall': 0.9234535506220213, 'eval_runtime': 116.2712, 'eval_samples_per_second': 35.4, 'eval_steps_per_second': 1.109, 'epoch': 0.93}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.6732, 'grad_norm': 37.04437255859375, 'learning_rate': 4.35e-05, 'epoch': 1.01}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3dd1623d6f7a4dd191113836acea426f", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.2583376467227936, 'eval_accuracy': 0.9278425655976676, 'eval_f1': 0.9257827956681505, 'eval_precision': 0.9336659702817446, 'eval_recall': 0.9264134713855884, 'eval_runtime': 116.0872, 'eval_samples_per_second': 35.456, 'eval_steps_per_second': 1.111, 'epoch': 1.01}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.5251, 'grad_norm': 29.01424789428711, 'learning_rate': 4.3e-05, 'epoch': 1.09}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6ae9a429aeed497ba37cd62926ab41ea", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.24332156777381897, 'eval_accuracy': 0.9387755102040817, 'eval_f1': 0.9343495020560317, 'eval_precision': 0.9400195362137737, 'eval_recall': 0.9364590575108477, 'eval_runtime': 118.0813, 'eval_samples_per_second': 34.857, 'eval_steps_per_second': 1.092, 'epoch': 1.09}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.506, 'grad_norm': 24.758153915405273, 'learning_rate': 4.25e-05, 'epoch': 1.17}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e65c57c63acd4174a08e1ca23f77573f", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.2486099898815155, 'eval_accuracy': 0.9293002915451894, 'eval_f1': 0.923673480868727, 'eval_precision': 0.9392627242326875, 'eval_recall': 0.9284078296144684, 'eval_runtime': 117.2673, 'eval_samples_per_second': 35.099, 'eval_steps_per_second': 1.1, 'epoch': 1.17}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.4941, 'grad_norm': 30.309085845947266, 'learning_rate': 4.2e-05, 'epoch': 1.24}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "34e037fa487a493e87ddb4f175491798", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.24892301857471466, 'eval_accuracy': 0.9295432458697764, 'eval_f1': 0.9275860219532449, 'eval_precision': 0.9340224064275343, 'eval_recall': 0.9276101852749326, 'eval_runtime': 116.9083, 'eval_samples_per_second': 35.207, 'eval_steps_per_second': 1.103, 'epoch': 1.24}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.493, 'grad_norm': 31.011947631835938, 'learning_rate': 4.15e-05, 'epoch': 1.32}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e7338155c71343d09d29b0c2b0a89e1c", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.22557905316352844, 'eval_accuracy': 0.9361030126336248, 'eval_f1': 0.9336891277999396, 'eval_precision': 0.9401808677720161, 'eval_recall': 0.9344423711587737, 'eval_runtime': 118.5567, 'eval_samples_per_second': 34.718, 'eval_steps_per_second': 1.088, 'epoch': 1.32}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.4975, 'grad_norm': 31.7733154296875, 'learning_rate': 4.1e-05, 'epoch': 1.4}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2117f169a61b478ca0c28e3d34504780", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.2236272543668747, 'eval_accuracy': 0.9390184645286687, 'eval_f1': 0.9352200153615517, 'eval_precision': 0.9430236036085446, 'eval_recall': 0.9376522647842572, 'eval_runtime': 114.3593, 'eval_samples_per_second': 35.992, 'eval_steps_per_second': 1.128, 'epoch': 1.4}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.4742, 'grad_norm': 44.587825775146484, 'learning_rate': 4.05e-05, 'epoch': 1.48}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "02daf2752fd740a182450a096ebf7ff1", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.22906745970249176, 'eval_accuracy': 0.9390184645286687, 'eval_f1': 0.9348672227662737, 'eval_precision': 0.9443221376291268, 'eval_recall': 0.9368278532845314, 'eval_runtime': 114.4144, 'eval_samples_per_second': 35.974, 'eval_steps_per_second': 1.127, 'epoch': 1.48}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.4788, 'grad_norm': 51.10420608520508, 'learning_rate': 4e-05, 'epoch': 1.55}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9a2263ab9f3146df8d7b4ee491f818b7", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.21873104572296143, 'eval_accuracy': 0.9385325558794947, 'eval_f1': 0.9348021784060464, 'eval_precision': 0.9429207736971593, 'eval_recall': 0.9358784149851511, 'eval_runtime': 114.5674, 'eval_samples_per_second': 35.926, 'eval_steps_per_second': 1.126, 'epoch': 1.55}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.4817, 'grad_norm': 29.57049560546875, 'learning_rate': 3.9500000000000005e-05, 'epoch': 1.63}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5e82313185004fe8abca126ec2257bf6", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.2193629890680313, 'eval_accuracy': 0.9382896015549077, 'eval_f1': 0.9365648816530497, 'eval_precision': 0.9438250894351351, 'eval_recall': 0.9370270150771032, 'eval_runtime': 114.6083, 'eval_samples_per_second': 35.914, 'eval_steps_per_second': 1.126, 'epoch': 1.63}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.425, 'grad_norm': 20.471195220947266, 'learning_rate': 3.9000000000000006e-05, 'epoch': 1.71}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3599276492a6452681c73dc614934a3b", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.21454617381095886, 'eval_accuracy': 0.9395043731778425, 'eval_f1': 0.9365201289942966, 'eval_precision': 0.9419287910877474, 'eval_recall': 0.9373934984216807, 'eval_runtime': 114.4861, 'eval_samples_per_second': 35.952, 'eval_steps_per_second': 1.127, 'epoch': 1.71}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.4392, 'grad_norm': 30.670284271240234, 'learning_rate': 3.85e-05, 'epoch': 1.79}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "af272ced345a4bd49ef0660206a87bdd", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.21058662235736847, 'eval_accuracy': 0.9404761904761905, 'eval_f1': 0.9367420698571843, 'eval_precision': 0.9472776166631209, 'eval_recall': 0.9389728915687214, 'eval_runtime': 114.8313, 'eval_samples_per_second': 35.844, 'eval_steps_per_second': 1.123, 'epoch': 1.79}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.4295, 'grad_norm': 23.996227264404297, 'learning_rate': 3.8e-05, 'epoch': 1.86}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "98117d4b70cc469fbb4eb50cd3326fdc", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.20313242077827454, 'eval_accuracy': 0.9426627793974732, 'eval_f1': 0.9415231910984045, 'eval_precision': 0.9460733827301256, 'eval_recall': 0.9419062362633588, 'eval_runtime': 114.4366, 'eval_samples_per_second': 35.968, 'eval_steps_per_second': 1.127, 'epoch': 1.86}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.447, 'grad_norm': 29.65323257446289, 'learning_rate': 3.7500000000000003e-05, 'epoch': 1.94}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8bee82efa39b4275b471a34c4ab4bc21", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.20734070241451263, 'eval_accuracy': 0.9373177842565598, 'eval_f1': 0.934085851023942, 'eval_precision': 0.9405809641296471, 'eval_recall': 0.935499789776851, 'eval_runtime': 114.6373, 'eval_samples_per_second': 35.905, 'eval_steps_per_second': 1.125, 'epoch': 1.94}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.4718, 'grad_norm': 25.023006439208984, 'learning_rate': 3.7e-05, 'epoch': 2.02}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "503f18cd37ea4436af2bec5e8d90e89a", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.20732612907886505, 'eval_accuracy': 0.9416909620991254, 'eval_f1': 0.939770108961802, 'eval_precision': 0.9436139851292384, 'eval_recall': 0.9395972540954411, 'eval_runtime': 114.8017, 'eval_samples_per_second': 35.853, 'eval_steps_per_second': 1.124, 'epoch': 2.02}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.4528, 'grad_norm': 29.38068199157715, 'learning_rate': 3.65e-05, 'epoch': 2.1}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ba6795e422984e49872674ffe95ea296", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.20109473168849945, 'eval_accuracy': 0.9426627793974732, 'eval_f1': 0.9402546407567826, 'eval_precision': 0.9447143456273354, 'eval_recall': 0.9401327475466873, 'eval_runtime': 115.0331, 'eval_samples_per_second': 35.781, 'eval_steps_per_second': 1.121, 'epoch': 2.1}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3958, 'grad_norm': 19.475000381469727, 'learning_rate': 3.6e-05, 'epoch': 2.17}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3856d7fc28bb40a08477f017d6e465b5", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1979122757911682, 'eval_accuracy': 0.9438775510204082, 'eval_f1': 0.9401571777817359, 'eval_precision': 0.9466559993183812, 'eval_recall': 0.941823625617955, 'eval_runtime': 114.5986, 'eval_samples_per_second': 35.917, 'eval_steps_per_second': 1.126, 'epoch': 2.17}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.4325, 'grad_norm': 23.977619171142578, 'learning_rate': 3.55e-05, 'epoch': 2.25}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "cff02076da5a41b497372e4dbffe4610", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19925996661186218, 'eval_accuracy': 0.9421768707482994, 'eval_f1': 0.9396204404158489, 'eval_precision': 0.9448251772503703, 'eval_recall': 0.940379301213978, 'eval_runtime': 114.6027, 'eval_samples_per_second': 35.915, 'eval_steps_per_second': 1.126, 'epoch': 2.25}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3228, 'grad_norm': 26.77207374572754, 'learning_rate': 3.5e-05, 'epoch': 2.33}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "84ed894e77de406596ea27aecbb8f749", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.20252813398838043, 'eval_accuracy': 0.9397473275024295, 'eval_f1': 0.9371514375373243, 'eval_precision': 0.9415118336037184, 'eval_recall': 0.9374533753415454, 'eval_runtime': 114.9424, 'eval_samples_per_second': 35.809, 'eval_steps_per_second': 1.122, 'epoch': 2.33}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.383, 'grad_norm': 18.35658073425293, 'learning_rate': 3.45e-05, 'epoch': 2.41}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d19e69a21ad54df4ad3c6ca7a7b8bbe8", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.20318132638931274, 'eval_accuracy': 0.9424198250728864, 'eval_f1': 0.9395786141795599, 'eval_precision': 0.9471288830591912, 'eval_recall': 0.9406682184567607, 'eval_runtime': 114.5097, 'eval_samples_per_second': 35.945, 'eval_steps_per_second': 1.127, 'epoch': 2.41}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.4147, 'grad_norm': 27.020387649536133, 'learning_rate': 3.4000000000000007e-05, 'epoch': 2.49}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "319bb634831147d29846ecc06033f21d", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19750656187534332, 'eval_accuracy': 0.9433916423712342, 'eval_f1': 0.9401031149800597, 'eval_precision': 0.9466297083232625, 'eval_recall': 0.9418430619246869, 'eval_runtime': 114.3341, 'eval_samples_per_second': 36.0, 'eval_steps_per_second': 1.128, 'epoch': 2.49}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3587, 'grad_norm': 32.080196380615234, 'learning_rate': 3.35e-05, 'epoch': 2.56}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "55c80f1158d14b08a5847f17501bfa87", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.20484071969985962, 'eval_accuracy': 0.9429057337220602, 'eval_f1': 0.941181947588637, 'eval_precision': 0.9453028458596549, 'eval_recall': 0.9415019462749606, 'eval_runtime': 114.7942, 'eval_samples_per_second': 35.855, 'eval_steps_per_second': 1.124, 'epoch': 2.56}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3481, 'grad_norm': 21.583600997924805, 'learning_rate': 3.3e-05, 'epoch': 2.64}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fdc0080da2ec46b0a002b729afce272d", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.21101877093315125, 'eval_accuracy': 0.9416909620991254, 'eval_f1': 0.9409328461528574, 'eval_precision': 0.9453296950566307, 'eval_recall': 0.9414241081371865, 'eval_runtime': 115.2273, 'eval_samples_per_second': 35.721, 'eval_steps_per_second': 1.12, 'epoch': 2.64}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.4007, 'grad_norm': 30.03070640563965, 'learning_rate': 3.2500000000000004e-05, 'epoch': 2.72}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f7229a61cca842679c7de9fbb575d375", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19447678327560425, 'eval_accuracy': 0.9448493683187561, 'eval_f1': 0.9415138633931484, 'eval_precision': 0.9469802948132661, 'eval_recall': 0.942949195133524, 'eval_runtime': 115.0467, 'eval_samples_per_second': 35.777, 'eval_steps_per_second': 1.121, 'epoch': 2.72}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3719, 'grad_norm': 19.006587982177734, 'learning_rate': 3.2000000000000005e-05, 'epoch': 2.8}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "bf63e2448443476e8e9d135a31429515", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.20250166952610016, 'eval_accuracy': 0.9414480077745384, 'eval_f1': 0.9404145495231127, 'eval_precision': 0.9447405846663819, 'eval_recall': 0.9408034205466518, 'eval_runtime': 115.0173, 'eval_samples_per_second': 35.786, 'eval_steps_per_second': 1.122, 'epoch': 2.8}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3993, 'grad_norm': 29.12856101989746, 'learning_rate': 3.15e-05, 'epoch': 2.87}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5ceaa5c7d4a040d29c63eb7095828c69", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.2011735588312149, 'eval_accuracy': 0.9448493683187561, 'eval_f1': 0.9419080758511604, 'eval_precision': 0.9485110507596467, 'eval_recall': 0.9429995946279425, 'eval_runtime': 114.9695, 'eval_samples_per_second': 35.801, 'eval_steps_per_second': 1.122, 'epoch': 2.87}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3745, 'grad_norm': 31.063690185546875, 'learning_rate': 3.1e-05, 'epoch': 2.95}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4fe4672267894541b62e2d0d3478bbaf", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19235630333423615, 'eval_accuracy': 0.9450923226433431, 'eval_f1': 0.9414846823446322, 'eval_precision': 0.9499272592883472, 'eval_recall': 0.9434571156744745, 'eval_runtime': 115.3893, 'eval_samples_per_second': 35.671, 'eval_steps_per_second': 1.118, 'epoch': 2.95}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3638, 'grad_norm': 17.190593719482422, 'learning_rate': 3.05e-05, 'epoch': 3.03}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9b3eeceea86d492299092c9c1c290262", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19399064779281616, 'eval_accuracy': 0.9443634596695821, 'eval_f1': 0.9424039415864353, 'eval_precision': 0.9477598282320199, 'eval_recall': 0.9424056698043153, 'eval_runtime': 114.892, 'eval_samples_per_second': 35.825, 'eval_steps_per_second': 1.123, 'epoch': 3.03}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3421, 'grad_norm': 34.20246505737305, 'learning_rate': 3e-05, 'epoch': 3.11}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b9fbbb413f794c7da2ad5a007fc5f355", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1897164136171341, 'eval_accuracy': 0.9465500485908649, 'eval_f1': 0.9441019525393687, 'eval_precision': 0.9496324245782034, 'eval_recall': 0.9445579251653037, 'eval_runtime': 114.9933, 'eval_samples_per_second': 35.793, 'eval_steps_per_second': 1.122, 'epoch': 3.11}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2906, 'grad_norm': 39.98542404174805, 'learning_rate': 2.95e-05, 'epoch': 3.18}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f1f70f5b6d064c17801f3ec017b26c17", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18932002782821655, 'eval_accuracy': 0.9470359572400389, 'eval_f1': 0.9456754034759556, 'eval_precision': 0.9494168814742135, 'eval_recall': 0.9456967112313741, 'eval_runtime': 115.4616, 'eval_samples_per_second': 35.648, 'eval_steps_per_second': 1.117, 'epoch': 3.18}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3455, 'grad_norm': 22.710445404052734, 'learning_rate': 2.9e-05, 'epoch': 3.26}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "11c74a1f15c641efa382db8b5bf90fb1", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18017922341823578, 'eval_accuracy': 0.9484936831875608, 'eval_f1': 0.94714050801556, 'eval_precision': 0.9499007284588198, 'eval_recall': 0.9474784961404308, 'eval_runtime': 114.5961, 'eval_samples_per_second': 35.917, 'eval_steps_per_second': 1.126, 'epoch': 3.26}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3338, 'grad_norm': 27.539039611816406, 'learning_rate': 2.8499999999999998e-05, 'epoch': 3.34}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1839f3e67b81440bb5fdbbc6327a2cdb", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19262713193893433, 'eval_accuracy': 0.9441205053449951, 'eval_f1': 0.9414006658184005, 'eval_precision': 0.9472613482110482, 'eval_recall': 0.9424492875208347, 'eval_runtime': 114.3881, 'eval_samples_per_second': 35.983, 'eval_steps_per_second': 1.128, 'epoch': 3.34}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3307, 'grad_norm': 31.13157844543457, 'learning_rate': 2.8000000000000003e-05, 'epoch': 3.42}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "35636ac347cf40e897a69a8833d3d2e9", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.20202496647834778, 'eval_accuracy': 0.9419339164237124, 'eval_f1': 0.9407488062667215, 'eval_precision': 0.9447014610743715, 'eval_recall': 0.9408760495815661, 'eval_runtime': 114.2398, 'eval_samples_per_second': 36.029, 'eval_steps_per_second': 1.129, 'epoch': 3.42}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.367, 'grad_norm': 35.75934982299805, 'learning_rate': 2.7500000000000004e-05, 'epoch': 3.5}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d326a4dd31164df19d6fb5a91293712c", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19336122274398804, 'eval_accuracy': 0.9465500485908649, 'eval_f1': 0.9452244096779967, 'eval_precision': 0.9486806069204384, 'eval_recall': 0.945357240364433, 'eval_runtime': 114.8563, 'eval_samples_per_second': 35.836, 'eval_steps_per_second': 1.123, 'epoch': 3.5}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3248, 'grad_norm': 23.628128051757812, 'learning_rate': 2.7000000000000002e-05, 'epoch': 3.57}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "064a046703f74653a93f8141ca4a02ea", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.2003922015428543, 'eval_accuracy': 0.9419339164237124, 'eval_f1': 0.9392921765894248, 'eval_precision': 0.9442515458934876, 'eval_recall': 0.9401493961700677, 'eval_runtime': 114.5631, 'eval_samples_per_second': 35.928, 'eval_steps_per_second': 1.126, 'epoch': 3.57}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3366, 'grad_norm': 42.56528854370117, 'learning_rate': 2.6500000000000004e-05, 'epoch': 3.65}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f17d9a4de43a4cca84ccd9f535c043d2", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19236095249652863, 'eval_accuracy': 0.9431486880466472, 'eval_f1': 0.9409643735150478, 'eval_precision': 0.9466555090439602, 'eval_recall': 0.9415082502284738, 'eval_runtime': 114.6786, 'eval_samples_per_second': 35.892, 'eval_steps_per_second': 1.125, 'epoch': 3.65}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3342, 'grad_norm': 19.98875617980957, 'learning_rate': 2.6000000000000002e-05, 'epoch': 3.73}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f5913a02a3344de1a338eaaaf5cfa89a", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19377027451992035, 'eval_accuracy': 0.9453352769679301, 'eval_f1': 0.9436307861283311, 'eval_precision': 0.9467901159978599, 'eval_recall': 0.943816355738806, 'eval_runtime': 114.9849, 'eval_samples_per_second': 35.796, 'eval_steps_per_second': 1.122, 'epoch': 3.73}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3386, 'grad_norm': 21.59819221496582, 'learning_rate': 2.5500000000000003e-05, 'epoch': 3.81}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "015bdb45bda248ffbd21008cef7334cd", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.20178444683551788, 'eval_accuracy': 0.9443634596695821, 'eval_f1': 0.9428295179020412, 'eval_precision': 0.9469455644494296, 'eval_recall': 0.9430155349321213, 'eval_runtime': 114.6708, 'eval_samples_per_second': 35.894, 'eval_steps_per_second': 1.125, 'epoch': 3.81}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3841, 'grad_norm': 21.11665153503418, 'learning_rate': 2.5e-05, 'epoch': 3.88}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b05151a706644c8baa4ea293a23d6107", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.193311870098114, 'eval_accuracy': 0.9433916423712342, 'eval_f1': 0.9414012627871041, 'eval_precision': 0.9458002923284925, 'eval_recall': 0.94184618952753, 'eval_runtime': 114.9776, 'eval_samples_per_second': 35.798, 'eval_steps_per_second': 1.122, 'epoch': 3.88}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3174, 'grad_norm': 18.7007999420166, 'learning_rate': 2.45e-05, 'epoch': 3.96}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "96eb8e73e84a403894a748ad134b7c0d", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19022010266780853, 'eval_accuracy': 0.9453352769679301, 'eval_f1': 0.9437864796087925, 'eval_precision': 0.9466327980959414, 'eval_recall': 0.9435855550407289, 'eval_runtime': 115.2406, 'eval_samples_per_second': 35.717, 'eval_steps_per_second': 1.119, 'epoch': 3.96}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2996, 'grad_norm': 17.607086181640625, 'learning_rate': 2.4e-05, 'epoch': 4.04}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2d92308dbd924d52834c288a29ed0c9a", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18879003822803497, 'eval_accuracy': 0.9465500485908649, 'eval_f1': 0.9453809424654497, 'eval_precision': 0.9497376727045288, 'eval_recall': 0.9459956280754142, 'eval_runtime': 115.2126, 'eval_samples_per_second': 35.725, 'eval_steps_per_second': 1.12, 'epoch': 4.04}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2879, 'grad_norm': 34.3960075378418, 'learning_rate': 2.35e-05, 'epoch': 4.12}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6d170d7308f4406f8d3cacd6f36d0d1a", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18851810693740845, 'eval_accuracy': 0.9441205053449951, 'eval_f1': 0.9427902851201815, 'eval_precision': 0.9464331604533499, 'eval_recall': 0.9428457088438701, 'eval_runtime': 115.3928, 'eval_samples_per_second': 35.669, 'eval_steps_per_second': 1.118, 'epoch': 4.12}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3035, 'grad_norm': 27.399072647094727, 'learning_rate': 2.3000000000000003e-05, 'epoch': 4.19}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8fb9ff5f50e04639ad7cac188f4e66bd", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1908504068851471, 'eval_accuracy': 0.9453352769679301, 'eval_f1': 0.9434051369389914, 'eval_precision': 0.9474717636272078, 'eval_recall': 0.9437481173747684, 'eval_runtime': 114.8582, 'eval_samples_per_second': 35.835, 'eval_steps_per_second': 1.123, 'epoch': 4.19}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2574, 'grad_norm': 21.96457290649414, 'learning_rate': 2.25e-05, 'epoch': 4.27}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6808dd6b16fe4f36b7132c0ac086d184", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18855735659599304, 'eval_accuracy': 0.9453352769679301, 'eval_f1': 0.9427031026358901, 'eval_precision': 0.9475830137825754, 'eval_recall': 0.9438414557692797, 'eval_runtime': 114.8411, 'eval_samples_per_second': 35.841, 'eval_steps_per_second': 1.123, 'epoch': 4.27}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3219, 'grad_norm': 41.36893081665039, 'learning_rate': 2.2000000000000003e-05, 'epoch': 4.35}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "afa7acec8c6c4ac19fe96faadb0786d6", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18892067670822144, 'eval_accuracy': 0.9433916423712342, 'eval_f1': 0.9411438682134082, 'eval_precision': 0.9461780674309639, 'eval_recall': 0.9417372009351842, 'eval_runtime': 115.4308, 'eval_samples_per_second': 35.658, 'eval_steps_per_second': 1.118, 'epoch': 4.35}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2827, 'grad_norm': 31.3144588470459, 'learning_rate': 2.15e-05, 'epoch': 4.43}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4c8c12d4a0cb4c1fbd6140520c6a1bec", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18959985673427582, 'eval_accuracy': 0.9448493683187561, 'eval_f1': 0.9434954931712027, 'eval_precision': 0.9463643348204727, 'eval_recall': 0.9433684998867641, 'eval_runtime': 115.1487, 'eval_samples_per_second': 35.745, 'eval_steps_per_second': 1.12, 'epoch': 4.43}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2869, 'grad_norm': 20.795242309570312, 'learning_rate': 2.1e-05, 'epoch': 4.5}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "15f67e755fe44958b5d31c3894e377bf", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1945854127407074, 'eval_accuracy': 0.9443634596695821, 'eval_f1': 0.9429882368776638, 'eval_precision': 0.9458759338467805, 'eval_recall': 0.9427150271390136, 'eval_runtime': 115.0128, 'eval_samples_per_second': 35.787, 'eval_steps_per_second': 1.122, 'epoch': 4.5}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3442, 'grad_norm': 22.8905029296875, 'learning_rate': 2.05e-05, 'epoch': 4.58}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ffdcf3afa5c841208a80480437fd2227", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18711623549461365, 'eval_accuracy': 0.9458211856171039, 'eval_f1': 0.9443975552551526, 'eval_precision': 0.9477411298392244, 'eval_recall': 0.9444669404930629, 'eval_runtime': 115.0342, 'eval_samples_per_second': 35.781, 'eval_steps_per_second': 1.121, 'epoch': 4.58}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2739, 'grad_norm': 18.282894134521484, 'learning_rate': 2e-05, 'epoch': 4.66}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c23489f9c11c4458902349cae28ed860", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1880841702222824, 'eval_accuracy': 0.9441205053449951, 'eval_f1': 0.9415259481526164, 'eval_precision': 0.9469780431226001, 'eval_recall': 0.9421132519003071, 'eval_runtime': 114.6389, 'eval_samples_per_second': 35.904, 'eval_steps_per_second': 1.125, 'epoch': 4.66}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3067, 'grad_norm': 17.205751419067383, 'learning_rate': 1.9500000000000003e-05, 'epoch': 4.74}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8a7bbac5d1af4407b8b409c07b47bfbb", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19253447651863098, 'eval_accuracy': 0.9475218658892128, 'eval_f1': 0.9455549198929877, 'eval_precision': 0.9498783733589569, 'eval_recall': 0.9455746598929079, 'eval_runtime': 114.8075, 'eval_samples_per_second': 35.851, 'eval_steps_per_second': 1.124, 'epoch': 4.74}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2674, 'grad_norm': 29.793489456176758, 'learning_rate': 1.9e-05, 'epoch': 4.82}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6b7526e006ad4963ae418b2c8221a88f", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19188550114631653, 'eval_accuracy': 0.9429057337220602, 'eval_f1': 0.9405066366498914, 'eval_precision': 0.9458056670586158, 'eval_recall': 0.9407893783001804, 'eval_runtime': 114.8903, 'eval_samples_per_second': 35.825, 'eval_steps_per_second': 1.123, 'epoch': 4.82}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3029, 'grad_norm': 40.88832473754883, 'learning_rate': 1.85e-05, 'epoch': 4.89}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f78fa40f6e694072be7fef48ca0273fc", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1870385855436325, 'eval_accuracy': 0.9446064139941691, 'eval_f1': 0.9419978871151995, 'eval_precision': 0.9467945730172027, 'eval_recall': 0.9425046516642015, 'eval_runtime': 115.0825, 'eval_samples_per_second': 35.766, 'eval_steps_per_second': 1.121, 'epoch': 4.89}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.293, 'grad_norm': 25.430564880371094, 'learning_rate': 1.8e-05, 'epoch': 4.97}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "102c265c87cf4a3eb9fe268cd8bade28", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19138064980506897, 'eval_accuracy': 0.9421768707482994, 'eval_f1': 0.9398439773363093, 'eval_precision': 0.9443712235347143, 'eval_recall': 0.9402050138864034, 'eval_runtime': 114.8654, 'eval_samples_per_second': 35.833, 'eval_steps_per_second': 1.123, 'epoch': 4.97}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3242, 'grad_norm': 16.76936149597168, 'learning_rate': 1.75e-05, 'epoch': 5.05}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "11e15df5be2444268facc7d47a32eacd", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1905665248632431, 'eval_accuracy': 0.9443634596695821, 'eval_f1': 0.9428469199634004, 'eval_precision': 0.9462565822668318, 'eval_recall': 0.9428831333486722, 'eval_runtime': 114.8538, 'eval_samples_per_second': 35.837, 'eval_steps_per_second': 1.123, 'epoch': 5.05}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3302, 'grad_norm': 30.843332290649414, 'learning_rate': 1.7000000000000003e-05, 'epoch': 5.13}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "35f9aed766a94a6e8f2e69e7fc7e2af6", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18933725357055664, 'eval_accuracy': 0.9453352769679301, 'eval_f1': 0.9436571818715118, 'eval_precision': 0.9467108586574963, 'eval_recall': 0.9438527768448465, 'eval_runtime': 115.1185, 'eval_samples_per_second': 35.754, 'eval_steps_per_second': 1.121, 'epoch': 5.13}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2754, 'grad_norm': 20.851177215576172, 'learning_rate': 1.65e-05, 'epoch': 5.2}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5590b0148f554375b4c2a33a2e5e7a44", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1859486699104309, 'eval_accuracy': 0.9470359572400389, 'eval_f1': 0.9452360577527517, 'eval_precision': 0.948884107004187, 'eval_recall': 0.9453068178693637, 'eval_runtime': 114.9667, 'eval_samples_per_second': 35.802, 'eval_steps_per_second': 1.122, 'epoch': 5.2}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2794, 'grad_norm': 32.60487747192383, 'learning_rate': 1.6000000000000003e-05, 'epoch': 5.28}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3d10eeaf9de5425ab2690e0eee24cef9", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18755145370960236, 'eval_accuracy': 0.9458211856171039, 'eval_f1': 0.9441062093968957, 'eval_precision': 0.9472886051353733, 'eval_recall': 0.9442015299233748, 'eval_runtime': 114.8785, 'eval_samples_per_second': 35.829, 'eval_steps_per_second': 1.123, 'epoch': 5.28}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.3015, 'grad_norm': 23.714696884155273, 'learning_rate': 1.55e-05, 'epoch': 5.36}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "af49bfff49bb4bd99545d1248cd56a75", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1870153546333313, 'eval_accuracy': 0.9463070942662779, 'eval_f1': 0.9450064660883716, 'eval_precision': 0.9480599743441597, 'eval_recall': 0.9451215682039763, 'eval_runtime': 115.2137, 'eval_samples_per_second': 35.725, 'eval_steps_per_second': 1.12, 'epoch': 5.36}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2741, 'grad_norm': 26.103408813476562, 'learning_rate': 1.5e-05, 'epoch': 5.44}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "030c7affe8094971b14709ff33bb87cf", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1891375035047531, 'eval_accuracy': 0.9426627793974732, 'eval_f1': 0.941466297473656, 'eval_precision': 0.9446859437408165, 'eval_recall': 0.9414389371088902, 'eval_runtime': 114.8799, 'eval_samples_per_second': 35.829, 'eval_steps_per_second': 1.123, 'epoch': 5.44}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2856, 'grad_norm': 24.357542037963867, 'learning_rate': 1.45e-05, 'epoch': 5.51}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2f76d1e7433642948a4af2a83e28adfd", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18975676596164703, 'eval_accuracy': 0.9455782312925171, 'eval_f1': 0.943872222215918, 'eval_precision': 0.946982737270694, 'eval_recall': 0.9438607151950139, 'eval_runtime': 114.6348, 'eval_samples_per_second': 35.905, 'eval_steps_per_second': 1.125, 'epoch': 5.51}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2869, 'grad_norm': 17.85304069519043, 'learning_rate': 1.4000000000000001e-05, 'epoch': 5.59}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2a188b9ebe724488a9607667f60ee25f", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1900128573179245, 'eval_accuracy': 0.9463070942662779, 'eval_f1': 0.9449003574138755, 'eval_precision': 0.9485287191510329, 'eval_recall': 0.9447589201115735, 'eval_runtime': 115.1085, 'eval_samples_per_second': 35.758, 'eval_steps_per_second': 1.121, 'epoch': 5.59}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2874, 'grad_norm': 23.500152587890625, 'learning_rate': 1.3500000000000001e-05, 'epoch': 5.67}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b49e284dfd834a37a87e8cb66cff2c39", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19259242713451385, 'eval_accuracy': 0.9458211856171039, 'eval_f1': 0.9434055925300381, 'eval_precision': 0.9488706777885639, 'eval_recall': 0.9439478824344302, 'eval_runtime': 114.9474, 'eval_samples_per_second': 35.808, 'eval_steps_per_second': 1.122, 'epoch': 5.67}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.1988, 'grad_norm': 22.595317840576172, 'learning_rate': 1.3000000000000001e-05, 'epoch': 5.75}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "da6bb4b812cc4e409baf2e4414a71e49", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1882985234260559, 'eval_accuracy': 0.9453352769679301, 'eval_f1': 0.9426854260794502, 'eval_precision': 0.9469339918302618, 'eval_recall': 0.9433031282032139, 'eval_runtime': 115.1264, 'eval_samples_per_second': 35.752, 'eval_steps_per_second': 1.121, 'epoch': 5.75}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2644, 'grad_norm': 28.592859268188477, 'learning_rate': 1.25e-05, 'epoch': 5.83}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e22e79ff48bb4e49baf81a8940e09b79", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18950645625591278, 'eval_accuracy': 0.9472789115646258, 'eval_f1': 0.9448028291783778, 'eval_precision': 0.9493876702823437, 'eval_recall': 0.9454785004855722, 'eval_runtime': 115.0675, 'eval_samples_per_second': 35.77, 'eval_steps_per_second': 1.121, 'epoch': 5.83}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2641, 'grad_norm': 31.456523895263672, 'learning_rate': 1.2e-05, 'epoch': 5.9}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6cbe0afe87aa4eabbeeb622e1b70a024", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1931435912847519, 'eval_accuracy': 0.9438775510204082, 'eval_f1': 0.941433386425573, 'eval_precision': 0.9465851411488619, 'eval_recall': 0.9421179108709055, 'eval_runtime': 114.3837, 'eval_samples_per_second': 35.984, 'eval_steps_per_second': 1.128, 'epoch': 5.9}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2391, 'grad_norm': 36.5975227355957, 'learning_rate': 1.1500000000000002e-05, 'epoch': 5.98}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7fae512fcad34cdd86d2cb2f3bbec39d", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19245532155036926, 'eval_accuracy': 0.9438775510204082, 'eval_f1': 0.9413665363647609, 'eval_precision': 0.9459785586190361, 'eval_recall': 0.942074546074078, 'eval_runtime': 114.3684, 'eval_samples_per_second': 35.989, 'eval_steps_per_second': 1.128, 'epoch': 5.98}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2601, 'grad_norm': 42.9268913269043, 'learning_rate': 1.1000000000000001e-05, 'epoch': 6.06}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "473515b76d0a483d8fde41abbcb89d72", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19217662513256073, 'eval_accuracy': 0.9465500485908649, 'eval_f1': 0.9446123481197052, 'eval_precision': 0.9485415624396621, 'eval_recall': 0.9450066690417543, 'eval_runtime': 114.6574, 'eval_samples_per_second': 35.898, 'eval_steps_per_second': 1.125, 'epoch': 6.06}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2499, 'grad_norm': 32.35667419433594, 'learning_rate': 1.05e-05, 'epoch': 6.14}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b285393b922446b4a80341de180a0314", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19207020103931427, 'eval_accuracy': 0.9460641399416909, 'eval_f1': 0.9442995122333805, 'eval_precision': 0.9479958854083244, 'eval_recall': 0.9443226322813668, 'eval_runtime': 114.6419, 'eval_samples_per_second': 35.903, 'eval_steps_per_second': 1.125, 'epoch': 6.14}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.264, 'grad_norm': 37.09341049194336, 'learning_rate': 1e-05, 'epoch': 6.21}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "14dbe06cf5454902837aada02785dc0d", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18772649765014648, 'eval_accuracy': 0.9465500485908649, 'eval_f1': 0.9449748257567703, 'eval_precision': 0.9479318204339404, 'eval_recall': 0.9450885190747927, 'eval_runtime': 115.0287, 'eval_samples_per_second': 35.782, 'eval_steps_per_second': 1.121, 'epoch': 6.21}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2523, 'grad_norm': 23.960466384887695, 'learning_rate': 9.5e-06, 'epoch': 6.29}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "62cedd37587046ac917292774dbc6e50", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18751277029514313, 'eval_accuracy': 0.9467930029154519, 'eval_f1': 0.9452585905069442, 'eval_precision': 0.9482655680231242, 'eval_recall': 0.9454911591930526, 'eval_runtime': 115.3611, 'eval_samples_per_second': 35.679, 'eval_steps_per_second': 1.118, 'epoch': 6.29}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2406, 'grad_norm': 24.072086334228516, 'learning_rate': 9e-06, 'epoch': 6.37}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6ca09ea241ee400098c25a45944ee8c7", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18802115321159363, 'eval_accuracy': 0.9494655004859086, 'eval_f1': 0.9477070574852993, 'eval_precision': 0.9515929762382033, 'eval_recall': 0.9480766180643243, 'eval_runtime': 114.8757, 'eval_samples_per_second': 35.83, 'eval_steps_per_second': 1.123, 'epoch': 6.37}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2749, 'grad_norm': 20.991914749145508, 'learning_rate': 8.500000000000002e-06, 'epoch': 6.45}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ad8958ac9557485c851372c6c8d0ebd0", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1885104477405548, 'eval_accuracy': 0.9465500485908649, 'eval_f1': 0.9447709867884129, 'eval_precision': 0.9482607163831029, 'eval_recall': 0.9450556842845805, 'eval_runtime': 114.6381, 'eval_samples_per_second': 35.904, 'eval_steps_per_second': 1.125, 'epoch': 6.45}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2702, 'grad_norm': 72.34149932861328, 'learning_rate': 8.000000000000001e-06, 'epoch': 6.52}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d93fbc6ed558463a9022ddaf375de746", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1884743869304657, 'eval_accuracy': 0.9467930029154519, 'eval_f1': 0.9450964819057274, 'eval_precision': 0.9482242985135603, 'eval_recall': 0.9454769319797258, 'eval_runtime': 115.2162, 'eval_samples_per_second': 35.724, 'eval_steps_per_second': 1.12, 'epoch': 6.52}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2482, 'grad_norm': 17.251073837280273, 'learning_rate': 7.5e-06, 'epoch': 6.6}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8532dfe9533e41029ac885345c4a832a", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18626774847507477, 'eval_accuracy': 0.9475218658892128, 'eval_f1': 0.9460705692945173, 'eval_precision': 0.949297813063323, 'eval_recall': 0.9463759071528689, 'eval_runtime': 114.6516, 'eval_samples_per_second': 35.9, 'eval_steps_per_second': 1.125, 'epoch': 6.6}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2403, 'grad_norm': 19.474308013916016, 'learning_rate': 7.000000000000001e-06, 'epoch': 6.68}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d196ec3c0cff43ffad4455a931f2a459", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1897239238023758, 'eval_accuracy': 0.9470359572400389, 'eval_f1': 0.9450683372184614, 'eval_precision': 0.9496556504600578, 'eval_recall': 0.9453010975584315, 'eval_runtime': 114.474, 'eval_samples_per_second': 35.956, 'eval_steps_per_second': 1.127, 'epoch': 6.68}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2509, 'grad_norm': 33.18558883666992, 'learning_rate': 6.5000000000000004e-06, 'epoch': 6.76}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "cc444a03a6ae4c50a2cbc50871a95713", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.19059084355831146, 'eval_accuracy': 0.9482507288629738, 'eval_f1': 0.9461830780670489, 'eval_precision': 0.9507805867016828, 'eval_recall': 0.9464756298884152, 'eval_runtime': 114.5318, 'eval_samples_per_second': 35.938, 'eval_steps_per_second': 1.126, 'epoch': 6.76}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2689, 'grad_norm': 18.298492431640625, 'learning_rate': 6e-06, 'epoch': 6.83}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e6fe40b5a91241748953659950e8773c", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18674452602863312, 'eval_accuracy': 0.9484936831875608, 'eval_f1': 0.9459116119918208, 'eval_precision': 0.9506477204257867, 'eval_recall': 0.9466156759052429, 'eval_runtime': 114.3375, 'eval_samples_per_second': 35.999, 'eval_steps_per_second': 1.128, 'epoch': 6.83}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2159, 'grad_norm': 18.049999237060547, 'learning_rate': 5.500000000000001e-06, 'epoch': 6.91}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b1a8cdae65044fffb9f902bd092f0e0d", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18661876022815704, 'eval_accuracy': 0.9484936831875608, 'eval_f1': 0.946438620230781, 'eval_precision': 0.9503522868270984, 'eval_recall': 0.9467846203446506, 'eval_runtime': 115.019, 'eval_samples_per_second': 35.785, 'eval_steps_per_second': 1.122, 'epoch': 6.91}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2488, 'grad_norm': 35.76055908203125, 'learning_rate': 5e-06, 'epoch': 6.99}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "66ad88cb226546bcad6024431f7d8f7b", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1865723431110382, 'eval_accuracy': 0.9460641399416909, 'eval_f1': 0.9434604111462372, 'eval_precision': 0.9481526440603574, 'eval_recall': 0.9443130519259704, 'eval_runtime': 114.4672, 'eval_samples_per_second': 35.958, 'eval_steps_per_second': 1.127, 'epoch': 6.99}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2366, 'grad_norm': 42.35475158691406, 'learning_rate': 4.5e-06, 'epoch': 7.07}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "52d045d117f149f6a24668674b7e0131", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1870640069246292, 'eval_accuracy': 0.9448493683187561, 'eval_f1': 0.9422096792950079, 'eval_precision': 0.9463818135151401, 'eval_recall': 0.9429973410538078, 'eval_runtime': 114.4117, 'eval_samples_per_second': 35.975, 'eval_steps_per_second': 1.128, 'epoch': 7.07}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2602, 'grad_norm': 16.04122543334961, 'learning_rate': 4.000000000000001e-06, 'epoch': 7.15}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b5a56bb089da4da8bfb981af20222114", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18540120124816895, 'eval_accuracy': 0.9465500485908649, 'eval_f1': 0.9440799651911433, 'eval_precision': 0.9482822745243968, 'eval_recall': 0.9447404023533209, 'eval_runtime': 115.0761, 'eval_samples_per_second': 35.768, 'eval_steps_per_second': 1.121, 'epoch': 7.15}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2236, 'grad_norm': 19.42647361755371, 'learning_rate': 3.5000000000000004e-06, 'epoch': 7.22}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d29b80a00382432aaf2e72492858a805", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18591512739658356, 'eval_accuracy': 0.9453352769679301, 'eval_f1': 0.9429143190138815, 'eval_precision': 0.9467375634808105, 'eval_recall': 0.9436323198742707, 'eval_runtime': 122.2756, 'eval_samples_per_second': 33.662, 'eval_steps_per_second': 1.055, 'epoch': 7.22}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2463, 'grad_norm': 64.06370544433594, 'learning_rate': 3e-06, 'epoch': 7.3}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fc610185a9434b61be261f707eabb28e", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18627004325389862, 'eval_accuracy': 0.9470359572400389, 'eval_f1': 0.9449708759201191, 'eval_precision': 0.9487505429064071, 'eval_recall': 0.9453900648174994, 'eval_runtime': 116.2336, 'eval_samples_per_second': 35.411, 'eval_steps_per_second': 1.11, 'epoch': 7.3}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2355, 'grad_norm': 24.91596031188965, 'learning_rate': 2.5e-06, 'epoch': 7.38}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e67be50ba3e24c79b49c839932a36567", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18624159693717957, 'eval_accuracy': 0.9460641399416909, 'eval_f1': 0.9437366562287047, 'eval_precision': 0.94760386001111, 'eval_recall': 0.9442699931329116, 'eval_runtime': 116.0377, 'eval_samples_per_second': 35.471, 'eval_steps_per_second': 1.112, 'epoch': 7.38}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.263, 'grad_norm': 15.299092292785645, 'learning_rate': 2.0000000000000003e-06, 'epoch': 7.46}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1d861da2f3ef401d9bd907c67ee088b5", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18598560988903046, 'eval_accuracy': 0.9472789115646258, 'eval_f1': 0.9452704296383371, 'eval_precision': 0.9491189751700734, 'eval_recall': 0.9455716980636488, 'eval_runtime': 114.861, 'eval_samples_per_second': 35.835, 'eval_steps_per_second': 1.123, 'epoch': 7.46}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2384, 'grad_norm': 23.91373634338379, 'learning_rate': 1.5e-06, 'epoch': 7.53}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "04838d265e0447a18065ed4b655fd3aa", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18595248460769653, 'eval_accuracy': 0.9472789115646258, 'eval_f1': 0.9452692090442015, 'eval_precision': 0.949199907194322, 'eval_recall': 0.9455716980636488, 'eval_runtime': 115.1001, 'eval_samples_per_second': 35.76, 'eval_steps_per_second': 1.121, 'epoch': 7.53}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2229, 'grad_norm': 23.1019229888916, 'learning_rate': 1.0000000000000002e-06, 'epoch': 7.61}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d29cc0d1fd4643a7b526c6eb2de940cb", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18562324345111847, 'eval_accuracy': 0.9477648202137998, 'eval_f1': 0.9458057740133103, 'eval_precision': 0.9496601468457383, 'eval_recall': 0.9461182930457277, 'eval_runtime': 114.5456, 'eval_samples_per_second': 35.933, 'eval_steps_per_second': 1.126, 'epoch': 7.61}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2277, 'grad_norm': 18.580551147460938, 'learning_rate': 5.000000000000001e-07, 'epoch': 7.69}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9f66bccaeb3c44c0b87008df697c0c19", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.1854560524225235, 'eval_accuracy': 0.9480077745383868, 'eval_f1': 0.9459908448725385, 'eval_precision': 0.949860554097917, 'eval_recall': 0.9463076869851217, 'eval_runtime': 114.7098, 'eval_samples_per_second': 35.882, 'eval_steps_per_second': 1.125, 'epoch': 7.69}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 0.2485, 'grad_norm': 21.011415481567383, 'learning_rate': 0.0, 'epoch': 7.77}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "04dac833b7b146859c65a939279778d1", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 0.18543945252895355, 'eval_accuracy': 0.9480077745383868, 'eval_f1': 0.9459908448725385, 'eval_precision': 0.949860554097917, 'eval_recall': 0.9463076869851217, 'eval_runtime': 114.7322, 'eval_samples_per_second': 35.875, 'eval_steps_per_second': 1.124, 'epoch': 7.77}\n", "{'train_runtime': 28927.1207, 'train_samples_per_second': 4.425, 'train_steps_per_second': 0.035, 'train_loss': 0.5650921467542648, 'epoch': 7.77}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2a1f671971514ba2acc01b842e75aacb", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Upload 2 LFS files: 0%| | 0/2 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d5ef4007e8874f00aa4c5b7a5479e70d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "model.safetensors: 0%| | 0.00/348M [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7df9ce114d9b451ba1ff83186893705d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "training_args.bin: 0%| | 0.00/5.11k [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/huggingface_hub/file_download.py:1132: FutureWarning: `resume_download` is deprecated and will be removed in version 1.0.0. Downloads always resume when possible. If you want to force a new download, use `force_download=True`.\n", " warnings.warn(\n", "Some weights of SiglipForImageClassification were not initialized from the model checkpoint at google/siglip-base-patch16-224 and are newly initialized: ['classifier.bias', 'classifier.weight']\n", "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n", "max_steps is given, it will override any value given in num_train_epochs\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "62cf2fac81474c0489e3d8a186f5d7e7", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/1000 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 4.8988, 'grad_norm': 13.904827117919922, 'learning_rate': 4.9500000000000004e-05, 'epoch': 0.08}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c28285179e80407b88502075cd43b367", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 4.470274925231934, 'eval_accuracy': 0.06316812439261418, 'eval_f1': 0.029011981953563824, 'eval_precision': 0.045559997172735935, 'eval_recall': 0.06239270982119706, 'eval_runtime': 56.0665, 'eval_samples_per_second': 73.413, 'eval_steps_per_second': 2.301, 'epoch': 0.08}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 4.4323, 'grad_norm': 16.102428436279297, 'learning_rate': 4.9e-05, 'epoch': 0.16}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b649d164c817435992db739904461dd9", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 3.831702470779419, 'eval_accuracy': 0.15403304178814384, 'eval_f1': 0.10331521860330062, 'eval_precision': 0.14902565665021397, 'eval_recall': 0.14346391343088108, 'eval_runtime': 56.3356, 'eval_samples_per_second': 73.062, 'eval_steps_per_second': 2.29, 'epoch': 0.16}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 3.8517, 'grad_norm': 22.661453247070312, 'learning_rate': 4.85e-05, 'epoch': 0.23}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "eff1bd069a2947789f76a31e5ed76616", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 2.9889109134674072, 'eval_accuracy': 0.2786686103012634, 'eval_f1': 0.22148268196593818, 'eval_precision': 0.31313534584180364, 'eval_recall': 0.2661022909628915, 'eval_runtime': 55.7035, 'eval_samples_per_second': 73.891, 'eval_steps_per_second': 2.316, 'epoch': 0.23}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 3.4059, 'grad_norm': 19.435659408569336, 'learning_rate': 4.8e-05, 'epoch': 0.31}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "06f77fe5785047ad8cbfb702fece1c3f", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 2.348139524459839, 'eval_accuracy': 0.3753644314868805, 'eval_f1': 0.3338742806328851, 'eval_precision': 0.4429205508965872, 'eval_recall': 0.37024333448218133, 'eval_runtime': 55.5723, 'eval_samples_per_second': 74.066, 'eval_steps_per_second': 2.321, 'epoch': 0.31}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 2.8496, 'grad_norm': 27.96540069580078, 'learning_rate': 4.75e-05, 'epoch': 0.39}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e30403ca7ad44e0fb40ca373836bb395", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 2.352940559387207, 'eval_accuracy': 0.3649173955296404, 'eval_f1': 0.34257634372027185, 'eval_precision': 0.5045809610502558, 'eval_recall': 0.36371840476338524, 'eval_runtime': 55.7452, 'eval_samples_per_second': 73.836, 'eval_steps_per_second': 2.314, 'epoch': 0.39}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 2.597, 'grad_norm': 29.74655532836914, 'learning_rate': 4.7e-05, 'epoch': 0.47}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6fd7b8e8dec54e738237ce3c256482b4", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 1.6990206241607666, 'eval_accuracy': 0.5349854227405247, 'eval_f1': 0.5160245045714208, 'eval_precision': 0.6055602844124631, 'eval_recall': 0.5288938132208595, 'eval_runtime': 55.9682, 'eval_samples_per_second': 73.542, 'eval_steps_per_second': 2.305, 'epoch': 0.47}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 2.2791, 'grad_norm': 20.912506103515625, 'learning_rate': 4.6500000000000005e-05, 'epoch': 0.54}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "35cf5b9326714b539e997bdf1253f076", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1509: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 1.545644760131836, 'eval_accuracy': 0.564868804664723, 'eval_f1': 0.5345168452084955, 'eval_precision': 0.6425885113978109, 'eval_recall': 0.5591101994078537, 'eval_runtime': 55.9713, 'eval_samples_per_second': 73.538, 'eval_steps_per_second': 2.305, 'epoch': 0.54}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 2.056, 'grad_norm': 28.197980880737305, 'learning_rate': 4.600000000000001e-05, 'epoch': 0.62}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "69f596208ce844589921deb6173dc4fe", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'eval_loss': 1.5036628246307373, 'eval_accuracy': 0.5677842565597667, 'eval_f1': 0.5556534297685572, 'eval_precision': 0.6358520028284579, 'eval_recall': 0.5658027622107726, 'eval_runtime': 55.8216, 'eval_samples_per_second': 73.735, 'eval_steps_per_second': 2.311, 'epoch': 0.62}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/andrewmayes/Openclassroom/CanineNet/env/lib/python3.12/site-packages/torch/utils/checkpoint.py:464: UserWarning: torch.utils.checkpoint: the use_reentrant parameter should be passed explicitly. In version 2.4 we will raise an exception if use_reentrant is not passed. use_reentrant=False is recommended, but if you need to preserve the current default behavior, you can pass use_reentrant=True. Refer to docs for more details on the differences between the two variants.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'loss': 1.9135, 'grad_norm': 26.066190719604492, 'learning_rate': 4.55e-05, 'epoch': 0.7}\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b4fa36f7011f4304af110877c159383a", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/129 [00:00, ?it/s]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "metrics = {metric: evaluate.load(metric) for metric in METRICS}\n", "for lr in [5e-3, 5e-4, 5e-5]: # 5e-5\n", " for batch in [32, 64, 128, 32]: # 32\n", " for model_name in [\"google/vit-base-patch16-224\", \"microsoft/swinv2-base-patch4-window16-256\", \"google/siglip-base-patch16-224\"]: # \"facebook/dinov2-base\"\n", " if ((lr != 5e-5) & (batch != 32)) or ((lr != 5e-5) & (batch != 64) & (model_name != \"google/vit-base-patch16-224\")):\n", " image_processor = AutoImageProcessor.from_pretrained(model_name)\n", " model = AutoModelForImageClassification.from_pretrained(\n", " model_name,\n", " num_labels=len(label2int),\n", " id2label=int2label,\n", " label2id=label2int,\n", " ignore_mismatched_sizes=True,\n", " )\n", "\n", " # Then, in your transformations:\n", " def train_transform(examples, num_ops=10, magnitude=9, num_magnitude_bins=31):\n", "\n", " transformation = v2.Compose(\n", " [\n", " v2.RandAugment(\n", " num_ops=num_ops,\n", " magnitude=magnitude,\n", " num_magnitude_bins=num_magnitude_bins,\n", " )\n", " ]\n", " )\n", " # Ensure each image has three dimensions (in this case, ensure it's RGB)\n", " examples[\"pixel_values\"] = [\n", " image.convert(\"RGB\") for image in examples[\"pixel_values\"]\n", " ]\n", " # Apply transformations\n", " examples[\"pixel_values\"] = [\n", " image_processor(transformation(image), return_tensors=\"pt\")[\n", " \"pixel_values\"\n", " ].squeeze()\n", " for image in examples[\"pixel_values\"]\n", " ]\n", " return examples\n", "\n", "\n", " def test_transform(examples):\n", " # Ensure each image is RGB\n", " examples[\"pixel_values\"] = [\n", " image.convert(\"RGB\") for image in examples[\"pixel_values\"]\n", " ]\n", " # Apply processing\n", " examples[\"pixel_values\"] = [\n", " image_processor(image, return_tensors=\"pt\")[\"pixel_values\"].squeeze()\n", " for image in examples[\"pixel_values\"]\n", " ]\n", " return examples\n", "\n", "\n", " def compute_metrics(eval_pred):\n", " predictions, labels = eval_pred\n", " # predictions = np.argmax(logits, axis=-1)\n", " results = {}\n", " for key, val in metrics.items():\n", " if \"accuracy\" == key:\n", " result = next(\n", " iter(val.compute(predictions=predictions, references=labels).items())\n", " )\n", " if \"accuracy\" != key:\n", " result = next(\n", " iter(\n", " val.compute(\n", " predictions=predictions, references=labels, average=\"macro\"\n", " ).items()\n", " )\n", " )\n", " results[result[0]] = result[1]\n", " return results\n", "\n", "\n", " def collate_fn(examples):\n", " pixel_values = torch.stack([example[\"pixel_values\"] for example in examples])\n", " labels = torch.tensor([example[\"label\"] for example in examples])\n", " return {\"pixel_values\": pixel_values, \"labels\": labels}\n", "\n", "\n", " def preprocess_logits_for_metrics(logits, labels):\n", " \"\"\"\n", " Original Trainer may have a memory leak.\n", " This is a workaround to avoid storing too many tensors that are not needed.\n", " \"\"\"\n", " pred_ids = torch.argmax(logits, dim=-1)\n", " return pred_ids\n", "\n", " ds[\"train\"].set_transform(train_transform)\n", " ds[\"test\"].set_transform(test_transform)\n", "\n", " training_args = TrainingArguments(**CONFIG[\"training_args\"])\n", " training_args.per_device_train_batch_size = batch\n", " training_args.per_device_eval_batch_size = batch\n", " training_args.hub_model_id = f\"amaye15/{model_name.replace('/','-')}-batch{batch}-lr{lr}-standford-dogs\"\n", "\n", " mlflow.start_run(run_name=f\"{model_name.replace('/','-')}-batch{batch}-lr{lr}\")\n", "\n", " trainer = Trainer(\n", " model=model,\n", " args=training_args,\n", " train_dataset=ds[\"train\"],\n", " eval_dataset=ds[\"test\"],\n", " tokenizer=image_processor,\n", " data_collator=collate_fn,\n", " compute_metrics=compute_metrics,\n", " # callbacks=[early_stopping_callback],\n", " preprocess_logits_for_metrics=preprocess_logits_for_metrics,\n", " )\n", "\n", " # Train the model\n", " trainer.train()\n", "\n", " trainer.push_to_hub()\n", "\n", " mlflow.end_run()" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'mlflow' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mmlflow\u001b[49m\u001b[38;5;241m.\u001b[39mend_run()\n", "\u001b[0;31mNameError\u001b[0m: name 'mlflow' is not defined" ] } ], "source": [ "mlflow.end_run()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# training_args = TrainingArguments(**CONFIG[\"training_args\"])\n", "\n", "# image_processor = AutoImageProcessor.from_pretrained(MODELS)\n", "# model = AutoModelForImageClassification.from_pretrained(\n", "# MODELS,\n", "# num_labels=len(CONFIG[\"label2int\"]),\n", "# id2label=CONFIG[\"label2int\"],\n", "# label2id=CONFIG[\"int2label\"],\n", "# ignore_mismatched_sizes=True,\n", "# )\n", "\n", "\n", "# training_args = TrainingArguments(**CONFIG[\"training_args\"])\n", "\n", "# trainer = Trainer(\n", "# model=model,\n", "# args=training_args,\n", "# train_dataset=ds[\"train\"],\n", "# eval_dataset=ds[\"test\"],\n", "# tokenizer=image_processor,\n", "# data_collator=collate_fn,\n", "# compute_metrics=compute_metrics,\n", "# # callbacks=[early_stopping_callback],\n", "# preprocess_logits_for_metrics=preprocess_logits_for_metrics,\n", "# )\n", "\n", "# # Train the model\n", "# trainer.train()\n", "\n", "# mlflow.end_run()" ] } ], "metadata": { "kernelspec": { "display_name": "env", "language": "python", "name": "python3" }, "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.12.3" } }, "nbformat": 4, "nbformat_minor": 2 }