From 31ba987ee586c8c1bc24c8c0e3e3c48b743f2c12 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Formanek=20Bal=C3=A1zs=20Istv=C3=A1n?=
 <formanek.balazs.istvan@itk.ppke.hu>
Date: Thu, 21 Nov 2024 20:44:58 +0100
Subject: [PATCH] finalise inference time measurement

---
 Balanced Accuracy vs. Rotation.png            | Bin 46135 -> 0 bytes
 copy_best_models_to_local.py                  |   2 +
 inference_time_measure.ipynb                  | 163 -----
 time_measure.py                               |  24 +-
 .../final_local_time_measurement_log.txt      | 631 ++++++++++++++++++
 .../local_cpu_time_measurement_log.txt        |   0
 .../local_time_measurement_log.txt            |   0
 .../time_measurement_log.txt                  |   0
 8 files changed, 655 insertions(+), 165 deletions(-)
 delete mode 100644 Balanced Accuracy vs. Rotation.png
 delete mode 100644 inference_time_measure.ipynb
 create mode 100644 time_measurement/final_local_time_measurement_log.txt
 rename local_cpu_time_measurement_log.txt => time_measurement/local_cpu_time_measurement_log.txt (100%)
 rename local_time_measurement_log.txt => time_measurement/local_time_measurement_log.txt (100%)
 rename time_measurement_log.txt => time_measurement/time_measurement_log.txt (100%)

diff --git a/Balanced Accuracy vs. Rotation.png b/Balanced Accuracy vs. Rotation.png
deleted file mode 100644
index 1dc1c97dbf2c4cfb97dcd461eebf592c2d0a50b3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 46135
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

diff --git a/copy_best_models_to_local.py b/copy_best_models_to_local.py
index 567082c..44545d2 100644
--- a/copy_best_models_to_local.py
+++ b/copy_best_models_to_local.py
@@ -1,3 +1,5 @@
+# Copy best models to local folder defined by the folders, the model names and the epoch number 
+# This is an important preliminary step for inference time measurement.
 
 import shutil
 import os
diff --git a/inference_time_measure.ipynb b/inference_time_measure.ipynb
deleted file mode 100644
index 312ab6a..0000000
--- a/inference_time_measure.ipynb
+++ /dev/null
@@ -1,163 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "I cannot work in the virtual environment I created, because it does not have cuda installed with torch. I cannot uptadte it, because it is sotred in the travail folder. \\\n",
-    "Temporary solutions:\n",
-    " 1) use ipynb kernels, because venv works in them\n",
-    " 2) use py scripts with tensorflow2 environment\n",
-    " \n",
-    "Best solution: \\\n",
-    "Create environment for us to store it on travail. I don't know how to do it."
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 4,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Selected image path: /net/travail/bformanek/MRI_dataset/test/T1wCE/136797_T1_3D_EG_ISO_CS_301_1818.4672_2_335.png\n",
-      "cuda is available\n",
-      "Image loaded in 211.623669 ms\n",
-      "Loading model avp_025.pkl\n",
-      "Model loaded in 26.603460 ms\n",
-      "Prediction time for one image: 1.088381 ms\n",
-      "Compete inference time for one image: 239.736557 ms\n"
-     ]
-    }
-   ],
-   "source": [
-    "import torch\n",
-    "import torchvision.transforms as transforms\n",
-    "from torchvision.datasets import ImageFolder\n",
-    "from torch.utils.data import DataLoader\n",
-    "import time\n",
-    "import random\n",
-    "import os\n",
-    "from PIL import Image\n",
-    "\n",
-    "\n",
-    "# find arandom image to evaluate, this might be given for a user input\n",
-    "# Get a random image path from the TEST_FOLDER\n",
-    "def get_random_image_path(folder):\n",
-    "    # Get all subfolders and files\n",
-    "    all_images = []\n",
-    "    for subdir, _, files in os.walk(folder):\n",
-    "        for file in files:\n",
-    "            if file.endswith(('jpg', 'png', 'jpeg')):\n",
-    "                all_images.append(os.path.join(subdir, file))\n",
-    "    \n",
-    "    # Choose a random image path\n",
-    "    random_image_path = random.choice(all_images)\n",
-    "    return random_image_path\n",
-    "\n",
-    "# Randomly select an image path\n",
-    "TEST_FOLDER = '/net/travail/bformanek/MRI_dataset/test'\n",
-    "image_path = get_random_image_path(TEST_FOLDER)\n",
-    "print(f\"Selected image path: {image_path}\")\n",
-    "\n",
-    "# inputs\n",
-    "model_path = '/net/travail/bformanek/checkpoints/transfer_checkpoints_resnet18_adam_amp_criterion_balanced/'\n",
-    "epoch_number = 25\n",
-    "device = 'cuda' # 'cpu' \n",
-    "image_index = 0  # Specify the index of the image you want to evaluate (first image = 0)\n",
-    "\n",
-    "# --------------\n",
-    "# Define number of workers for DataLoader\n",
-    "WORKERS = 8\n",
-    "\n",
-    "# check cuda\n",
-    "if device == 'cuda':\n",
-    "    if torch.cuda.is_available():\n",
-    "        print('cuda is available')\n",
-    "    else:\n",
-    "        print('cuda is not available, change to cpu')\n",
-    "        device = 'cpu'\n",
-    "\n",
-    "# 1) load and transform image\n",
-    "start_time = time.time()\n",
-    "load_image_time_start = start_time\n",
-    "\n",
-    "# Define the transformation for the test data\n",
-    "valid_transform = transforms.Compose([\n",
-    "    transforms.Resize(224),\n",
-    "    transforms.ToTensor()\n",
-    "])\n",
-    "\n",
-    "# Load the image and apply transformations\n",
-    "image = Image.open(image_path).convert('RGB')\n",
-    "image = valid_transform(image).unsqueeze(0)  # Add batch dimension\n",
-    "\n",
-    "load_image_time_end = time.time()\n",
-    "load_image_time = (load_image_time_end - load_image_time_start) * 1000\n",
-    "print(f'Image loaded in {load_image_time:02f} ms')\n",
-    "\n",
-    "\n",
-    "# 2) Measure Model Loading Time\n",
-    "# Get the model name\n",
-    "model_name = f'avp_{epoch_number:03d}.pkl'\n",
-    "print(\"Loading model \" + model_name)\n",
-    "\n",
-    "load_model_time_start = time.time() # start timer\n",
-    "model = torch.load(model_path+model_name, map_location=torch.device('cpu'), weights_only=False)\n",
-    "model.to(device)\n",
-    "load_model_time_end = time.time()\n",
-    "\n",
-    "load_model_time = (load_model_time_end - load_model_time_start) * 1000 # elapsed time in milliseconds\n",
-    "print(f'Model loaded in {load_model_time:02f} ms')\n",
-    "\n",
-    "# Set model to evaluation mode\n",
-    "model.eval()\n",
-    "\n",
-    "# 3) Predict on the single image\n",
-    "image = image.to(device)\n",
-    "prediction_time_start = time.time()\n",
-    "with torch.no_grad():\n",
-    "    # Perform prediction\n",
-    "    output = model(image)\n",
-    "        \n",
-    "end_time = time.time()\n",
-    "prediction_time = (end_time - prediction_time_start) * 1000\n",
-    "print(f'Prediction time for one image: {prediction_time:02f} ms')\n",
-    "\n",
-    "inference_time = (end_time - start_time) * 1000\n",
-    "print(f'Compete inference time for one image: {inference_time:02f} ms')\n",
-    "\n"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": []
-  }
- ],
- "metadata": {
-  "kernelspec": {
-   "display_name": ".venv",
-   "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.11.2"
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/time_measure.py b/time_measure.py
index e043c52..e08d3df 100644
--- a/time_measure.py
+++ b/time_measure.py
@@ -1,3 +1,19 @@
+# Infernece time measurement:
+# Measure inference times for a set of models in a folder (local_model_folder) with random sample images from the datast (test_image_folder)
+# Needed: 
+#   - models loaded into local folder (use copy_best_models_to_local.py)
+#   - define local and server folders, and the number of measurements
+# Script:
+#   0) iterate through the number of measurements
+#   1) copy a random image from the dataset to local (for moer reliable masurement results)
+#   2) evaluate cpu and gpu inference times and gpu memory for every model on the sample image
+#       - on CPU do not use autocast, as the CREMI CPU-s do not support this option
+#       - on GPU use autocast with float16, and calculate memory usage
+#   3) put results to command line
+#   4) remove sample image from local
+# Results:
+#   Log rasults can be found in ./time_measurement folder
+
 import torch
 import torchvision.transforms as transforms
 from torchvision.datasets import ImageFolder
@@ -77,8 +93,11 @@ def inference_time_measurement(model_path, image_path, transform, device = 'cuda
     image = image.to(device)
     prediction_time_start = time.time()
     with torch.no_grad():
-        with torch.autocast(device_type=device, dtype=torch.bfloat16):
-            # Perform prediction
+        if device == 'cuda':
+            with torch.autocast(device_type=device, dtype=torch.bfloat16):
+                # Perform prediction
+                output = model(image)
+        else:
             output = model(image)
             
     end_time = time.time()
@@ -104,6 +123,7 @@ transform = transforms.Compose([
     transforms.ToTensor()
 ])
 
+# Define folders 
 test_image_folder = '/net/travail/bformanek/MRI_dataset/test'
 local_images_folder = '/net/cremi/bformanek/TRDP_II/local_images/'
 local_model_folder = '/net/cremi/bformanek/TRDP_II/local_models/'
diff --git a/time_measurement/final_local_time_measurement_log.txt b/time_measurement/final_local_time_measurement_log.txt
new file mode 100644
index 0000000..fdce7c9
--- /dev/null
+++ b/time_measurement/final_local_time_measurement_log.txt
@@ -0,0 +1,631 @@
+DESCRIPTION:
+
+AUTOCAST with GPU using float16
+NO AUTOCAST with CPU
+
+LOG:
+------------------------------------------------------------------------------
+MEASUREMENT - 1
+Selected image path: /net/travail/bformanek/MRI_dataset/test/T1w/4RTNI_5_S_5006_MR_Sag_IR-SPGR__br_raw_20140821092148809_194_S228381_I440459_2529.7502_0_093.png
+Copied to local image path: /net/cremi/bformanek/TRDP_II/local_images/4RTNI_5_S_5006_MR_Sag_IR-SPGR__br_raw_20140821092148809_194_S228381_I440459_2529.7502_0_093.png
+MODEL: 
+transfer_checkpoints_mobilenetv3_small_100.lamb_in1k_avp_028.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 3.98 ms
+Model loaded: 6.52 ms
+Prediction time for one image: 5.27 ms
+Compete inference time for one image: 15.79 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 0.94 ms
+Model loaded: 9.77 ms
+Prediction time for one image: 2.42 ms
+Compete inference time for one image: 13.23 ms
+GPU memory usage: 6.49755859375 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_efficientnet_b0_adam_amp_criterion_balanced_avp_026.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 28.47 ms
+Model loaded: 15.32 ms
+Prediction time for one image: 24.02 ms
+Compete inference time for one image: 67.83 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.17 ms
+Model loaded: 18.94 ms
+Prediction time for one image: 4.06 ms
+Compete inference time for one image: 24.32 ms
+GPU memory usage: 16.53955078125 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18.fb_ssl_yfcc100m_ft_in1k_avp_022.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 3.69 ms
+Model loaded: 9.40 ms
+Prediction time for one image: 16.13 ms
+Compete inference time for one image: 29.25 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 2.45 ms
+Model loaded: 24.24 ms
+Prediction time for one image: 1.60 ms
+Compete inference time for one image: 28.44 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_mobilenetv4_conv_large.e500_r256_in1k_avp_004.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 1.26 ms
+Model loaded: 85.45 ms
+Prediction time for one image: 24.27 ms
+Compete inference time for one image: 111.01 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.20 ms
+Model loaded: 58.94 ms
+Prediction time for one image: 4.85 ms
+Compete inference time for one image: 65.12 ms
+GPU memory usage: 121.2021484375 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_adam_amp_criterion_balanced_avp_025.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 28.80 ms
+Model loaded: 13.67 ms
+Prediction time for one image: 15.64 ms
+Compete inference time for one image: 58.13 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.30 ms
+Model loaded: 16.55 ms
+Prediction time for one image: 1.54 ms
+Compete inference time for one image: 19.56 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_augmentation2_avp_019.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 4.12 ms
+Model loaded: 9.74 ms
+Prediction time for one image: 10.24 ms
+Compete inference time for one image: 24.13 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.23 ms
+Model loaded: 15.18 ms
+Prediction time for one image: 1.57 ms
+Compete inference time for one image: 18.14 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_augmentation4_avp_024.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 4.38 ms
+Model loaded: 9.80 ms
+Prediction time for one image: 8.86 ms
+Compete inference time for one image: 23.07 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.26 ms
+Model loaded: 15.24 ms
+Prediction time for one image: 1.62 ms
+Compete inference time for one image: 18.26 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18.a2_in1k_avp_012.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 32.95 ms
+Model loaded: 18.90 ms
+Prediction time for one image: 30.13 ms
+Compete inference time for one image: 82.01 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.34 ms
+Model loaded: 16.66 ms
+Prediction time for one image: 1.61 ms
+Compete inference time for one image: 19.77 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_mobilenetv4_hybrid_medium.e500_r224_in1k_avp_007.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 32.95 ms
+Model loaded: 33.24 ms
+Prediction time for one image: 18.13 ms
+Compete inference time for one image: 84.33 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.16 ms
+Model loaded: 34.81 ms
+Prediction time for one image: 6.98 ms
+Compete inference time for one image: 43.10 ms
+GPU memory usage: 38.37353515625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet50_adam_amp_criterion_balanced_avp_018.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 3.16 ms
+Model loaded: 20.71 ms
+Prediction time for one image: 27.57 ms
+Compete inference time for one image: 51.46 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.57 ms
+Model loaded: 39.49 ms
+Prediction time for one image: 3.04 ms
+Compete inference time for one image: 44.25 ms
+GPU memory usage: 90.79150390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_augmentation1_avp_021.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 1.27 ms
+Model loaded: 10.05 ms
+Prediction time for one image: 255.53 ms
+Compete inference time for one image: 266.87 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.28 ms
+Model loaded: 15.42 ms
+Prediction time for one image: 1.60 ms
+Compete inference time for one image: 18.44 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_augmentation3_avp_003.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 32.94 ms
+Model loaded: 15.08 ms
+Prediction time for one image: 407.00 ms
+Compete inference time for one image: 455.05 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.43 ms
+Model loaded: 29.72 ms
+Prediction time for one image: 1.60 ms
+Compete inference time for one image: 32.91 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MEASUREMENT - 2
+Selected image path: /net/travail/bformanek/MRI_dataset/test/T1w/ISYB_sub-0103_T1w_3526.7072_2_121.png
+Copied to local image path: /net/cremi/bformanek/TRDP_II/local_images/ISYB_sub-0103_T1w_3526.7072_2_121.png
+MODEL: 
+transfer_checkpoints_mobilenetv3_small_100.lamb_in1k_avp_028.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 5.28 ms
+Model loaded: 7.64 ms
+Prediction time for one image: 136.10 ms
+Compete inference time for one image: 149.04 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.27 ms
+Model loaded: 12.64 ms
+Prediction time for one image: 2.95 ms
+Compete inference time for one image: 16.98 ms
+GPU memory usage: 6.49755859375 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_efficientnet_b0_adam_amp_criterion_balanced_avp_026.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 2.26 ms
+Model loaded: 12.94 ms
+Prediction time for one image: 380.81 ms
+Compete inference time for one image: 396.03 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.46 ms
+Model loaded: 27.35 ms
+Prediction time for one image: 4.11 ms
+Compete inference time for one image: 33.06 ms
+GPU memory usage: 16.53955078125 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18.fb_ssl_yfcc100m_ft_in1k_avp_022.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 2.46 ms
+Model loaded: 9.83 ms
+Prediction time for one image: 21.66 ms
+Compete inference time for one image: 33.97 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.23 ms
+Model loaded: 14.93 ms
+Prediction time for one image: 1.58 ms
+Compete inference time for one image: 17.89 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_mobilenetv4_conv_large.e500_r256_in1k_avp_004.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 7.52 ms
+Model loaded: 85.92 ms
+Prediction time for one image: 43.71 ms
+Compete inference time for one image: 137.19 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.29 ms
+Model loaded: 60.78 ms
+Prediction time for one image: 4.80 ms
+Compete inference time for one image: 67.02 ms
+GPU memory usage: 121.2021484375 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_adam_amp_criterion_balanced_avp_025.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 28.82 ms
+Model loaded: 15.69 ms
+Prediction time for one image: 17.49 ms
+Compete inference time for one image: 62.04 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.30 ms
+Model loaded: 19.76 ms
+Prediction time for one image: 1.54 ms
+Compete inference time for one image: 22.74 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_augmentation2_avp_019.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 7.35 ms
+Model loaded: 9.51 ms
+Prediction time for one image: 84.01 ms
+Compete inference time for one image: 100.89 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.36 ms
+Model loaded: 16.25 ms
+Prediction time for one image: 1.61 ms
+Compete inference time for one image: 19.37 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_augmentation4_avp_024.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 32.93 ms
+Model loaded: 11.99 ms
+Prediction time for one image: 18.92 ms
+Compete inference time for one image: 63.87 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.40 ms
+Model loaded: 23.62 ms
+Prediction time for one image: 1.62 ms
+Compete inference time for one image: 26.79 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18.a2_in1k_avp_012.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 46.28 ms
+Model loaded: 10.31 ms
+Prediction time for one image: 10.48 ms
+Compete inference time for one image: 67.10 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.31 ms
+Model loaded: 20.27 ms
+Prediction time for one image: 1.61 ms
+Compete inference time for one image: 23.34 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_mobilenetv4_hybrid_medium.e500_r224_in1k_avp_007.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 2.57 ms
+Model loaded: 24.57 ms
+Prediction time for one image: 16.35 ms
+Compete inference time for one image: 43.52 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.13 ms
+Model loaded: 34.75 ms
+Prediction time for one image: 7.01 ms
+Compete inference time for one image: 43.04 ms
+GPU memory usage: 38.37353515625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet50_adam_amp_criterion_balanced_avp_018.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 6.96 ms
+Model loaded: 19.64 ms
+Prediction time for one image: 142.76 ms
+Compete inference time for one image: 169.39 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.36 ms
+Model loaded: 39.25 ms
+Prediction time for one image: 3.17 ms
+Compete inference time for one image: 43.94 ms
+GPU memory usage: 90.79150390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_augmentation1_avp_021.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 26.83 ms
+Model loaded: 10.12 ms
+Prediction time for one image: 12.16 ms
+Compete inference time for one image: 49.14 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.37 ms
+Model loaded: 17.14 ms
+Prediction time for one image: 1.58 ms
+Compete inference time for one image: 20.25 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_augmentation3_avp_003.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 31.86 ms
+Model loaded: 11.45 ms
+Prediction time for one image: 18.18 ms
+Compete inference time for one image: 61.52 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.49 ms
+Model loaded: 24.23 ms
+Prediction time for one image: 1.63 ms
+Compete inference time for one image: 27.50 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MEASUREMENT - 3
+Selected image path: /net/travail/bformanek/MRI_dataset/test/T1w/ADNI_035_S_0048_MR_MPR-R__GradWarp__B1_Correction__N3_Br_20070319172419398_S10258_I45187_617.3637_0_091.png
+Copied to local image path: /net/cremi/bformanek/TRDP_II/local_images/ADNI_035_S_0048_MR_MPR-R__GradWarp__B1_Correction__N3_Br_20070319172419398_S10258_I45187_617.3637_0_091.png
+MODEL: 
+transfer_checkpoints_mobilenetv3_small_100.lamb_in1k_avp_028.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 2.09 ms
+Model loaded: 9.40 ms
+Prediction time for one image: 6.46 ms
+Compete inference time for one image: 17.96 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.12 ms
+Model loaded: 11.47 ms
+Prediction time for one image: 2.75 ms
+Compete inference time for one image: 15.48 ms
+GPU memory usage: 6.49755859375 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_efficientnet_b0_adam_amp_criterion_balanced_avp_026.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 31.17 ms
+Model loaded: 18.73 ms
+Prediction time for one image: 99.50 ms
+Compete inference time for one image: 149.42 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.40 ms
+Model loaded: 27.61 ms
+Prediction time for one image: 4.06 ms
+Compete inference time for one image: 33.22 ms
+GPU memory usage: 16.53955078125 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18.fb_ssl_yfcc100m_ft_in1k_avp_022.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 2.15 ms
+Model loaded: 8.53 ms
+Prediction time for one image: 16.30 ms
+Compete inference time for one image: 27.00 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.22 ms
+Model loaded: 23.61 ms
+Prediction time for one image: 1.59 ms
+Compete inference time for one image: 26.58 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_mobilenetv4_conv_large.e500_r256_in1k_avp_004.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 31.95 ms
+Model loaded: 43.30 ms
+Prediction time for one image: 345.96 ms
+Compete inference time for one image: 421.25 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.27 ms
+Model loaded: 107.77 ms
+Prediction time for one image: 4.69 ms
+Compete inference time for one image: 113.85 ms
+GPU memory usage: 121.2021484375 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_adam_amp_criterion_balanced_avp_025.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 6.14 ms
+Model loaded: 10.57 ms
+Prediction time for one image: 106.17 ms
+Compete inference time for one image: 122.91 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.35 ms
+Model loaded: 16.23 ms
+Prediction time for one image: 1.62 ms
+Compete inference time for one image: 19.34 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_augmentation2_avp_019.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 32.94 ms
+Model loaded: 10.64 ms
+Prediction time for one image: 10.76 ms
+Compete inference time for one image: 54.36 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.34 ms
+Model loaded: 16.62 ms
+Prediction time for one image: 1.61 ms
+Compete inference time for one image: 19.71 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_augmentation4_avp_024.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 32.93 ms
+Model loaded: 10.93 ms
+Prediction time for one image: 23.49 ms
+Compete inference time for one image: 67.38 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.40 ms
+Model loaded: 29.04 ms
+Prediction time for one image: 1.79 ms
+Compete inference time for one image: 32.44 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18.a2_in1k_avp_012.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 31.93 ms
+Model loaded: 10.69 ms
+Prediction time for one image: 94.56 ms
+Compete inference time for one image: 137.20 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.44 ms
+Model loaded: 26.99 ms
+Prediction time for one image: 1.66 ms
+Compete inference time for one image: 30.24 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_mobilenetv4_hybrid_medium.e500_r224_in1k_avp_007.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 1.82 ms
+Model loaded: 26.05 ms
+Prediction time for one image: 23.28 ms
+Compete inference time for one image: 51.18 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.26 ms
+Model loaded: 43.98 ms
+Prediction time for one image: 7.86 ms
+Compete inference time for one image: 53.24 ms
+GPU memory usage: 38.37353515625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet50_adam_amp_criterion_balanced_avp_018.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 1.82 ms
+Model loaded: 20.77 ms
+Prediction time for one image: 31.45 ms
+Compete inference time for one image: 54.08 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.44 ms
+Model loaded: 46.23 ms
+Prediction time for one image: 3.35 ms
+Compete inference time for one image: 51.17 ms
+GPU memory usage: 90.79150390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_augmentation1_avp_021.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 5.67 ms
+Model loaded: 9.71 ms
+Prediction time for one image: 25.85 ms
+Compete inference time for one image: 41.26 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.36 ms
+Model loaded: 16.80 ms
+Prediction time for one image: 1.61 ms
+Compete inference time for one image: 19.90 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+MODEL: 
+transfer_checkpoints_resnet18_augmentation3_avp_003.pkl
+DEVICE: cpu
+Inference time masurement using cpu
+Image loaded: 30.93 ms
+Model loaded: 14.38 ms
+Prediction time for one image: 57.81 ms
+Compete inference time for one image: 103.15 ms
+DEVICE: cuda
+cuda is available
+Inference time masurement using cuda
+Image loaded: 1.48 ms
+Model loaded: 23.98 ms
+Prediction time for one image: 1.64 ms
+Compete inference time for one image: 27.26 ms
+GPU memory usage: 43.275390625 MB
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
\ No newline at end of file
diff --git a/local_cpu_time_measurement_log.txt b/time_measurement/local_cpu_time_measurement_log.txt
similarity index 100%
rename from local_cpu_time_measurement_log.txt
rename to time_measurement/local_cpu_time_measurement_log.txt
diff --git a/local_time_measurement_log.txt b/time_measurement/local_time_measurement_log.txt
similarity index 100%
rename from local_time_measurement_log.txt
rename to time_measurement/local_time_measurement_log.txt
diff --git a/time_measurement_log.txt b/time_measurement/time_measurement_log.txt
similarity index 100%
rename from time_measurement_log.txt
rename to time_measurement/time_measurement_log.txt
-- 
GitLab