{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "982e76f5", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:43.297106Z", "iopub.status.busy": "2024-02-29T17:50:43.296820Z", "iopub.status.idle": "2024-02-29T17:50:43.328516Z", "shell.execute_reply": "2024-02-29T17:50:43.327846Z" }, "papermill": { "duration": 0.045827, "end_time": "2024-02-29T17:50:43.330441", "exception": false, "start_time": "2024-02-29T17:50:43.284614", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import joblib\n", "\n", "#joblib.parallel_backend(\"threading\")" ] }, { "cell_type": "code", "execution_count": 2, "id": "675f0b41", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:43.355733Z", "iopub.status.busy": "2024-02-29T17:50:43.354986Z", "iopub.status.idle": "2024-02-29T17:50:43.361827Z", "shell.execute_reply": "2024-02-29T17:50:43.360970Z" }, "papermill": { "duration": 0.021501, "end_time": "2024-02-29T17:50:43.363729", "exception": false, "start_time": "2024-02-29T17:50:43.342228", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "'\\n%cd /kaggle/working\\n#!git clone https://github.com/R-N/ml-utility-loss\\n%cd ml-utility-loss\\n!git pull\\n#!pip install .\\n!pip install . --no-deps --force-reinstall --upgrade\\n#'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"\"\"\n", "%cd /kaggle/working\n", "#!git clone https://github.com/R-N/ml-utility-loss\n", "%cd ml-utility-loss\n", "!git pull\n", "#!pip install .\n", "!pip install . --no-deps --force-reinstall --upgrade\n", "#\"\"\"" ] }, { "cell_type": "code", "execution_count": 3, "id": "5ae30f5c", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:43.386989Z", "iopub.status.busy": "2024-02-29T17:50:43.386508Z", "iopub.status.idle": "2024-02-29T17:50:43.390341Z", "shell.execute_reply": "2024-02-29T17:50:43.389543Z" }, "papermill": { "duration": 0.017484, "end_time": "2024-02-29T17:50:43.392283", "exception": false, "start_time": "2024-02-29T17:50:43.374799", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "plt.rcParams['figure.figsize'] = [3,3]" ] }, { "cell_type": "code", "execution_count": 4, "id": "9f42c810", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:43.415937Z", "iopub.status.busy": "2024-02-29T17:50:43.415284Z", "iopub.status.idle": "2024-02-29T17:50:43.419146Z", "shell.execute_reply": "2024-02-29T17:50:43.418407Z" }, "executionInfo": { "elapsed": 678, "status": "ok", "timestamp": 1696841022168, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "ns5hFcVL2yvs", "papermill": { "duration": 0.017482, "end_time": "2024-02-29T17:50:43.421010", "exception": false, "start_time": "2024-02-29T17:50:43.403528", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "datasets = [\n", " \"insurance\",\n", " \"treatment\",\n", " \"contraceptive\"\n", "]\n", "\n", "study_dir = \"./\"" ] }, { "cell_type": "code", "execution_count": 5, "id": "85d0c8ce", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:43.444561Z", "iopub.status.busy": "2024-02-29T17:50:43.444080Z", "iopub.status.idle": "2024-02-29T17:50:43.449576Z", "shell.execute_reply": "2024-02-29T17:50:43.448694Z" }, "papermill": { "duration": 0.019709, "end_time": "2024-02-29T17:50:43.451711", "exception": false, "start_time": "2024-02-29T17:50:43.432002", "status": "completed" }, "tags": [ "parameters" ] }, "outputs": [], "source": [ "#Parameters\n", "import os\n", "\n", "path_prefix = \"../../../../\"\n", "\n", "dataset_dir = os.path.join(path_prefix, \"ml-utility-loss/datasets\")\n", "dataset_name = \"treatment\"\n", "model_name=\"ml_utility_2\"\n", "models = [\"tvae\", \"realtabformer\", \"lct_gan\", \"tab_ddpm_concat\"]\n", "single_model = \"lct_gan\"\n", "random_seed = 42\n", "gp = True\n", "gp_multiply = True\n", "folder = \"eval\"\n", "debug = False\n", "path = None\n", "param_index = 0\n", "allow_same_prediction = False" ] }, { "cell_type": "code", "execution_count": 6, "id": "eb7d978f", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:43.479388Z", "iopub.status.busy": "2024-02-29T17:50:43.479092Z", "iopub.status.idle": "2024-02-29T17:50:43.484500Z", "shell.execute_reply": "2024-02-29T17:50:43.483600Z" }, "papermill": { "duration": 0.021864, "end_time": "2024-02-29T17:50:43.486766", "exception": false, "start_time": "2024-02-29T17:50:43.464902", "status": "completed" }, "tags": [ "injected-parameters" ] }, "outputs": [], "source": [ "# Parameters\n", "dataset = \"insurance\"\n", "dataset_name = \"insurance\"\n", "single_model = \"tvae\"\n", "gp = False\n", "gp_multiply = False\n", "random_seed = 4\n", "debug = False\n", "folder = \"eval\"\n", "path_prefix = \"../../../../\"\n", "path = \"eval/insurance/tvae/4\"\n", "param_index = 2\n", "allow_same_prediction = True\n" ] }, { "cell_type": "code", "execution_count": null, "id": "bd7c02d6", "metadata": { "papermill": { "duration": 0.011535, "end_time": "2024-02-29T17:50:43.510177", "exception": false, "start_time": "2024-02-29T17:50:43.498642", "status": "completed" }, "tags": [] }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 7, "id": "5f45b1d0", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:43.535341Z", "iopub.status.busy": "2024-02-29T17:50:43.534859Z", "iopub.status.idle": "2024-02-29T17:50:43.544013Z", "shell.execute_reply": "2024-02-29T17:50:43.543203Z" }, "executionInfo": { "elapsed": 7, "status": "ok", "timestamp": 1696841022169, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "UdvXYv3c3LXy", "papermill": { "duration": 0.023834, "end_time": "2024-02-29T17:50:43.545888", "exception": false, "start_time": "2024-02-29T17:50:43.522054", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/kaggle/working\n", "/kaggle/working/eval/insurance/tvae/4\n" ] } ], "source": [ "from pathlib import Path\n", "import os\n", "\n", "%cd /kaggle/working/\n", "\n", "if path is None:\n", " path = os.path.join(folder, dataset_name, single_model, random_seed)\n", "Path(path).mkdir(parents=True, exist_ok=True)\n", "\n", "%cd {path}" ] }, { "cell_type": "code", "execution_count": 8, "id": "f85bf540", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:43.570861Z", "iopub.status.busy": "2024-02-29T17:50:43.570608Z", "iopub.status.idle": "2024-02-29T17:50:45.715341Z", "shell.execute_reply": "2024-02-29T17:50:45.714481Z" }, "papermill": { "duration": 2.159597, "end_time": "2024-02-29T17:50:45.717481", "exception": false, "start_time": "2024-02-29T17:50:43.557884", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Set seed to \n" ] } ], "source": [ "from ml_utility_loss.util import seed\n", "if single_model:\n", " model_name=f\"{model_name}_{single_model}\"\n", "if random_seed is not None:\n", " seed(random_seed)\n", " print(\"Set seed to\", seed)" ] }, { "cell_type": "code", "execution_count": 9, "id": "8489feae", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:45.744285Z", "iopub.status.busy": "2024-02-29T17:50:45.743770Z", "iopub.status.idle": "2024-02-29T17:50:45.755553Z", "shell.execute_reply": "2024-02-29T17:50:45.754865Z" }, "papermill": { "duration": 0.027328, "end_time": "2024-02-29T17:50:45.757462", "exception": false, "start_time": "2024-02-29T17:50:45.730134", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import json\n", "import os\n", "\n", "df = pd.read_csv(os.path.join(dataset_dir, f\"{dataset_name}.csv\"))\n", "with open(os.path.join(dataset_dir, f\"{dataset_name}.json\")) as f:\n", " info = json.load(f)" ] }, { "cell_type": "code", "execution_count": 10, "id": "debcc684", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:45.780934Z", "iopub.status.busy": "2024-02-29T17:50:45.780680Z", "iopub.status.idle": "2024-02-29T17:50:45.787778Z", "shell.execute_reply": "2024-02-29T17:50:45.787084Z" }, "executionInfo": { "elapsed": 6, "status": "ok", "timestamp": 1696841022169, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "Vrl2QkoV3o_8", "papermill": { "duration": 0.020988, "end_time": "2024-02-29T17:50:45.789578", "exception": false, "start_time": "2024-02-29T17:50:45.768590", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "task = info[\"task\"]\n", "target = info[\"target\"]\n", "cat_features = info[\"cat_features\"]\n", "mixed_features = info[\"mixed_features\"]\n", "longtail_features = info[\"longtail_features\"]\n", "integer_features = info[\"integer_features\"]\n", "\n", "test = df.sample(frac=0.2, random_state=42)\n", "train = df[~df.index.isin(test.index)]" ] }, { "cell_type": "code", "execution_count": 11, "id": "7538184a", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:45.813449Z", "iopub.status.busy": "2024-02-29T17:50:45.812848Z", "iopub.status.idle": "2024-02-29T17:50:45.911458Z", "shell.execute_reply": "2024-02-29T17:50:45.910597Z" }, "executionInfo": { "elapsed": 6, "status": "ok", "timestamp": 1696841022169, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "TilUuFk9vqMb", "papermill": { "duration": 0.112764, "end_time": "2024-02-29T17:50:45.913541", "exception": false, "start_time": "2024-02-29T17:50:45.800777", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import ml_utility_loss.synthesizers.tab_ddpm.params as TAB_DDPM_PARAMS\n", "import ml_utility_loss.synthesizers.lct_gan.params as LCT_GAN_PARAMS\n", "import ml_utility_loss.synthesizers.realtabformer.params as RTF_PARAMS\n", "from ml_utility_loss.synthesizers.realtabformer.params.default import GPT2_PARAMS, REALTABFORMER_PARAMS\n", "from ml_utility_loss.util import filter_dict_2, filter_dict\n", "\n", "tab_ddpm_params = getattr(TAB_DDPM_PARAMS, dataset_name).BEST\n", "lct_gan_params = getattr(LCT_GAN_PARAMS, dataset_name).BEST\n", "lct_ae_params = filter_dict_2(lct_gan_params, LCT_GAN_PARAMS.default.AE_PARAMS)\n", "rtf_params = getattr(RTF_PARAMS, dataset_name).BEST\n", "rtf_params = filter_dict(rtf_params, REALTABFORMER_PARAMS)\n", "\n", "lct_ae_embedding_size=lct_gan_params[\"embedding_size\"]\n", "tab_ddpm_normalization=\"quantile\"\n", "tab_ddpm_cat_encoding=tab_ddpm_params[\"cat_encoding\"]\n", "#tab_ddpm_cat_encoding=\"one-hot\"\n", "tab_ddpm_y_policy=\"default\"\n", "tab_ddpm_is_y_cond=True" ] }, { "cell_type": "code", "execution_count": 12, "id": "cca61838", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:45.939348Z", "iopub.status.busy": "2024-02-29T17:50:45.939072Z", "iopub.status.idle": "2024-02-29T17:50:50.480136Z", "shell.execute_reply": "2024-02-29T17:50:50.479366Z" }, "executionInfo": { "elapsed": 3113, "status": "ok", "timestamp": 1696841025277, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "7Abt8nStvr9Z", "papermill": { "duration": 4.556435, "end_time": "2024-02-29T17:50:50.482677", "exception": false, "start_time": "2024-02-29T17:50:45.926242", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2024-02-29 17:50:48.176006: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n", "2024-02-29 17:50:48.176066: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n", "2024-02-29 17:50:48.177642: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n" ] } ], "source": [ "from ml_utility_loss.loss_learning.estimator.pipeline import load_lct_ae\n", "\n", "lct_ae = load_lct_ae(\n", " dataset_name=dataset_name,\n", " model_dir=os.path.join(path_prefix, \"ml-utility-loss/models\"),\n", " model_name=\"lct_ae\",\n", " df_name=\"df\",\n", ")\n", "lct_ae = None" ] }, { "cell_type": "code", "execution_count": 13, "id": "6f83b7b6", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:50.508054Z", "iopub.status.busy": "2024-02-29T17:50:50.507215Z", "iopub.status.idle": "2024-02-29T17:50:50.513947Z", "shell.execute_reply": "2024-02-29T17:50:50.513275Z" }, "papermill": { "duration": 0.021175, "end_time": "2024-02-29T17:50:50.515900", "exception": false, "start_time": "2024-02-29T17:50:50.494725", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "from ml_utility_loss.loss_learning.estimator.pipeline import load_rtf_embed\n", "\n", "rtf_embed = load_rtf_embed(\n", " dataset_name=dataset_name,\n", " model_dir=os.path.join(path_prefix, \"ml-utility-loss/models\"),\n", " model_name=\"realtabformer\",\n", " df_name=\"df\",\n", " ckpt_type=\"best-disc-model\"\n", ")" ] }, { "cell_type": "code", "execution_count": 14, "id": "0026de74", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:50.541991Z", "iopub.status.busy": "2024-02-29T17:50:50.541717Z", "iopub.status.idle": "2024-02-29T17:50:58.595638Z", "shell.execute_reply": "2024-02-29T17:50:58.594710Z" }, "executionInfo": { "elapsed": 20137, "status": "ok", "timestamp": 1696841045408, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "tbaguWxAvtPi", "papermill": { "duration": 8.069751, "end_time": "2024-02-29T17:50:58.598157", "exception": false, "start_time": "2024-02-29T17:50:50.528406", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:274: ConvergenceWarning: Initialization 1 did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.\n", " warnings.warn(\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:274: ConvergenceWarning: Initialization 1 did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.\n", " warnings.warn(\n", "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:119: ConvergenceWarning: Number of distinct clusters (6) found smaller than n_clusters (10). Possibly due to duplicate points in X.\n", " .fit(X)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:274: ConvergenceWarning: Initialization 1 did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.\n", " warnings.warn(\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0/1 [00:00 torch.Tensor>,\n", " 'single_model': True,\n", " 'bias': True,\n", " 'bias_final': True,\n", " 'pma_ffn_mode': 'shared',\n", " 'patience': 10,\n", " 'inds_init_mode': 'fixnorm',\n", " 'grad_clip': 0.77,\n", " 'head_final_mul': 'identity',\n", " 'gradient_penalty_mode': {'gradient_penalty': False,\n", " 'calc_grad_m': False,\n", " 'avg_non_role_model_m': False,\n", " 'inverse_avg_non_role_model_m': False},\n", " 'synth_data': 2,\n", " 'dataset_size': 2048,\n", " 'batch_size': 8,\n", " 'epochs': 100,\n", " 'n_warmup_steps': 100,\n", " 'Optim': torch_optimizer.diffgrad.DiffGrad,\n", " 'loss_balancer_beta': 0.75,\n", " 'loss_balancer_r': 0.95,\n", " 'fixed_role_model': 'tvae',\n", " 'd_model': 256,\n", " 'attn_activation': torch.nn.modules.activation.LeakyReLU,\n", " 'tf_d_inner': 512,\n", " 'tf_n_layers_enc': 4,\n", " 'tf_n_head': 64,\n", " 'tf_activation': torch.nn.modules.activation.ReLU6,\n", " 'tf_activation_final': ml_utility_loss.activations.LeakyHardsigmoid,\n", " 'ada_d_hid': 1024,\n", " 'ada_n_layers': 7,\n", " 'ada_activation': torch.nn.modules.activation.ReLU,\n", " 'ada_activation_final': torch.nn.modules.activation.Softsign,\n", " 'head_d_hid': 128,\n", " 'head_n_layers': 9,\n", " 'head_n_head': 64,\n", " 'head_activation': torch.nn.modules.activation.RReLU,\n", " 'head_activation_final': torch.nn.modules.activation.Softsign,\n", " 'models': ['tvae'],\n", " 'max_seconds': 3600,\n", " 'tf_lora': False,\n", " 'tf_num_inds': 32,\n", " 'ada_n_seeds': 0,\n", " 'gradient_penalty_kwargs': {'mag_loss': True,\n", " 'mse_mag': False,\n", " 'mag_corr': False,\n", " 'seq_mag': False,\n", " 'cos_loss': False,\n", " 'mag_corr_kwargs': {'only_sign': False},\n", " 'cos_loss_kwargs': {'only_sign': True, 'cos_matrix': False},\n", " 'mse_mag_kwargs': {'target': 0.1, 'multiply': False}}}" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import ml_utility_loss.loss_learning.estimator.params2 as PARAMS\n", "from ml_utility_loss.tuning import map_parameters\n", "from ml_utility_loss.loss_learning.estimator.params.default import update_param_space, update_param_space_2\n", "import wandb\n", "\n", "#\"\"\"\n", "param_space = {\n", " **getattr(PARAMS, dataset_name).PARAM_SPACE,\n", "}\n", "params = {\n", " **getattr(PARAMS, dataset_name).BESTS[param_index],\n", "}\n", "if gp:\n", " params[\"gradient_penalty_mode\"] = \"ALL\"\n", " params[\"mse_mag\"] = True\n", " if gp_multiply:\n", " params[\"mse_mag_multiply\"] = True\n", " params[\"mse_mag_target\"] = 1.0\n", " else:\n", " params[\"mse_mag_multiply\"] = False\n", " params[\"mse_mag_target\"] = 0.1\n", "else:\n", " params[\"gradient_penalty_mode\"] = \"NONE\"\n", " params[\"mse_mag\"] = False\n", "params[\"single_model\"] = False\n", "if models:\n", " params[\"models\"] = models\n", "if single_model:\n", " params[\"fixed_role_model\"] = single_model\n", " params[\"single_model\"] = True\n", " params[\"models\"] = [single_model]\n", "if params[\"fixed_role_model\"] == \"realtabformer\" and dataset_name == \"treatment\":\n", " params[\"batch_size\"] = 2\n", "params[\"max_seconds\"] = 3600\n", "params[\"patience\"] = 10\n", "params[\"epochs\"] = 100\n", "if debug:\n", " params[\"epochs\"] = 2\n", "with open(\"params.json\", \"w\") as f:\n", " json.dump(params, f)\n", "params = map_parameters(params, param_space=param_space)\n", "params" ] }, { "cell_type": "code", "execution_count": 19, "id": "a48bd9e9", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:59.090944Z", "iopub.status.busy": "2024-02-29T17:50:59.090399Z", "iopub.status.idle": "2024-02-29T17:50:59.156842Z", "shell.execute_reply": "2024-02-29T17:50:59.156038Z" }, "papermill": { "duration": 0.081787, "end_time": "2024-02-29T17:50:59.158740", "exception": false, "start_time": "2024-02-29T17:50:59.076953", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "load_dataset_3_factory 2\n", "Caching in ../../../../insurance/_cache/tvae/all inf False\n", "Splitting without random!\n", "Split with reverse index!\n", "../../../../ml-utility-loss/datasets_2/insurance [80, 20]\n", "Caching in ../../../../insurance/_cache4/tvae/all inf False\n", "Splitting without random!\n", "Split with reverse index!\n", "../../../../ml-utility-loss/datasets_4/insurance [80, 20]\n", "Caching in ../../../../insurance/_cache5/tvae/all inf False\n", "Splitting without random!\n", "Split with reverse index!\n", "../../../../ml-utility-loss/datasets_5/insurance [160, 40]\n", "[320, 80]\n", "[320, 80]\n" ] } ], "source": [ "train_set, val_set = datasetsn(model=params[\"fixed_role_model\"], synth_data=params[\"synth_data\"])" ] }, { "cell_type": "code", "execution_count": 20, "id": "2fcb1418", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "execution": { "iopub.execute_input": "2024-02-29T17:50:59.187387Z", "iopub.status.busy": "2024-02-29T17:50:59.187119Z", "iopub.status.idle": "2024-02-29T17:50:59.608009Z", "shell.execute_reply": "2024-02-29T17:50:59.607099Z" }, "executionInfo": { "elapsed": 396850, "status": "error", "timestamp": 1696841446059, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "_bt1MQc5kpSk", "outputId": "01c1d3e5-ac64-461d-835a-b76f4a66e6d6", "papermill": { "duration": 0.438163, "end_time": "2024-02-29T17:50:59.610083", "exception": false, "start_time": "2024-02-29T17:50:59.171920", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Creating model of type \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[*] Embedding False True\n", "['tvae'] 1\n" ] } ], "source": [ "from ml_utility_loss.loss_learning.estimator.model.pipeline import remove_non_model_params\n", "from ml_utility_loss.loss_learning.estimator.pipeline import create_model\n", "from ml_utility_loss.util import filter_dict, clear_memory\n", "\n", "clear_memory()\n", "\n", "params2 = remove_non_model_params(params)\n", "adapters = filter_dict(preprocessor.adapter_sizes, params[\"models\"])\n", "\n", "model = create_model(\n", " adapters=adapters,\n", " #Body=\"twin_encoder\",\n", " **params2,\n", ")\n", "#cf.apply_weight_standardization(model, n_last_layers_ignore=0)\n", "print(model.models, len(model.adapters))" ] }, { "cell_type": "code", "execution_count": 21, "id": "938f94fc", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:59.638580Z", "iopub.status.busy": "2024-02-29T17:50:59.638286Z", "iopub.status.idle": "2024-02-29T17:50:59.642446Z", "shell.execute_reply": "2024-02-29T17:50:59.641637Z" }, "papermill": { "duration": 0.020458, "end_time": "2024-02-29T17:50:59.644327", "exception": false, "start_time": "2024-02-29T17:50:59.623869", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "study_name=f\"{model_name}_{dataset_name}\"" ] }, { "cell_type": "code", "execution_count": 22, "id": "12fb613e", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:59.670684Z", "iopub.status.busy": "2024-02-29T17:50:59.670408Z", "iopub.status.idle": "2024-02-29T17:50:59.676722Z", "shell.execute_reply": "2024-02-29T17:50:59.675923Z" }, "papermill": { "duration": 0.021573, "end_time": "2024-02-29T17:50:59.678594", "exception": false, "start_time": "2024-02-29T17:50:59.657021", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "9638529" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def count_parameters(model):\n", " return sum(p.numel() for p in model.parameters() if p.requires_grad)\n", "\n", "count_parameters(model)" ] }, { "cell_type": "code", "execution_count": 23, "id": "bd386e57", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:59.705226Z", "iopub.status.busy": "2024-02-29T17:50:59.704962Z", "iopub.status.idle": "2024-02-29T17:50:59.791397Z", "shell.execute_reply": "2024-02-29T17:50:59.790570Z" }, "papermill": { "duration": 0.101763, "end_time": "2024-02-29T17:50:59.793213", "exception": false, "start_time": "2024-02-29T17:50:59.691450", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "========================================================================================================================\n", "Layer (type:depth-idx) Output Shape Param #\n", "========================================================================================================================\n", "MLUtilitySingle [2, 1071, 36] --\n", "├─Adapter: 1-1 [2, 1071, 36] --\n", "│ └─Sequential: 2-1 [2, 1071, 256] --\n", "│ │ └─FeedForward: 3-1 [2, 1071, 1024] --\n", "│ │ │ └─Linear: 4-1 [2, 1071, 1024] 37,888\n", "│ │ │ └─ReLU: 4-2 [2, 1071, 1024] --\n", "│ │ └─FeedForward: 3-2 [2, 1071, 1024] --\n", "│ │ │ └─Linear: 4-3 [2, 1071, 1024] 1,049,600\n", "│ │ │ └─ReLU: 4-4 [2, 1071, 1024] --\n", "│ │ └─FeedForward: 3-3 [2, 1071, 1024] --\n", "│ │ │ └─Linear: 4-5 [2, 1071, 1024] 1,049,600\n", "│ │ │ └─ReLU: 4-6 [2, 1071, 1024] --\n", "│ │ └─FeedForward: 3-4 [2, 1071, 1024] --\n", "│ │ │ └─Linear: 4-7 [2, 1071, 1024] 1,049,600\n", "│ │ │ └─ReLU: 4-8 [2, 1071, 1024] --\n", "│ │ └─FeedForward: 3-5 [2, 1071, 1024] --\n", "│ │ │ └─Linear: 4-9 [2, 1071, 1024] 1,049,600\n", "│ │ │ └─ReLU: 4-10 [2, 1071, 1024] --\n", "│ │ └─FeedForward: 3-6 [2, 1071, 1024] --\n", "│ │ │ └─Linear: 4-11 [2, 1071, 1024] 1,049,600\n", "│ │ │ └─ReLU: 4-12 [2, 1071, 1024] --\n", "│ │ └─FeedForward: 3-7 [2, 1071, 256] --\n", "│ │ │ └─Linear: 4-13 [2, 1071, 256] 262,400\n", "│ │ │ └─Softsign: 4-14 [2, 1071, 256] --\n", "├─Adapter: 1-2 [2, 267, 36] (recursive)\n", "│ └─Sequential: 2-2 [2, 267, 256] (recursive)\n", "│ │ └─FeedForward: 3-8 [2, 267, 1024] (recursive)\n", "│ │ │ └─Linear: 4-15 [2, 267, 1024] (recursive)\n", "│ │ │ └─ReLU: 4-16 [2, 267, 1024] --\n", "│ │ └─FeedForward: 3-9 [2, 267, 1024] (recursive)\n", "│ │ │ └─Linear: 4-17 [2, 267, 1024] (recursive)\n", "│ │ │ └─ReLU: 4-18 [2, 267, 1024] --\n", "│ │ └─FeedForward: 3-10 [2, 267, 1024] (recursive)\n", "│ │ │ └─Linear: 4-19 [2, 267, 1024] (recursive)\n", "│ │ │ └─ReLU: 4-20 [2, 267, 1024] --\n", "│ │ └─FeedForward: 3-11 [2, 267, 1024] (recursive)\n", "│ │ │ └─Linear: 4-21 [2, 267, 1024] (recursive)\n", "│ │ │ └─ReLU: 4-22 [2, 267, 1024] --\n", "│ │ └─FeedForward: 3-12 [2, 267, 1024] (recursive)\n", "│ │ │ └─Linear: 4-23 [2, 267, 1024] (recursive)\n", "│ │ │ └─ReLU: 4-24 [2, 267, 1024] --\n", "│ │ └─FeedForward: 3-13 [2, 267, 1024] (recursive)\n", "│ │ │ └─Linear: 4-25 [2, 267, 1024] (recursive)\n", "│ │ │ └─ReLU: 4-26 [2, 267, 1024] --\n", "│ │ └─FeedForward: 3-14 [2, 267, 256] (recursive)\n", "│ │ │ └─Linear: 4-27 [2, 267, 256] (recursive)\n", "│ │ │ └─Softsign: 4-28 [2, 267, 256] --\n", "├─TwinEncoder: 1-3 [2, 4096] --\n", "│ └─Encoder: 2-3 [2, 16, 256] --\n", "│ │ └─ModuleList: 3-16 -- (recursive)\n", "│ │ │ └─EncoderLayer: 4-29 [2, 1071, 256] --\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-1 [2, 1071, 256] --\n", "│ │ │ │ │ └─TensorInductionPoint: 6-1 [2, 32, 256] 8,192\n", "│ │ │ │ │ └─MultiHeadAttention: 6-2 [2, 32, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-1 [2, 32, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-2 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-3 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-4 [2, 64, 32, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-1 [2, 64, 32, 1071] --\n", "│ │ │ │ │ │ └─Linear: 7-5 [2, 32, 256] 65,792\n", "│ │ │ │ │ │ └─LeakyReLU: 7-6 [2, 32, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-3 [2, 1071, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-7 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-8 [2, 32, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-9 [2, 32, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-10 [2, 64, 1071, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-2 [2, 64, 1071, 32] --\n", "│ │ │ │ │ │ └─Linear: 7-11 [2, 1071, 256] 65,792\n", "│ │ │ │ │ │ └─LeakyReLU: 7-12 [2, 1071, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-2 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-4 [2, 1071, 512] 131,584\n", "│ │ │ │ │ └─ReLU6: 6-5 [2, 1071, 512] --\n", "│ │ │ │ │ └─Linear: 6-6 [2, 1071, 256] 131,328\n", "│ │ │ └─EncoderLayer: 4-30 [2, 1071, 256] --\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-3 [2, 1071, 256] --\n", "│ │ │ │ │ └─TensorInductionPoint: 6-7 [2, 32, 256] 8,192\n", "│ │ │ │ │ └─MultiHeadAttention: 6-8 [2, 32, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-13 [2, 32, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-14 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-15 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-16 [2, 64, 32, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-3 [2, 64, 32, 1071] --\n", "│ │ │ │ │ │ └─Linear: 7-17 [2, 32, 256] 65,792\n", "│ │ │ │ │ │ └─LeakyReLU: 7-18 [2, 32, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-9 [2, 1071, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-19 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-20 [2, 32, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-21 [2, 32, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-22 [2, 64, 1071, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-4 [2, 64, 1071, 32] --\n", "│ │ │ │ │ │ └─Linear: 7-23 [2, 1071, 256] 65,792\n", "│ │ │ │ │ │ └─LeakyReLU: 7-24 [2, 1071, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-4 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-10 [2, 1071, 512] 131,584\n", "│ │ │ │ │ └─ReLU6: 6-11 [2, 1071, 512] --\n", "│ │ │ │ │ └─Linear: 6-12 [2, 1071, 256] 131,328\n", "│ │ │ └─EncoderLayer: 4-31 [2, 1071, 256] --\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-5 [2, 1071, 256] --\n", "│ │ │ │ │ └─TensorInductionPoint: 6-13 [2, 32, 256] 8,192\n", "│ │ │ │ │ └─MultiHeadAttention: 6-14 [2, 32, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-25 [2, 32, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-26 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-27 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-28 [2, 64, 32, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-5 [2, 64, 32, 1071] --\n", "│ │ │ │ │ │ └─Linear: 7-29 [2, 32, 256] 65,792\n", "│ │ │ │ │ │ └─LeakyReLU: 7-30 [2, 32, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-15 [2, 1071, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-31 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-32 [2, 32, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-33 [2, 32, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-34 [2, 64, 1071, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-6 [2, 64, 1071, 32] --\n", "│ │ │ │ │ │ └─Linear: 7-35 [2, 1071, 256] 65,792\n", "│ │ │ │ │ │ └─LeakyReLU: 7-36 [2, 1071, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-6 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-16 [2, 1071, 512] 131,584\n", "│ │ │ │ │ └─ReLU6: 6-17 [2, 1071, 512] --\n", "│ │ │ │ │ └─Linear: 6-18 [2, 1071, 256] 131,328\n", "│ │ │ └─EncoderLayer: 4-32 [2, 16, 256] --\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-7 [2, 1071, 256] --\n", "│ │ │ │ │ └─TensorInductionPoint: 6-19 [2, 32, 256] 8,192\n", "│ │ │ │ │ └─MultiHeadAttention: 6-20 [2, 32, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-37 [2, 32, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-38 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-39 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-40 [2, 64, 32, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-7 [2, 64, 32, 1071] --\n", "│ │ │ │ │ │ └─Linear: 7-41 [2, 32, 256] 65,792\n", "│ │ │ │ │ │ └─LeakyReLU: 7-42 [2, 32, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-21 [2, 1071, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-43 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-44 [2, 32, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-45 [2, 32, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-46 [2, 64, 1071, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-8 [2, 64, 1071, 32] --\n", "│ │ │ │ │ │ └─Linear: 7-47 [2, 1071, 256] 65,792\n", "│ │ │ │ │ │ └─LeakyReLU: 7-48 [2, 1071, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-8 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-22 [2, 1071, 512] 131,584\n", "│ │ │ │ │ └─LeakyHardsigmoid: 6-23 [2, 1071, 512] --\n", "│ │ │ │ │ └─Linear: 6-24 [2, 1071, 256] 131,328\n", "│ │ │ │ └─PoolingByMultiheadAttention: 5-9 [2, 16, 256] --\n", "│ │ │ │ │ └─TensorInductionPoint: 6-25 [2, 16, 256] 4,096\n", "│ │ │ │ │ └─SimpleMultiHeadAttention: 6-26 [2, 16, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-49 [2, 16, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-50 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-51 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-52 [2, 64, 16, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-9 [2, 64, 16, 1071] --\n", "│ │ │ │ │ │ └─Linear: 7-53 [2, 16, 256] 65,792\n", "│ │ │ │ │ │ └─LeakyReLU: 7-54 [2, 16, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-10 [2, 16, 256] (recursive)\n", "│ │ │ │ │ └─Linear: 6-27 [2, 16, 512] (recursive)\n", "│ │ │ │ │ └─LeakyHardsigmoid: 6-28 [2, 16, 512] --\n", "│ │ │ │ │ └─Linear: 6-29 [2, 16, 256] (recursive)\n", "│ └─Encoder: 2-4 [2, 16, 256] (recursive)\n", "│ │ └─ModuleList: 3-16 -- (recursive)\n", "│ │ │ └─EncoderLayer: 4-33 [2, 267, 256] (recursive)\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-11 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─TensorInductionPoint: 6-30 [2, 32, 256] (recursive)\n", "│ │ │ │ │ └─MultiHeadAttention: 6-31 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-55 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-56 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-57 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-58 [2, 64, 32, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-10 [2, 64, 32, 267] --\n", "│ │ │ │ │ │ └─Linear: 7-59 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─LeakyReLU: 7-60 [2, 32, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-32 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-61 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-62 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-63 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-64 [2, 64, 267, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-11 [2, 64, 267, 32] --\n", "│ │ │ │ │ │ └─Linear: 7-65 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─LeakyReLU: 7-66 [2, 267, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-12 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─Linear: 6-33 [2, 267, 512] (recursive)\n", "│ │ │ │ │ └─ReLU6: 6-34 [2, 267, 512] --\n", "│ │ │ │ │ └─Linear: 6-35 [2, 267, 256] (recursive)\n", "│ │ │ └─EncoderLayer: 4-34 [2, 267, 256] (recursive)\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-13 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─TensorInductionPoint: 6-36 [2, 32, 256] (recursive)\n", "│ │ │ │ │ └─MultiHeadAttention: 6-37 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-67 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-68 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-69 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-70 [2, 64, 32, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-12 [2, 64, 32, 267] --\n", "│ │ │ │ │ │ └─Linear: 7-71 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─LeakyReLU: 7-72 [2, 32, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-38 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-73 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-74 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-75 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-76 [2, 64, 267, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-13 [2, 64, 267, 32] --\n", "│ │ │ │ │ │ └─Linear: 7-77 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─LeakyReLU: 7-78 [2, 267, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-14 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─Linear: 6-39 [2, 267, 512] (recursive)\n", "│ │ │ │ │ └─ReLU6: 6-40 [2, 267, 512] --\n", "│ │ │ │ │ └─Linear: 6-41 [2, 267, 256] (recursive)\n", "│ │ │ └─EncoderLayer: 4-35 [2, 267, 256] (recursive)\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-15 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─TensorInductionPoint: 6-42 [2, 32, 256] (recursive)\n", "│ │ │ │ │ └─MultiHeadAttention: 6-43 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-79 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-80 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-81 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-82 [2, 64, 32, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-14 [2, 64, 32, 267] --\n", "│ │ │ │ │ │ └─Linear: 7-83 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─LeakyReLU: 7-84 [2, 32, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-44 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-85 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-86 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-87 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-88 [2, 64, 267, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-15 [2, 64, 267, 32] --\n", "│ │ │ │ │ │ └─Linear: 7-89 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─LeakyReLU: 7-90 [2, 267, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-16 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─Linear: 6-45 [2, 267, 512] (recursive)\n", "│ │ │ │ │ └─ReLU6: 6-46 [2, 267, 512] --\n", "│ │ │ │ │ └─Linear: 6-47 [2, 267, 256] (recursive)\n", "│ │ │ └─EncoderLayer: 4-36 [2, 16, 256] (recursive)\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-17 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─TensorInductionPoint: 6-48 [2, 32, 256] (recursive)\n", "│ │ │ │ │ └─MultiHeadAttention: 6-49 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-91 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-92 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-93 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-94 [2, 64, 32, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-16 [2, 64, 32, 267] --\n", "│ │ │ │ │ │ └─Linear: 7-95 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─LeakyReLU: 7-96 [2, 32, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-50 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-97 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-98 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-99 [2, 32, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-100 [2, 64, 267, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-17 [2, 64, 267, 32] --\n", "│ │ │ │ │ │ └─Linear: 7-101 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─LeakyReLU: 7-102 [2, 267, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-18 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─Linear: 6-51 [2, 267, 512] (recursive)\n", "│ │ │ │ │ └─LeakyHardsigmoid: 6-52 [2, 267, 512] --\n", "│ │ │ │ │ └─Linear: 6-53 [2, 267, 256] (recursive)\n", "│ │ │ │ └─PoolingByMultiheadAttention: 5-19 [2, 16, 256] (recursive)\n", "│ │ │ │ │ └─TensorInductionPoint: 6-54 [2, 16, 256] (recursive)\n", "│ │ │ │ │ └─SimpleMultiHeadAttention: 6-55 [2, 16, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-103 [2, 16, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-104 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-105 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-106 [2, 64, 16, 4] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-18 [2, 64, 16, 267] --\n", "│ │ │ │ │ │ └─Linear: 7-107 [2, 16, 256] (recursive)\n", "│ │ │ │ │ │ └─LeakyReLU: 7-108 [2, 16, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-20 [2, 16, 256] (recursive)\n", "│ │ │ │ │ └─Linear: 6-56 [2, 16, 512] (recursive)\n", "│ │ │ │ │ └─LeakyHardsigmoid: 6-57 [2, 16, 512] --\n", "│ │ │ │ │ └─Linear: 6-58 [2, 16, 256] (recursive)\n", "├─Head: 1-4 [2] --\n", "│ └─Sequential: 2-5 [2, 1] --\n", "│ │ └─FeedForward: 3-17 [2, 128] --\n", "│ │ │ └─Linear: 4-37 [2, 128] 524,416\n", "│ │ │ └─RReLU: 4-38 [2, 128] --\n", "│ │ └─FeedForward: 3-18 [2, 128] --\n", "│ │ │ └─Linear: 4-39 [2, 128] 16,512\n", "│ │ │ └─RReLU: 4-40 [2, 128] --\n", "│ │ └─FeedForward: 3-19 [2, 128] --\n", "│ │ │ └─Linear: 4-41 [2, 128] 16,512\n", "│ │ │ └─RReLU: 4-42 [2, 128] --\n", "│ │ └─FeedForward: 3-20 [2, 128] --\n", "│ │ │ └─Linear: 4-43 [2, 128] 16,512\n", "│ │ │ └─RReLU: 4-44 [2, 128] --\n", "│ │ └─FeedForward: 3-21 [2, 128] --\n", "│ │ │ └─Linear: 4-45 [2, 128] 16,512\n", "│ │ │ └─RReLU: 4-46 [2, 128] --\n", "│ │ └─FeedForward: 3-22 [2, 128] --\n", "│ │ │ └─Linear: 4-47 [2, 128] 16,512\n", "│ │ │ └─RReLU: 4-48 [2, 128] --\n", "│ │ └─FeedForward: 3-23 [2, 128] --\n", "│ │ │ └─Linear: 4-49 [2, 128] 16,512\n", "│ │ │ └─RReLU: 4-50 [2, 128] --\n", "│ │ └─FeedForward: 3-24 [2, 128] --\n", "│ │ │ └─Linear: 4-51 [2, 128] 16,512\n", "│ │ │ └─RReLU: 4-52 [2, 128] --\n", "│ │ └─FeedForward: 3-25 [2, 1] --\n", "│ │ │ └─Linear: 4-53 [2, 1] 129\n", "│ │ │ └─Softsign: 4-54 [2, 1] --\n", "========================================================================================================================\n", "Total params: 9,638,529\n", "Trainable params: 9,638,529\n", "Non-trainable params: 0\n", "Total mult-adds (M): 38.18\n", "========================================================================================================================\n", "Input size (MB): 0.39\n", "Forward/backward pass size (MB): 307.47\n", "Params size (MB): 38.55\n", "Estimated Total Size (MB): 346.41\n", "========================================================================================================================" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from torchinfo import summary\n", "\n", "role_model = params[\"fixed_role_model\"]\n", "s = train_set[0][role_model]\n", "summary(model[role_model], input_size=((2, *s[0].shape), (2, *s[1].shape)), depth=9) # 8 max" ] }, { "cell_type": "code", "execution_count": 24, "id": "0f42c4d1", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T17:50:59.822160Z", "iopub.status.busy": "2024-02-29T17:50:59.821866Z", "iopub.status.idle": "2024-02-29T18:10:05.205760Z", "shell.execute_reply": "2024-02-29T18:10:05.204793Z" }, "papermill": { "duration": 1145.418287, "end_time": "2024-02-29T18:10:05.225558", "exception": false, "start_time": "2024-02-29T17:50:59.807271", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\u001b[34m\u001b[1mwandb\u001b[0m: Tracking run with wandb version 0.16.3\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\u001b[34m\u001b[1mwandb\u001b[0m: W&B syncing is set to \u001b[1m`offline`\u001b[0m in this directory. \n", "\u001b[34m\u001b[1mwandb\u001b[0m: Run \u001b[1m`wandb online`\u001b[0m or set \u001b[1mWANDB_MODE=online\u001b[0m to enable cloud syncing.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "g_loss_mul 0.1\n", "Epoch 0\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.05458167113538366, 'avg_role_model_std_loss': 4.561985811768864, 'avg_role_model_mean_pred_loss': 0.023550471702759836, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.05458167113538366, 'n_size': 320, 'n_batch': 40, 'duration': 39.33485436439514, 'duration_batch': 0.9833713591098785, 'duration_size': 0.12292141988873481, 'avg_pred_std': 0.12334999229060487}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.01106511988909915, 'avg_role_model_std_loss': 7.3775769050087545, 'avg_role_model_mean_pred_loss': 0.00039846873109325995, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.01106511988909915, 'n_size': 80, 'n_batch': 10, 'duration': 8.30074167251587, 'duration_batch': 0.8300741672515869, 'duration_size': 0.10375927090644836, 'avg_pred_std': 0.04176213040482253}\n", "Epoch 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.010921533098735382, 'avg_role_model_std_loss': 3.7708608118317897, 'avg_role_model_mean_pred_loss': 0.0006090835865870864, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010921533098735382, 'n_size': 320, 'n_batch': 40, 'duration': 38.92951965332031, 'duration_batch': 0.9732379913330078, 'duration_size': 0.12165474891662598, 'avg_pred_std': 0.07502402040408924}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.002461973318713717, 'avg_role_model_std_loss': 0.2656627141033823, 'avg_role_model_mean_pred_loss': 8.382165523856955e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.002461973318713717, 'n_size': 80, 'n_batch': 10, 'duration': 8.352109670639038, 'duration_batch': 0.8352109670639039, 'duration_size': 0.10440137088298798, 'avg_pred_std': 0.07963283583521844}\n", "Epoch 2\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.004752650485897902, 'avg_role_model_std_loss': 4.5005246672456, 'avg_role_model_mean_pred_loss': 7.41932757047259e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.004752650485897902, 'n_size': 320, 'n_batch': 40, 'duration': 39.09458088874817, 'duration_batch': 0.9773645222187042, 'duration_size': 0.12217056527733802, 'avg_pred_std': 0.0816895533236675}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.0009612412060960196, 'avg_role_model_std_loss': 0.23112409779214432, 'avg_role_model_mean_pred_loss': 2.9920761611550857e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0009612412060960196, 'n_size': 80, 'n_batch': 10, 'duration': 8.301867723464966, 'duration_batch': 0.8301867723464966, 'duration_size': 0.10377334654331208, 'avg_pred_std': 0.08093988439068198}\n", "Epoch 3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.0029934452861198222, 'avg_role_model_std_loss': 1.4091149369219238, 'avg_role_model_mean_pred_loss': 3.706777377407988e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0029934452861198222, 'n_size': 320, 'n_batch': 40, 'duration': 39.057528257369995, 'duration_batch': 0.9764382064342498, 'duration_size': 0.12205477580428123, 'avg_pred_std': 0.08644149880856275}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.0017080451536457986, 'avg_role_model_std_loss': 0.5054739748910834, 'avg_role_model_mean_pred_loss': 2.0698145459556274e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0017080451536457986, 'n_size': 80, 'n_batch': 10, 'duration': 8.39680528640747, 'duration_batch': 0.839680528640747, 'duration_size': 0.10496006608009338, 'avg_pred_std': 0.0637943553738296}\n", "Epoch 4\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.0022114409464847997, 'avg_role_model_std_loss': 1.4571088086362807, 'avg_role_model_mean_pred_loss': 9.073904502000795e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0022114409464847997, 'n_size': 320, 'n_batch': 40, 'duration': 38.94040822982788, 'duration_batch': 0.973510205745697, 'duration_size': 0.12168877571821213, 'avg_pred_std': 0.08093992052599788}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.0034676186623983085, 'avg_role_model_std_loss': 0.354912094264597, 'avg_role_model_mean_pred_loss': 1.1135635656955855e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0034676186623983085, 'n_size': 80, 'n_batch': 10, 'duration': 8.30032467842102, 'duration_batch': 0.830032467842102, 'duration_size': 0.10375405848026276, 'avg_pred_std': 0.10819654231891036}\n", "Epoch 5\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.0016322427756676916, 'avg_role_model_std_loss': 0.8344269889868698, 'avg_role_model_mean_pred_loss': 2.8054938205387956e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0016322427756676916, 'n_size': 320, 'n_batch': 40, 'duration': 39.14137244224548, 'duration_batch': 0.9785343110561371, 'duration_size': 0.12231678888201714, 'avg_pred_std': 0.09135764897800983}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.0034494245337555185, 'avg_role_model_std_loss': 2.7931900787574704, 'avg_role_model_mean_pred_loss': 6.050434956339501e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0034494245337555185, 'n_size': 80, 'n_batch': 10, 'duration': 8.366892337799072, 'duration_batch': 0.8366892337799072, 'duration_size': 0.1045861542224884, 'avg_pred_std': 0.055338869569823146}\n", "Epoch 6\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.002849590677578817, 'avg_role_model_std_loss': 0.8129531741204119, 'avg_role_model_mean_pred_loss': 4.8211906484207924e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.002849590677578817, 'n_size': 320, 'n_batch': 40, 'duration': 38.968292236328125, 'duration_batch': 0.9742073059082031, 'duration_size': 0.1217759132385254, 'avg_pred_std': 0.0901852805633098}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.0025212633569026365, 'avg_role_model_std_loss': 0.6178526908131061, 'avg_role_model_mean_pred_loss': 1.4414640320481454e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0025212633569026365, 'n_size': 80, 'n_batch': 10, 'duration': 8.266654014587402, 'duration_batch': 0.8266654014587402, 'duration_size': 0.10333317518234253, 'avg_pred_std': 0.05773084256798029}\n", "Epoch 7\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.0034268524424987843, 'avg_role_model_std_loss': 1.5629836895840525, 'avg_role_model_mean_pred_loss': 1.5161425290398687e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0034268524424987843, 'n_size': 320, 'n_batch': 40, 'duration': 39.01256036758423, 'duration_batch': 0.9753140091896058, 'duration_size': 0.12191425114870072, 'avg_pred_std': 0.0829970414401032}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.0014418774226214737, 'avg_role_model_std_loss': 0.05386366389284376, 'avg_role_model_mean_pred_loss': 2.4331560492640845e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0014418774226214737, 'n_size': 80, 'n_batch': 10, 'duration': 8.32570481300354, 'duration_batch': 0.832570481300354, 'duration_size': 0.10407131016254426, 'avg_pred_std': 0.08880755109712482}\n", "Epoch 8\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.0016761758448410546, 'avg_role_model_std_loss': 0.571136603817564, 'avg_role_model_mean_pred_loss': 7.011435811053887e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0016761758448410546, 'n_size': 320, 'n_batch': 40, 'duration': 38.852670669555664, 'duration_batch': 0.9713167667388916, 'duration_size': 0.12141459584236144, 'avg_pred_std': 0.09045831263065338}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.0006263804327318212, 'avg_role_model_std_loss': 0.24181758030463243, 'avg_role_model_mean_pred_loss': 6.295153740953907e-07, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0006263804327318212, 'n_size': 80, 'n_batch': 10, 'duration': 8.345160722732544, 'duration_batch': 0.8345160722732544, 'duration_size': 0.1043145090341568, 'avg_pred_std': 0.08191414531320333}\n", "Epoch 9\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.0008744017197386711, 'avg_role_model_std_loss': 0.17949836104246067, 'avg_role_model_mean_pred_loss': 4.63043962907906e-07, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0008744017197386711, 'n_size': 320, 'n_batch': 40, 'duration': 39.11712980270386, 'duration_batch': 0.9779282450675965, 'duration_size': 0.12224103063344956, 'avg_pred_std': 0.09466907754540443}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.0011390350133297033, 'avg_role_model_std_loss': 0.004834387120854444, 'avg_role_model_mean_pred_loss': 3.0137808032293377e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0011390350133297033, 'n_size': 80, 'n_batch': 10, 'duration': 8.316069841384888, 'duration_batch': 0.8316069841384888, 'duration_size': 0.1039508730173111, 'avg_pred_std': 0.0990539627149701}\n", "Epoch 10\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.0004748740824652486, 'avg_role_model_std_loss': 0.1777749692730623, 'avg_role_model_mean_pred_loss': 2.3089836414527056e-08, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0004748740824652486, 'n_size': 320, 'n_batch': 40, 'duration': 39.06293201446533, 'duration_batch': 0.9765733003616333, 'duration_size': 0.12207166254520416, 'avg_pred_std': 0.09201494687004015}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.00032443252712255344, 'avg_role_model_std_loss': 0.0010629200933180982, 'avg_role_model_mean_pred_loss': 3.426863805611191e-07, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.00032443252712255344, 'n_size': 80, 'n_batch': 10, 'duration': 8.351998329162598, 'duration_batch': 0.8351998329162598, 'duration_size': 0.10439997911453247, 'avg_pred_std': 0.0884638118557632}\n", "Epoch 11\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.00030916042924218347, 'avg_role_model_std_loss': 0.04881817966124018, 'avg_role_model_mean_pred_loss': 2.0088672352989394e-08, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.00030916042924218347, 'n_size': 320, 'n_batch': 40, 'duration': 38.86811137199402, 'duration_batch': 0.9717027842998505, 'duration_size': 0.12146284803748131, 'avg_pred_std': 0.10129309091717005}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.00028257269877940416, 'avg_role_model_std_loss': 1.0737754437432159, 'avg_role_model_mean_pred_loss': 2.8357685949442768e-08, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.00028257269877940416, 'n_size': 80, 'n_batch': 10, 'duration': 8.252684354782104, 'duration_batch': 0.8252684354782105, 'duration_size': 0.10315855443477631, 'avg_pred_std': 0.08038602282758803}\n", "Epoch 12\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.0013487103491570452, 'avg_role_model_std_loss': 0.43372808683234754, 'avg_role_model_mean_pred_loss': 1.0047366970687786e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0013487103491570452, 'n_size': 320, 'n_batch': 40, 'duration': 39.09407997131348, 'duration_batch': 0.9773519992828369, 'duration_size': 0.12216899991035461, 'avg_pred_std': 0.0899976636399515}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.003439919964876026, 'avg_role_model_std_loss': 0.015614798056776635, 'avg_role_model_mean_pred_loss': 2.0251521429592856e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.003439919964876026, 'n_size': 80, 'n_batch': 10, 'duration': 8.342942476272583, 'duration_batch': 0.8342942476272583, 'duration_size': 0.1042867809534073, 'avg_pred_std': 0.11240037991665304}\n", "Epoch 13\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.0008618889094577753, 'avg_role_model_std_loss': 0.1384840221481113, 'avg_role_model_mean_pred_loss': 4.446653539750059e-07, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0008618889094577753, 'n_size': 320, 'n_batch': 40, 'duration': 38.886531829833984, 'duration_batch': 0.9721632957458496, 'duration_size': 0.1215204119682312, 'avg_pred_std': 0.09283134532161057}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.000532695987567422, 'avg_role_model_std_loss': 0.6308531300281175, 'avg_role_model_mean_pred_loss': 1.360833180625437e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.000532695987567422, 'n_size': 80, 'n_batch': 10, 'duration': 8.28925633430481, 'duration_batch': 0.828925633430481, 'duration_size': 0.10361570417881012, 'avg_pred_std': 0.0891546759288758}\n", "Epoch 14\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.00030356911156559363, 'avg_role_model_std_loss': 0.3619111133062688, 'avg_role_model_mean_pred_loss': 5.198837278813596e-08, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.00030356911156559363, 'n_size': 320, 'n_batch': 40, 'duration': 38.988784074783325, 'duration_batch': 0.9747196018695832, 'duration_size': 0.1218399502336979, 'avg_pred_std': 0.09746413570828735}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.0005432431978988461, 'avg_role_model_std_loss': 0.001004549844947178, 'avg_role_model_mean_pred_loss': 2.781989758560144e-07, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0005432431978988461, 'n_size': 80, 'n_batch': 10, 'duration': 8.42578673362732, 'duration_batch': 0.842578673362732, 'duration_size': 0.1053223341703415, 'avg_pred_std': 0.09348368076607586}\n", "Epoch 15\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.00029625174347529536, 'avg_role_model_std_loss': 0.0572095896306493, 'avg_role_model_mean_pred_loss': 6.03426183574306e-08, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.00029625174347529536, 'n_size': 320, 'n_batch': 40, 'duration': 39.27268958091736, 'duration_batch': 0.981817239522934, 'duration_size': 0.12272715494036675, 'avg_pred_std': 0.09890737304231152}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.00036838351952610536, 'avg_role_model_std_loss': 0.7212186768025276, 'avg_role_model_mean_pred_loss': 2.6941624464704718e-08, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.00036838351952610536, 'n_size': 80, 'n_batch': 10, 'duration': 8.407346963882446, 'duration_batch': 0.8407346963882446, 'duration_size': 0.10509183704853058, 'avg_pred_std': 0.08277125156018883}\n", "Epoch 16\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.0005824315209792986, 'avg_role_model_std_loss': 0.32841089839253074, 'avg_role_model_mean_pred_loss': 9.46431564320671e-08, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0005824315209792986, 'n_size': 320, 'n_batch': 40, 'duration': 39.24979209899902, 'duration_batch': 0.9812448024749756, 'duration_size': 0.12265560030937195, 'avg_pred_std': 0.09515800991794095}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.0007761759276036173, 'avg_role_model_std_loss': 1.2551941490234082, 'avg_role_model_mean_pred_loss': 2.9720144345546373e-08, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0007761759276036173, 'n_size': 80, 'n_batch': 10, 'duration': 8.318324089050293, 'duration_batch': 0.8318324089050293, 'duration_size': 0.10397905111312866, 'avg_pred_std': 0.09093907248461619}\n", "Epoch 17\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.0012332158104982228, 'avg_role_model_std_loss': 0.6590279597393532, 'avg_role_model_mean_pred_loss': 8.36102873709775e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0012332158104982228, 'n_size': 320, 'n_batch': 40, 'duration': 39.119892835617065, 'duration_batch': 0.9779973208904267, 'duration_size': 0.12224966511130334, 'avg_pred_std': 0.0890660552540794}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.001825959722918924, 'avg_role_model_std_loss': 1.9564546512207017, 'avg_role_model_mean_pred_loss': 1.1242688799484313e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.001825959722918924, 'n_size': 80, 'n_batch': 10, 'duration': 8.359159708023071, 'duration_batch': 0.8359159708023072, 'duration_size': 0.1044894963502884, 'avg_pred_std': 0.06533113070763648}\n", "Epoch 18\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.001502491006613127, 'avg_role_model_std_loss': 0.4666562590015076, 'avg_role_model_mean_pred_loss': 3.179587947280127e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.001502491006613127, 'n_size': 320, 'n_batch': 40, 'duration': 39.09075927734375, 'duration_batch': 0.9772689819335938, 'duration_size': 0.12215862274169922, 'avg_pred_std': 0.09002331190858967}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.0008729565364774316, 'avg_role_model_std_loss': 0.20973070683976403, 'avg_role_model_mean_pred_loss': 2.998759428507469e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0008729565364774316, 'n_size': 80, 'n_batch': 10, 'duration': 8.317886352539062, 'duration_batch': 0.8317886352539062, 'duration_size': 0.10397357940673828, 'avg_pred_std': 0.08415974881500006}\n", "Epoch 19\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.001246437881127349, 'avg_role_model_std_loss': 0.6120949116166994, 'avg_role_model_mean_pred_loss': 2.0787087329172948e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.001246437881127349, 'n_size': 320, 'n_batch': 40, 'duration': 39.05946326255798, 'duration_batch': 0.9764865815639496, 'duration_size': 0.1220608226954937, 'avg_pred_std': 0.09171894917380996}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.002248370127927046, 'avg_role_model_std_loss': 4.686978222953622, 'avg_role_model_mean_pred_loss': 2.895269359082242e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.002248370127927046, 'n_size': 80, 'n_batch': 10, 'duration': 8.319932222366333, 'duration_batch': 0.8319932222366333, 'duration_size': 0.10399915277957916, 'avg_pred_std': 0.0715100662317127}\n", "Epoch 20\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.0029011325517785736, 'avg_role_model_std_loss': 0.9372176351432528, 'avg_role_model_mean_pred_loss': 1.1204305509332328e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0029011325517785736, 'n_size': 320, 'n_batch': 40, 'duration': 38.93023109436035, 'duration_batch': 0.9732557773590088, 'duration_size': 0.1216569721698761, 'avg_pred_std': 0.08712862803367898}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.0013807336257741555, 'avg_role_model_std_loss': 2.265311992234274, 'avg_role_model_mean_pred_loss': 1.8232192309453056e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0013807336257741555, 'n_size': 80, 'n_batch': 10, 'duration': 8.43259859085083, 'duration_batch': 0.843259859085083, 'duration_size': 0.10540748238563538, 'avg_pred_std': 0.07126395150553436}\n", "Epoch 21\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.0005831055974340416, 'avg_role_model_std_loss': 0.7094658932399625, 'avg_role_model_mean_pred_loss': 5.484142581780628e-08, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0005831055974340416, 'n_size': 320, 'n_batch': 40, 'duration': 38.932344913482666, 'duration_batch': 0.9733086228370667, 'duration_size': 0.12166357785463333, 'avg_pred_std': 0.09576541467686184}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\u001b[34m\u001b[1mwandb\u001b[0m: - 0.000 MB of 0.000 MB uploaded\r" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\u001b[34m\u001b[1mwandb\u001b[0m: \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.00040745751502981877, 'avg_role_model_std_loss': 0.01960964320030456, 'avg_role_model_mean_pred_loss': 8.632079813164495e-08, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.00040745751502981877, 'n_size': 80, 'n_batch': 10, 'duration': 8.343457698822021, 'duration_batch': 0.8343457698822021, 'duration_size': 0.10429322123527526, 'avg_pred_std': 0.0816122055053711}\n", "Stopped False\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\u001b[34m\u001b[1mwandb\u001b[0m: \n", "\u001b[34m\u001b[1mwandb\u001b[0m: Run history:\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_loss_test █▂▁▂▃▃▂▂▁▂▁▁▃▁▁▁▁▂▁▂▂▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_loss_train █▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_embed_loss_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_embed_loss_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_cos_loss_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_cos_loss_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_mag_loss_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_mag_loss_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_pred_std_test ▁▅▅▃█▂▃▆▅▇▆▅█▆▆▅▆▃▅▄▄▅\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_pred_std_train █▁▂▃▂▃▃▂▃▄▃▅▃▄▄▄▄▃▃▃▃▄\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_cos_loss_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_cos_loss_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_mag_loss_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_mag_loss_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_loss_test █▂▁▂▃▃▂▂▁▂▁▁▃▁▁▁▁▂▁▂▂▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_loss_train █▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_mean_pred_loss_test █▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_mean_pred_loss_train █▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_std_loss_test █▁▁▁▁▄▂▁▁▁▁▂▁▂▁▂▂▃▁▅▃▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_std_loss_train █▇█▃▃▂▂▃▂▁▁▁▂▁▁▁▁▂▂▂▂▂\n", "\u001b[34m\u001b[1mwandb\u001b[0m: duration_batch_test ▃▅▃▇▃▅▂▄▅▃▅▁▅▂█▇▄▅▄▄█▅\n", "\u001b[34m\u001b[1mwandb\u001b[0m: duration_batch_train █▂▅▄▂▅▃▃▁▅▄▁▅▁▃▇▇▅▄▄▂▂\n", "\u001b[34m\u001b[1mwandb\u001b[0m: duration_size_test ▃▅▃▇▃▅▂▄▅▃▅▁▅▂█▇▄▅▄▄█▅\n", "\u001b[34m\u001b[1mwandb\u001b[0m: duration_size_train █▂▅▄▂▅▃▃▁▅▄▁▅▁▃▇▇▅▄▄▂▂\n", "\u001b[34m\u001b[1mwandb\u001b[0m: duration_test ▃▅▃▇▃▅▂▄▅▃▅▁▅▂█▇▄▅▄▄█▅\n", "\u001b[34m\u001b[1mwandb\u001b[0m: duration_train █▂▅▄▂▅▃▃▁▅▄▁▅▁▃▇▇▅▄▄▂▂\n", "\u001b[34m\u001b[1mwandb\u001b[0m: n_batch_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: n_batch_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: n_size_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: n_size_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", "\u001b[34m\u001b[1mwandb\u001b[0m: \n", "\u001b[34m\u001b[1mwandb\u001b[0m: Run summary:\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_loss_test 0.00041\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_loss_train 0.00058\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_embed_loss_test 0.0\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_embed_loss_train 0.0\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_cos_loss_test 0.0\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_cos_loss_train 0.0\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_mag_loss_test 0.0\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_mag_loss_train 0.0\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_pred_std_test 0.08161\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_pred_std_train 0.09577\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_cos_loss_test 0.0\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_cos_loss_train 0.0\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_mag_loss_test 0.0\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_mag_loss_train 0.0\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_loss_test 0.00041\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_loss_train 0.00058\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_mean_pred_loss_test 0.0\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_mean_pred_loss_train 0.0\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_std_loss_test 0.01961\n", "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_std_loss_train 0.70947\n", "\u001b[34m\u001b[1mwandb\u001b[0m: duration_batch_test 0.83435\n", "\u001b[34m\u001b[1mwandb\u001b[0m: duration_batch_train 0.97331\n", "\u001b[34m\u001b[1mwandb\u001b[0m: duration_size_test 0.10429\n", "\u001b[34m\u001b[1mwandb\u001b[0m: duration_size_train 0.12166\n", "\u001b[34m\u001b[1mwandb\u001b[0m: duration_test 8.34346\n", "\u001b[34m\u001b[1mwandb\u001b[0m: duration_train 38.93234\n", "\u001b[34m\u001b[1mwandb\u001b[0m: n_batch_test 10\n", "\u001b[34m\u001b[1mwandb\u001b[0m: n_batch_train 40\n", "\u001b[34m\u001b[1mwandb\u001b[0m: n_size_test 80\n", "\u001b[34m\u001b[1mwandb\u001b[0m: n_size_train 320\n", "\u001b[34m\u001b[1mwandb\u001b[0m: \n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\u001b[34m\u001b[1mwandb\u001b[0m: You can sync this run to the cloud by running:\n", "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[1mwandb sync /kaggle/working/eval/insurance/tvae/4/wandb/offline-run-20240229_175101-y38e2cwk\u001b[0m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\u001b[34m\u001b[1mwandb\u001b[0m: Find logs at: \u001b[35m\u001b[1m./wandb/offline-run-20240229_175101-y38e2cwk/logs\u001b[0m\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Eval loss {'role_model': 'tvae', 'n_size': 399, 'n_batch': 50, 'role_model_metrics': {'avg_loss': 0.00027497335946021655, 'avg_g_mag_loss': 0.044538616604244054, 'avg_g_cos_loss': 0.14042933068628, 'pred_duration': 0.8693411350250244, 'grad_duration': 0.5576837062835693, 'total_duration': 1.4270248413085938, 'pred_std': 0.15040387213230133, 'std_loss': 0.0008385280380025506, 'mean_pred_loss': 1.3921320984877639e-08, 'pred_rmse': 0.016582321375608444, 'pred_mae': 0.012896367348730564, 'pred_mape': 0.13851648569107056, 'grad_rmse': 0.034425459802150726, 'grad_mae': 0.018821561709046364, 'grad_mape': 0.6824872493743896}, 'non_role_model_metrics': {'avg_loss': 0, 'avg_g_mag_loss': 0, 'avg_g_cos_loss': 0, 'avg_pred_duration': 0, 'avg_grad_duration': 0, 'avg_total_duration': 0, 'avg_pred_std': 0, 'avg_std_loss': 0, 'avg_mean_pred_loss': 0}, 'avg_metrics': {'avg_loss': 0.00027497335946021655, 'avg_g_mag_loss': 0.044538616604244054, 'avg_g_cos_loss': 0.14042933068628, 'avg_pred_duration': 0.8693411350250244, 'avg_grad_duration': 0.5576837062835693, 'avg_total_duration': 1.4270248413085938, 'avg_pred_std': 0.15040387213230133, 'avg_std_loss': 0.0008385280380025506, 'avg_mean_pred_loss': 1.3921320984877639e-08}, 'min_metrics': {'avg_loss': 0.00027497335946021655, 'avg_g_mag_loss': 0.044538616604244054, 'avg_g_cos_loss': 0.14042933068628, 'pred_duration': 0.8693411350250244, 'grad_duration': 0.5576837062835693, 'total_duration': 1.4270248413085938, 'pred_std': 0.15040387213230133, 'std_loss': 0.0008385280380025506, 'mean_pred_loss': 1.3921320984877639e-08, 'pred_rmse': 0.016582321375608444, 'pred_mae': 0.012896367348730564, 'pred_mape': 0.13851648569107056, 'grad_rmse': 0.034425459802150726, 'grad_mae': 0.018821561709046364, 'grad_mape': 0.6824872493743896}, 'model_metrics': {'tvae': {'avg_loss': 0.00027497335946021655, 'avg_g_mag_loss': 0.044538616604244054, 'avg_g_cos_loss': 0.14042933068628, 'pred_duration': 0.8693411350250244, 'grad_duration': 0.5576837062835693, 'total_duration': 1.4270248413085938, 'pred_std': 0.15040387213230133, 'std_loss': 0.0008385280380025506, 'mean_pred_loss': 1.3921320984877639e-08, 'pred_rmse': 0.016582321375608444, 'pred_mae': 0.012896367348730564, 'pred_mape': 0.13851648569107056, 'grad_rmse': 0.034425459802150726, 'grad_mae': 0.018821561709046364, 'grad_mape': 0.6824872493743896}}}\n" ] } ], "source": [ "import torch\n", "from ml_utility_loss.loss_learning.estimator.pipeline import train, train_2\n", "from ml_utility_loss.loss_learning.estimator.process_simple import train_epoch, eval as _eval\n", "from ml_utility_loss.params import GradientPenaltyMode\n", "from ml_utility_loss.util import clear_memory\n", "import time\n", "#torch.autograd.set_detect_anomaly(True)\n", "\n", "clear_memory()\n", "\n", "opt = params[\"Optim\"](model.parameters())\n", "loss = train_2(\n", " [train_set, val_set, test_set],\n", " preprocessor=preprocessor,\n", " whole_model=model,\n", " optim=opt,\n", " log_dir=\"logs\",\n", " checkpoint_dir=\"checkpoints\",\n", " verbose=True,\n", " allow_same_prediction=allow_same_prediction,\n", " wandb=wandb,\n", " study_name=study_name,\n", " **params\n", ")" ] }, { "cell_type": "code", "execution_count": 25, "id": "9b514a07", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T18:10:05.264464Z", "iopub.status.busy": "2024-02-29T18:10:05.264165Z", "iopub.status.idle": "2024-02-29T18:10:05.268178Z", "shell.execute_reply": "2024-02-29T18:10:05.267324Z" }, "papermill": { "duration": 0.026093, "end_time": "2024-02-29T18:10:05.270073", "exception": false, "start_time": "2024-02-29T18:10:05.243980", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "model = loss[\"whole_model\"]\n", "opt = loss[\"optim\"]" ] }, { "cell_type": "code", "execution_count": 26, "id": "331a49e1", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T18:10:05.307164Z", "iopub.status.busy": "2024-02-29T18:10:05.306497Z", "iopub.status.idle": "2024-02-29T18:10:05.387248Z", "shell.execute_reply": "2024-02-29T18:10:05.386472Z" }, "papermill": { "duration": 0.101501, "end_time": "2024-02-29T18:10:05.389452", "exception": false, "start_time": "2024-02-29T18:10:05.287951", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import torch\n", "from copy import deepcopy\n", "\n", "torch.save(deepcopy(model.state_dict()), \"model.pt\")\n", "#torch.save(deepcopy(opt.state_dict()), \"optim.pt\")" ] }, { "cell_type": "code", "execution_count": 27, "id": "123b4b17", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T18:10:05.429312Z", "iopub.status.busy": "2024-02-29T18:10:05.428645Z", "iopub.status.idle": "2024-02-29T18:10:05.699888Z", "shell.execute_reply": "2024-02-29T18:10:05.699094Z" }, "papermill": { "duration": 0.29332, "end_time": "2024-02-29T18:10:05.701797", "exception": false, "start_time": "2024-02-29T18:10:05.408477", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "history = loss[\"history\"]\n", "history.to_csv(\"history.csv\")\n", "history[[\"avg_loss_train\", \"avg_loss_test\"]].plot()" ] }, { "cell_type": "code", "execution_count": 28, "id": "2586ba0a", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T18:10:05.739775Z", "iopub.status.busy": "2024-02-29T18:10:05.739483Z", "iopub.status.idle": "2024-02-29T18:10:52.699221Z", "shell.execute_reply": "2024-02-29T18:10:52.698208Z" }, "papermill": { "duration": 46.981509, "end_time": "2024-02-29T18:10:52.701858", "exception": false, "start_time": "2024-02-29T18:10:05.720349", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "\n", "from ml_utility_loss.loss_learning.estimator.pipeline import eval\n", "#eval_loss = loss[\"eval_loss\"]\n", "\n", "batch_size = params[\"batch_size_low\"] if \"batch_size_low\" in params else params[\"batch_size\"]\n", "\n", "eval_loss = eval(\n", " test_set, model,\n", " batch_size=batch_size,\n", ")" ] }, { "cell_type": "code", "execution_count": 29, "id": "187137f6", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T18:10:52.742539Z", "iopub.status.busy": "2024-02-29T18:10:52.742224Z", "iopub.status.idle": "2024-02-29T18:10:52.761904Z", "shell.execute_reply": "2024-02-29T18:10:52.761097Z" }, "papermill": { "duration": 0.041848, "end_time": "2024-02-29T18:10:52.763762", "exception": false, "start_time": "2024-02-29T18:10:52.721914", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
avg_g_cos_lossavg_g_mag_lossavg_lossgrad_durationgrad_maegrad_mapegrad_rmsemean_pred_losspred_durationpred_maepred_mapepred_rmsepred_stdstd_losstotal_duration
tvae0.1347840.0363680.0002750.5683860.0188240.6825660.0344341.392132e-080.8837040.0128970.1385170.0165830.1504040.0008391.45209
\n", "
" ], "text/plain": [ " avg_g_cos_loss avg_g_mag_loss avg_loss grad_duration grad_mae \\\n", "tvae 0.134784 0.036368 0.000275 0.568386 0.018824 \n", "\n", " grad_mape grad_rmse mean_pred_loss pred_duration pred_mae \\\n", "tvae 0.682566 0.034434 1.392132e-08 0.883704 0.012897 \n", "\n", " pred_mape pred_rmse pred_std std_loss total_duration \n", "tvae 0.138517 0.016583 0.150404 0.000839 1.45209 " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "metrics = pd.DataFrame(eval_loss[\"model_metrics\"]).T\n", "metrics.to_csv(\"eval.csv\")\n", "metrics" ] }, { "cell_type": "code", "execution_count": 30, "id": "123d305b", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T18:10:52.802551Z", "iopub.status.busy": "2024-02-29T18:10:52.801916Z", "iopub.status.idle": "2024-02-29T18:10:53.233160Z", "shell.execute_reply": "2024-02-29T18:10:53.232302Z" }, "papermill": { "duration": 0.452737, "end_time": "2024-02-29T18:10:53.235205", "exception": false, "start_time": "2024-02-29T18:10:52.782468", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "from ml_utility_loss.util import clear_memory\n", "clear_memory()" ] }, { "cell_type": "code", "execution_count": 31, "id": "a3eecc2a", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T18:10:53.275648Z", "iopub.status.busy": "2024-02-29T18:10:53.275331Z", "iopub.status.idle": "2024-02-29T18:11:41.971985Z", "shell.execute_reply": "2024-02-29T18:11:41.971200Z" }, "papermill": { "duration": 48.719326, "end_time": "2024-02-29T18:11:41.974270", "exception": false, "start_time": "2024-02-29T18:10:53.254944", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Caching in ../../../../insurance/_cache_test/tvae/all inf False\n" ] } ], "source": [ "#\"\"\"\n", "from ml_utility_loss.loss_learning.estimator.process import pred, pred_2\n", "from ml_utility_loss.util import stack_samples\n", "\n", "#samples = test_set[list(range(len(test_set)))]\n", "#y = {m: pred(model[m], s) for m, s in samples.items()}\n", "y = pred_2(model, test_set, batch_size=batch_size)\n", "#\"\"\"" ] }, { "cell_type": "code", "execution_count": 32, "id": "6ab51db8", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T18:11:42.014824Z", "iopub.status.busy": "2024-02-29T18:11:42.014495Z", "iopub.status.idle": "2024-02-29T18:11:42.030851Z", "shell.execute_reply": "2024-02-29T18:11:42.030176Z" }, "papermill": { "duration": 0.038526, "end_time": "2024-02-29T18:11:42.032661", "exception": false, "start_time": "2024-02-29T18:11:41.994135", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import os\n", "import pandas as pd\n", "from ml_utility_loss.util import transpose_dict\n", "\n", "os.makedirs(\"pred\", exist_ok=True)\n", "y2 = transpose_dict(y)\n", "for k, v in y2.items():\n", " df = pd.DataFrame(v)\n", " df.to_csv(f\"pred/{k}.csv\")" ] }, { "cell_type": "code", "execution_count": 33, "id": "d81a30f1", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T18:11:42.070440Z", "iopub.status.busy": "2024-02-29T18:11:42.070179Z", "iopub.status.idle": "2024-02-29T18:11:42.075287Z", "shell.execute_reply": "2024-02-29T18:11:42.074351Z" }, "papermill": { "duration": 0.026305, "end_time": "2024-02-29T18:11:42.077266", "exception": false, "start_time": "2024-02-29T18:11:42.050961", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'tvae': 0.05389225258396234}\n" ] } ], "source": [ "print({k: sum(v[\"pred\"])/len(v[\"pred\"]) for k, v in y.items()})" ] }, { "cell_type": "code", "execution_count": 34, "id": "3b3ff322", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T18:11:42.116430Z", "iopub.status.busy": "2024-02-29T18:11:42.116168Z", "iopub.status.idle": "2024-02-29T18:11:42.432730Z", "shell.execute_reply": "2024-02-29T18:11:42.431890Z" }, "papermill": { "duration": 0.338569, "end_time": "2024-02-29T18:11:42.434727", "exception": false, "start_time": "2024-02-29T18:11:42.096158", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ml_utility_loss.loss_learning.visualization import plot_pred_density_2\n", "\n", "_ = plot_pred_density_2(y)" ] }, { "cell_type": "code", "execution_count": 35, "id": "e79e4b0f", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T18:11:42.474328Z", "iopub.status.busy": "2024-02-29T18:11:42.474060Z", "iopub.status.idle": "2024-02-29T18:11:42.757409Z", "shell.execute_reply": "2024-02-29T18:11:42.756574Z" }, "papermill": { "duration": 0.305409, "end_time": "2024-02-29T18:11:42.759353", "exception": false, "start_time": "2024-02-29T18:11:42.453944", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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NDU18fDDD3P77bfz5ptvthlPdnZ2Ej6UHsJXF/n37O4bgKV5Dp2vviuj6RF6V1IKB+Gdp7r+ulf+OxjNMR16bo3uFo8++mj0v4uLi3n//fd5/vnnWyWltLQ0/u///g+zOXKtX/7yl+h0On79619jtVoZMWIEx44d4/7774++5xe/+AXjx4/nJz/5SfS5VatWUVhYyMGDBxk6dGib8YjIjiVm75lId6ONlpKKStBTRzgQxiZduJj1rqTUjT377LOsWrWKo0eP0tTURCAQYNy4ca2OGT16dDQhARw4cIAxY8a0KiMyadKkVu/ZvXs3b731Funp6edds6ysjKFD49uNpTd5YcdRBu87zMh8By7bORtQWp2cbPCz+/ghgspJbhwjdati1buSksEUabVocd0OWL9+PYsXL+app55iypQpOBwO/uu//ott27a1Oi4tLS3uc7vdbm666SaeeOKJ817Lz89POObeINRUjw4Vg9EIFkfrF60ujHod5pCbBrn7FpfelZR0upi7UVo6t0b3li1bmDp1Kg8++GD0ubKysoueZ9iwYfz+97/H7/djsVgA2L59e6tjJkyYwJ/+9CeKioowGtv+cWirZnhvp6oqSlMjACab8/wxQ4sTo0GHJezGJ5Mn4yJ331LQuTW6hwwZwo4dO9i4cSMHDx7k//2//3decmnLV7/6VRRF4YEHHmD//v1s3LiRJ598EiBaT3rBggXU1tZy5513sn37dsrKyti4cSP33HNPNBG1VTO8t/MFFYyhyO7CJnsbC8PN6Rj1enSqQsjv7eLoujdJSino3Brd1113Hbfeeit33HEHkydPpqamplWrqT1Op5O//vWv7Nq1i3HjxvGf//mfLF26FCA6zlRQUMCWLVsIh8Nce+21jB49moULF5KRkRHdGaW9muG9WVMwjDnswajXobc6zj/AYMRgsQNE6i2JmGlao7ujpEZ3/NauXcs999xDfX19q80HkqE3febH65p4//UXGdS0l/FTroUhM887Jvj+r9ix7xD7c2Zz1+zp5+0T2Bt0uxrdovM999xzDBo0iH79+rF79+7oHKRkJ6TepikYxhzyYNTrzx/kbma0OdABpnATvmC4VyalREhS6uGqqqpYunQpVVVV5Ofnc9ttt/H4449rHVa3l2Y2UuQIk+E3geX86RQAOnM62Q4Lxkwd+hgnzwpJSj3e9773Pb73ve9pHUaPk+eykpdtBK+93ZYS5jQGZ6dDgRks8qsWK2lPCpEIVQV/82465rZbStFkFfB0TUw9hCQlIRLg93tRQs3rKC/QUlJRCTQ14g/JXKVY9fik1I1vLnY7vemzfmdvOdvKaznuof0Z++Y0yk55ePeTCvZ8JgtzY9Vjk5LJFPlB8Xpl4lpXafmsWz77nizUFOm66a3tdN2geQKlDnPYK7O649BjR98MBgMZGRlUV1cDYLfbo7OYRXKpqorX66W6upqMjAwMhp6/Il7xRyZEGqwXmHvTnJQMSgCPX4ruxarHJiUgWmqjJTGJzpWRkdFrypuE/ZHBa4PtAi0loyWyWBcI+WWwO1Y9OinpdDry8/PJyckhGNSguFsvYjKZekULqYXanGRMlgtUZtDp0JttQCNhnySlWGmalH74wx+2Kl4GkZXtn376aVKvYzAYetUvjOhcYUWFYBMAZls7d96a6ZuTlhKQsc1Yad5SGjlyJP/85z+jX7dXPkOIVOEPhTGFI0nJZL1wDStjc1IKS/ctZppnAKPR2GvGIUTPUehQMRvM6NtZYtLCbEunb7qZC42Hi9Y0T0qHDh2ioKAAq9XKlClTWLZsGQMGDGjzWL/fj9/vj37d0NDQVWEKEWU3GxmVbQKf4/MNKNuRluZkSI4D8ixdFF33p+k8pcmTJ7NmzRpeffVVVq5cSXl5OVdeeSWNjW3Xn1m2bBkulyv6KCws7OKIhSCyxKRljMhsv/CxLUmreQxKXFxK1VOqq6tj4MCBLF++nPvuu++819tqKRUWFsZVq0WIjgoFfOjfXR5Z+X+xnWo+24l6cCPBrKEYR38Zvb53zZXr9vWUMjIyGDp0KKWlpW2+brFYorWmhdDKxxVVNJXX0teVxpCLbQphsrHz6BlqjlcwcXCArHT5+b2YlFpm4na7KSsrk100REoLNW8YgMl+8U1GzXYMeh0mxYc/JLXNY6FpUlq8eDGbNm2ioqKC9957jy996UsYDAbuvPNOLcMS4oJCfjcA+ouNJwGY7Bj1eoxhvySlGGnaffvss8+48847qampITs7myuuuIKtW7fKttAipYX8XgxcZDFuC5Pt85ZSMNTpsfUEmial9evXa3l5IRISanJj4POJkRdkinTfQCXg8wKuTo6u+0upMSUhugOluZKkMZaWkt6AzhTZ2SUk699iIklJiDi1rGO72BKTFi1jTyGfu9Ni6klSakqAEN1Bvk3B4DdhTbvwYtwWaekOFE8tBosUeouFJCUh4jQy2whWJ6THNj6Un9WHfGqhj/y6xUK6b0LEq2WJiSmGKQEAxubdgoO+zomnh5GkJEQclLDyeRmSiyzGjTLZUVWVgJQviYm0J4WIQ9WZBo4cPoXdbGCsObaB7lN+HaXltXgaKpk5pJMD7AGkpSREHALNS0xUg7n9rZXOYWy++6ZKpYCYSFISIg7+pjiWmDQzWT9PSilUlCNlSVISIg7B5qSki7HrBp8nJUPIR0iRpHQxkpSEiEPYF39LyWyxowMMiizKjYUkJSHi0LJ/mz7G2dwAuuZFuUbFj192yr0oSUpCxCHsj8xRMl5kw4BWTLbITrlqEH9A9h+8GJkSIEQcMk1BQnYT6elxlF82WHClmUkLKZjxA3EktF5IkpIQcSjJ0IPqhOzM2N+k1zMoLysyo9siA90XI903IeIRjHOJSQuj7GoSK0lKQsShpZYScUwJAMBkRUUlHJCkdDGSlISIUTissPXTSj6oqMWni29Xkk9rgmw9XMveiqpOiq7nkDElIWLk93nQoaIoYI6l6uTZmrtvoZYKA6Jd0lISIkY+b3PlSKMFvTG2dW8tDM2TLcN+6b5djCQlIWIUaF5ictGtuttgtERaSoqMKV1UyiSln/70p+h0OhYuXKh1KEK0KZDAurcWLUlJKgVcXEokpe3bt/OrX/2KMWPGaB2KEO0K+iJlS3SJtJSaE5kSlDGli9E8KbndbubOncuvf/1r+vTpo3U4QrQr5IskFEMCLSWTraV8iZTEvRjNk9KCBQu44YYbmDlz5kWP9fv9NDQ0tHoI0VXSdX762E04nPFvKGmxpZFhM9HXKlUCLkbzHXI//PBDtm/fHtPxy5Yt49FHH+3kqIRoW780FfKc0D837vc60hwMz3dCnHfteqOEWkqHDx/u8IUrKyv59re/zdq1a7FarTG9Z8mSJdTX10cflZWVHY5DiJi1jAclMKZE8y65hPygSGvpQhJKSiUlJcyYMYPf//73+HyJ9ZF37txJdXU1EyZMwGg0YjQa2bRpE8888wxGo5Fw+Py6MxaLBafT2eohRFdR4t3F5GzNkydVVNSQ3IG7kISS0ocffsiYMWNYtGgReXl5fOMb3+CDDz6I6xzXXHMNe/fuZdeuXdHHxIkTmTt3Lrt27cJgMCQSmhCd5qPDx/mgopZjngR+bfR6dh7zsu1wLafP1Cc/uB4koaQ0btw4VqxYwfHjx1m1ahUnTpzgiiuuYNSoUSxfvpxTp05d9BwOh4NRo0a1eqSlpZGVlcWoUaMSCUuIzqOqEPASVlSM8S4xaaYYLKhA0CfTAi6kQ3ffjEYjt956Ky+88AJPPPEEpaWlLF68mMLCQu6++25OnDiRrDiF0FawiXDzWJDFFv+UAABd87hS0C9J6UI6lJR27NjBgw8+SH5+PsuXL2fx4sWUlZXx+uuvc/z4cW655Za4zvf222/z9NNPdyQkITpF2O8hrKiE9WasFnNiJ2kei5KkdGEJTQlYvnw5q1ev5sCBA8yePZvnnnuO2bNno9dHclxxcTFr1qyhqKgombEKoZmW/d6CBhsWY2J/y1t2QAlJUrqghJLSypUruffee5k/fz75+fltHpOTk8NvfvObDgUnRKoIeCNLTDDZ0el0CZ1Db460lKRSwIUllJRef/11BgwYEG0ZtVBVlcrKSgYMGIDZbGbevHlJCVIIrSWyM+65DC1JSWoqXVBC7dDBgwdz+vTp856vra2luLi4w0EJkWrMShN97CacrsTXZ6alpZNhM+E0hpIYWc+TUEupvf3Q3W53zLOzhehO+phC9MlzQlFBwucYlN8X6p3gkjl4FxJXUlq0aBEAOp2OpUuXYrd/3pQNh8Ns27aNcePGJTVAIVJCy4YBpsSmAwCyo0mM4kpKH330ERBpKe3duxez+fNbo2azmbFjx7J48eLkRihEClADHnSQ2Lq3Fs3zlNRgE4kNlfcOcSWlt956C4B77rmHFStWyNoz0WscqDxJQ00Ntuwgo3MSO0e1T8eRilp05iYmXpbc+HqShMaUVq9enew4hEhpasBDWCX+/d7OYjDbCSkqxqAvsmwlwakFPV3MSenWW29lzZo1OJ1Obr311gseu2HDhg4HJkTKUMLRipFmW2Lr3gDMzXW6w2EFNeRDl0i1gV4g5qTkcrmik8Zcrvgr7wnRbQW9hMIKKjos1sRbShaLFUVnRK+GCPqaMEtSalPMSensLpt030SvEvASUlRCBitWc+LFWk0GHWGDBX0oRNDvwezITGKQPUdCkyebmprwej+flXrkyBGefvppXnvttaQFJkTKCHoIhRWCehs2U+JzjHQ6XXRaQMDnSVZ0PU5CSemWW27hueeeA6Curo5Jkybx1FNPccstt7By5cqkBiiE1oI+N2E1shjXau7gXhvR8iUyV6k9CVeevPLKKwF48cUXycvL48iRIzz33HM888wzSQ1QCK0pfk9kFxOHC7OhY0nJ6XCSYTNhDPuTFF3Pk1AH2ev14nA4AHjttde49dZb0ev1XHbZZRw5ciSpAQqhNYvi45I8J/Qf0OHb+OOK88B6EiyyeUB7Et444OWXX6ayspKNGzdy7bXXAlBdXS0TKkXP05FdTM7VsquJLDVpV0JJaenSpSxevJiioiImT57MlClTgEirafz48UkNUAitqdF1b0lISsaWrZZkp9z2JNR9+5d/+ReuuOIKTpw4wdixY6PPX3PNNXzpS19KWnBCpIKjVac4+VkNSpqPyxIvEgDAnpN+/BW1OMPVDLskOfH1NAlPusjLyyMvL6/Vc5MmTepwQEKkmrDfS1gFNQmTHRWDlZCiSvXJC0goKXk8Hn7605/yxhtvUF1djXLOjp/J2EFXiJSgqoT9kaqTZqujw6czWCJdQFXGlNqVUFL6+te/zqZNm7jrrrvIz89PuGbxypUrWblyJRUVFQCMHDmSpUuXMmvWrITOJ0TShYOEgwEALPbE1721MDWvf5Ok1L6EktI//vEPXnnlFS6//PIOXbx///789Kc/ZciQIaiqym9/+1tuueUWPvroI0aOHNmhcwuRFEEPIUVF0Rmx2TrefTNbz2opSaWANiWUlPr06UNmZsfX7dx0002tvn788cdZuXIlW7dulaQkUkPASzCsEDTYsXZgiUkLkyWyoFcJh0AJgcHU4XP2NAlNCfjRj37E0qVLW61/66hwOMz69evxeDzRKQZCaC7gIRRWCept2DuwGLeFxWJFRUdYUWWuUjsS+pSfeuopysrKyM3NpaioCJOpdbb/8MMPYz7X3r17mTJlCj6fj/T0dF566SVGjBjR5rF+vx+///Pp+Q0NDYmEL0TM1IAbh9VI0J6B3dzxlpLVYsSWlo4df/NcJZlsfK6EktKcOXOSFsCwYcPYtWsX9fX1vPjii8ybN49Nmza1mZiWLVvGo48+mrRrC3ExuoA7ssSkYCAkofvmtJoYX5wP3hppKbVDp7a3X5JGZs6cyeDBg/nVr3513mtttZQKCwupr6+X5S2icxz4BxzfBUVXQPGVyTnnh89B/TEYdStkD0vOOVNUQ0MDLpcrrt/RhDvJdXV1vPjii5SVlfHd736XzMxMPvzwQ3Jzc+nXr1+ip0VRlFaJ52wWiwWLxZLwuYWIl+p3Ayo6S8enA0TJVksXlFBS2rNnDzNnzsTlclFRUcH9999PZmYmGzZs4OjRo9FaSxezZMkSZs2axYABA2hsbGTdunW8/fbbbNy4MZGwhEi6k6dPc6Siliazl+kdXGLS4p0KN9aaWkryGuiTpHP2JAndfVu0aBHz58/n0KFDrXbEnT17Nps3b475PNXV1dx9990MGzaMa665hu3bt7Nx40a++MUvJhKWEEkX8rlRVAgZk7AYt5kfMyFFJehP3t3rniShltL27dvbHPPp168fVVVVMZ/nN7/5TSKXF6JrqCpK8xITkz15Y5Z6c+QPeSggSaktCbWULBZLm7fjDx48SHZ2doeDEiIlBL2EgiEALLaOr3troW+uyxSWllKbEkpKN998M4899hjBYBCIFEQ/evQoDz/8MF/+8peTGqAQmgl4CIQVQnoradbk3WAxmJv3fwvIQHdbEkpKTz31FG63m+zsbJqampg2bRolJSU4HA4ef/zxZMcohDYCboJhlYDBjt3S8TlKLQzNLSVFklKbEhpTcrlcvP7662zZsoXdu3fjdruZMGECM2fOTHZ8QmjH746sezPaSbd0fIlJC6PFThhJSu2J+5NWFIU1a9awYcMGKioq0Ol0FBcXk5eXh6qqCZcxESLlBDykW4x47C7SkpiU0tMchC1GbLpA0s7Zk8T1Sauqys0338zf//53xo4dy+jRo1FVlf379zN//nw2bNjAyy+/3EmhCtHFAh6G5joYOqAIkpiURgzMgUpX5AslDPrkdQ17grg+6TVr1rB582beeOMNZsyY0eq1N998kzlz5vDcc89x9913JzVIITQRaIz8a07ibG4AgyVSR0ltrhSQzNniPUBcA91/+MMf+I//+I/zEhLA1VdfzSOPPMLatWuTFpwQWlL8blRUMKcl98R6PRib7+bJribniSsp7dmzh+uvv77d12fNmsXu3bs7HJQQqaD61Gk+KK/lrYrkDkhXN/p4/6iXPcfqZP1bG+LqvtXW1pKbm9vu67m5uZw5c6bDQQmhOVUl7KtHUSFsSm73yqDT4Q4bMYUVaSm1Ia6WUjgcxmhsP48ZDAZCoVCHgxJCc0EvwWAI0GFJcyX11GajnpDeQiisogZlVve54r77Nn/+/HbLh7RXckSIbsff2FybO7mzuQEsRgMhvRUVCPmbkCrdrcWVlObNm3fRY+TOm+gR/I0EQgp+g4ucJM7mBjAZdCiGSKIL+r2SlM4RV1JavXp1Z8UhRGrxNUSWmBjTSEvChgFn0+l06JrXvwV90n07V0Jr34To6VR/A4GwQsCYltQlJi1aKgWE/J6kn7u7k6QkRBuUpgYybCbSnZmkW5OflBwOJ+kWI3oZ6D5P8j9tIXoAQ9AdWWIyogQMyf/bPW3kQAi5wCR3q88lLSUh2uJvXmJi6aRdckzN5XWlpXQeSUpCnEtVCfsaIktMLMmrONmKuSUp+SJr4ESUdN+EOFfQy/GaRo7V+1D6+Zk6NPmX+Lg6SODoGfqkmSkONn2epIS0lIQ4j78Rf1ghoLdiNHXOLKIweryKkUBIkfVv55CkJMS5fA3NEyfTO2U6AIDNbCCotxIKKxCUaQFn0zQpLVu2jEsvvRSHw0FOTg5z5szhwIEDWoYkBPjqCITC+I1OHJ0wHQDAajQQNNgIKaq0lM6haVLatGkTCxYsYOvWrbz++usEg0GuvfZaPB75yyG0ozadibSUjOmdl5TMekItLaWA/LyfTdOB7ldffbXV12vWrCEnJ4edO3dy1VVXaRSV6O0CnjOEVfCbnJ3WfbOamrtvSqRSgFS2/1xK3X2rr68HIDMzs83X/X5/q0oEbW2IKURH+RpqADDYMjB2wsRJAJvJQMhgjWwJ7nPLotyzpMxAt6IoLFy4kMsvv5xRo0a1ecyyZctwuVzRR2FhYRdHKXo8VcUQaCArzUxuTl6nXcZk0GNLj7TEFNm+u5WUSUoLFizg448/Zv369e0es2TJEurr66OPysrKLoxQ9AoBD+lGGJrnZPrYkk691Ozxgxjdz4VFkTpkZ0uJ7ttDDz3E3/72NzZv3kz//v3bPc5isbRbYE6IpPDVRf61ODp/6yNZatImTVtKqqry0EMP8dJLL/Hmm29SXFysZThCQFMdwbCCak1uCdw2SVJqk6YtpQULFrBu3Tr+/Oc/43A4qKqqAiLbgttsNi1DE72Vr569x+o5UdPExME+cp3WTrvUe5VNWI+eoV9mkFxVjewFJ7RtKa1cuZL6+nqmT59Ofn5+9PHHP/5Ry7BELxZunqPkMaQndavutjSpZvwhhWAwCCEZV2qhaUtJldXRIsX4G2pQgbDJSZq5c8eUrFYrYZ2JoKJGunCmzmuVdScpc/dNiFTQVH8KAJMrG10nd6esJj0hg4VwWJFxpbNIUhKiRdCH3xuZkJvmyun0y0VmddsiLSWZqxQlSUmIFk21+AJhggYbLkdyd8Vti91sJGiwEwwrEGjs9Ot1F5KUhGjhraEpGKbJmEGfNHOnX85uNhAw2AmGVFmUe5aUmDwpRErw1pJhN+O25ZHt6PxJumkWI2abA2tIj+pvlEW5zSQpCdHCW0O/DBv9SoZAeucnpXSLkdkTh8CBMhlTOot034Ro4Y1UB8Ce1XXXNDePXQXcXXfNFCctJSEAFAW/uwbCYcy2zK7rSklSOo8kJSEA/PVU1br5rCFI8Kif6Zd0zWXfKvfiOnqGgX2DZCkK6KXzIp+AEACeGryBMD6ji6z0rlt36cWKP6QSCIZkAmUzSUpCAKq7Ck8ghNec2SV33lrYLSaCeivBsEwLaCFJSQjAV3eSYFjFa84iK73z5yi1sJsNZ02glHElkKQkBACe2uMAmJ25mDqpLndb7GYjAYNNktJZJCkJEQ7iqz8NQFpmfpde2m4xEDCkSfftLJKUhPCcpikQJKi3kdmn7Z10Okur7ptf1r+BTAkQAjzV9E23EHblk5GZ1qWXTrMYMadnYA0awCdbhoEkJSHAXU0fu5k+hYPA1bWF1pxWEzdPugT27AG/JCWQ7psQ4D4Z+Tet82sotallkwJJSoC0lERvpyjUVx+FcAibPY+umwxwFosj8m/QF6nVbezd24hJUhK9m+cUx2saqfGDo97E2C7YWelcmw43YPvMS5FLT46/sdcnJem+iV5NbTiO2x/Cbc4hP0Obbb1CYYVG1Y4/pICvXpMYUommSWnz5s3cdNNNFBQUoNPpePnll7UMR/RCjaeOEFJUfNYc+nZBDaW2pFuM+I3pBEKKjCuhcVLyeDyMHTuWZ599VsswRC/mPlUJgCWrP3q9NrUf061GAoa0SFKSaQHajinNmjWLWbNmaRmC6M1CfjxnIrsy98kdqFkYDosp0lIKSEsJutlAt9/vx+//fCfRhgb5HygSpzYcp8EbxG9IZ3CuRtMBiLSU/Ib05jEl+ZnuVgPdy5Ytw+VyRR+FhYVahyS6MXfVYQJhBbetgLwunjR5tpYxpbCiEvLWahZHquhWSWnJkiXU19dHH5WVlVqHJLqxtKZjjOnnYtTI0V1aGeBcZqOe9IxsnFYj4aYGCIc0iyUVdKvum8ViwWLp3XM4RJKEg+jdVaRZjKQNGqZ1NNx5+SWg5kQmT/rqIK2v1iFpplu1lIRImvrPQAlHZlPb+mgdDeh0n8fRy7twmraU3G43paWl0a/Ly8vZtWsXmZmZDBgwQMPIRE935ngpNdWNpA0YTL4uRbaBtPVBbTiBrumM1pFoStOktGPHDmbMmBH9etGiRQDMmzePNWvWaBSV6A1qPjvIKXeAE4FMurasW9vKTrn5tNTHYG8jl/STpKSZ6dOno6qqliGI3ijgwXs6cpMke+AIjYOJMBv0nFHS8AXD0MtbSjKmJHodz4mDePwhvOYsBhRoNz/pbC67iSaTC39IQfGc1jocTUlSEr3O6aP7AND3LcFuTo0b0A6LkaAlE0WFgKc+Usakl5KkJHoXRaHh2EEAMgcM1ziYz+l0OtLT0wkY0vCFwuA5pXVImpGkJHoVT/VhPB4PIb2VouIhWofTistmwmvKxBdUJCkJ0VsET3yM3WJAzR6Gy55aE3H7plvwmjPx+kO9OimlRodaiK6ghMlwHyajXwaB0VdqHc15cp1W3Jn5WBsP9eqkJC0l0XvUHo4s47CkY85Mvcm5JTnpXDdpNAUuG7iroZdOl5GWkuhywVCIo0crqDpeSYkjTK4dCPtpCgQ5UNWIw2rEaTXhcLqwpmeCswDSc0Hfsb+hNYe24VIUjDnDO3yuTpPWFwzGSPL01kJaltYRdTlJSqLLqL4Gjux6m5OHdqIEPOiBYB8b9LEDEGgK0nSigSaguvk9ZoOONIuRdFcmrsGTcAy+LKHC+t7605R+uhudqjJs3Cg02B8gNnoDQXsu1FViajgmSUmITqGqBCrep3z7q9Q2egEwmi24cgaQlpMHTicYLegDCul9PNQ3haj3+gk0NWAJNuD0neCM9yR6/xs4avbC0Ougb3x3zsp2v4OiqKh9inFm5nbGd5kU75Wdpqpcx0S9jwENxyF/jNYhdTlJSj3Y/hMNlFa7Gd3PxcAsOzotFp6G/AT2bODgvt00+kN4rLnkjJrBiBFjMZpMrQ51AKPPyjWBkEKNx8+xmkbqj+4hy3ggUi5274uczhxHXd5USnIv3uZxuxtwH/4AgMJRl2vzOcTIaTVxyJxDo/sTaDimdTiakKTU3SkK1BwiXH2Qg0c/oyjbiS2zH+SOos6ro7TaTWm1m5KcdL44IherydB1sQU8sOePVB8tpz4Ax3OmcfkV11DQ3F27GLNRT77LRr7LBoNmQngalG9GrdzGib2bOP7xfg4Mn8O0kQNIt7T9o6yqKh+/vxHCQYyuPPqXpHbLI89lpdGcg8cfQnFXow82gUmbrZ+0IkmpO6s7CgdeJeQ+xYGqRhp8IY7Umbgk7ygc3crojEsIFoxnV1WA0mo3Z7wBvjyhP2nt/AInVdAHu9eDu5qCnL5UFM9geskwsh0dmBtkMEHJNSiOApz1L+CpOU7T3t/z/OlZTBwxhFEFrvN2JPnkUCnK0Q/QA4MvnY0uVQe4m2WlmdHbHDQa+9DkD5F2pgJyUmfmeVdI7f9Dom2qCuXvwK51hD2n+bg6wKemEVTkzsQ17ubIeIuqkn5mP1c1/I2vXGLEYTVS4w7w4s7P8Pg7udxqOAQf/wnVfRLMdvQT7uKK8WM6lpDOYsgdzsCZ/8rIwYX0NXgZemwDOz/cwR93VFJa7SasRG6ln6lvpHrbC+hQyR40JqWWlbRHp9NR4LJRZy2kvikYmcbQy0hS6m6UMHz6N6h4F1VR2OHvz+bM2ziZM5Vrpk0nf/gUGP0vMOHuSCVDXwM5pS9ye7Efh9VIrSfAn3cdj+wx1inxKbD/L1QdPUhZTYDwqNvBnpn866Tn4Jj6dUaOGMngPiZG1ryG+cgm/v5ROY2+IPjq6VP2MgXGRrKzMhk0ZU6kumM3UNQ3jXpbf854A5Gk1MvmK0n3rTsJB+GTl6CmDFWnY6tpMlvD/THqddwyrh85jrN25HD1gy/Mh/1/gZoynKV/4fbi61hX4cBs1KN0xg+6qkLpP6k7spfDNU18mn09oaY0Lums++/mNPTjvkq+fSNZn31Ebv0Biqv34dpbBE11oCqUFPTFMO4r6KzOTgoi+Yqz0njbkkddQE+oqQFjfSVkpN5kz84iLaXuIhyEvS9CTRkYjOzN/CJbm/qj08Gs0fn0y2hjMNRkhVFfhtwRoCo4y1/lzv61fGl8v84Z8D7yHt7ybRys9lCaOZ1+g0YwLNeR/OucTW+AYbMwj72NgYUDGd/fgc5bC6oCGYUYJ85H5+rXuTEkmctuYni/TAqHjUev00HVx1qH1KWkpdQdhPyw9wWoq4wM9o65nf6mPFwNx5hY1IeSnPT236s3wPCbwWiFYx/iOvpPMCkwYDKqqnKi3kdBWwktXsd3ESx9m0+rGilzXYat/2hmDs/tmtvvOh1kD4W+QyL1rf0NYHWlxoYACbpuZB6cmQS7SuHUfiiZCUaz1mF1CUlKqS7og73PQ/2xyA/lmDvA1Z9M4GuXDcRsjKGxq9PBkGvBYIajW6HsTdSQj3eCw9l5tI6rL8lhbGFG4jFW7ye4/+/sr2rgsH0MvtzxfGVMAQZ9F4/h6HSR8avOGMPSQsaAyPfirYXjH8GAyVpH1CWk+5bKms7AR7+LJCSTlaOFcygLZERfjikhtdDpYPAMGDQt8uWR9+hbtRlUhbcOVPPJ8frEYqzai/rJyxysaqDcWEJN9mXcMq4fNnMXzofqoYKKyj7TSCpqPFC5NdJi7gUkKaWqmjL48DnwnAaLgwN5N/NymcIre05wor4p8fMOnApDvgjAcOUg14ffxhjy8tonJ9l2uCb2jRxUFco3w/6/oQOyh17KqYIZ3PqFQjLTekc3o7PVegK8djqLCq8Zd2MDlL2ldUhdIiWS0rPPPktRURFWq5XJkyfzwQcfaB2SdgJeOLgR9jwPAS9Bew6bHLP4e3mYsKIyODu99V22RPSfCCNuQWcwc4m1ltm+V8hxf8p7paf5y+7juC82j8lTg7prLU2HNke+LryUnIm3Mv/yQUmbiyQi9ZWG5mdQ1udKSqsbCX22E07s1jqsTqf5mNIf//hHFi1axC9/+UsmT57M008/zXXXXceBAwfIyUmNnSa6hK8BTuyCz3ZAyE9YVTlivYS3fCNpaAgDMLk4kymDs5IzeJw7AtJz0e17iUGcwt6wk0+rdnPCPYK/1A/hzqtGt76OokB9JYHPPqKuYg9V9R48IR2jpt2Go/gLABgN3WMeUHdy9SU5/L6uiTLfaPTHP2aI8jds/kYYMCVyE6MH0qkab7w2efJkLr30Un7xi18AoCgKhYWF/Nu//RuPPPLIBd/b0NCAy+Wivr4ep7ObzENRwhD0RtaFeU6D5xSh2nJC9SewGHTo0EF6Nn/xDKcsmA1EajdfMzyHgVlpnRPPsZ1Q8S5er4fDpzxkpZvJz8kGixNPUGVf5WkswTrCoQD+oIIK1FkLOZZ9JVeOGcKwvE6+7d/LnXb7+dOOSnJPbibfs4++6RYGFORhKhgNGQPBnhXZfjwFJ4cm8juqaUspEAiwc+dOlixZEn1Or9czc+ZM3n///fOO9/v9+P2fD/Y1NDTEdqHacij95/nPt8rHavS50lNuznj8qOcep0ZmQU8YmImx+f//4dONnGoMRN6vnnUuNfLv+AEZmA16QKXiVCOn6xtbnxKiyyImjBmDZeCl0HcYWYdrOV3VyISBfRhZ4MRk6KSett4AhZMgfxz2k3sZefIT1Prj4HeD343fGyDU0EgICOmt1KYNJJA7lsKBg5neP0MGtLtA33QLd142kNc+uZaDlTmEGrZTHGiEI+/Dkff5tKoBT0BB1ZtQDGZUnR7QodPpMBoMTBjYfDdSp2PfiQYafW13z/U6HZcWxTGNYvTt0AmTUjVNSqdPnyYcDpOb27q+TW5uLp9++ul5xy9btoxHH300/guF/JFWSYxUbyMhT6D9A3yGaOVC1edG8V3grkjQAkrzsaEAwbAK6AjqrfhMLrymPrjNOTTaCxk6fDiW9MiYzKTiTKYmq6sWC6MZ+n0BXb8voAv5wVsDvgasgRAFQ8KErX0wpWUyId3aNQt6RStOq4l/+UJ/jg3OorbhMvTmKqgpBfdJ/OEGAqEwEAZa7xenN+jA8/mSIrWxHqWdpKTTAe441kWqnbNUqVv9dC1ZsoRFixZFv25oaKCwsPDib8wohLFfOad52/zfbTyX5Q1iD4RbJ4TmOTc6nR69wxJ5n05HdlOQ9JAS6Xadfbrm/zCkWaPvzQ6qOFQTOqMVdJG/ZHodWE0GLEZ9q+t1WssoFkZLpAStswA7MFC7SMQ5+mXYmmfv94W8UQAUjfTh93kIB30QDkS65Kioqhr50XNYogkkd7CfjFDbIzY6HeCK4yaKuROGE9A4KfXt2xeDwcDJkydbPX/y5Eny8vLOO95isWCxJHB3x5wGmcUxH56ZEfupnQ6ItQGb3vwQIplc6VZIjy2Z9O0G80o1nRJgNpv5whe+wBtvvBF9TlEU3njjDaZMmaJhZEIIrWjefVu0aBHz5s1j4sSJTJo0iaeffhqPx8M999yjdWhCCA1onpTuuOMOTp06xdKlS6mqqmLcuHG8+uqr5w1+CyF6B83nKXVEt5ynJEQvksjvaEosMxFCiBaSlIQQKUWSkhAipWg+0N0RLcNhMS83EUJ0qZbfzXiGrrt1UmpsjKwji2lWtxBCM42Njbhcse0g0a3vvimKwvHjx3E4HCm9FXNnallqU1lZKXcgEyCfX8dc7PNTVZXGxkYKCgrQx7gRaLduKen1evr37691GCnB6XTKL1UHyOfXMRf6/GJtIbWQgW4hREqRpCSESCmSlLo5i8XCD37wg8SqJwj5/DqoMz6/bj3QLYToeaSlJIRIKZKUhBApRZKSECKlSFISQqQUSUrdUG1tLXPnzsXpdJKRkcF9992H2+2+4HumT5+OrnmzgpbHv/7rv3ZRxNqKdwfmF154gUsuuQSr1cro0aP5+9//3kWRpqZ4Pr81a9ac93Nmtca5o7Mqup3rr79eHTt2rLp161b1nXfeUUtKStQ777zzgu+ZNm2aev/996snTpyIPurr67soYu2sX79eNZvN6qpVq9RPPvlEvf/++9WMjAz15MmTbR6/ZcsW1WAwqD/72c/Uffv2qd///vdVk8mk7t27t4sjTw3xfn6rV69WnU5nq5+zqqqquK4pSamb2bdvnwqo27dvjz73j3/8Q9XpdOqxY8fafd+0adPUb3/7210QYWqZNGmSumDBgujX4XBYLSgoUJctW9bm8bfffrt6ww03tHpu8uTJ6je+8Y1OjTNVxfv5rV69WnW5XB26pnTfupn333+fjIwMJk6cGH1u5syZ6PV6tm3bdsH3rl27lr59+zJq1CiWLFmC1+vt7HA11bID88yZM6PPXWgHZoh8vmcfD3Dddde1e3xPlsjnB+B2uxk4cCCFhYXccsstfPLJJ3Fdt1svyO2NqqqqyMnJafWc0WgkMzOTqqqqdt/31a9+lYEDB1JQUMCePXt4+OGHOXDgABs2bOjskDUT7w7MEPl82zr+Qp9tT5XI5zds2DBWrVrFmDFjqK+v58knn2Tq1Kl88sknMS+el6SUIh555BGeeOKJCx6zf//+hM//wAMPRP979OjR5Ofnc80111BWVsbgwYMTPq8QZ5syZUqrPRunTp3K8OHD+dWvfsWPfvSjmM4hSSlF/Pu//zvz58+/4DGDBg0iLy+P6urqVs+HQiFqa2vb3FW4PZMnTwagtLS0xyaleHdgBsjLy4vr+J4skc/vXCaTifHjx1NaWhrzdWVMKUVkZ2dzySWXXPBhNpuZMmUKdXV17Ny5M/reN998E0VRookmFrt27QIgPz8/2d9KykhkB+YpU6a0Oh7g9ddf75U7NidjB+twOMzevXvj+znr0DC50MT111+vjh8/Xt22bZv67rvvqkOGDGk1JeCzzz5Thw0bpm7btk1VVVUtLS1VH3vsMXXHjh1qeXm5+uc//1kdNGiQetVVV2n1LXSZ9evXqxaLRV2zZo26b98+9YEHHlAzMjKit6nvuusu9ZFHHokev2XLFtVoNKpPPvmkun//fvUHP/hBr58SEM/n9+ijj6obN25Uy8rK1J07d6pf+cpXVKvVqn7yyScxX1OSUjdUU1Oj3nnnnWp6errqdDrVe+65R21sbIy+Xl5ergLqW2+9paqqqh49elS96qqr1MzMTNVisaglJSXqd7/73V4xT0lVVfXnP/+5OmDAANVsNquTJk1St27dGn1t2rRp6rx581od//zzz6tDhw5VzWazOnLkSPWVV17p4ohTSzyf38KFC6PH5ubmqrNnz1Y//PDDuK4npUuEEClFxpSEEClFkpIQIqVIUhJCpBRJSkKIlCJJSQiRUiQpCSFSiiQlIURKkaQkupU1a9aQkZER/fqHP/wh48aNi349f/585syZ0+VxieSRpCTaNH/+/HZL5i5YsACdTtdqAXFnJIOioiKefvrpVs/dcccdHDx4sN33rFixgjVr1kS/nj59OgsXLkxqXKJzSVIS7SosLGT9+vU0NTVFn/P5fKxbt44BAwZoEpPNZjuvntTZXC5Xq5aU6H4kKYl2TZgwgcLCwlaF4DZs2MCAAQMYP358h87dVgtmzpw50dbX9OnTOXLkCN/5zneiBejh/O7buc5usc2fP59NmzaxYsWK6DnKy8spKSnhySefbPW+Xbt2odPp4iqxITqHJCVxQffeey+rV6+Ofr1q1SruueeeTr/uhg0b6N+/P4899hgnTpzgxIkTcZ9jxYoVTJkyhfvvvz96jgEDBpz3PQGsXr2aq666ipKSkmR9CyJBkpTEBX3ta1/j3Xff5ciRIxw5coQtW7bwta99rdOvm5mZicFgwOFwkJeXl1CRNZfLhdlsxm63R89hMBiYP38+Bw4ciG4VFAwGWbduHffee2+yvw2RAKk8KS4oOzubG264gTVr1qCqKjfccAN9+/bVOqwOKSgo4IYbbmDVqlVMmjSJv/71r/j9fm677TatQxNIS0nE4N5772XNmjX89re/TVprQq/Xc27VnGAwmJRzx+LrX/96dBB/9erV3HHHHdjt9i67vmifJCVxUddffz2BQIBgMMh1112XlHNmZ2e3GicKh8N8/PHHrY4xm82Ew+EOXae9c8yePZu0tDRWrlzJq6++Kl23FCLdN3FRBoMhupOKwWBo97j6+vpo7e8WWVlZFBYWnnfs1VdfzaJFi3jllVcYPHgwy5cvp66urtUxRUVFbN68ma985StYLJaEuo1FRUVs27aNiooK0tPTyczMRK/XR8eWlixZwpAhQ3plDe5UJS0lEROn04nT6bzgMW+//Tbjx49v9Xj00UfbPPbee+9l3rx53H333UybNo1BgwYxY8aMVsc89thjVFRUMHjwYLKzsxOKe/HixRgMBkaMGEF2djZHjx6NvnbfffcRCAS65G6iiJ2UwxW91jvvvMM111xDZWXleRsuCu1IUhK9jt/v59SpU8ybN4+8vDzWrl2rdUjiLNJ9E73OH/7wBwYOHEhdXR0/+9nPtA5HnENaSkKIlCItJSFESpGkJIRIKZKUhBApRZKSECKlSFISQqQUSUpCiJQiSUkIkVIkKQkhUookJSFESvn/JWQIbT7EEWAAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ml_utility_loss.loss_learning.visualization import plot_density_3\n", "\n", "_ = plot_density_3(y2[\"pred\"], next(iter(y2[\"y\"].values())))" ] }, { "cell_type": "code", "execution_count": 36, "id": "745adde1", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T18:11:42.801100Z", "iopub.status.busy": "2024-02-29T18:11:42.800581Z", "iopub.status.idle": "2024-02-29T18:11:43.019886Z", "shell.execute_reply": "2024-02-29T18:11:43.019064Z" }, "papermill": { "duration": 0.242308, "end_time": "2024-02-29T18:11:43.021663", "exception": false, "start_time": "2024-02-29T18:11:42.779355", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ml_utility_loss.loss_learning.visualization import plot_box_3\n", "\n", "_ = plot_box_3(y2[\"pred\"], next(iter(y2[\"y\"].values())))" ] }, { "cell_type": "code", "execution_count": 37, "id": "eabe1bab", "metadata": { "execution": { "iopub.execute_input": "2024-02-29T18:11:43.063972Z", "iopub.status.busy": "2024-02-29T18:11:43.063705Z", "iopub.status.idle": "2024-02-29T18:11:43.256163Z", "shell.execute_reply": "2024-02-29T18:11:43.255366Z" }, "papermill": { "duration": 0.215855, "end_time": "2024-02-29T18:11:43.258087", "exception": false, "start_time": "2024-02-29T18:11:43.042232", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#\"\"\"\n", "from ml_utility_loss.loss_learning.visualization import plot_grad, plot_grad_2, plot_grad_3\n", "import matplotlib.pyplot as plt\n", "\n", "#plot_grad_2(y, model.models)\n", "for m in model.models:\n", " ym = y[m]\n", " fig, ax = plt.subplots()\n", " plot_grad_3(ym[\"error\"], ym[\"grad\"], name=f\"{m}_grad\", fig=fig, ax=ax)\n", "#\"\"\"" ] }, { "cell_type": "code", "execution_count": null, "id": "54c0e9f3", "metadata": { "papermill": { "duration": 0.021173, "end_time": "2024-02-29T18:11:43.300089", "exception": false, "start_time": "2024-02-29T18:11:43.278916", "status": "completed" }, "tags": [] }, "outputs": [], "source": [] } ], "metadata": { "accelerator": "GPU", "celltoolbar": "Tags", "colab": { "authorship_tag": "ABX9TyOOVfelovKP9fLGU7SvvRie", "gpuType": "T4", "mount_file_id": "17POSGAvge8y9DW9WGs2jLkibaRjToayg", "provenance": [] }, "kaggle": { "accelerator": "gpu", "dataSources": [], "dockerImageVersionId": 30648, "isGpuEnabled": true, "isInternetEnabled": true, "language": "python", "sourceType": "notebook" }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.13" }, "papermill": { "default_parameters": {}, "duration": 1264.119122, "end_time": "2024-02-29T18:11:46.042253", "environment_variables": {}, "exception": null, "input_path": "eval/insurance/tvae/4/mlu-eval.ipynb", "output_path": "eval/insurance/tvae/4/mlu-eval.ipynb", "parameters": { "allow_same_prediction": true, "dataset": "insurance", "dataset_name": "insurance", "debug": false, "folder": "eval", "gp": false, "gp_multiply": false, "param_index": 2, "path": "eval/insurance/tvae/4", "path_prefix": "../../../../", "random_seed": 4, "single_model": "tvae" }, "start_time": "2024-02-29T17:50:41.923131", "version": "2.5.0" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }