From 4e1d51063bb7a92b17eae97c77bfbbc55a4d4e60 Mon Sep 17 00:00:00 2001 From: wassname Date: Sat, 13 Jan 2024 07:42:05 +0800 Subject: [PATCH] wip --- notebooks/11c_sae.ipynb | 6375 +++++++++-------- notebooks/11c_sae_no_imp.ipynb | 7192 ++++++++++++++++++++ notebooks/11d_sae_no_imp.ipynb | 24 +- notebooks/11e_sae_aisafteyfoundation.ipynb | 2312 ++++++- notebooks/11f_sae2 deep.ipynb | 6621 ++++++++++++++++++ notebooks/11f_sae2.ipynb | 1028 ++- src/helpers/lightning.py | 2 +- src/probes/importance_matrix.py | 4 +- src/vae/sae2.py | 50 +- 9 files changed, 20225 insertions(+), 3383 deletions(-) create mode 100644 notebooks/11c_sae_no_imp.ipynb create mode 100644 notebooks/11f_sae2 deep.ipynb diff --git a/notebooks/11c_sae.ipynb b/notebooks/11c_sae.ipynb index 7c729dc..bcf2628 100644 --- a/notebooks/11c_sae.ipynb +++ b/notebooks/11c_sae.ipynb @@ -123,7 +123,7 @@ " # x_feats=x_feats. other use 1e-1\n", "\n", "\n", - "BASE_FOLDER = Path(\"/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/notebooks/lightning_logs/version_24/\")\n", + "BASE_FOLDER = Path(\"/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/notebooks/lightning_logs/version_106/\")\n", "layers_names = (\n", " 'fc1', 'Wqkv',\n", " 'fc2', 'out_proj')" @@ -144,8 +144,8 @@ { "data": { "text/plain": [ - "(PosixPath('/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/notebooks/lightning_logs/version_24/hidden_states/.ds/ds_valtest_8b8fd6070504d5ef'),\n", - " PosixPath('/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/notebooks/lightning_logs/version_24/hidden_states/.ds/ds_OOD_a41d3a61513ade30'))" + "(PosixPath('/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/notebooks/lightning_logs/version_106/hidden_states/.ds/ds_valtest_d1257b41dfd08b55'),\n", + " PosixPath('/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/notebooks/lightning_logs/version_106/hidden_states/.ds/ds_OOD_9af998824a59a692'))" ] }, "execution_count": 3, @@ -211,7 +211,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "213c01fd9d934fe88f2b23bb404e1dff", + "model_id": "440d12d9f3b24ba9961474dd64a274d2", "version_major": 2, "version_minor": 0 }, @@ -226,8 +226,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "\u001b[32m2024-01-07 13:48:19.483\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msrc.datasets.act_dm\u001b[0m:\u001b[36msetup\u001b[0m:\u001b[36m64\u001b[0m - \u001b[1mconverting datasets this may take a while... ds_valtest_8b8fd6070504d5ef train\u001b[0m\n", - "2024-01-07T13:48:19.483993+0800 INFO converting datasets this may take a while... ds_valtest_8b8fd6070504d5ef train\n" + "\u001b[32m2024-01-11 08:38:24.814\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msrc.datasets.act_dm\u001b[0m:\u001b[36msetup\u001b[0m:\u001b[36m64\u001b[0m - \u001b[1mconverting datasets this may take a while... ds_valtest_d1257b41dfd08b55 train\u001b[0m\n", + "2024-01-11T08:38:24.814944+0800 INFO converting datasets this may take a while... ds_valtest_d1257b41dfd08b55 train\n" ] }, { @@ -240,7 +240,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "82af8d60225341b2b611e5bc12b0f1c8", + "model_id": "e0868bc1f4ff493fb1b46e9336961e2b", "version_major": 2, "version_minor": 0 }, @@ -255,8 +255,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "\u001b[32m2024-01-07 13:48:50.822\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msrc.datasets.act_dm\u001b[0m:\u001b[36msetup\u001b[0m:\u001b[36m64\u001b[0m - \u001b[1mconverting datasets this may take a while... ds_OOD_a41d3a61513ade30 all\u001b[0m\n", - "2024-01-07T13:48:50.822504+0800 INFO converting datasets this may take a while... ds_OOD_a41d3a61513ade30 all\n" + "\u001b[32m2024-01-11 08:39:05.639\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msrc.datasets.act_dm\u001b[0m:\u001b[36msetup\u001b[0m:\u001b[36m64\u001b[0m - \u001b[1mconverting datasets this may take a while... ds_OOD_9af998824a59a692 all\u001b[0m\n", + "2024-01-11T08:39:05.639448+0800 INFO converting datasets this may take a while... ds_OOD_9af998824a59a692 all\n" ] }, { @@ -376,7 +376,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -402,7 +402,7 @@ { "data": { "text/plain": [ - "tensor(64338.)" + "tensor(64425.)" ] }, "execution_count": 8, @@ -422,7 +422,7 @@ { "data": { "text/plain": [ - "tensor(1.1881)" + "tensor(1.0602)" ] }, "execution_count": 9, @@ -728,12 +728,12 @@ { "data": { "text/plain": [ - "({'pred': tensor(0.0386),\n", - " 'l1_loss': tensor(428.3705),\n", - " 'l2_loss': tensor(5.9861e+08),\n", - " 'loss': tensor(5.9861e+08),\n", - " 'latent': tensor(0.2390),\n", - " 'h_rec': tensor(0.0032)},\n", + "({'pred': tensor(0.0447),\n", + " 'l1_loss': tensor(260.3614),\n", + " 'l2_loss': tensor(3.6110e+08),\n", + " 'loss': tensor(3.6110e+08),\n", + " 'latent': tensor(0.1453),\n", + " 'h_rec': tensor(0.0019)},\n", " {'pred': torch.Size([32]),\n", " 'l1_loss': torch.Size([32]),\n", " 'l2_loss': torch.Size([32]),\n", @@ -891,7 +891,7 @@ { "data": { "text/plain": [ - "tensor(2860.)" + "tensor(2373.)" ] }, "execution_count": 23, @@ -911,17 +911,17 @@ { "data": { "text/plain": [ - "(tensor([293.7516, 442.0275, 422.1171, 431.4987, 466.6316, 446.4012, 456.4958,\n", - " 425.0434, 442.9265, 442.0050, 447.7122, 421.9023, 453.0414, 470.1711,\n", - " 433.8322, 421.4922, 433.7445, 421.8166, 431.6870, 439.9942, 452.0031,\n", - " 436.9038, 448.6310, 450.6782, 408.3802, 438.2269, 389.4915, 358.7310,\n", - " 426.4059, 384.1874, 431.5323, 438.3927]),\n", - " tensor([7.2245e+08, 1.1967e+09, 1.1638e+09, 1.1439e+09, 1.2908e+09, 1.3743e+09,\n", - " 1.3652e+09, 1.2304e+09, 1.1913e+09, 1.2773e+09, 1.2428e+09, 1.1444e+09,\n", - " 1.3413e+09, 1.3320e+09, 1.0966e+09, 1.1495e+09, 1.1309e+09, 1.0744e+09,\n", - " 1.3453e+09, 1.2996e+09, 1.2404e+09, 1.2008e+09, 1.3052e+09, 1.4591e+09,\n", - " 1.0687e+09, 1.2485e+09, 1.0363e+09, 8.1513e+08, 1.3006e+09, 9.9212e+08,\n", - " 1.1794e+09, 1.3519e+09]))" + "(tensor([282.8781, 277.8175, 247.3762, 164.7396, 278.4788, 274.9382, 284.8903,\n", + " 294.3019, 238.6350, 276.3690, 279.8581, 265.0807, 224.3467, 256.5333,\n", + " 218.3369, 251.0696, 261.0947, 276.1130, 165.9135, 282.3437, 285.7816,\n", + " 272.7520, 267.4094, 277.7846, 274.4849, 282.7998, 171.3701, 264.8025,\n", + " 283.5914, 289.4493, 280.0211, 280.2032]),\n", + " tensor([7.9080e+08, 7.0214e+08, 6.9955e+08, 3.0318e+08, 7.6134e+08, 8.6174e+08,\n", + " 8.2204e+08, 8.3734e+08, 6.5328e+08, 8.8900e+08, 7.1893e+08, 8.1096e+08,\n", + " 5.9387e+08, 7.5110e+08, 5.6376e+08, 7.2574e+08, 7.7543e+08, 6.3524e+08,\n", + " 2.6334e+08, 8.7253e+08, 7.0313e+08, 8.4930e+08, 8.2763e+08, 7.7532e+08,\n", + " 8.6620e+08, 7.0077e+08, 3.1547e+08, 8.2067e+08, 8.3015e+08, 7.1808e+08,\n", + " 7.9943e+08, 8.7284e+08]))" ] }, "execution_count": 24, @@ -957,7 +957,21 @@ "GPU available: True (cuda), used: True\n", "TPU available: False, using: 0 TPU cores\n", "IPU available: False, using: 0 IPUs\n", - "HPU available: False, using: 0 HPUs\n", + "HPU available: False, using: 0 HPUs\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "training ae\n", + "requires_grad: True\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/logger_connector/logger_connector.py:67: Starting from v1.9.0, `tensorboardX` has been removed as a dependency of the `lightning.pytorch` package, due to potential conflicts with other packages in the ML ecosystem. For this reason, `logger=True` will use `CSVLogger` as the default logger, unless the `tensorboard` or `tensorboardX` packages are found. Please `pip install lightning[extra]` or one of them to enable TensorBoard support by default\n", "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", "\n", @@ -972,19 +986,10 @@ "347.287 Total estimated model params size (MB)\n" ] }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "training ae\n", - "requires_grad: True\n", - "Adjusting learning rate of group 0 to 4.0000e-05.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e5d622fcf6a8458aabc7d40d2047958b", + "model_id": "0875cfab107342a2a7cbd8505f87ce41", "version_major": 2, "version_minor": 0 }, @@ -1006,7 +1011,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e49f276efa9846fe9c265b46e0bb8999", + "model_id": "093223eb6fd84ba49b2acdbdba711a90", "version_major": 2, "version_minor": 0 }, @@ -1017,26 +1022,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 4.0138e-05.\n", - "Adjusting learning rate of group 0 to 4.0552e-05.\n", - "Adjusting learning rate of group 0 to 4.1242e-05.\n", - "Adjusting learning rate of group 0 to 4.2207e-05.\n", - "Adjusting learning rate of group 0 to 4.3447e-05.\n", - "Adjusting learning rate of group 0 to 4.4960e-05.\n", - "Adjusting learning rate of group 0 to 4.6748e-05.\n", - "Adjusting learning rate of group 0 to 4.8807e-05.\n", - "Adjusting learning rate of group 0 to 5.1137e-05.\n", - "Adjusting learning rate of group 0 to 5.3737e-05.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "649962647de1425fb4f8987c25408d24", + "model_id": "0fb533de3b4e4039af2ead486cf17824", "version_major": 2, "version_minor": 0 }, @@ -1047,26 +1036,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 5.6605e-05.\n", - "Adjusting learning rate of group 0 to 5.9739e-05.\n", - "Adjusting learning rate of group 0 to 6.3138e-05.\n", - "Adjusting learning rate of group 0 to 6.6800e-05.\n", - "Adjusting learning rate of group 0 to 7.0723e-05.\n", - "Adjusting learning rate of group 0 to 7.4904e-05.\n", - "Adjusting learning rate of group 0 to 7.9341e-05.\n", - "Adjusting learning rate of group 0 to 8.4031e-05.\n", - "Adjusting learning rate of group 0 to 8.8972e-05.\n", - "Adjusting learning rate of group 0 to 9.4161e-05.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e2f9d22eb072413b881ce04c5f34bb7a", + "model_id": "408c8d6886e3486c8a1662348056607c", "version_major": 2, "version_minor": 0 }, @@ -1077,26 +1050,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 9.9595e-05.\n", - "Adjusting learning rate of group 0 to 1.0527e-04.\n", - "Adjusting learning rate of group 0 to 1.1118e-04.\n", - "Adjusting learning rate of group 0 to 1.1733e-04.\n", - "Adjusting learning rate of group 0 to 1.2371e-04.\n", - "Adjusting learning rate of group 0 to 1.3032e-04.\n", - "Adjusting learning rate of group 0 to 1.3716e-04.\n", - "Adjusting learning rate of group 0 to 1.4421e-04.\n", - "Adjusting learning rate of group 0 to 1.5148e-04.\n", - "Adjusting learning rate of group 0 to 1.5896e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "cc65844258104d548406535736e60ced", + "model_id": "294be4b2a2894adaaf6041188b3eb021", "version_major": 2, "version_minor": 0 }, @@ -1107,26 +1064,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 1.6665e-04.\n", - "Adjusting learning rate of group 0 to 1.7454e-04.\n", - "Adjusting learning rate of group 0 to 1.8263e-04.\n", - "Adjusting learning rate of group 0 to 1.9091e-04.\n", - "Adjusting learning rate of group 0 to 1.9939e-04.\n", - "Adjusting learning rate of group 0 to 2.0805e-04.\n", - "Adjusting learning rate of group 0 to 2.1688e-04.\n", - "Adjusting learning rate of group 0 to 2.2590e-04.\n", - "Adjusting learning rate of group 0 to 2.3508e-04.\n", - "Adjusting learning rate of group 0 to 2.4442e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ef75c1225a49443fa3874671f5fae464", + "model_id": "a5bb658f8d304f4fa424303a4e171606", "version_major": 2, "version_minor": 0 }, @@ -1137,26 +1078,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 2.5392e-04.\n", - "Adjusting learning rate of group 0 to 2.6358e-04.\n", - "Adjusting learning rate of group 0 to 2.7338e-04.\n", - "Adjusting learning rate of group 0 to 2.8333e-04.\n", - "Adjusting learning rate of group 0 to 2.9341e-04.\n", - "Adjusting learning rate of group 0 to 3.0362e-04.\n", - "Adjusting learning rate of group 0 to 3.1396e-04.\n", - "Adjusting learning rate of group 0 to 3.2442e-04.\n", - "Adjusting learning rate of group 0 to 3.3498e-04.\n", - "Adjusting learning rate of group 0 to 3.4566e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "9455062e54bb4e408eaddfb96df7b710", + "model_id": "2a6b759a7b934df1b15ce4677a727213", "version_major": 2, "version_minor": 0 }, @@ -1167,26 +1092,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 3.5643e-04.\n", - "Adjusting learning rate of group 0 to 3.6730e-04.\n", - "Adjusting learning rate of group 0 to 3.7826e-04.\n", - "Adjusting learning rate of group 0 to 3.8929e-04.\n", - "Adjusting learning rate of group 0 to 4.0041e-04.\n", - "Adjusting learning rate of group 0 to 4.1159e-04.\n", - "Adjusting learning rate of group 0 to 4.2283e-04.\n", - "Adjusting learning rate of group 0 to 4.3413e-04.\n", - "Adjusting learning rate of group 0 to 4.4548e-04.\n", - "Adjusting learning rate of group 0 to 4.5687e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "fe445ea0fc7f41adb26914dd20290bbe", + "model_id": "666633c7006b4f8c81caa3207af8866e", "version_major": 2, "version_minor": 0 }, @@ -1197,26 +1106,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 4.6830e-04.\n", - "Adjusting learning rate of group 0 to 4.7976e-04.\n", - "Adjusting learning rate of group 0 to 4.9124e-04.\n", - "Adjusting learning rate of group 0 to 5.0274e-04.\n", - "Adjusting learning rate of group 0 to 5.1424e-04.\n", - "Adjusting learning rate of group 0 to 5.2576e-04.\n", - "Adjusting learning rate of group 0 to 5.3726e-04.\n", - "Adjusting learning rate of group 0 to 5.4876e-04.\n", - "Adjusting learning rate of group 0 to 5.6024e-04.\n", - "Adjusting learning rate of group 0 to 5.7170e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "3e47f2809fae47d1a0a68392e55f00da", + "model_id": "30caafa94cf6419fb72294e69a5f8853", "version_major": 2, "version_minor": 0 }, @@ -1227,26 +1120,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 5.8313e-04.\n", - "Adjusting learning rate of group 0 to 5.9452e-04.\n", - "Adjusting learning rate of group 0 to 6.0587e-04.\n", - "Adjusting learning rate of group 0 to 6.1717e-04.\n", - "Adjusting learning rate of group 0 to 6.2841e-04.\n", - "Adjusting learning rate of group 0 to 6.3959e-04.\n", - "Adjusting learning rate of group 0 to 6.5071e-04.\n", - "Adjusting learning rate of group 0 to 6.6174e-04.\n", - "Adjusting learning rate of group 0 to 6.7270e-04.\n", - "Adjusting learning rate of group 0 to 6.8357e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1c202a5a7e9f4fa68491d53471216ec5", + "model_id": "4a08f4f2f8584a12bcf8f114689879c1", "version_major": 2, "version_minor": 0 }, @@ -1257,26 +1134,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 6.9434e-04.\n", - "Adjusting learning rate of group 0 to 7.0502e-04.\n", - "Adjusting learning rate of group 0 to 7.1558e-04.\n", - "Adjusting learning rate of group 0 to 7.2604e-04.\n", - "Adjusting learning rate of group 0 to 7.3638e-04.\n", - "Adjusting learning rate of group 0 to 7.4659e-04.\n", - "Adjusting learning rate of group 0 to 7.5667e-04.\n", - "Adjusting learning rate of group 0 to 7.6662e-04.\n", - "Adjusting learning rate of group 0 to 7.7642e-04.\n", - "Adjusting learning rate of group 0 to 7.8608e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a8082091ef2c42658a9f1aab4f536446", + "model_id": "8213fbd629914da0872677fe488cb075", "version_major": 2, "version_minor": 0 }, @@ -1287,26 +1148,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 7.9558e-04.\n", - "Adjusting learning rate of group 0 to 8.0492e-04.\n", - "Adjusting learning rate of group 0 to 8.1410e-04.\n", - "Adjusting learning rate of group 0 to 8.2312e-04.\n", - "Adjusting learning rate of group 0 to 8.3195e-04.\n", - "Adjusting learning rate of group 0 to 8.4061e-04.\n", - "Adjusting learning rate of group 0 to 8.4909e-04.\n", - "Adjusting learning rate of group 0 to 8.5737e-04.\n", - "Adjusting learning rate of group 0 to 8.6546e-04.\n", - "Adjusting learning rate of group 0 to 8.7335e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ec73a9e315844372a6b3e5bc26fa285a", + "model_id": "a99aacca81954451b82e60fb82239446", "version_major": 2, "version_minor": 0 }, @@ -1317,26 +1162,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 8.8104e-04.\n", - "Adjusting learning rate of group 0 to 8.8852e-04.\n", - "Adjusting learning rate of group 0 to 8.9579e-04.\n", - "Adjusting learning rate of group 0 to 9.0284e-04.\n", - "Adjusting learning rate of group 0 to 9.0968e-04.\n", - "Adjusting learning rate of group 0 to 9.1629e-04.\n", - "Adjusting learning rate of group 0 to 9.2267e-04.\n", - "Adjusting learning rate of group 0 to 9.2882e-04.\n", - "Adjusting learning rate of group 0 to 9.3473e-04.\n", - "Adjusting learning rate of group 0 to 9.4041e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "fef6fdc7afaf4956b4ff11fdb940fc2f", + "model_id": "3f047145d8a74dc3a94312d95574e32e", "version_major": 2, "version_minor": 0 }, @@ -1347,26 +1176,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 9.4584e-04.\n", - "Adjusting learning rate of group 0 to 9.5103e-04.\n", - "Adjusting learning rate of group 0 to 9.5597e-04.\n", - "Adjusting learning rate of group 0 to 9.6066e-04.\n", - "Adjusting learning rate of group 0 to 9.6510e-04.\n", - "Adjusting learning rate of group 0 to 9.6928e-04.\n", - "Adjusting learning rate of group 0 to 9.7320e-04.\n", - "Adjusting learning rate of group 0 to 9.7686e-04.\n", - "Adjusting learning rate of group 0 to 9.8026e-04.\n", - "Adjusting learning rate of group 0 to 9.8340e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ec44396221d0424f8589b59637266d45", + "model_id": "0e340b20817146ad9bf904114666e61f", "version_major": 2, "version_minor": 0 }, @@ -1377,26 +1190,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 9.8626e-04.\n", - "Adjusting learning rate of group 0 to 9.8886e-04.\n", - "Adjusting learning rate of group 0 to 9.9119e-04.\n", - "Adjusting learning rate of group 0 to 9.9325e-04.\n", - "Adjusting learning rate of group 0 to 9.9504e-04.\n", - "Adjusting learning rate of group 0 to 9.9655e-04.\n", - "Adjusting learning rate of group 0 to 9.9779e-04.\n", - "Adjusting learning rate of group 0 to 9.9876e-04.\n", - "Adjusting learning rate of group 0 to 9.9945e-04.\n", - "Adjusting learning rate of group 0 to 9.9986e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8a71a6ce94c340eda613d06af335465f", + "model_id": "a8a74eacc2ce4316aefebe29441316d2", "version_major": 2, "version_minor": 0 }, @@ -1407,26 +1204,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 1.0000e-03.\n", - "Adjusting learning rate of group 0 to 9.9997e-04.\n", - "Adjusting learning rate of group 0 to 9.9990e-04.\n", - "Adjusting learning rate of group 0 to 9.9977e-04.\n", - "Adjusting learning rate of group 0 to 9.9958e-04.\n", - "Adjusting learning rate of group 0 to 9.9935e-04.\n", - "Adjusting learning rate of group 0 to 9.9906e-04.\n", - "Adjusting learning rate of group 0 to 9.9873e-04.\n", - "Adjusting learning rate of group 0 to 9.9834e-04.\n", - "Adjusting learning rate of group 0 to 9.9789e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "cca0cba98d7e4863918f772c2e103fec", + "model_id": "bec0d80365da40bbb13778fec2ba14d3", "version_major": 2, "version_minor": 0 }, @@ -1437,26 +1218,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 9.9740e-04.\n", - "Adjusting learning rate of group 0 to 9.9686e-04.\n", - "Adjusting learning rate of group 0 to 9.9626e-04.\n", - "Adjusting learning rate of group 0 to 9.9561e-04.\n", - "Adjusting learning rate of group 0 to 9.9491e-04.\n", - "Adjusting learning rate of group 0 to 9.9416e-04.\n", - "Adjusting learning rate of group 0 to 9.9336e-04.\n", - "Adjusting learning rate of group 0 to 9.9250e-04.\n", - "Adjusting learning rate of group 0 to 9.9160e-04.\n", - "Adjusting learning rate of group 0 to 9.9064e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ca283aebe8924639ac90d4c17f487b3f", + "model_id": "f3dbeb3952984ad7999c5ba77a7f81cd", "version_major": 2, "version_minor": 0 }, @@ -1467,26 +1232,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 9.8963e-04.\n", - "Adjusting learning rate of group 0 to 9.8857e-04.\n", - "Adjusting learning rate of group 0 to 9.8746e-04.\n", - "Adjusting learning rate of group 0 to 9.8630e-04.\n", - "Adjusting learning rate of group 0 to 9.8509e-04.\n", - "Adjusting learning rate of group 0 to 9.8383e-04.\n", - "Adjusting learning rate of group 0 to 9.8252e-04.\n", - "Adjusting learning rate of group 0 to 9.8116e-04.\n", - "Adjusting learning rate of group 0 to 9.7975e-04.\n", - "Adjusting learning rate of group 0 to 9.7828e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "4ee0b964ad2041bc9662893f3abbfa27", + "model_id": "f6476230703e49eb83bab3d4a98f4d3a", "version_major": 2, "version_minor": 0 }, @@ -1497,26 +1246,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 9.7677e-04.\n", - "Adjusting learning rate of group 0 to 9.7521e-04.\n", - "Adjusting learning rate of group 0 to 9.7360e-04.\n", - "Adjusting learning rate of group 0 to 9.7194e-04.\n", - "Adjusting learning rate of group 0 to 9.7023e-04.\n", - "Adjusting learning rate of group 0 to 9.6847e-04.\n", - "Adjusting learning rate of group 0 to 9.6667e-04.\n", - "Adjusting learning rate of group 0 to 9.6481e-04.\n", - "Adjusting learning rate of group 0 to 9.6291e-04.\n", - "Adjusting learning rate of group 0 to 9.6096e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "34a03e6019134fb9a339895e80585f35", + "model_id": "4d8fcf066ace4587853dbc63767a6436", "version_major": 2, "version_minor": 0 }, @@ -1527,26 +1260,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 9.5896e-04.\n", - "Adjusting learning rate of group 0 to 9.5691e-04.\n", - "Adjusting learning rate of group 0 to 9.5482e-04.\n", - "Adjusting learning rate of group 0 to 9.5267e-04.\n", - "Adjusting learning rate of group 0 to 9.5048e-04.\n", - "Adjusting learning rate of group 0 to 9.4825e-04.\n", - "Adjusting learning rate of group 0 to 9.4597e-04.\n", - "Adjusting learning rate of group 0 to 9.4364e-04.\n", - "Adjusting learning rate of group 0 to 9.4126e-04.\n", - "Adjusting learning rate of group 0 to 9.3884e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "3c8657d321a4439bb1abc7dde5f56052", + "model_id": "54c35fe1ba2b4042a538aa7690345069", "version_major": 2, "version_minor": 0 }, @@ -1557,26 +1274,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 9.3637e-04.\n", - "Adjusting learning rate of group 0 to 9.3386e-04.\n", - "Adjusting learning rate of group 0 to 9.3130e-04.\n", - "Adjusting learning rate of group 0 to 9.2870e-04.\n", - "Adjusting learning rate of group 0 to 9.2605e-04.\n", - "Adjusting learning rate of group 0 to 9.2336e-04.\n", - "Adjusting learning rate of group 0 to 9.2063e-04.\n", - "Adjusting learning rate of group 0 to 9.1785e-04.\n", - "Adjusting learning rate of group 0 to 9.1503e-04.\n", - "Adjusting learning rate of group 0 to 9.1216e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5e4a9b2f2e3644d59f3c666f85f99d75", + "model_id": "0ccf7f10733040a7b1da6921c8cf517d", "version_major": 2, "version_minor": 0 }, @@ -1587,26 +1288,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 9.0925e-04.\n", - "Adjusting learning rate of group 0 to 9.0630e-04.\n", - "Adjusting learning rate of group 0 to 9.0331e-04.\n", - "Adjusting learning rate of group 0 to 9.0027e-04.\n", - "Adjusting learning rate of group 0 to 8.9719e-04.\n", - "Adjusting learning rate of group 0 to 8.9408e-04.\n", - "Adjusting learning rate of group 0 to 8.9092e-04.\n", - "Adjusting learning rate of group 0 to 8.8772e-04.\n", - "Adjusting learning rate of group 0 to 8.8448e-04.\n", - "Adjusting learning rate of group 0 to 8.8120e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "43bc12b416ff4a658d95f2e6f774ac24", + "model_id": "c341d39e08ee496fa6a17d5cc079613e", "version_major": 2, "version_minor": 0 }, @@ -1617,26 +1302,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 8.7788e-04.\n", - "Adjusting learning rate of group 0 to 8.7452e-04.\n", - "Adjusting learning rate of group 0 to 8.7112e-04.\n", - "Adjusting learning rate of group 0 to 8.6768e-04.\n", - "Adjusting learning rate of group 0 to 8.6421e-04.\n", - "Adjusting learning rate of group 0 to 8.6069e-04.\n", - "Adjusting learning rate of group 0 to 8.5714e-04.\n", - "Adjusting learning rate of group 0 to 8.5355e-04.\n", - "Adjusting learning rate of group 0 to 8.4993e-04.\n", - "Adjusting learning rate of group 0 to 8.4627e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "084c48e6594b4eb98a1fdabb588308ce", + "model_id": "006a8d8898e34e2385ff352ad5d8a9de", "version_major": 2, "version_minor": 0 }, @@ -1647,26 +1316,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 8.4257e-04.\n", - "Adjusting learning rate of group 0 to 8.3884e-04.\n", - "Adjusting learning rate of group 0 to 8.3507e-04.\n", - "Adjusting learning rate of group 0 to 8.3127e-04.\n", - "Adjusting learning rate of group 0 to 8.2743e-04.\n", - "Adjusting learning rate of group 0 to 8.2356e-04.\n", - "Adjusting learning rate of group 0 to 8.1965e-04.\n", - "Adjusting learning rate of group 0 to 8.1572e-04.\n", - "Adjusting learning rate of group 0 to 8.1175e-04.\n", - "Adjusting learning rate of group 0 to 8.0774e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "2411847aa77746beb3e5876f747dbf5a", + "model_id": "24a1e4bf4acd4361ba99ce4d6da8726d", "version_major": 2, "version_minor": 0 }, @@ -1677,26 +1330,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 8.0371e-04.\n", - "Adjusting learning rate of group 0 to 7.9964e-04.\n", - "Adjusting learning rate of group 0 to 7.9554e-04.\n", - "Adjusting learning rate of group 0 to 7.9141e-04.\n", - "Adjusting learning rate of group 0 to 7.8725e-04.\n", - "Adjusting learning rate of group 0 to 7.8306e-04.\n", - "Adjusting learning rate of group 0 to 7.7885e-04.\n", - "Adjusting learning rate of group 0 to 7.7460e-04.\n", - "Adjusting learning rate of group 0 to 7.7032e-04.\n", - "Adjusting learning rate of group 0 to 7.6602e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0c630bd7c0324b0a9dcd8c91b757c62d", + "model_id": "febdbadc15a841b595163664fb95306a", "version_major": 2, "version_minor": 0 }, @@ -1707,26 +1344,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 7.6168e-04.\n", - "Adjusting learning rate of group 0 to 7.5733e-04.\n", - "Adjusting learning rate of group 0 to 7.5294e-04.\n", - "Adjusting learning rate of group 0 to 7.4853e-04.\n", - "Adjusting learning rate of group 0 to 7.4409e-04.\n", - "Adjusting learning rate of group 0 to 7.3963e-04.\n", - "Adjusting learning rate of group 0 to 7.3514e-04.\n", - "Adjusting learning rate of group 0 to 7.3062e-04.\n", - "Adjusting learning rate of group 0 to 7.2609e-04.\n", - "Adjusting learning rate of group 0 to 7.2153e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "d2e36e4b8d454d58bfa199a6341f2ef5", + "model_id": "e6406b5f4b3b43bf8cd3f22fda64d5ad", "version_major": 2, "version_minor": 0 }, @@ -1737,26 +1358,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 7.1694e-04.\n", - "Adjusting learning rate of group 0 to 7.1234e-04.\n", - "Adjusting learning rate of group 0 to 7.0771e-04.\n", - "Adjusting learning rate of group 0 to 7.0306e-04.\n", - "Adjusting learning rate of group 0 to 6.9839e-04.\n", - "Adjusting learning rate of group 0 to 6.9370e-04.\n", - "Adjusting learning rate of group 0 to 6.8898e-04.\n", - "Adjusting learning rate of group 0 to 6.8425e-04.\n", - "Adjusting learning rate of group 0 to 6.7950e-04.\n", - "Adjusting learning rate of group 0 to 6.7473e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "87b93ac387e14cbc81a7cd1a7cd4cc10", + "model_id": "5ab75e7ccfe24afeb5e438e6d2751a9f", "version_major": 2, "version_minor": 0 }, @@ -1767,26 +1372,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 6.6995e-04.\n", - "Adjusting learning rate of group 0 to 6.6514e-04.\n", - "Adjusting learning rate of group 0 to 6.6032e-04.\n", - "Adjusting learning rate of group 0 to 6.5548e-04.\n", - "Adjusting learning rate of group 0 to 6.5062e-04.\n", - "Adjusting learning rate of group 0 to 6.4575e-04.\n", - "Adjusting learning rate of group 0 to 6.4087e-04.\n", - "Adjusting learning rate of group 0 to 6.3597e-04.\n", - "Adjusting learning rate of group 0 to 6.3105e-04.\n", - "Adjusting learning rate of group 0 to 6.2612e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7f8a913e2111411ba5210c99645c0279", + "model_id": "fb150bbb082840fb86c5f1d290c3b846", "version_major": 2, "version_minor": 0 }, @@ -1797,26 +1386,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 6.2118e-04.\n", - "Adjusting learning rate of group 0 to 6.1623e-04.\n", - "Adjusting learning rate of group 0 to 6.1126e-04.\n", - "Adjusting learning rate of group 0 to 6.0628e-04.\n", - "Adjusting learning rate of group 0 to 6.0130e-04.\n", - "Adjusting learning rate of group 0 to 5.9630e-04.\n", - "Adjusting learning rate of group 0 to 5.9129e-04.\n", - "Adjusting learning rate of group 0 to 5.8627e-04.\n", - "Adjusting learning rate of group 0 to 5.8124e-04.\n", - "Adjusting learning rate of group 0 to 5.7620e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "092c40185c5b462193f752d6f40b491e", + "model_id": "78dadb428e1b4d4f8adbf78dacb15eb4", "version_major": 2, "version_minor": 0 }, @@ -1827,26 +1400,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 5.7116e-04.\n", - "Adjusting learning rate of group 0 to 5.6611e-04.\n", - "Adjusting learning rate of group 0 to 5.6105e-04.\n", - "Adjusting learning rate of group 0 to 5.5598e-04.\n", - "Adjusting learning rate of group 0 to 5.5091e-04.\n", - "Adjusting learning rate of group 0 to 5.4584e-04.\n", - "Adjusting learning rate of group 0 to 5.4076e-04.\n", - "Adjusting learning rate of group 0 to 5.3567e-04.\n", - "Adjusting learning rate of group 0 to 5.3058e-04.\n", - "Adjusting learning rate of group 0 to 5.2549e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8b6d1cc634f249b4bbe1c097322ad531", + "model_id": "cd4b938926f246458f93bcb921a4fcc4", "version_major": 2, "version_minor": 0 }, @@ -1857,26 +1414,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 5.2040e-04.\n", - "Adjusting learning rate of group 0 to 5.1530e-04.\n", - "Adjusting learning rate of group 0 to 5.1020e-04.\n", - "Adjusting learning rate of group 0 to 5.0510e-04.\n", - "Adjusting learning rate of group 0 to 5.0000e-04.\n", - "Adjusting learning rate of group 0 to 4.9490e-04.\n", - "Adjusting learning rate of group 0 to 4.8980e-04.\n", - "Adjusting learning rate of group 0 to 4.8470e-04.\n", - "Adjusting learning rate of group 0 to 4.7961e-04.\n", - "Adjusting learning rate of group 0 to 4.7451e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "100bd4b7afe04dd3b4d48c0224270d32", + "model_id": "6f99944bfc304f10a19f6fd8600de0cc", "version_major": 2, "version_minor": 0 }, @@ -1887,26 +1428,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 4.6942e-04.\n", - "Adjusting learning rate of group 0 to 4.6433e-04.\n", - "Adjusting learning rate of group 0 to 4.5925e-04.\n", - "Adjusting learning rate of group 0 to 4.5417e-04.\n", - "Adjusting learning rate of group 0 to 4.4909e-04.\n", - "Adjusting learning rate of group 0 to 4.4402e-04.\n", - "Adjusting learning rate of group 0 to 4.3896e-04.\n", - "Adjusting learning rate of group 0 to 4.3390e-04.\n", - "Adjusting learning rate of group 0 to 4.2884e-04.\n", - "Adjusting learning rate of group 0 to 4.2380e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "d26b3de22aab41f684fabf07c37a07c2", + "model_id": "4fcd7934d50d4884a6a1a978a15f8d66", "version_major": 2, "version_minor": 0 }, @@ -1917,26 +1442,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 4.1876e-04.\n", - "Adjusting learning rate of group 0 to 4.1374e-04.\n", - "Adjusting learning rate of group 0 to 4.0872e-04.\n", - "Adjusting learning rate of group 0 to 4.0371e-04.\n", - "Adjusting learning rate of group 0 to 3.9871e-04.\n", - "Adjusting learning rate of group 0 to 3.9372e-04.\n", - "Adjusting learning rate of group 0 to 3.8874e-04.\n", - "Adjusting learning rate of group 0 to 3.8378e-04.\n", - "Adjusting learning rate of group 0 to 3.7882e-04.\n", - "Adjusting learning rate of group 0 to 3.7388e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "45219b8244784bd1bf9370c5ced034a0", + "model_id": "1591f73ad68c4a21bf694b07bef95e6b", "version_major": 2, "version_minor": 0 }, @@ -1947,26 +1456,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 3.6895e-04.\n", - "Adjusting learning rate of group 0 to 3.6404e-04.\n", - "Adjusting learning rate of group 0 to 3.5914e-04.\n", - "Adjusting learning rate of group 0 to 3.5425e-04.\n", - "Adjusting learning rate of group 0 to 3.4938e-04.\n", - "Adjusting learning rate of group 0 to 3.4452e-04.\n", - "Adjusting learning rate of group 0 to 3.3969e-04.\n", - "Adjusting learning rate of group 0 to 3.3486e-04.\n", - "Adjusting learning rate of group 0 to 3.3006e-04.\n", - "Adjusting learning rate of group 0 to 3.2527e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f9e1338748c448e5af1e27a56e8a32e6", + "model_id": "f1ef7218cc6b481f86f1513754a0a459", "version_major": 2, "version_minor": 0 }, @@ -1977,26 +1470,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 3.2050e-04.\n", - "Adjusting learning rate of group 0 to 3.1575e-04.\n", - "Adjusting learning rate of group 0 to 3.1102e-04.\n", - "Adjusting learning rate of group 0 to 3.0631e-04.\n", - "Adjusting learning rate of group 0 to 3.0162e-04.\n", - "Adjusting learning rate of group 0 to 2.9695e-04.\n", - "Adjusting learning rate of group 0 to 2.9230e-04.\n", - "Adjusting learning rate of group 0 to 2.8767e-04.\n", - "Adjusting learning rate of group 0 to 2.8306e-04.\n", - "Adjusting learning rate of group 0 to 2.7848e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b4f6f002577d4b93a54e2c48611d1fb2", + "model_id": "c43315f126db4cfeac83894b83ae38cf", "version_major": 2, "version_minor": 0 }, @@ -2007,26 +1484,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 2.7392e-04.\n", - "Adjusting learning rate of group 0 to 2.6938e-04.\n", - "Adjusting learning rate of group 0 to 2.6487e-04.\n", - "Adjusting learning rate of group 0 to 2.6038e-04.\n", - "Adjusting learning rate of group 0 to 2.5591e-04.\n", - "Adjusting learning rate of group 0 to 2.5148e-04.\n", - "Adjusting learning rate of group 0 to 2.4706e-04.\n", - "Adjusting learning rate of group 0 to 2.4268e-04.\n", - "Adjusting learning rate of group 0 to 2.3832e-04.\n", - "Adjusting learning rate of group 0 to 2.3399e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7e524e9f3c294b0b93ae42de739d7ecb", + "model_id": "ba532d4b489946099d4be4bbffa000dc", "version_major": 2, "version_minor": 0 }, @@ -2037,26 +1498,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 2.2968e-04.\n", - "Adjusting learning rate of group 0 to 2.2541e-04.\n", - "Adjusting learning rate of group 0 to 2.2116e-04.\n", - "Adjusting learning rate of group 0 to 2.1694e-04.\n", - "Adjusting learning rate of group 0 to 2.1275e-04.\n", - "Adjusting learning rate of group 0 to 2.0859e-04.\n", - "Adjusting learning rate of group 0 to 2.0446e-04.\n", - "Adjusting learning rate of group 0 to 2.0036e-04.\n", - "Adjusting learning rate of group 0 to 1.9630e-04.\n", - "Adjusting learning rate of group 0 to 1.9226e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "c748bbc043974baf84f0f7e3413dca50", + "model_id": "eb9cdcbe5a2848de93f3448da5778259", "version_major": 2, "version_minor": 0 }, @@ -2067,26 +1512,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 1.8826e-04.\n", - "Adjusting learning rate of group 0 to 1.8429e-04.\n", - "Adjusting learning rate of group 0 to 1.8035e-04.\n", - "Adjusting learning rate of group 0 to 1.7644e-04.\n", - "Adjusting learning rate of group 0 to 1.7257e-04.\n", - "Adjusting learning rate of group 0 to 1.6874e-04.\n", - "Adjusting learning rate of group 0 to 1.6493e-04.\n", - "Adjusting learning rate of group 0 to 1.6117e-04.\n", - "Adjusting learning rate of group 0 to 1.5743e-04.\n", - "Adjusting learning rate of group 0 to 1.5374e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ea29a508ace040cc8c3365a2ab672e7d", + "model_id": "4939b38d03ec4887bd8061457d9764c7", "version_major": 2, "version_minor": 0 }, @@ -2097,26 +1526,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 1.5007e-04.\n", - "Adjusting learning rate of group 0 to 1.4645e-04.\n", - "Adjusting learning rate of group 0 to 1.4286e-04.\n", - "Adjusting learning rate of group 0 to 1.3931e-04.\n", - "Adjusting learning rate of group 0 to 1.3580e-04.\n", - "Adjusting learning rate of group 0 to 1.3232e-04.\n", - "Adjusting learning rate of group 0 to 1.2889e-04.\n", - "Adjusting learning rate of group 0 to 1.2549e-04.\n", - "Adjusting learning rate of group 0 to 1.2213e-04.\n", - "Adjusting learning rate of group 0 to 1.1881e-04.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "41f929cd31a64c039b68abb534fe26d1", + "model_id": "9bbcc3450d304365af903930a81d9c8e", "version_major": 2, "version_minor": 0 }, @@ -2127,26 +1540,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 1.1553e-04.\n", - "Adjusting learning rate of group 0 to 1.1229e-04.\n", - "Adjusting learning rate of group 0 to 1.0909e-04.\n", - "Adjusting learning rate of group 0 to 1.0593e-04.\n", - "Adjusting learning rate of group 0 to 1.0281e-04.\n", - "Adjusting learning rate of group 0 to 9.9733e-05.\n", - "Adjusting learning rate of group 0 to 9.6698e-05.\n", - "Adjusting learning rate of group 0 to 9.3704e-05.\n", - "Adjusting learning rate of group 0 to 9.0753e-05.\n", - "Adjusting learning rate of group 0 to 8.7844e-05.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f0b60b723c204575a040d1d8ccdbf414", + "model_id": "8ab6624722004ae687b28150a05bc868", "version_major": 2, "version_minor": 0 }, @@ -2157,26 +1554,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 8.4979e-05.\n", - "Adjusting learning rate of group 0 to 8.2156e-05.\n", - "Adjusting learning rate of group 0 to 7.9377e-05.\n", - "Adjusting learning rate of group 0 to 7.6642e-05.\n", - "Adjusting learning rate of group 0 to 7.3950e-05.\n", - "Adjusting learning rate of group 0 to 7.1303e-05.\n", - "Adjusting learning rate of group 0 to 6.8701e-05.\n", - "Adjusting learning rate of group 0 to 6.6144e-05.\n", - "Adjusting learning rate of group 0 to 6.3631e-05.\n", - "Adjusting learning rate of group 0 to 6.1164e-05.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b43c5ef7770147578fafcefdced65f6d", + "model_id": "0e01f200bbe14bdd9bbc9fd66886b85c", "version_major": 2, "version_minor": 0 }, @@ -2187,26 +1568,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 5.8743e-05.\n", - "Adjusting learning rate of group 0 to 5.6368e-05.\n", - "Adjusting learning rate of group 0 to 5.4038e-05.\n", - "Adjusting learning rate of group 0 to 5.1756e-05.\n", - "Adjusting learning rate of group 0 to 4.9519e-05.\n", - "Adjusting learning rate of group 0 to 4.7330e-05.\n", - "Adjusting learning rate of group 0 to 4.5188e-05.\n", - "Adjusting learning rate of group 0 to 4.3093e-05.\n", - "Adjusting learning rate of group 0 to 4.1046e-05.\n", - "Adjusting learning rate of group 0 to 3.9046e-05.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "680b4941143b4d6a8d347ffde8ffd58d", + "model_id": "7092b2e624184c80af6292807bd6db97", "version_major": 2, "version_minor": 0 }, @@ -2217,26 +1582,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 3.7094e-05.\n", - "Adjusting learning rate of group 0 to 3.5191e-05.\n", - "Adjusting learning rate of group 0 to 3.3336e-05.\n", - "Adjusting learning rate of group 0 to 3.1529e-05.\n", - "Adjusting learning rate of group 0 to 2.9771e-05.\n", - "Adjusting learning rate of group 0 to 2.8062e-05.\n", - "Adjusting learning rate of group 0 to 2.6402e-05.\n", - "Adjusting learning rate of group 0 to 2.4792e-05.\n", - "Adjusting learning rate of group 0 to 2.3231e-05.\n", - "Adjusting learning rate of group 0 to 2.1719e-05.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "658934153e2643e38fd98549dc4a3e3d", + "model_id": "ba0045be403540f98216841fbaa50d05", "version_major": 2, "version_minor": 0 }, @@ -2247,26 +1596,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 2.0257e-05.\n", - "Adjusting learning rate of group 0 to 1.8846e-05.\n", - "Adjusting learning rate of group 0 to 1.7484e-05.\n", - "Adjusting learning rate of group 0 to 1.6172e-05.\n", - "Adjusting learning rate of group 0 to 1.4911e-05.\n", - "Adjusting learning rate of group 0 to 1.3700e-05.\n", - "Adjusting learning rate of group 0 to 1.2540e-05.\n", - "Adjusting learning rate of group 0 to 1.1431e-05.\n", - "Adjusting learning rate of group 0 to 1.0372e-05.\n", - "Adjusting learning rate of group 0 to 9.3642e-06.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "04d2f21fc93b4299b3a21c7486ca01ab", + "model_id": "b55fc6c047354b3a801409fe0390f196", "version_major": 2, "version_minor": 0 }, @@ -2277,26 +1610,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 8.4075e-06.\n", - "Adjusting learning rate of group 0 to 7.5020e-06.\n", - "Adjusting learning rate of group 0 to 6.6477e-06.\n", - "Adjusting learning rate of group 0 to 5.8448e-06.\n", - "Adjusting learning rate of group 0 to 5.0933e-06.\n", - "Adjusting learning rate of group 0 to 4.3932e-06.\n", - "Adjusting learning rate of group 0 to 3.7447e-06.\n", - "Adjusting learning rate of group 0 to 3.1479e-06.\n", - "Adjusting learning rate of group 0 to 2.6027e-06.\n", - "Adjusting learning rate of group 0 to 2.1093e-06.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "d55a6f0141da4fcb89d8ff4923e9e193", + "model_id": "641224b9b3d147abbf3932129570b129", "version_major": 2, "version_minor": 0 }, @@ -2307,26 +1624,10 @@ "metadata": {}, "output_type": "display_data" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjusting learning rate of group 0 to 1.6677e-06.\n", - "Adjusting learning rate of group 0 to 1.2779e-06.\n", - "Adjusting learning rate of group 0 to 9.4006e-07.\n", - "Adjusting learning rate of group 0 to 6.5410e-07.\n", - "Adjusting learning rate of group 0 to 4.2010e-07.\n", - "Adjusting learning rate of group 0 to 2.3807e-07.\n", - "Adjusting learning rate of group 0 to 1.0804e-07.\n", - "Adjusting learning rate of group 0 to 3.0010e-08.\n", - "Adjusting learning rate of group 0 to 4.0000e-09.\n", - "Adjusting learning rate of group 0 to 3.0010e-08.\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0e1df06b17c14cc9a4fac9c7ecaebd24", + "model_id": "a5a107e1d07645c583c466cfa9512fc0", "version_major": 2, "version_minor": 0 }, @@ -2346,7 +1647,7 @@ }, { "data": { - "image/png": "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xz+WJN19991asmSJtmzZooKCAvXt21cjR46UJPXp00cTJ07U8uXLNXjwYK1evVoLFy5UQkKCJOmPf/yjjh07Vr/d22+/XdHR0YqOjlZ6err27NnTsjsOwK8IIwCarbi4WPv27VO/fv3qn/N4POrWrZvi4+PVo0eP+ufDwsKUmJio8vJyHTx4UCkpKQ366tatm958800dOXJEdXV16tq1a/1rnTt3lnRiAqskdezYsUG/brc7ELsHoIUQRgA0W3Jyss4///wGp0kOHjwol8ul2bNnq7S0tP75uro6lZWVqXPnzurSpYs2b97coK+9e/cqKSlJ8fHxCgsLU0lJiZKTkyVJn3/+uQoKCjRkyJCW2TEALYo5IwCabdCgQSopKVF+fr5cLpdKSkqUk5OjefPmSZJWrlypf/3rX6qrq9PTTz+t5ORkXXLJJRo2bJg+/fRTrVixQi6XS1u3btXixYs1cuRIORwODR8+XM8++6wOHz6syspKzZo1SyUlJYb3FkCgEEYANFtsbKzmz5+vt956SwMGDNCoUaPUt29fPfDAA5Kkyy67THl5ebr88sv15Zdfat68eXI4HOrevbvmzp2rJUuWKD09XVOnTtWUKVM0evRoSdJDDz2klJQUDRs2TEOGDFH37t01depUk7sKIIBslmVZposA0PY8+OCDio6O1iOPPGK6FABBjiMjAADAKMIIAAAwitM0AADAKI6MAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKP+Pyjmn7GCgGl+AAAAAElFTkSuQmCC", + "image/png": "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X0dYaKu92noMHaO+vl533HGHysvLNW/ePEnHtgftY63BgwersLBQ+fn5mj59uiTayA7eeust7d69W7fddtsx34vm97mo/PTt1auXKisrW69bWlpUXV2tXr16WVgrHM+/t1dlZaVOO+00de7c2cJaRa+dO3fq6quvVqdOnbR06VKlpKS02Ub8e7JGWVmZPvzww9brSy+9VLGxsfJ6vbSRDaxevVq7d+/W+PHjNW7cOEnSz372M3Xv3j2q3+eiMozk5uZq27Zt2r59uyRp1apVGjRoUOs4OOzlkksu0fr161v/oa5YsUKXXnopPVkW2Lt3ryZPnqxrrrlG+fn5io+PlySNGjVKb7/9tmpra+X1evXqq69q9OjRFtc2OtXU1Oiuu+5qXaGxfv16ORwO3XTTTbSRDbz44ot655139MYbb+iNN96Q5FvldNlll0X1+1yM1RWwQmpqqhYsWKBZs2apublZaWlpys/Pt7paOI7TTz9d9913n2655RZ999136tevnx599FGrqxWVlixZotraWr355pt68803Wx9/7rnnNGHCBE2aNElut1vnnntum93QCL2BAwdq1qxZmjZtmhwOh1JSUrR48WKdccYZ2rFjB21kU9H+PmeYpmlaXQkAABC9oqP/BwAA2BZhBAAAWIowAgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUoQRAGGjrKxMOTk5OnDggNVVARBEhBEAAGApwgiAU1JSUqKpU6dq6NChuuyyy/Tqq69Kku6//379+te/1sSJE3X22Wdr4sSJredBSVJRUZGuu+46nXfeeRozZoxWrlzZ+r36+no98MADGjp0qM4//3zNmjVLDQ0Nrd9fuXKlRo8erbPPPlt33nnnUd8DEH4IIwDa7dChQ5o6daqGDRumwsJC/eEPf9DTTz+t999/X5K0Zs0a3X777froo480ePBgzZgxQy0tLSotLdUtt9yiSZMmqaioSPPmzdOCBQv09ttvS5LmzJmjsrIyvfvuu3r//fe1d+9ePfHEE63Pu2PHDq1Zs0Z/+ctf9Mknn2j16tWWvH4AwRGVB+UBCI7169crISFB06ZNkyQNGDBAkydP1muvvabU1FSNGTNGF110kSTpzjvv1IoVK/TJJ5+oqKhI5513nsaPHy9JGjRokPLy8rR69WqNGjVKa9eu1bJly5SWliZJeuyxx9TU1NT6vLfddpuSkpKUlJSkoUOHavfu3R37wgEEFWEEQLuVl5dr7969Gjx4cOtjXq9XvXv3Vmpqqvr27dv6eGxsrNLT0+VyubR//35lZmYeVVbv3r315z//WTU1NWppaVGvXr1av9ejRw9JvgmsktSlS5ejyvV4PKF4eQA6CGEEQLtlZGRowIABRw2T7N+/X263WwsWLFBlZWXr4y0tLaqqqlKPHj3Us2dPbdq06aiy9uzZo27duik1NVWxsbGqqKhQRkaGJGnr1q0qKirS6NGjO+aFAehQzBkB0G4jRoxQRUWFVq5cKbfbrYqKCk2dOlWLFy+WJL311lv69NNP1dLSoieeeEIZGRk655xzNHbsWH322Wdas2aN3G63Pv/8cxUUFGj8+PFyOp264oortGjRIh08eFC1tbWaP3++KioqLH61AEKFMAKg3VJSUrRkyRK98847GjZsmK666iqdd955uu+++yRJQ4YMUX5+vi644AJ99dVXWrx4sZxOp/r06aNnn31WK1as0NChQzVz5kzdfvvtmjBhgiTpwQcfVGZmpsaOHavRo0erT58+mjlzppUvFUAIGaZpmlZXAkDkuf/++5WUlKTf/OY3VlcFgM3RMwIAACxFGAEAAJZimAYAAFiKnhEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFKEEQAAYKn/Dz2Z4M/JO21jAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -2356,7 +1657,7 @@ }, { "data": { - "image/png": "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H0U++ijy0UeRL9r6yN+vx7Jt2w5xWwAAAI4ruiIYAABocQgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwKiYDSOrVq3S8OHDNWTIEBUWFur777833SQcYdasWXrggQcaj9944w1deeWVGjx4sO666y7V1NQYbF1se+WVVzRs2DBdddVVuu666/T5559LkubOnashQ4Zo4MCBevDBB/XDDz8YbmnsWrJkiYYNG6Zhw4bphhtu0LZt2yTRR5Fmw4YNOvvss1VeXi4pxt/n7Bi0Z88eOzc31/76669t27btl156yR47dqzhVsG2bfu7776zf/3rX9vnnHOOPWXKFNu2bXvz5s32RRddZJeXl9u2bdtTp061f/vb35psZsxat26dfemll9p79uyxbdu2//73v9t5eXn2Bx98YA8ZMsSuqqqyPR6Pfccdd9jPPvus4dbGptLSUvuiiy6yXS6Xbdu2PX/+fDs/P58+ijAul8sePny4/W//9m/27t27Y/59LiZHRlavXq2cnBzl5ORIkkaNGqWSkhJVVlYabhkWL16sfv36qbCwsPG1999/X/3791dmZqYkacyYMfrb3/4mn89nqpkxq02bNnr44YeVlpYmSTrnnHO0Z88erVixQldeeaVat24tp9Op0aNH669//avh1samM844QytXrlR6ero8Ho927dqldu3a0UcRxOPx6O6779a9997b+Fqsv8/FZBgpLy9Xp06dGo8TEhLUrl077d6922CrIEkTJ07UmDFj5HQ6G1/bvXv3Uf3VsWNHHTp0SPv37zfQwtiWnZ2tn/3sZ5Ikn8+nRx99VJdeemmTfcTvkznx8fFau3at+vfvr8WLF6uwsJA+iiDTp09X3759lZeX1/harL/PxWQYsW1blmUd87rDEZPfjhahqf5q6jWER01NjW677Tbt3LlT06ZNk3Rsf9A/ZvXp00fFxcWaPn26xo8fL4k+igTLli3Tjh07dOuttx7zuVh+n4vJv76dO3dWRUVF43F9fb327dunzp07G2wVjudf+6uiokKnnXaa2rRpY7BVsWvbtm265ppr1KpVK7300ktKTU1tso/4fTKjrKxMH330UePxFVdcofj4ePl8PvooAixZskQ7duzQiBEjNHz4cEnSr371K3Xo0CGm3+diMozk5eXpyy+/1ObNmyVJr732mnr16tU4D47Icvnll2vlypWNv6gLFy7UFVdcwUiWAbt27dKYMWN07bXXavr06UpMTJQkDRw4UG+99Zaqqqrk8/m0aNEiDRo0yHBrY9OBAwd01113NT6hsXLlSjkcDt144430UQR44YUX9Pbbb+uNN97QG2+8IanhKafBgwfH9PtcnOkGmJCWlqaZM2dq0qRJqqurU3p6uqZPn266WTiOM888U/fdd59uuukm/fDDD+rWrZsee+wx082KSXPnzlVVVZXefPNNvfnmm42vP/fccxo5cqRGjx4tj8ej888/v8lhaIRez549NWnSJI0bN04Oh0OpqamaM2eOzjrrLG3dupU+ilCx/j5n2bZtm24EAACIXbEx/gMAACIWYQQAABhFGAEAAEYRRgAAgFGEEQAAYBRhBAAAGEUYAQAARhFGALQYZWVlysnJ0d69e003BUAQEUYAAIBRhBEAp2TLli0qLCxUbm6uBg8erEWLFkmS7r//fv32t7/VqFGjdO6552rUqFGN+0FJUklJia677jr17t1bQ4YM0eLFixs/V1NToylTpig3N1d9+/bVpEmTdOjQocbPL168WIMGDdK5556rO++886jPAWh5CCMAmu3gwYMqLCxUv379VFxcrD/96U965pln9P7770uSli5dqgkTJujjjz9Wnz59dMstt6i+vl6lpaW66aabNHr0aJWUlGjatGmaOXOm3nrrLUnSgw8+qLKyMr3zzjt6//33tWvXLj355JON9926dauWLl2qd999V+vXr9eSJUuMfP0AgiMmN8oDEBwrV65UUlKSxo0bJ0nq0aOHxowZo1dffVVpaWkaMmSILr74YknSnXfeqYULF2r9+vUqKSlR7969NWLECElSr169VFBQoCVLlmjgwIFavny55s+fr/T0dEnS448/rtra2sb73nrrrUpJSVFKSopyc3O1Y8eO8H7hAIKKMAKg2Xbu3Kldu3apT58+ja/5fD516dJFaWlpOv300xtfj4+PV0ZGhlwul/bs2aOsrKyjrtWlSxf97W9/04EDB1RfX6/OnTs3fq5jx46SGgpYJalt27ZHXdfr9YbiywMQJoQRAM2WmZmpHj16HDVNsmfPHnk8Hs2cOVMVFRWNr9fX16uyslIdO3ZUp06dtGbNmqOu9d1336l9+/ZKS0tTfHy8ysvLlZmZKUnauHGjSkpKNGjQoPB8YQDCipoRAM126aWXqry8XIsXL5bH41F5ebkKCws1Z84cSdKyZcv06aefqr6+Xk8++aQyMzN13nnnaejQofrss8+0dOlSeTwebdiwQUVFRRoxYoScTqeGDRum2bNna//+/aqqqtKMGTNUXl5u+KsFECqEEQDNlpqaqrlz5+rtt99Wv379dPXVV6t379667777JEkXXHCBpk+frgsvvFBff/215syZI6fTqa5du+rZZ5/VwoULlZubq4kTJ2rChAkaOXKkJOmBBx5QVlaWhg4dqkGDBqlr166aOHGiyS8VQAhZtm3bphsBIPrcf//9SklJ0e9+9zvTTQEQ4RgZAQAARhFGAACAUUzTAAAAoxgZAQAARhFGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUYQQAABhFGAEAAEb9fwWEjddisms/AAAAAElFTkSuQmCC", + "image/png": "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PCLCo3NEuKsrACCQECOG/HDt+4/PGWkt3NUVABBIiBFDvDkx1dfqihve1bWueLeRcQAAIHHOSFByxPeVbCen3maXI97MswgAAJCIkaBkDZygvA7n6bAVqbwO58kaOMH0kACgzbj//ntUUnLQq+956qk/aPPmjR4tO3PmE/r888903XWjtH37Fw2+tnr1Kt13310ereedd97Wvfd6tqxpHKYJQsvW71Xu/gFyWwNkPyKlrt9r7JARAPhSa5yg/8knm0957syZPPzwox4tV1dXp6+++qceeuiRBu+XlZVp/vz/qw8+eE/9+l3o1bbbAmIkCPn7EdsAYIq/T9B//PHfSTqxd6Syslz9+1+iPXt2acKESbrookv09NNPqbq6WqWlJerRI1FPPPGUunbtqrvvvkOjRmVoxIhf6vLLB2ry5Du1ZcsmlZSUKCNjrG688RZJ0vbtn6tfv/+Qw+FosN2///0dJST00NSp92ndun94Pe6jR6s0d+5sff31Dtls0gUXXKh77vmtwsM7ae3aNVq+fJkcDofsdrumTr1XF110iXJzN+uFF/5av45Jk27RkCFXNf+HdxocpglCfRIjZT/xIOAzXlZs1dao5sMXVLX8IdV8+IKs2pomlwUA0/x9gv7vf/9HSdIzz/xFISGhSko6S0uXrtA111yr1avf1M9/PlTz5r2o1157U3a7Xe++u7rR9YSEhOpvf3tRTz31jBYs+JuqqqokSR99tK7RJ/uOGzdRN998m8LCwpo17meffVpOp1OLFy/XSy+9qu+//17PPfeMJOm5557Rf/7nk1q4cIkmT75Tn332qSRp/vzndfvtU7Rw4RJNn/6YPvlkS7O27Qn2jAQhby4r5jJgAG2JI76vXJWlJ4KkFU7Q79//4vr/PvGH/BO98soS7dtXoPz873ThhRc1+n0/+9mVkqS+fc+RZVmqqqpU166R2rr1E9155z0+H+fmzZs0d+5f658bc8MNEzRt2m8kSUOHDtd9992lQYPSNHBgim688WZJ0lVXDdMf//iYLrtssAYMSNFdd93r83H9gBgJQt5cVsxlwADakg5pk3RMUl3xbjni+6hD2iS/bi8srEP9fz/++O9UU1OjoUNH6NJLU3TsWE2T55b8eA+HzWaTZVn6+usd6t377Gbv/Tgdy2r4AD6321JdXZ0k6f77s3TddeO1desneued1Vq8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MMppegDecDj8007+Wi98hzkKfMxR4GOOAl97myNPP0+bemovAABof9pXggEAgDaHGAEAAEYRIwAAwChiBAAAGEWMAAAAo4gRAABgFDECAACMIkYAAIBRxAgAADCKGAEAAEYFbYxs2LBBo0ePVnp6ujIzM3Xw4EHTQ8KPzJ07V4888kj96zfffFPXXHONRowYofvuu09VVVUGRxe8Xn31VY0aNUrXXnutxo0bpy+//FKStHDhQqWnp2vYsGF6/PHH9f333xseaXBbuXKlRo0apVGjRummm25SXl6eJOYp0Gzfvl0XXHCBioqKJAX57zkrCB06dMhKSUmxvvnmG8uyLOvll1+2br31VsOjgmVZVkFBgXXXXXdZF154oTVjxgzLsixr586d1qBBg6yioiLLsixr5syZ1qOPPmpymEHps88+s4YMGWIdOnTIsizL+sc//mGlpaVZ69ats9LT062KigrL5XJZv/nNb6z58+cbHm3w2r17tzVo0CCrtLTUsizLWrx4sXXjjTcyTwGmtLTUGj16tPXTn/7UOnDgQND/ngvKPSMbN25UcnKykpOTJUnjx49Xbm6uSkpKDI8MOTk5Gjx4sDIzM+vf++CDD3TllVcqPj5ekjRx4kS9/fbbcrvdpoYZlLp06aI//OEPio6OliRdeOGFOnTokN5//31dc801ioiIkMPh0IQJE/Tf//3fhkcbvM4++2ytX79eMTExcrlc2r9/v6KiopinAOJyuXT//ffrwQcfrH8v2H/PBWWMFBUVKSEhof51aGiooqKidODAAYOjgiRNmzZNEydOlMPhqH/vwIEDDeare/fuqq6u1pEjRwyMMHj16dNHl19+uSTJ7XbrT3/6k4YMGdLo/PBvyayQkBBt3bpVV155pXJycpSZmck8BZDs7GylpqYqLS2t/r1g/z0XlDFiWZZsNtsp79vtQfnjaBMam6/G3oP/VVVV6e6779a+ffs0a9YsSafOBXNj3sCBA7Vp0yZlZ2frjjvukMQ8BYLVq1dr7969uvPOO0/5WjD/ngvKv749evRQcXFx/eva2lqVlZWpR48eBkeFpvz7fBUXF6tTp07q0qWLwVEFp7y8PF133XXq3LmzXn75ZUVGRjY6P/xbMqewsFCbN2+ufz106FCFhITI7XYzTwFg5cqV2rt3rzIyMjR69GhJ0m233aZu3boF9e+5oIyRtLQ07dixQzt37pQkrVixQv37968/Fo7ActVVV2n9+vX1/1CXLVumoUOHsierle3fv18TJ07U9ddfr+zsbIWFhUmShg0bpjVr1qiiokJut1vLly/X8OHDDY82eJWXl+u+++6rv0Jj/fr1stvtuuWWW5inALBo0SK98847evPNN/Xmm29KOnGV04gRI4L695zT9ABMiI6O1pw5c5SVlaXjx48rJiZG2dnZpoeFJpxzzjl66KGHdPvtt+v7779X79699dRTT5keVtBZuHChKioq9NZbb+mtt96qf/+FF17Q2LFjNWHCBLlcLl1yySWN7oJG6+jXr5+ysrI0efJk2e12RUZGasGCBTrvvPO0Z88e5ilABfvvOZtlWZbpQQAAgOAVHPt/AABAwCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABhFjAAAAKOIEQBtRmFhoZKTk3X48GHTQwHgQ8QIAAAwihgB0CK7du1SZmamUlJSNGLECC1fvlyS9PDDD+vRRx/V+PHjddFFF2n8+PH1z4OSpNzcXI0bN04DBgxQenq6cnJy6r9WVVWlGTNmKCUlRampqcrKylJ1dXX913NycjR8+HBddNFFuvfeext8DUDbQ4wAaLajR48qMzNTgwcP1qZNm/Tss8/qb3/7mz744ANJ0qpVqzR16lR98sknGjhwoKZMmaLa2lrt3r1bt99+uyZMmKDc3FzNmjVLc+bM0Zo1ayRJjz/+uAoLC/Xuu+/qgw8+0P79+/XMM8/Ub3fPnj1atWqV3nvvPW3btk0rV6408vkB+EZQPigPgG+sX79eHTp00OTJkyVJ5557riZOnKjXXntN0dHRSk9P189+9jNJ0r333qtly5Zp27Ztys3N1YABA5SRkSFJ6t+/vyZNmqSVK1dq2LBhWrt2rRYvXqyYmBhJ0p///GcdO3asfrt33nmnwsPDFR4erpSUFO3du7d1PzgAnyJGADTbvn37tH//fg0cOLD+PbfbrZ49eyo6Olq9evWqfz8kJESxsbEqLS3VoUOHlJiY2GBdPXv21Ntvv63y8nLV1taqR48e9V/r3r27pBMnsEpS165dG6y3rq7OHx8PQCshRgA0W3x8vM4999wGh0kOHTokl8ulOXPmqLi4uP792tpalZSUqHv37kpISNCWLVsarKugoEBxcXGKjo5WSEiIioqKFB8fL0n66quvlJubq+HDh7fOBwPQqjhnBECzDRkyREVFRcrJyZHL5VJRUZEyMzO1YMECSdLq1av1+eefq7a2Vs8884zi4+N18cUXa+TIkfriiy+0atUquVwubd++XUuXLlVGRoYcDodGjRql5557TkeOHFFFRYVmz56toqIiw58WgL8QIwCaLTIyUgsXLtQ777yjwYMHa8yYMRowYIAeeughSdKll16q7OxsXXbZZfrmm2+0YMECORwOJSUlaf78+Vq2bJlSUlI0bdo0TZ06VWPHjpUkPfLII0pMTNTIkSM1fPhwJSUladq0aSY/KgA/slmWZZkeBID25+GHH1Z4eLgee+wx00MBEODYMwIAAIwiRgAAgFEcpgEAAEaxZwQAABhFjAAAAKOIEQAAYBQxAgAAjCJGAACAUcQIAAAwihgBAABGESMAAMAoYgQAABj1/wGixDcMxULS3gAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -2366,7 +1667,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAG+CAYAAABBOgSxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB4HUlEQVR4nO3deXxTVdoH8N+9SZPupRsFikApWLQCI0tZiiBqFUcQBZxBARV3HfUdl3Eb53VwRllmxn1D3KmOCuqouIz1dQWBsrhRoNBSlhZo09K9WZrc8/6R5jZrm5S06fL7fj4zH5Pc3HtzaMnDOc/zHEkIIUBEREQUInKob4CIiIj6NgYjREREFFIMRoiIiCikGIwQERFRSDEYISIiopBiMEJEREQhxWCEiIiIQorBCBEREYUUgxEi6vWOHDkS6lsgojYwGCHq5UpLS5GRkYETJ06E+lZCIjc3F4888kiob4OI2sBghIh6terqanDXC6LujcEIUR+yd+9eXH311ZgwYQLOPfdcvPDCC7DZbACAwsJCLFy4EBMmTMB5552HlStXqq99+umnmDVrFiZMmIA5c+bggw8+8Ot69913H/74xz8iJycH55xzDoxGI4qKirB06VJkZWXhggsuwNtvv60eb7FYsHLlSmRnZ2PixIm4+eabUVlZ2e51jh8/jqVLl2LixImYOXMm7r//fjQ1NeHTTz/F6tWr8f333+OCCy5Qj73tttswefJknHPOOXjuuefUz/n000/j9ttvx/XXX4/f/OY3uPjii5Gfnx/QGBNRBwgi6tWOHDkiTj31VFFVVSUmTpwoXnjhBWE2m0VRUZHIyckRq1evFkIIcfnll4tnn31WKIoiysrKxFlnnSW++uor0dTUJDIzM8W2bduEEEJs3LhRjB07Vpw4caLda997770iKytLHDlyRNTV1YmGhgYxbdo08eKLLwqLxSL27Nkjpk+fLvLy8oQQQjz++ONi9uzZ4vDhw8JkMok77rhD3HTTTe1e5+677xYPPvigaG5uFidOnBBz5swRubm5QgghnnrqKXHDDTcIIYSwWq1i7ty54m9/+5swGo3iyJEjYvbs2eK1115Tjz311FPF+++/LywWi8jNzRXjxo0TVVVVgQ88EfmNMyNEfcR7772Hfv364cYbb4ROp0N6ejpuueUWvPfeewAAvV6P77//Hl9++SViY2PxzTffYObMmepr7733HrZt24asrCzs3LkT8fHxfl13woQJGDx4MGJiYvDtt98iPDwc119/PcLCwjBq1CgsWrQI7777LgDgo48+wo033ohTTjkFer0eDz74IP7nf/6n3Wvo9Xrs3LkTn332GYQQ+M9//oNFixZ5HLdr1y6UlJTg3nvvRXh4OAYPHoybbrpJvT4AjB8/HpdeeinCwsKwaNEiJCUl4euvv/brsxJRx2hDfQNE1DUsFgsGDRrk8tzgwYNx9OhRAMDjjz+OJ598EsuXL0d5eTnOOussLFu2DCkpKXjzzTfx3HPP4dZbb0VzczMuu+wy3HXXXdDpdO1et3///up/l5WV4ejRo5gwYYL6nKIoGDx4MADAYDBg4MCB6msJCQlISEho9xoPPvggnn32WTz33HO45557MH78eCxbtgzp6ekux5WVlcFisWDKlCnqc0IISJKkPh46dKjLewYOHOjXUhERdRxnRoj6iEGDBqGsrMzluSNHjiA5ORlCCOzduxd33303vvrqK3zyySdoaGjA448/joaGBtTW1uKpp57C5s2b8dJLL+Hjjz/Ghg0b/Lqu8xd9SkoKRo0ahe3bt6v/y8vLw5o1awAAAwYMQHl5uXp8WVkZHn/88Xav4ciF+eyzz/DNN98gMTERf/3rXz2OS0lJQb9+/Vyu/9VXX+E///mPeozz9QHg6NGjGDBggF+flYg6hsEIUR8xY8YMNDY24oUXXoDFYsGBAwfw/PPP45JLLoEkSXjkkUfw7LPPwmKxICkpCVqtFv369UNTUxOuvfZafPnll5AkCf3794ckSejXr1/A93D22Wfj+PHjeOedd2C1WtXEU0cwMnfuXLz44os4duwYTCYTnnzySRQVFbV73hdeeAGPPvoompqaEB8fD71er96fTqdDQ0MDAGDMmDFITEzEk08+CbPZjJqaGvzxj390Kf3dvHkz/u///g9WqxWvvfYaamtrcfbZZwf8WYnIfwxGiPqQl19+GT/88AOmTp2Kq666CrNnz8Ytt9wCAHjsscfw66+/YurUqTjnnHPQv39/3Hrrrejfvz8ef/xxPP744xg3bhyuuOIKLF68GOecc07A14+NjcXLL7+MTz/9FFOnTsW8efMwfvx43HPPPQCAG264AWeddRYWLlyI6dOnw2Kx4O9//3u75122bBkaGhpw9tlnY8qUKaivr8df/vIXAMDMmTNRWlqK7OxsaDQarF69GoWFhZgxYwYuuOACJCQkYMWKFeq5Ro8ejXfeeQeTJk3CJ598gpdeeglxcXEBf1Yi8p8kBAvwiYgAe2nvrl27sHr16lDfClGfwpkRIiIiCilW0xBRh+zevdtr+azDggUL8Oc///mkr1NdXd3mktDUqVPx7LPPnvR1iCh0uExDREREIcVlGiIiIgopBiNEREQUUgxGiIiIKKQYjBAREVFIMRghIiKikOpRpb11dUbYbEpQzxkfH4Xq6sagnrM343gFhuMVGI5X4DhmgeF4BeZkx0ujkREbG9HucT0qGLHZFFitwQtGHPt32WwKWODcPo5XYDhegeF4BY5jFhiOV2C6cry4TENEREQhxWCEiIiIQqpHLdMQEVHwCSHQF5pxSxJgs9mgKFym8Ye/4yVJEiTHmk4HMRghIuqjFEVBfX0NjMYGAH3j29lgkKEowS2E6M38Gy8JERHRiInpB1nu2IILgxEioj7qxIlyyLKMxMQB0Gg0AE7uX7c9gVYrB7UQordrf7wEbDYb6uurceJEOZKSBnbsOh27PSIi6smEUGC1WpCcPLglEOkbZFlGB//x3if5M16yrEFcXBIMhlIIoUCSAh9g/pEQEfVBjhyAk13rJwJaf446movDYISIiIhCisEIERERhRSDESIi6rbuvPM2GAwVAb1nxYq/YfPmjX4du3z5w/jxxx1YsGAOfv75pw7cYc/z2msv4f/+Ly/Ut+GCCaxERNQhRrMVuXmFKC6rQ3pqLBbnZCBCH9yvlfz8zQH3QLnvvr/4dZzNZkNBwa+4554/d+TWeqzt2/MxcOCgUN+GCwYjRETUIbl5hdhaUA5FAJU1RgDA9bMzg3b+ZcseBGCfHamvr8XYseNw4EARLr98CX7zm3H4179WoKmpCZWVBgwalIqHH16Bfv364dZbb8CcOZfgggt+i2nTJuD662/Gli2bYDAYMG/eZbjiiisBAD///CMyM0d7VBNt3PgdXnnlRdhsVoSF6XDddTdh8uSpqKurw9///hAMhnJIkoSMjNPwpz89AKvVilWrHsH+/YXQaLQYNCgVDzzwECIjI31+tmPHjuLGG5fi1FMzUFpaipUrH4MkAU888S/U1tbAam3GBRf8Vr3XLVt+wOrVz8Bms0GrDcNtt92BM88c7/P8FovF6z19/PEHKCzcg2PHjkKSJMyceR7WrHkO27fnQ1EEBg8ejDvuuAeJiUm49dYbkJaWhr1796KmphrZ2Wfh1lvvgFYb/NCBwYgTX1F+V0T/REQ9TXFZHZSWSQtF2B8H00MP/R15eZ/jsceexi23XIdTThmChx9eDgBYvfpZzJx5HubMuQSKouDOO2/FZ59twOWXL/Y4T1iYDs8//wqKivbj2muX4OKL5yE6OhrfffcNpk+f6XLs4cMHsXz5Mjz77EsYNiwNRUX7cfvtN+HFF1/Dli2bEB4ejldffQs2mw3/+MejOHLkMI4cOYxDhw7i9dffBgA899xT2L+/EGPHntnm5ztxogoLFy7GhAlZsFqtuPrqK3D//f+LzMwzYDKZcMcdt2DAgEE488zxeOih+/HYY88iM/MM/PTTTjzxxD/x6qtv+qyGys/f4vWefv/7Rfj++28xZ84lOP/8C/Haay/BYrHgpZfWQpZlvPvuW1ix4m/4xz+eBACUlpbi2WfXQFEU3Hbbjfjww/cxf/7vAvuD9AO/UWEPQl79bA927DWov1iGGiO0ihkLY7aj+sBupDclYGdjFrZUG7G/tBayJKmBSbjUDNOmtbCVFwFJ6VjXNBGFx8wMXIioV0tPjUVljRGKAGTJ/rgzOX+5X3/9zdixIx9vvbUWZWVHcOjQQYwZ8xuv7zvrrBkAgBEjRkIIBQ0N9YiOjsb27fm4+ebbXI7dsWM7fvObcRg2LE19z5gxY7Ft21aMH5+FN954Ff/zP7dg/PgJ+N3vrsDQocMQHR2Nurpa3HjjUkycOAkzZpyDzMwz2v08kiRh9OixAIAjRw6jtPQw/vGPR9XXjcamlpkNGYMHD1HP+ZvfjMNrr73V5rlPO+10v+5p06bvUFdXh59++hEAoCg2mEwm9fV58xZAp9MBAGbN+i22bt3MYCSYjGYrXv98D34pPgFLs00NQhyEANKPfAxrWAliAEzQ1UCCgrWN01FZY/+Dqqg2Yt/hGvzviJ+Ag9vs76utwDDLMXzfOB0V1Ub8uK8SZ56axKCEiHqdxTkZAOAya9yZ9Ppw9b+XLXsQRqMR5513ASZOzILJZPSZW6LX69X/liQJQgjs3bsbaWnDXV4D4LX1uaII2GxWpKUNx7p1H2Lnzu348ccduOOOW3DrrXcgJ2cW3nxzPX755Sfs3Lkdf/3rA7jkkvlYtOiqNj+PLMvq9RVFQXh4uEuQUV1djfDwcOzYsc1jBqSoaD+GDUvzuWSSmJjk1z3ZbApuueV/MGOGfYbIbDahoaFBfV2jaT2/EAIaTefUvfTZaprcvELk7zHAZPEMRABADwvGaA+qjyUJyAwr9Tiuoa4etpLtPo8zWWzYvKscdz27CWs2FMBotgb1cxARhUqEXovrZ2dixY1TcP3szE75B5dGo4HNZvN4fuvWH3Dlldfg/PNnITo6Btu3bwtoz5lvv/0a06ef7fH8hAlZ2LlzBw4eLAFg/9L/6aedmDBhEtaufQ2PPbYKU6ZMwy23/A+ysqagqGg/vvjic9xzzx0YO/ZMXHfdTZg16yLs27c3oM85dOgwxMTE4aOPPgAA1NbW4IYbrsamTd8hM3M0jh0rU8+5a9cvuPPOW9s8X1v3pNFo1TGdPHkqPvhgHcxm+z+yn3/+GTzyyDL1PJ99tgE2mw1GoxH//e+nyM4+K6DP5a8++0/19tY2fxe1BbLbxlHeVuYWROX7dZwjKOFMCRGR/2bMOAe3334zqqtPuDx/0023YdmyBxETE4OwsDCceeZ4lJYe9vu8P/ywEYsXe85cDB06DA888L94+OEHYbVaIcsa/PnPD2HYsDQkJCTi0Uf/isWLL4NOp0dKSgr+8Ic/IjIyEtu3b8WSJb9DREQkoqOjA67Q0Wq1WLHiX3jqqX/hvffegcViwZw5c3HeeRcAAB5+eAX+8Y9H0dxshU6nw/Ll/2ozkfTss8/xeU/Tpk3H6tXPwmIx46qrrsXzzz+Na6+9EoDAoEGD8ec/P6Sex2az4YYbrkZjYwPOPfd8XHTR3IA+l78k0YP2ja6ubgzaBkdrNhRg865yn6+v7PcWwuXWWQwhgJ2WYXijcbrLcX+Jex9JmgaX46qUKPytdr7Pc0sSMDkzJahZ511BkoCkpBhUVtZz+20/cLwCw/EK3MmMmaIoqKg4gv79T+nwTqs9ETfK89+tt96AuXMvRU7Ohe0e6+vnSauVER8f1e77++w/zRfnZMBmU7C90ABvM3tayXVaUAB4p3Gyx3EC9gDEsZwnSYDwsfOlHhYsiMpHmtaAY2UDICzDIekiTvKTEBFRd3TLLdehqanJ62sPPfR3pKUN79bn70p9NhiJ0Gtx8yWjERkdjn/lbsPPRVWQJAmZw+IBAFaDBlq0zozIYXqMOS0Vvzgdt6vkBCS0BiIOR2XvWygviMrHBN0ByBKQhHo0vve/iJr/MAMSIqJe6LnnXurR53/mmRe7bCapzwYjDpHhYbj5ktEuU5xrNhSgwDIY43QHW2Y6AO2Qsbj5vNEu712zoQAlJf2RIDdAbjlOjknGuNm3Y8+3h7F1d7k666KHBWPCDkN2zKAAUOoM+PWdZzDyd3cwf4SIiPqsvrNQGIDisjq80zgZ2yzDUWGLwa9iJCKmL/U4bnFOBg4NnY1dGIl6TT/Iw6cgav7DiIyJwfWzMzHp9BQ1+FgQlQ+95FpJI0lAVMNh3Pbkd3jhw12stCEioj6J/xz3Ij01FltrjHizcRpkCZiUmYJsL0spEXotll48DsA4r+dxrsE/XVsFtzQUCAEctCZDUYD8PRXQaKQel9RKRER0shiMeBGsRj6OGnwAaPj3+xD1rq+bhBbrG7PUx8FupUxERNQTMBjxwjmICBbh1otECODX5iEwQ6c+19mtlImIiLoj5ox0Ee2AU+HcDk2KSULJ4N9CHyYjXKdB1mn9O72VMhERUXfEYKSLhGcvgXbkFEixKdCOnIroBX/Dot/+BuMykhEbpYNG4703CRER+Wfnzu34/e8vcXnuqqsW4uDBEsyYMSk0NxUCd955GwyGilDfRkC4TNNFJF0EImbe4PJc7oYCbC0ohyKAyhojADCBlYh6DGExqjuWa1JGIDx7Sbfqm1RUtB+pqad4bIbX2+Xnb/a5aWB3xWAkhIrL6tRN+hTBBFYi6llMm9bCWrQFEAqs9ZUwAR7/6DoZDz/8FwwZMhRXX30dAPvmdm+++TrmzbsM77+/DlarFTU11bjoootx7bU3erz/22+/8roZ3tq1r+K///0MGo0GiYlJuOOOP+GUU4agsHAvHntsJZqbmwEIzJ59CebNuwzHjh3FI4/8taXbqcDkydm44YZb2rz3Tz/9GB999AGsVnvLhtWrX0V+/ma8+upLsFqbodFocM01N2LKlGwAwFtvrcWGDf+BVqtFQkIi/vznvyI5ub/P8/u6p2XLHgRgnx159NFViIyMxhNPrMLRo0dhs1mRlTUFN974B2i1WkybNgFXXLEE27dvQ2NjAxYtugoXX3xp+38wnYDLNCGUnhqr9iGRJSawElHPYisvAkRLZ0ehwFZeHNTzz507D599tkF9/MknH+KCC36L999fh+XL/4lXXsnFc8+9jNdffxk1NTUe7//hh42YOtV1l9lPPvkYX3/9JV544RW8/vq/MXPmubj33jtgs9nwxhsvY9asi/DKK7n4xz+exI8/7oDVasX69e/g9NPPwCuv5OLZZ19CaekR1NZ6Xs/dwYMH8NhjT+Oll97AsWNH8eyzT2Llysfwyitv4uGHV2DFiodx/PhxbN68ER98sB7PPvsS3njjHZx55nisXftqm+f2dU8PPfR3AMBjjz2NIUOG4W9/+1+ce+75eOWVXLz8ci6OHTuKd999Sz2PTqfHK6/k4rHHnsFzzz2F4uKidj9XZ+DMSAgtzsmA1aaoLeZtNgGj2cpurETUI2hSRsBaX2kPSCQZmpT0oJ5/7NgzERamw08/7cTgwUNQUPArHn54BXJyZmHz5o0oLT2CgwdLIISAyWR0eW9ZWSliYmIQGxuLxsbWzUx/+GEjfvvbOYiOjgYAzJlzCZ555nEcOXIYZ599Lv71r5XYsWMbxo+fiDvu+BO0Wi2ys8/Cn/98Dw4eLMH48RNw0023Ii6uX7v3P2zYcMTGxgEA8vO3oKqqCnfccav6ukajRXHxfmzbtgUzZsxEfLx9O5Krrrq23XP7c09GoxE7d25DbW0NXn/9FQCA2WyCXt9axfm7310OAEhNHYwJEyYiP38L0tNHtHv9YOO3XghF6LXQamQ0WxUoAti+l43PiKjnCM9eAhMAW3kxNCnpCM9eEvRrzJ07D59++jGGDBmKc889H3V1tbjppmtw0UUX4/TTMzF79lx8883/eeRIfPvt15g+fabH+bzlUiiKgM1mQ07OLEyYkIVt2/Kxc+c2vPzyajz33BqMGzcB69Z9hB078rFz53bccMNV+NvfVuLMM8e3ee96fbjTNWwYO/Y3WLHiMfU5g6EC8fEJ2LlzOySnTc6MRiMMhgoMGTLU57n9uSdFsUEIgaeeegGxsfaZ97q6OpdddTUajcvYaDShWTDhMk2IMW+EiHoqR2J+9MKViJh5Q6ckr86adRG2bt2Mzz7bgLlz52Pv3j2IjIzE0qXXY8qUadiy5QcIIaC4bb/+/fffeM0XmTJlKj799GM0NNhnSz766APExMRg2LA03H337di8eRPOP38W7r77fkRHR+Po0aP45z+X491338KMGefgj3/8E9LS0nHoUElAn2PChEn48ccdKCraDwDYvXsXFi68FJWVlcjKmozvv/8GdXX2v//Xr38bq1c/0+b52ronjUYDm82GqKhojB49Fm+/nQvAPity992344MP1qvn+eSTjwDYZ5J27tyByZOnBvS5goUzIyGWnhqLyhojFMG8ESIidzExMcjKmozDhw8hPX0EBg8ejM8+24DLL5+HyMhIpKWlY8iQoThy5DB0OvvyQ2VlJYQQSEpK9jjf7NlzUV5egZtvvgZCCMTHJ+Cf/3wSGo0G119/C/75z+V45523oNHIyM4+C1lZkzF06DA8+ugyXHnl76HVajF8+AhceOHsgD7HsGFpeOCBv+LRR/8Km00BILBs2XIMGDAAAwYMwIIFv8dtt90AQEJKSgruv/9/2zzfokVX+bynGTPOwe2334xlyx7BQw89gief/AeuvPL3aG5uxuTJ2bj88sXqeQoL9+CaaxbDYrHgT396AEOGDAvocwWLJHpQ/U91dWNQtzKWJCApKQaVlfUI1SgYzVbk5hW6tJ7vrjkj3WG8ehKOV2A4XoE7mTFTFAUVFUfQv/8pLtP2vZ1WKwf1e6QnmzZtAt5//xP075/i8xh/x8vXz5NWKyM+Pqrd93fPb70+pDNazxMRUec6fPgg/vd/H/D6Wnh4OF544ZVuff7uhsEIERFRgIYMGYbXXnur/QO76fkBYOPG7Z16/kD0nbk5IiIi6pY4M9IN9KS8ESLqHRyVpD0obZC6McfPkdTBbdb4jdcN5OYVco8aIupSkiRDq9WhpqYSsbHxLf0mev+GnYoCjzJg8q398bL3aKmrq4ZWq4MkdWzBhcFIN8BeI0QUCgkJKaivr0FV1XEAfWOGRJZlBiMB8G+8JERERCMmpl+Hr8NgpBtgrxEiCgVZlhEXl4DY2Pg+sVwjSUBiYjSqqhpYPu4Hf8dLkiSXDrIdwWCkG+AeNUQUSsH4MukJJMnenVSWZQYjfujK8WI1TTfgvEeNyWLD9r0VyM0rDPVtERERdQkGI90E80aIiKivYjDSTaSnxkJumSVl3ggREfUlTEroJhbnZACAS68RIiKivoDBSDfBPWqIiKiv4jINERERhRRnRroJtoQnIqK+it923QRbwhMRUV/FZZpugqW9RETUVzEY6SZY2ktERH0Vl2m6CZb2EhFRX8VgpJtgaS8REfVVXKYhIiKikGIwQkRERCHFYISIiIhCisEIERERhRQTWLsRdmElIqK+iN903Qi7sBIRUV/EZZpuhF1YiYioL2Iw0o2wCysREfVFXKbpRtiFlYiI+iLOjHQjEXotFudkID01FsVldcjNK4TRbA31bREREXUqzox0M0xiJSKivoYzI90Mk1iJiKivYTDSzTCJlYiI+hou03QzTGIlIqK+hsFINxOh1+L62ZkQFiMav3sD1blrsNOajH0DL8Tcs0/He98Vs0MrERH1Kvwm66aM370K5UA+YgCMRg0sh5rx5zV1MDcrAICKaiP2l9Zi2dIsBiRERNSjMWekmxEWI5q+fA62A/loSR2BJAGZYaVqIOJQWWNCbl5h198kERFREDEY6WZMm9bCdiDf43nJy7EAq22IiKjnYzDSzdjKizyeEwIoaB7s8bzEahsiIuoFGIx0M5qUER7PKZDwTuNkl+dkWcLkzBRW2xARUY/HYKSbCc9eAkQnqo8FgJ8sQ2GGzuW4Saf3x/WzM5m8SkREPR6DkW5G0kUgesHfoR05FVJsCuThU/Bl2NkuxyT1C+eMCBER9Rr8Z3U3JOkiEDHzBvXxn8+yIjevUO0vMn96ustj9hshIqKejN9gPYCjEZrDmg0F3EyPiIh6DS7T9EDcTI+IiHoTBiM9EDfTIyKi3oTLND0QN9MjIqLehDMjPVCEXovFORlIT41FcVkdcvMKYTRbQ31bREREHcKZkR4qN6+QSaxERNQrcGakh2ISKxER9RYMRnooJrESEVFvwWWaHopJrERE1FswGOmh3BuhERER9VRcpiEiIqKQYjBCREREIcVghIiIiEKKwQgRERGFFIMRIiIiCilW0/RQRrMVuXmFLqW9EXr+cRIRUc/Db68eiu3giYiot+AyTQ/FdvBERNRbMBjpodgOnoiIegsu0/RQbAdPRES9BYORHort4ImIqLfgMg0RERGFFIMRIiIiCikGI0RERBRSnZ4zYjabcdttt6Gurg5nnXUW/vCHP3T2JfsMYTHCtGktbOVF0KSMQHj2Eki6iFDfFhERUUA6fWbku+++wxlnnIG3334b27ZtQ10d+2EEi2nTWliLtkDUVcBatAWmTWtDfUtEREQB6/RgJD09HTabDTabDVarFTqdrrMv2WdYj+8DhGJ/IBRYS3ZAWIyhvSkiIqIAdXowotVq8fnnn+PCCy/E0KFDER4e3tmX7DuEcH1oNeOHVx/Dmg0FMJqtIbopIiKiwHR6MJKbm4vbbrsNX3zxBTQaDbZu3drZl+w7TA0uDyUAA5Vj2FpQjty8wtDcExERUYA6PRiJjIxERIQ9qTIhIQENDQ3tvIM6SnCvGiIi6oE6vZrmyiuvxJ/+9Ce88sorGDRoEG677baTOp8kBenGnM4VzHN2Jc2QsbAdyFcfS0571YxIjQ365+rp49XVOF6B4XgFjmMWGI5XYLpyvCQh3BIPqMdQzE0ofeluWGvK7Y8hoQAjUZy2ADfNG4PI8LAQ3yEREVH7OhyMPPHEEzAYDHjkkUcAAN9//z3++c9/wmw2Y+DAgVi5ciX69+8f1Jutrm6EzaYE7XySBCQmxqCqqt49F7THEBYjjBvXQikvhpySjohpnddrpDeMV1fieAWG4xU4jllgOF6BCcZ4aTQy4uOj2j0u4GWa0tJSLF++HBs3bsTs2bMBACdOnMDdd9+NN954AxkZGXjjjTdw//334+WXXw78ztvRGT9AQnTOebtEWAQiZt7g8lRnf5YePV4hwPEKDMcrcByzwHC8AtMV4xVwAus777yDqVOnYunSpepzGzduREZGBjIy7NvYL1y4EFu3boXBYAjenRIREVGvFPDMyF133QUAePrpp9Xnjh8/joEDB6qPdTod4uPjcezYMSQnJwfhNqk9RrMVuXmFKC6rQ3pqLBbnZCBC3+n5yURERCctKN9WQghIXtJtZZn78HWV3LxCbC0ohyKAyhp7F9brZ2eG+K6IiIjaF5RoYdCgQSgvL1cfWywWVFdXY9CgQcE4PfmhuKwOCvuMEBFRDxSUYCQ7Oxu7d+/Gvn37AADr1q3D2LFjkZCQEIzTkx/SU2MhO/UZSU+NDe0NERER+SkoyzQJCQl4/PHHce+998JsNiMxMRGrVq0KxqnJT4tz7MnDzjkjREREPUGPanpWXd0IqzW4fUaSkmJQWcmac39wvALD8QoMxytwHLPAcLwCE4zx0mr96zPCDFMiIiIKKQYjREREFFJsRNFLse8IERH1FPx26qXYd4SIiHoKLtP0Uuw7QkREPQWDkV7IaLbCqrhWHQ0dEB2iuyEiImobg5Fexmi24qFX83Gi1uzyvATPdv1ERETdAYORXsQRiFTWmDxeO3i8PgR3RERE1D4GI71Ibl6h10AEYHt4IiLqvlhN04t4S1KVZQkTMpLZHp6IiLotBiO9SHpqLAzVRji69ib1C8eypVnsL0JERN0av6V6EW+b5TEQISKi7o7fVL1IhF7r0diMnViJiKi747dSL5ebV4gtu8ohAFRUG7G/tBb3XTEO731XzACFiIi6BX4D9XLFZXXQwYIFUflI0xpQ0pyMx96y4HitwlbxRETULTAY6eXSU2Mx3JKHCboSyJJAotwAqRnIFdMA2FvF7yw0wJhj5ewIERGFBPuM9HKLczIwQlcJWbLX2MiSwPCwSpdjzM0KcvMKQ3F7REREDEZ6uwi9FonpmVBa2sErkBCfdhrCdRqX47iRHhERhQrn5fuAqOlXwqSRYCsvhi4lHeHZS3Cm5QC2FpRDEYAssUMrERGFDoORPkDSRSBi5g0uz3nrSUJERBQKDEZ6sbZ6jHjrSUJERBQKDEZ6sdy8QnUppr6mFpOqP8XwMAM0KSMQnr0Eki4i1LdIRETEYKQ3Ky6rg9KyUc28yHwMbSqBkASs9ZUwAR5LN0RERKHAappeLD01FrK9iAZpWoNa3guhwFZeHLobIyIicsJgpBdbnJOBSZkp6B8fgYboIYBk/+NWIOHn2lis2VAAo9ka4rskIqK+jss0vZhzkqqw/AamTWtRfWA39jYlYF3jeDTXlANgK3giIgotzoz0Mc1WBS2LNVAEm50REVHocWakjzBtWgtr0RYkSAom6OoBAP9umsZmZ0REFHIMRvoAYTHCenAnIBQA9v1pRugqMSkthc3OiIgo5BiM9AGmTWuBZpPLc/1PPQPXz3TNFREWI0yb1sJWXsReJERE1GUYjPQBtvIi1ye04QjPXuLRofXy8I0QJVsBobAXCRERdRkGI32AJmUErPWV9mUaSYY2bRwkXQRyNxSoHVora4y4KGkPYlqWcpx7kTgHLZnDE3HZjOEI1/FHh4iIgoPVNH1AePYSaNImANpwQKsDFBuExejSoVURwD5TotqLBJIMTUo6gNa28hXVRny7swy5XxSG6JMQEVFvxH/e9gGSLgKSRgvYLPYlmAPbYJI1SE/NRkW1UT3unfqJSEgNx/CwSmhS0hGevQQA3IIWgSKWAxMRURBxZqSPsJUXqdU0jiWYxTkZCNdp1GPM0OGtpmmIXrgSETNvUJNXndvKy5KEESwHJiKiIGIw0kdoUkZ4LMFE6LU489Qkp0ADXvuOOLeVnzEuFYvPZzkwEREFD5dp+ojw7CUwAbCVF7sswTj6jDgqarz1HXG0lZckICkpBpWV9RDC4zAiIqIOYTDSR0i6CK9lus771wD2XiPGr19x6TViEmGspiEiok7Db5Q+yr3HyOKcDETotWrbeOdeI7mN2a0lwDvLYDY34zpurkdEREHCYKSPcpTrKgIwVBuxv7QWsiThdu1uj14jxbWjWU1DRESdhgmsfZRzua4AUFljQkW1EXubEqCgJaO1JdGV1TRERNSZODPSR6WnxqKyxqgGJA7rGrOg12kwNq5OTXRdLMIAwCVnhIiIKFgYjPRRzlU0ihCoqjVBCKBZ0mF36iXIdsoJiQBYTUNERJ2GwUgf5VxF4y2ZlYiIqKswGCGvvAUokeH8cSEiouDjtwu5VNbUVtdi5KH3kaY1YLglCTsbs7C1xr5/zQ1zMtFkasaajwtwuKwSCyLzkaY1QDvA3o/E0T6eiIgoEAxGyKWyZkFUPs7UlkCWBCbo6gEAbzZOQ/7uCkgAtFoNthSU4/LIjRiKEkASsDbY+5F4a6pGRETUHgYj5FJZk6Y1QJbskYksCQzTGgAANkVgS0E59DoNFAEM11aox0EosB7fH6rbJyKiHo59RkjdCE8fJuOwNVGtlBECKLUlqscpAjCabfbXWl53kLrwfomIqHfhzAiplTXGHCuK3tkC2FNEIElAQmw45EZ49CORJfvrREREJ4szI6SK0GuRpjvhEmQMCzuBSZkp0MiukUeZNBCQWn58JBmaASO78E6JiKg34cwIAWgt5T29Ng5nSAbIEIAkQztgBK6fae9H4qi4kSVg38ALcWbkFtgO/2Jfo1FsEBZjhytqfG3cR0REvR//ticAreW9O8V4XBZlw6jIE4gffjrCs5cAsOeVSABKjjcgbUA0FuZkAD9sB2wWQCiwFOdjZ9EJ7E69pEOBhHN5cWVLKfH13BmYiKhPYDBCAFrLe83QYV1jFhbrdiC2vAimTWsRnr0EEfoIXD8n06UdfEN5EdCyw68MgQHKcbxaUA4g8EDCubxYEfbHRETUNzAYIQCu5b2XReXjDKkEok7AWt/aQ8RotuKxt3ag4EAV0lNjcXlSOlBfCQgFipBw0Jrc4UDC+fqyZH/sjMs4RES9F/82JwCuG+eN0p6AbGvtIVKxbxe+aCyAzSawfW8FFAHU19Ri8sBqDNOEodkm8It5ENY3ZgEAFCFgNFvVYEFYjDBtWgtbeRE0Kd67tTpf39v+OFzGISLqvRiMEAC3jfO+/hXWoi3qjEeRJQlbC8qhC9OoSynzIvMxxGjvwKqVJGh1YTA36gAAlTUm3Pbkd5iQ0R9XzRoF/LBWPZ/zTAvgOePx0NUTvc54cBmHiKj3YjBCHsKzl8AEoGLfLhRZkrC+MQsKAOHU5cy5U6skBFJFucs5FAXI31MBjUbC5Q2tuSUQCmzlxepx/s54tLeMQ0REPReDEfIg6SIQMfMGfNFYYA8UYA8Axo5IxK8HTsBotqHEmoxEuR6yZO/EKoQCPSwwQ+dyriNllRAxNpfn5KShAOyzIj/uq/RrxqO9ZRwiIuq5GIyQT+4BwJLzM7Du2wP4ekcp1jdmIU1bgSS5AZIEJMqNWBCVjzcbp7mc43xshKivcmmkJrU8yM0rhMniGqj4mvFwXkYiIqLehcEI+eQeAEgScNO8MWhsMuPnoipIkqQGGc6b6skSEKaVIQQwSDkOSeN6XpvhIADPWRB9mMwZDyKiPojt4CkgkeFhuPmS0Xj+rrMxIGO02hJegYTj8gBMOSMFT/9xOsZlJMNiVVBiTXbZUA8ANCnpAIChA6Jdnh8zIpHlukREfRD/5qcOcyS62sqLoUtJx9TsJcjWRai5IADwceOZGK4tR4LcCCHJKNOn4519GTilsQCK6woNwhQLjF+/2GYJMBER9T4MRqjDHImu7pxzQeZE/YgEuQmyBCgQKK+zobTRhqM19lJhZ6dVfA5rZbFaAvxraS1yG7Pt1xLAiFPi2OyMiKgX4t/qFHTOuSDOJcAyBM4IO2yvuhE6CCHsQYoAIiQLTpMPuZQARzccRmXtePVcVXUmAGx2RkTU2zAYoaBz7glSYk1GklyvJrqGS1YsiMrHv5umYcyIRGg1MorL6nBF5A6EGS3qOYQADlkTXc6rCGB/aS3WbChgW3giol6Ef4tT0DkqYnYWGrC+MQtjwg4jXLICsFfkpGkN0IVpIEFSg4mGtz+AMLqeR3I7r9zyBNvCExH1LqymoaBzlAQ/dus0jDvjFOyT0qC0hBYK7BvqmSw2bN9bgdy8QgCAJmWEyzkkCThFWwXAXvKb3C8ckzJTIAmwLTwRUS/DmRHqNI6gRFiGt2yUV4xdtbFY12jPA3EOJvQTF8BasgOwmlteswctABAXrceKG6cAANZsKEBVnYlt4YmIehEGIxRU7hvf2ZdhWqtufvnwV5irDerxjl4j5m3rAas9Z0QAOKFEYX1jlkvAYTRbYbUpCNPKkCQJY9ITXZqkeb82f8SJiLo7/k1NQdXexneSWyaIBAlGsxXVB3YjBi0b7wHQ67SIi49z2YcmN68QO/Ya1FkRjUZyCTb83XSPiIi6FwYjFFTFZXVt5nQcPF7v8Tg3rxDpTQkYr6uFLAkIADGyCQ+m/4J1TROx7LVtSE+NRdGRWoQJCxZE5SNNa8CxsgEQluFqY7T2rk1ERN0TgxEKKueyXm85Hd5eLy6rw87GLAgAox2VN80m2A5swVBzOb5vnAZDtRG6MBkLovIxQXcAsgQkoR4N6/+C9dFXoPCYGYoQkFp2EWY+CRFRz8FghILKfadf943vHI/3l9YCAIqO1EJIgEXS4c3GaXgw7gNEyPbZExkCQ1s23xMAzM0K0iINaomvBEA0VGJo1QZ83zgNEoDEfuGQJcnrtYmIqHtiMEJB5b7Tr6/X12woUPM7nIOIhsghSDbtAYQCBRIOtVTUOLg3UZOA1q6u0EGWJLXyhoiIegb2GaGQcM7vEIAaRIz+/a3QjpgMKTYFmuGTcWjobPSPj0BSv3BIErC+MQtVSjScNwJ2dHUFgLpGC9ZsKIDRbPX7XoTFCOPXL6Lh7Xtg/PpFCIux/TcREVHQcGaEupzRbIUiWsMJySm/w3nzPaPZCmteIQAz0gbGYPjAWBw8Xo9vBl6DBZUvAlaT+v60luUck8WGLbvKsb+01mW5pq0SX9OmtbAWbVE36Gu0CfzbNE1dSuImfUREnYt/s1KXy80rRFWNSX2cGBfuNb/DvVR3UmYKVtw4BcJiRON7MRD1LeeQJByTB6jvEwAqW87vT4mv9fg+lw36LAe246fqoTAKnXoMN+kjIuo8XKahLldcVueyzCJLktcZB1+luqZNayHqKwE4GqRF4zORreaROPOnxNe994lWNGNeZH7A5yEioo5hMEJdLj01Vq2IaasE19dxtvIiwKlBmlUBjtUoSIwLhz7M80c60BJf52UfB5YKExF1Hi7TUJdrr/y3veM0KSNgra+0V9y07GHjSIKNi9ajoro1AVUfJrdb4qsZMBLWetfgoyF6CJKkcAD2gGfE4DiWChMRdRIGI9Tl2iv/dT/OseeMoxProhmXQ2OzwnTgR9iEgAYKIiQL0lNTAEBtqhYhWXBj/19h++BTGFNGIDx7idqt1Vl49hI0mpsgDv8EAGiGFp83ZWLkYCatEhF1Bf4tS92etz1nFkdpESbZECYrOFN3CP3iIrHFNhgHjtUhIS4cEoBFUTuQZtoDYbRXyZgAtVLHmaSLAKrL1MdaYcUC5VM8WjAPAJNWiYg6G4MR6va8JbLa4orUChhZEujffBTb91aobeYnZaZgeIMBwthaJWMrL/Z5DdFwQv1vSQLi5Ub1WtwNmIioczGBlbo9b4msmpQRgNTy4yvJ2GdK9AhY3I850JyE+1ZvdmmKZjRbsWZDAU4okWqFjxBAtRKlXssxM1NRbcTWgnLk5hV23YcnIuoD+M876va8JbKGS8NhAmArL8aB5iS8UzXa5T3pqbEIz14Co80K2+FfYLHacKKmEbWNtdhcbYTVpuDmuaPVQKNAnI//ifsv4jVNaNLE4C3MxqTMFCzOycCy17ZxN2Aiok7EYIS6Pe8Jr1o1/+Ot1ZthhrcKmmYohhLAaoIOwJm6Q7BBxpuN07BtjwFaTQGKjtRCEUAdovC32nnoHx+BFddNwYNOV3LeaRhobTnP5RoiouDgMg31eO7LOOMy7Jvr7Xr7SSh1rSW7siQwzKl/yOZd5WpnVcd7vfUSWZyTgUmZKWoPE5PFxuUaIqIg4j/rqMfztozz+ud7Mb+pSE0ZAey5IAfddgF2zHaE6zQ489Qkr71EHDMz95VtVnuYKALYX1qLNRsKmNhKRHSS+Dcn9XjelnF+Ka7C/EjX44Qk4WPLZK/nEEL4DCYc1TS1DWb1OcdMjHvJMcuAiYgCx2Ua6pWEEChoHgzH5sBCALr0LCy/9RxMPC3ZYx8bc7Pic9nFkeRqbraXCYfrNJiUmQJJgImtRERBwGCEeqUxIxLxTuNkbLMMR4UtBgciTkf4WVcjQq+FViOrQYozX8GEc58TAIiN0uH62ZkYcUqcX3vsEBFR2xiMUK909azTMO6MU/CtbgYao4cgPazSvtuvxegz6Ah0wz5HYmv/+Ai1DJiIiALHnBHqldR9bb5+EdaiPYBQYG2wt4RPT8122UwPAJL6hQe8YZ+vvXOYyEpEFBj+jUm9mq28tW28oyX84kuvgdWm4JeiKkiShDHpibhq1iifAUR7G/u5752jVcxYGLMdtvIiKENPgzRhIRDmuUEfERHZMRihXk2TMgLW+kp7QNLSEv6tlhmMx26d1u4MhvO+NBkD9bgschtQWQyN0y7AjsZpgD2RdeSxz2AtLwaEgoZdldCamr1u0EdERHYMRqhXC89e4tI2fvXR0TAKo9+luM6zHudb8mDTl0CGUHcBxtRrUNdkcXnPKSh3mY1R2tigj4iIGIxQLyfpIlzaxhtFa9Myf0pxnStphmkNkB3b6bUs+fw7r1At+XU4ghQkSA3qbIyckn7Sn0NYjDBtWgtbeZHLrAwRUW/AYIT6DOc9ZvwtxXV+z0FrMhI1DfaARJKhSUlH8T7PgGb/wAsxLnILbId/gSQDtuZmvPrRThQeM3c4wdW0aS2sRVvsibgtszJc+iGi3oLBCPUZvqpi/H3PoYGzkRW5Dag8AE1KOsKzlyC98QAM1UbHfAkS4vQwCx1+LK7GGZIJMgBxcBvOtu1Bfu1sbO1gp1ZvibhERL0FgxHqM9qrivHvPeNcXncPcGw2ge17K3B+7HHIGvsxEoBEuQELovLxZuO0DnVqlZOGwVZX4fR4aMDnICLqrhiMEJ0E92DlvtWboQjgkDURSXK92nZeklpyTjrYqVVy618vSZJLpQ/7mxBRT8a/uYgC4CuR1H0zPcn9fQAq5OQOd2q1GUpcHhuLd+Lhn75CXbP9V5gb9RFRT9bp7eBfeuklLFmyBEuWLMHEiROxefPmzr4kUacxfvcqrPt/gKirgHX/DzB+9yoAewnwll2tm+kN0Va5bMYnAYiO0KG4rA65eYUwmq0BXVeTMsLlsVY04/bIj6CHvayYG/URUU/W6cHIddddh7Vr12LZsmWYOHEipkyZ0tmXJAqI0WzFmg0FuG/1ZqzZUNBmoGA7/LPb418A2AMB5733SqzJcN+LL6qxDBXVRmwtKPe5Q7Cv+3u7fgLMonUiU5KApJY8FIAb9RFRz9ZlyzTPPfccbr/99q66HJHf3Nu5A/4vd9iazXj1o50YNiDGZb+b9Y1ZGKEzIEGqBwAoQkKJNbnlv1tnMfzpH5KbV4ite2owIzYcSXKDRx5KuE6DM09NwuKcDPYjIaIeqUuCkaamJtTX12PUqFFdcTmigDg3NmtvuUMKj4FoyQsBABkCQw9tQOGQS5HULxyVNSYAgEXS4euBS3FV8s9oOrQXJc1JeL9mtP09TrMY/vQPcdyfBLgs/QgB1EedgjGDEtXln8vDN0KUbPWrH0lPCFx6wj0S0cnrkmDk22+/xdlnn90VlyIKmHsztKEDovH8h7+6bKT3u5kj8N53xTi/3owE51wQCRiqNeCL4w1YtjTLpbpl4fkZ6J86A5WV9RhpsuI3eYXYX1oLRQjsLDTgln3f4sG43Yhpp3+I4/4OWPsjQW6A3HJ9OTYZP0adh+17KtRZnYuS9rR7Pgfjd6/CdsC+zGOtq4DRZkXkebd4HBfKgIDN3oj6hk7PGQGA/Px8jB07tisuRRSwxTkZmJSZgv7xEZiUmQIJErbtMcDcrMBksSF/TwVWvLUTWwvKUWRJhnBKBhECOGRNRnpqLCL0WizOyUB6aqx9puKLQjSZmgG0lgCPHByHE7Vm9dx7mhKgOGpvWrq6+rq/b3UzcCgyE4jpD+3IqYia/zAKj5ldZnVKrMmAJLd5Pgdf+S/uTN+/5pK0a/r+Nf8GNgisx/e5NHuzHt/fZdcmoq7TJTMjpaWlGDhwYFDOJbnXTAbhXME8Z2/WW8crMlyLG+a05ojc+4JnxVd1nf1Lf31jFmQoOENXCo0so1CcgsNDL8KS8zMgScCbbvkn+vd/wVUXnKqex30JaH1jFiQJGBVxArHDTkPEtCUe4+t6fzNcXhvhNquzf+CFGBezHUp5MeSUdK/nU7m/YLMAzUaPWQ+rW9BiPbANrzVOwt5jZoxIjcXi84PT38Tbz5cEySUR2H2pqq/rrb+TnYXjFZiuHK8uCUbWrFkTlPPEx0cF5TzuEhNjOuW8vVVvH6/M4Ymo2FHq8lxSvwgYqo0wCx3ebJqBGaNScecV4+HeMaTkWIPLTMXeQ9Uu4+Xt3EIAJosN1cfrMT0xGrI+0u97/Z/Lx0Oz7ids21Nun1/RRSLhguvQ9O3rMJUWQmx/G4kXXOf1nLaR49G4e5PTjSgQ299G8sWuieb1gEtAIISCIYc24LvGaaisMUGvD8OdV4z3+57b4zxeTRoZzrVNoqEK7366HT+V2jBqWDxumjcGkeFhQbt2T9XbfyeDjeMVmK4Yrw4HI0888QQMBgMeeeQRAMD333+Pf/7znzCbzRg4cCBWrlyJ/v37B+1GAaC6uhE2m9L+gX6SJPsgV1XVu0y9k3d9ZbwumzEcjU1m/OyUM/L7c0bgvW+LUVRWhxGpsbhsxnBUVtZ7vDdtYDTKTzSqMxWjhsa7jJfzuc3NChZE5WOC7gBkCRANu3Bo9Z2IXvBwQDkZNqsNFosNigA2/nwU4wwfI820BxAKGmoqYDI1I/KcG+yN2b4oVD/DFdlzgd0/wDnUaDy42+NzyaeMUXNLAPvsRJq2HACgCIGCA1VexyJQXn++ktOBmnL1GCEUTDj4Gj6rnYfyE40wm5tx/Zy+2+itr/xOBgvHKzDBGC+NRvZrIiHgYKS0tBTLly/Hxo0bMXv2bADAiRMncPfdd+ONN95ARkYG3njjDdx///14+eWXA7/zdnTGD5AQnXPe3qq3j1e4Toub5o72eP46t3Jfb2OwKCcDAvblmBGpsbhp3hg0NZjUY53PvWZDAdKOGNSEVEkCRL0Bxo1rA0rSLHKrBoprOgxIrXkWFft+xad1v+JAWR2q6uyVQIYaI7KqP0WaRzcUz88VMX0pGkq2q7kbAkC0ZD+PozIomD8Pzj9f4dlL0LD/B/U1CUA/uVH9rEVldb36Z9Ffvf13Mtg4XoHpivEKOIH1nXfewdSpU7F06VL1uY0bNyIjIwMZGfZJ64ULF2Lr1q0wGAzBu1OiHsA5ibWorA4vvP+LzyZqi3My0BA9xOOXPNAdedNTY1srbCQgTNP6ay0EYFMEtu0xqIGI4/m4piMe56prsrg0fzOarXjpiwOwKa03KQEIkxU14bcj7e39JekiAK2+9b4BWIV9B0I2eiPqPQKeGbnrrrsAAE8//bT63PHjx10SVHU6HeLj43Hs2DEkJycH4TaJeg6XJmo7y2A2N3vMqgD2wGX0729Fw7oHgMZq9Xk5cXBA13PfOTimLgxosL8mSUCMZIIeFpihc3lfbeQpSDAWqI8FgL1NiahoNKrN3wBga0E5zo2Ncmm4po1JxIrLu6ibcngU4LTnT6PQI1ynwZj0xE4NhIio6wQlgVUI4bGrKADIcpdUDhN1K65N1AT2ldZizYYCFJfVYeiAaEiQcPB4vbrTrlqK26Lm0H7c9a9v1HyVq2aNarNaxX3nYOP/pcPaUKk+1ktWLIjKx5uN09TnkvqFY8QlNwFb19pLeiWgwJKKdY0TW+67tfJHEcBTtRfg9rj/IkFugjY2EZFz7j/pcfKXduAotdeIIiQUW1NgabZBo5G4SzFRLxGU3+RBgwZhy5Yt6mOLxYLq6moMGjQoGKcn6lFcm6hJkAB1psS5Zbxj9mFhY43L+yNs9eqGe/l7KqDRSAHtxivc1n0kCRgVeQJZQ/q7BEERei3g1ORs14YCNNeUA8J1CaSyxog6EYVH6+ZhUmaKei+OnYodMzLqOYMsPHsJTAAq9u1CkSUJ6xuzoIAbAxL1JkH5myM7Oxt///vfsW/fPpx66qlYt24dxo4di4SEhGCcnqhHcV42yRyeiF3FlVC8JH85Zh+k2ASIent+lRBAteKaee7rS9dXMKBUHvQ4NmH46bhp5hk+79lotsJqUxCmldUZGeclEOdrOJzMnj6BkHQRiJh5A75oLLBfD8wXIeptghKMJCQk4PHHH8e9994Ls9mMxMRErFq1KhinJupxHMsmkgQkJcVg+atbUFVr8ghIHF+okWffj6aPl0M0nkADovFU9Xkux9U1WrBmQ4HHzIOvYECTMgLWOgMcJbtSTDLCs5e0ec+5eYXYsdegliQ7L4G4LAG17HBcXFaHukaL33v6BIN7bgzzRYh6jw4HI7fddpvL46lTp+KDDz446Rsi6m0Wn99a7ustZ0TWaxF9+T9gNFvx4ed7YKqphGwT9nI62Buibd5VDqtNwc1OJcfuG/zt2FuBnYUGhEtpuDqpBsPDKiElp2Nd00QUvvpTm0sp/m4W6BwAOeuKmQr33Bgi6j2Y/UXUyfz9EnWfnZAk19r+X4qqXI53zk0BAItVABAwQ4Mnj07AlDNSABOwdU/7SynumwX6CiycgxYA0IfJiIvWc6aCiE4Ky12IuohjicO5j4cz99kJ99kH94o15w3+wnUaj+sVl9X5PePhOFdSv3AkxIWj6Eit13t07mnioAiBoiO1yM0r9NlThYioLZwZIeoi7SV8pqfGwlBtVHui6sJkWJpbtz8Yk57ocj7nGZc1GwqweVe5y+vO1TDOMx6+El+vn52JNRsK1HusqjN53KNj9mNnoX1XY3OzAnON/ThDrQn7S2uxbGlWm1U1XVWFQ0Q9B/8GIOoi7rMU+536j6SnxmL+9HTsL61FZcuXu6VZgSwBujCN2m/El8U5GbDaFPzitJ+Or2qYtoIi93vM312hnj9Cr1WDlvvKNruUKTtU1pjw+ud7cdNc35U7XVWFQ0Q9B4MRoi7inpcBwONLWXZbilEE/G7wpdW45m94q4YBPAOOnYUGGHOsiNBrPWZnbIrAloJyj/O456s4+6XYntviawbE36UjIuo7GIwQdRH30tSiI7UeX8revuT9+cJub7bBOTCwKq47X5ubFeTmFeL62ZlYnJPhMjsD2JNo3a/v+Czux9qPF23ek7/JsoHg0g9Rz8bfVqIu4l5Vs2ZDAarqTC5fyu45GYB/X9jtzTb4Ksl1fr/jHt1nZwDP6zt/luc//BXb9rhuirlmQ4HXYAs4+X4h3gIPLv0Q9WwMRohCwFfHU8eXvDHH8wu3Le3NNriX5Hp7v/N/Oy/VyDJgswkYzVavsw1XzzoNWo2MgsIyzNFtQZrWgIMlyTgUNh2yBI97Otl+Id4CDy79EPVsDEaIQqCtjqdA4F/Ybc02GM1WKMJ3JJLUL9zlePfZGUUBtu/1vUeO4143lf0HZ6AEsiSQKDdABw32ZF4S9I6p3gKPzlj6IaKuw2CEKASC/S/5toKX3LxCVDnldSTE6TFiUJznpnlu53KumPHnHtO0Bsg2+4eSJYHhGgOmBRBQGc1WPPbWDhQcqGoz78M9r6au0QKrTcGEUa4bARJRz8FghCgEuvJf8sVldXCeF9HKcpultx29x9ihp8F2YAtkCCiQEDv0tIDuM/eLQmxxWn6x2hRoNbJHUqr7zI3JYsOOvQZMykzBihunBHRNIuoeGIwQhUBXbvoWaFDhSBDdX1qLhLhwSABGDI5r9x6jpl8JI2ywHf7FvvQkKRAWIyRdhF/3WeQ2W+ScFOuclOpt5iZMWHB62X/Q8Pbr0KSMQHj2Er+vS0Shx2CEKAS6ctO3QAMf5wRRWQImZab4da+SLgKSRgvYLIBQYD2wDY1Cxr9N0/wquR2RGovKGpPX/BZvy0TOQdZlUfk4QyqBqBOw1lfCBCBi5g3t3jMRdQ8MRoh6OefAx59+HCeTz2IrLwJESx8ToaDu0B5srRwJRQAV1UbsLDQgJkoHSQAjTolzuf7i8zOg14fhux/LYHMr/fE2o+McZI3SVEF2vEcosB7f7/c9E1HoMRgh6kP86cdxMvksctIw2Ooq1MeHrAkuJcXOe9m4730TodfizivGw2xuVnNHACBcp8GZpyZ5zOg4B1kN/34for71Nc9OKUTUnTEYIepD/Jn1OKl8FsXm8jA2XKP2GnHQw4IFUflI0xpwrGwAhGW4S37H4vMzINyuz26qRL0bf8OJeqCOtj/3Z9bjZPJZbGUFLo+HWIqRfdqFyN9fp3aUXRCVjwm6ln4kaIBp01qX/A5/ru/++S9PHgHUVwJOdUOBJM8SUWgxGCHqxnwFHR1tf+5r1iOQ4KbNY92TT4WCyyK3wTRiKn4pqoIQAsO1BshSSz8SCNjKiwMeD+d2+ZU1RmhPm4jLYoog6u0VOEq9AYdfvQdfDVyKuWefjve+K+ZMC1E3xt9Iom7MOeioqDbix32VOPPUJJ/7vrTH16xDIMGNt2Md+8Oc0ZyKTOmAS85GZXEBtteMVOOUA9ZkJMgNkCV7PxJdSrrHNfwJwhwUAfywtxazEi2IbnlOAhCPegw9tAEr3jLhRK2J+9YQdWNyqG+AiHxz31PGZLFha0E5hGRfZgGC0zQtkAoab8c6goQ3qrNQZYtWAw9FSCi2JLlMmKxvzMJ2SxoqbDHYJew9Qdw5zldRbcTWgnLk5hV6XNuZTREwWWwuzd0kCRiqNaC6zqy+p7UfyT0wfv0ihMXo7xARUSfizAhRN+be+hxoTQadlJlyUsstvq7TXnDj7VhHkGCGDqtqZ+Oy6HwM1Rhw0JqM9Y1ZLu83Q4c3G6epPUyyveR1+AqOvI2HM+cZGSGAQ9ZkxMfq1ZkR9iMh6p4YjBB1Y+6tzwF7ADBycNxJL7d4u44/FTTejs3NK1SDhGZJh8+156kBgAT7ZnyyJGHogGhIkNrdQ8ZXcOR+bZtNYPveCigCKLH2R4KmATLsaaxVSjTea8qCTWNBXLQOTSYr0sIMkB3zJ0IJKF+FiDoPgxGibsyR42HM8Zzx8KajDcsCqaDxdqx7kDB/enqbSaPCYoRp01rYPngdxpQREBMux1vfHkbJsQakDYzG/OnpLudznN/92kazFRqNhOKyOhwaOBtZkduAygMoaU7C82WjYYYOsCqw1FsAAAeak5Ggs+erQJKh8ZKvQkRdj8EIUQ/gb7DQlRvwOfN2f211fcUPa2Et2mLvllpfiZ/3GfBDtX2Tu2NVjdjZkqj70NUT21xm8rzuOADAW6s3wwzPfJD1jVmQoWC0rhT6MC2g2FgCTNQNMBgh6kW6cgM+f3lbOrq8wbVt/EDluMt7HIm6QMcqX9JTY9VN9JyZoYMCGWGwAc1WWA9sg0nWMG+EKMQYjBD1Il25AZ+/vC0daU4dAWudAYCAEIAEAT0s9mUVuB7bEYtzMrDvcA2q6swer6U59Tlx5I10NPGXiIKDpb1E1KnSU2M9ypDDs5cA0QkA7CW4SXIDfhe1xeV9J7PMFKHX4uFrJyGpX7j6nCTZ97kpsSZDEfYbUoQETUq6z1JiIuoaDEaIqFMtzsnApMwU9I+PwKTMlNalo8Zq9RhJAkbrSjFl9AAkxuqhkSUkxIWriawdEaHXYtnSLEw5w37tyZkpGJOeiE+azkSVEgWrkNCoiYV+4oKT2qmYiE4e5yGJqE0nu4ThbenI+PUrrTkjLfQ6LcJ1WlTX25uUVdWYsOKtnZAlqcNLJ96qb/bXfYbEpgbIEhCj1KLp4+XIGHh5SBJ/iciOwQgRtamjvUvcOQc1t2t3I8bpNQGgwJKKLbuOqTMUAkBljQlA8Nq4R+i1GK6tgHDqjqbUGXBm85cwj/qt2v9k/vR0vPrRTpx67DOkaQ2IHXoaoqZfyaobok7CYISI2hSsJQznoGZvVALG62taG5TZovFG7USYYfP63pNdOnEJhDQWl0BIkoDYxiPQJEhYcaO9vHjNhgKkH9qAM3QlkG0CtgNbYNJIrLoh6iQMRoioTcHqXeIc1KxrzIJep8HYuDr8UhuL3NrxaiWNPkxGXLQeihCoqjVBBGHpxDkQMsfZEKNpfU0IoMSajPzdFQDsOS7FZXU49yR2FyaiwDAYIaI2Bat3iXNQ0yzpsDv1EmTPzsTuDQVorikHBCBLEsZnJOO62Znem6U5CSSXxTkQOmDt37JrsD0QqVSisb4xCzYItbdJemosDpYkI7Gd3YUBp26y5UXQpNg3/uNyDlFgGIwQUZuC1bvEV1Dj/Hzm8ERcNmO4X9cNJJfFORB6vykLyf0ikKa1b+T34rExMCMMQOty0ENXT8Tb/50N/bHPkKax54x4210YAEybXLvJcvM9osAxGCGiLuEruHA8L0lAUlIMKivrIXzsyusskFwW10AoBSNzzkOEXosxAMZuKFCDGsdyUIRei6UXj4OjvXxbbOWu3WS5nEMUOPYZIaIeyVszNV8i9FoszslAemosisvqkJtXCKPZCsB3HxRhMcL49YtoePseGL9+EcLi2V4eADQpIwCp5a9Sbr5H1CGcGSGiHinQXBZfyzq+Zmz8XX7RT1wA2/H9EA0nIEUnQD9xwcl/OKI+hsEIEfVIjiDCkci67LVtbSayelvWaSsJ1tfyi/t7Lg/fCNFQBQgFoqEK5m3rvQYtTHQl8o3BCBH1aP4msnorUW7rvZqUEbDWV9oDEqflF/f3XJS0BzF+5Iww0ZXINwYjRNSj+ZvI6m1ZZ9lr21zeu7PQgHtKfwAA6MWpuCy6FmlaA7QDRqjVNO7XK7EmY4xc5xG0uGOiK5FvDEaIqEfztymbt9wQ5/cCgLlZgbmlBT0APFU3HpMyU3D9zEyv75ElYN/ACzEuZjts5cXQpKT7LAH2NdNCRAxGiKiHO5mmbI5j95fW4kSdCYrT3n16WLAw8geMLTuC+hcFGuRYvGybg8QBAzBhVH91H5uFORmI0LdfAhyevQQmoN2ghagvkoTwp6K/e6iuboTVqrR/oJ8C7WvQ13G8AsPxCkwox2vNhgJs3lXu8tyiqI2YqDsAqaV82NGt9dG6efbZEqdZFqXhBJo+Xq5W1ETOuR9ydEKn3zd/xgLD8QpMMMZLq5URHx/V7nHsM0JEfZ63PJM0rUENRAD7X8zxcqOaW3Lf6s1Ys6EARrPVHojUGwBhg6g3oOnj5R2+F3/7mxD1JlymIaI+zz13BLAnpibJ9S4zI9WK/V945mYFFdVGtQJnYUOVy/lEwwms2VDgUTLsT3lvIFU3wmJExUevovHQHpYLU4/GYISI+jzn3BFFCDQ2NWND8xT0j5ExrPkAFEXBCSUKT9Ve4PI+RQD5uyswv58GYWhdQjYrkrrsY3AqGfYn0Aik6sa40b/AhT1OqLtjMEJEfZ7vTflyANhzSrYWlMNbxppNEaiz6ZCoaVafq1f06n8Lp3JjfwKNQKpu/A1c2OOEujvmjBARtcOxf41Glry+XmxNgSLsrylCwgFrisvrjnJjf/axCc9eAu2IyZBiU6AdMbnNqht/98VhjxPq7jgzQkTUDsdGe/tLa1Hp1IfE4b2mLCT3i8DwsEocak7Ce9Wj1ddkGbDZBIxmq1/lvZIuwu9Zi4hpSyDCw9B0aC/kIPQ44XIOhQqDESIiP+TmFaLKSyACANFxsRj5uzsQoddipNmKM/MKsbPQAHOzAkUB8vdU4JfiKpx5ahIW51yDaC975zjzJygwmq14M+8ASo6djrSBWVg0NQOSzvt5/e1xEmjyLAMXChYGI0REfiguq4OvVguyJKkb7DnyT+4r24yK6tayXJPFhp27jiCr6iMMtx0EJAnaIWMRftbVMIkw5OYVYn9pLQDgYnyN0XIRZAg1KMDUa1w26LPZBH7dW4p5kflIO2LA/neHYPTvb/UaEPg72xLIcg7zUCiYGIwQEfnBW/kv4NmC3rGrb22D2eMcv4/agjTTQaAl9aS5eCt2Fp3Ah2ImqmpNamOpQXHHITtCn5ag4N9uG/TpwjSYH5mPCboSyJJAYtNumDatVQMC592FMwbqcVnkNqCyuM1ZjM5InuUMCvmDwQgRkR+c284PHRANCZLaEt65Bb3zrr7uMsNKXRupARigHEdlrevyT4k1GYlyA2RJqEFB8T7XDfqEEEjTGuzHAJAl4RIQON/H+ZY82PQlLjMt3mYxAmlZ72/gwhkU8geDESIiP/gu/3XlvKsvAOjDZJibvW9jIQRw0Jrs8fz6xixIAEZFnkD88NMRnr0E6Y0HXDboGzMiEQ11Q5Bo3G2fRXELCJzvY5jW4DHT4o0/yzmOGZcjZRlYEOm5q7E7VvKQPxiMEBEFidFsheK0iYfUEjSUHKtHZY0Ju5oHY7zuICTJHohUKVFY35ilHi9LQEJcOCSEo3jwfExp6dwKeN8QMEIeAbH9ba/VNM7LSgetyUjUNHgNWty1t6zimHEJExZUWoxIirQgvo0x4W7F5A8GI0REQeJecZMYF46rZ52mvvZ12UwkRuYjtukIii1JWN+YBTN06vH9YvUYOTjOZa8c59yP9NRYPHT1RDVAkSQtki++3etGZotzMmC1KfilqAofN09BYlw4hodVtjmLAbS/rOKYcVkQlY/xuhLINgFr0ZagLP1Q38VghIiog4xmK177fA9+KaqCJEkQAh4VN86BxP1XZyNCP8NnR9fGpmY1z6O+phaTqj9FkqUM6U0J2NmYha1OreUdFHMTmr560WMmI0KvhVYjo9mqwCw0ePrYBEzKTMHiqRl46YtCj31zHNpbVnHMuDjnq5zs0g/ARNe+jsEIEVEH5eYVYtseg9fXHM1anStgAHsg4VhycfQicRwvSZKa57EgcguGNdmXdCboaiBBwdrG6dhZaMA9pT8AsCfAXhnzA4Y07fY6k+GcNxImLDi97D+ozjWowc2WaiP2l9ZCliQ1MGlvWcVx78fKBiAR/i39+IOJrn0bgxEiog5yXk5x0IfJiIvWIz01FkVHal0qYHYWGnBf2Wb1i39xToZH75DteysQJiw4U3dIrbyRJHslDmDfMdjcshSkhwX9sQeQW2cyrMf3q/finDdyWVQ+zpDsyyrjdbUQAN5snKZ2lHUES9ed3/ayiiORV1iGt8xkBGf5haXCfRuDESKiDkpPjXVpbAYA4zKS1WWUNRsKUFVnUgMSc7OCimqjyyyJ85KL0WyFRiPh9LL/tC6BtJAlCeE6DUwWm/rcgqh86CWby3HOu+c4J72epq2CbGstAx4TdhjrYVFzVpSWDf38XVYJpG29P1gq3LcxGCEi6iDnJFFJkjAmPdGl54hzMFDXaFEDCccXvzvHrEPD269DuL0cNWIczjQmufQwSdMaXPqWAEBdkwV/X906++IIdhr+/T5EfetxesmKRfE78GrNFAjR2rwtkJkHf47193z+JroGUirsfu2IaUsAxPg8nkKHwQgRUQdF6LW4ee7oNl93niVxBBLuXVvdaVJGwFpngCMdVopJRvhZV2OxCAMAtW38UWkAklCvzoYIAHuaElHRaERFSz7IfVeMw3vfFeP8OhMSnBuuScDYmFpMTk1xSWY1bXrF75kHX7MUzhVAV0RuRJppT7vn83emJZBSYff7MwLA7+7yOI5LP6HHYISIqAt46xPii7dZAkkXgYiW8zi+6IsGXoisuCSYi38EJKDAkor1jRPV81TWmLDirZ04UWvC8MhkTNTVu8ykaAeMwPUzXRu5NRzf7zrz4JSD4s7bLIXRbMVDr+aruSjRymFA07GZDG9BQSClwu73p/i4Npd+Qo/BCBFRF/C3gyvQ9ixBrtseNZpxM3HltTeiyWTFB6/mwwzX1vLVdWYowt7VVYaC0bpS6MO0OKgdhnX7MnBKY4FHea8zYayDsBhdggKj2Yq3//sLzqltQrxkz1MRAHbVRuEDp0AE8N7a3hd/goJAclXcZ1FkH9dm8mzoMRghIuohjGYrftxX6VKhs/dQNQDPhmsOWo0ERQiYhQ5vNk3HpLQUAI6SYxvKqsvV8t6hA6Ixt9HimlVhNbtswOe4VvqhDYjXNbQmzArAbFFQ2eh6D+sbs9A/Todh1oP2qEWxeQQ3DsEOCtxnUew5I546I3mWgUtgGIwQEYWQe4fV+dPT8d53xV6bkuXmFbpU0wDAqKH2ZuzFZXUeDdcAewVPQpwejU3NkCQJNptAydHW/iMCUGcyKqqNODUqERN1tS7LOdbjRVizoUC9p6IjtTjXLXlWkoBTtFUe14/pF4u0QfEQJfvsX+IHtsEka7zuLnxFZDLSpOAFBe6zKO7Jvg6dkTzr7z36G7QE+7juhsEIEVEIuS+77C+txYlak0ejNMCzAkcfJuOmeWPQ1GBy6SnirrGpGc1WBYoAtu+tQEJcuM/7Wd+YhTRtBZLkBvuXtyShxJrsco8JceE42JyMJLk1B8V90z99mAZjRyTiqlmjYPvgPz6/xJ0//+qa0bhxEDA8rDIoQYG/1TSdkTzr7z36G7QE+zigewUuDEaIiELIuUuq/cu+dZnDUQLsmD2obTCrr8kSMD4jGZHhYWhqMLkkyCpCuJyn2aa4XAPwvZuwGTr8o3Y2FkTlI11XiYPNyXinarTaut7x/kNDZyPi2AZk4Ai0Whm7mge7JM+am23QaCRE6LVoSjwFtrqK1ntPHOzz89c3WYA4b3M8rTq6rHKy1TSBJM/6e4/+Bi3BPg7oXom7DEaIiEKorRkNCYAiBO58ZqNL4BCu0+DMU5Ow+PzWipwIvVattNlfWusSbChOMYcsASMHx2F/aa3aydXjuroI/DfsPFRWe3+9oakZVjkOv7n6AXUJ6aPVm2GGawM4x0yOzXDQ5Xnnx966xIo60eaXoz9BgdFsRfWB3YgJYjWNpIuwX7slcDFtWnvSgYu/QUuwjwMCC1w6G4MRIqIQcsxo5O+ugM0pItHIEuJj9aiqNXnsyBsbpcP1szM9ciCclzzcObepX5yTgb++ku/yumNvnPhYPe67YhxW/ftHn/dsstiwtaAcQOsSkrdutGovlcYa1xM0tT52ntEZpT2hdok92c33cvMKkd6UgPG6WsiSgAIJ2pOcnQA6MpvQ9iyPv0FLsI8DAgtcOhuDESKiEHIu+XVuipZ1en97Uqrbd1lbDdOclzzc3+Pcph4ARpwS59KqXhEAWpZ3Vry1E8MHegYXzu3o3bvIttWNVopOgKhv3VBQikrw+vmN//cTrMVb1ddEwhCXxFnnZN72llaKy+qwszELAsAwrQHH5QHIPslqGiD4uSCt2g5a/J2V6YzZm67AYISIqBvw1hQtN6/QZQlHXZ7x0TDNeclDApDYL9xlR15f13NuVQ/Y81bSBsZg4mnJLsEFAGzbU6F+bSpCwGi2IkKvbbMbbeSc+9H08XKIxhOQohIgXfAnr0GGcIu8Dh6vx9ZjrYmzVpsCrUb2q7NremosttYY8WbjNMgSMCkzBdN8JGeGMhckkKClM5JYW26wjde6BoMRIqJuwFtTNG8BimNmwGi24s28QpQca0DawGgsatkF2NfxbV1vzYYCbN5V7vL6oeMNWHHjFPVar32+Bz/vr3T52qqqNSE3r9BrMzf3kuXF85ar97JmQwG27CqHANS29cuWZkGpPOhyjgHGIoSJ38AMHRQB/FJUpVYFtdfZ1TEWR8oqsSAyH2n1BjR9NQLK3Js97jWQRmrBzgUJZIko2EmsTGAlIqJ2tdW11Tk/pPxEIwQ8dwH21+KcDOwvrVUrcCS3paDcvEJs22PweJ/wseGf+/15K1F2Dmoqa0x46NV8zJXiMFqqUBup6WHFgqh8vNk4DUBrVZAeFgACQkAtP3b/sneMnfHrF2EtaplBaahE5X/DIE9d6vlZfCz7eARVORl+fWEHO2gJ5NjOCIQ6G4MRIqIeyL0k1ldQ4I8IvRbLlmZ5fOk6X8sbf/NXFAHsLDTAmGNf0vGW7FpZY0IuxuPhfiUIl60A7IHGMG1rEOSoCloQlY/Elj4oAoCk0UE/cYHL+RxBxPllu5AgtX7hmkoLEenlfn3NErQVVLXF39mWQJaIgp3EygRWIiI6Kc75Ie3tAuyPtmZhvAUP/uSvOL/H3KwgN69QTXSVJXgk25qhwy/NQzBBV2KvgBGSSyM1hzStAXLL9IkEAFYzzNvWe7Ss/6ngCM6NVSDk1hmU8MGt9+s863G71rUM2DFL4B5UHSmrhPHrF4PWKCyQJSJ/j+2MQKizMRghIuqBFudkQAJQcrwBaQPsOSOdeS33SpmrZo3ymo/i+ILfX1oLWXbtcVJcVofXPt/jdcnH4f2mLCT3i0Ca1oAfT8S4NFJzKLG6dn8F4LLE4NjDZ36k0wyKAOSYJCRdcB3KKs1Y+0UhdhYa1F4s+6L6YZy+Rl0i0iQPA+AZ9C2IzG9d9ulBHU7d2f+cDqC4bDTSU7OxeGoGJF3oQgIGI0REPVCEXovr52QiKSkGlZX1HiXAweIILg4db8C4jOQ2k2IB371OHLM3Owt9ByIAIMIi8EPshRg5axT25xWiuaAccKoOAoCvMR0jYEA86u3Bg1vOiGMPn7QIpxkUCRDGevvrX3jeo3D8X8vxRWW1eHP1ZgwdEI0Jo/rj4PF6pKfGIq3e4JJn4b5vj/P4dPb+NGLC5Xjz28MdKn12/DmFCQvSLXmozj0BDD89ZAETgxEiIvIp0JwJ914n7s3WftxX2eb1TBYbtu+tgEYjtVkdJCyTWr5sW5cYHIFT/m5763mPGRSrCZX/fQlFZaM8gqWh2iqXmZaoxjJU1BpRUW10XZLamAZrfWtr+4PNCT7Hp70EUcf9nl72H5whFUGGvfNso03g36ZpHp/bPbgpKa3F1qPjvV67vUDI8ee0ICof43UlkG0C1qItIauoYTBCREQ+BZoo676s4dxszWi2Iipc67HzsDtHwqvjy/ihqyd6zMZ4y4vIdSoZBuyb/o0JO4xwyaoeYyotxIjULI8cmKPyACSjAY4qHUBADwvM0Ll0nF0U7hrFNBgtXsdHWIxwma7yUvHjCPTOjT0OWdPaebbu0B5srRzpEWS4BzdxTUegiPEe1wa8B0LOOTKKEJAkR/5N+11vOxuDESIi8inQRFlvsxkOuXmFOFHXutmfPkyGxap4XWIyNyuoqDa2ORvjXnZbdKTWpWTYDB0KpTSMlYrVihHtwJGwVnluEPi5yMZvYmsg6g2QJCBRbnQpK3Z82StxB13elyEdQYRkgVHoXMbHtGktRH3rLJAUneSRIOoI9A5bE11mcA5ZE70GOJrkNFidNhysixgEuQYefza+AiHnWS4JwMB+MjSS0+qUl4CpqzAYISIin9oKLrxpqyrHvb9ITJQOIwfHobisDkMHREOChIPH6106wrY1G+O+hJQQF+5xzBeYhvEjktXlnPWNWdi+1zNvxQIdnNdpZEkgzams2PFlr4ka4RIQaNGMy6K34V3zdJcW+LbyIjh3NhWQ8NIXB1zG0RHoucdi0RFh3oMMt6ht2IAYTEpI8fiz8RUIFb/6kxrkCAAXSpuQIDV4HBcKDEaIiMintoILB6+NwfRaj+eHDYhxmWUZOTjO67nXbChw2afH314mihAuuxVLEnBKahIiZs5QH+96cavPHZLd+270H3kGpphSsL+0FgBQdKQWb6dOwALtTsBqUt93ilwBS7MNGo2kfu4DzckYKirUBNr6RjN+OnwERqFTZ3scwcPwshMu+SoxxqP2zy5LOHNEa/m0e4da6cRhXL+wdQnMpUzZOcSRZEi6CI9ZrjStAbB5HhcKDEaIiOik+EpydX9+/KhkTMr0/Je8O39nY9y/XGVJgqW5dQkmMS7c472jhsWj/ESjS0AiS8CIwXFe+25cr4twCY6q6kwYPygdaTZ7ea+jF4oioCbO2mwCvx4djbtiDyGppbQ4ylaHeZH2ZR/HbI8j0Gv6chRsB+y7KAsBlFjsGwkqisChino1X0aTMgLWOgMcMy51DSasWv0tTklNgs0msH1vBRQB7I1KwHh9DWTHBxQKhMXoMa6x4adBHNiins9xHKtpiIiox/GV5Or+vPN+N23xNRvjPtMyf3q6ep2hA6LxS9EJlyUPWZJcEl+NZiusNgVhWvvXdHREGGRZwojBcfa+LTqt10oS98+xvikL958ah+oDu7G3KQHrG7MAADZFYGtBOXRhGpiEDoCkznjIklC7yUoSMHRAtFoSvCiiDsOcruc0SYJqpxyb8OwlaDy+X90BOcpWhxmWb/HWrmmQ5NYmcusas5CuMyBBspcyi4ZKmDatRcTMG9QNGIvL6rBu4EQsiN4PNFR6HNfVGIwQEdFJ8ZXkGuwusb5mYIxmKx56NR/mZtcqHffr5X5RiC1Oyz+nDunnEfR4W3Jy/xzq0s9UK4qdeqEA9oDA0nIfJdZkJMoNHt1kE+PCIUFSP0uUUgZo7O+XJOAUbZV6P/GxevW/JV2ER17LMK0BAq2FM4A9cdclpBFCrZJxH8MLkqyI8XJcV2MwQkREJ8XXskqgya/t8TUDk5tXqG7y56APk12uZzRbsXNfZbtlyt4CHl+fwzGD47zJoOPcgL20WK/TYLAoR7ElSZ1BkSV7oq7jOF9Biz5Mxn1XjHO5P+e8Fl/t8gGgyJKECfp6yBAu+864j2GJNRlj5LqQ70/DYISIiE6Kr2UVf5Jf2+OtN4Zwm2nxFlSMy0h2WaJxdGV1NnRAtMf73L+sHXkg7p1nne+rvtHi9d7N0GEDzkF6aqw9wIF9vkIRwuU9zi3wD1mT8S2yMCUtyWu3W0dei/V4kXpsUlgYqmpNLtW86xuzEK7TYGxcHZA0HG/WjMOOf32DZmvrFIosAfsGXohxMdtDvj8NgxEiIuq2cvMKXRqZ6cNkxEbp1DwPwB6UGKpbS2ST+nkmrnoLWCSX7Ayo53IsyQCteSCAa68TX23vnTkCJueZFUUIl8AhXKfBb049BSNzzkOEXosxAMa0MR7Ozd4cxzoCI+e9dpolHXanXoLs2ZlYs6EAmwvLXc7j6Cq7MCcDEfpxCDUGI0RE1G259yYxNysY4VQS7EhK1YXJbW7i523n4YPH6z2u5wgctu4uVzf5UwSw70iNyx40RUdqvba9d+6X4lzm7Ljf+1ZvdpnBEEL43O/HV8m0O8f5jTmexzvG0F1slO6kZ62CicEIERF1W96CCOcv19y8QuzYa1CTSx29PtwtzslAUWktDC25HZKPhFpfeSANTc0eDdZkqbUx2ZgRidBq5DZb2Hv7POZmBbl5hV4DA+cdjiuqjbDaFNw8d7TPsfK1LOZtDL0tUYWS3P4hREREobE4JwNJ/Vo7q7oHEf7unROh12LZNVmYOX4w+sdHYHJmSkAJtc02xeU6ADApMwX94yMwKTNFrY6pqDZia0E5cvMKPc7hmMVx5+uefymqavOxvxbnZCDRqSoH8L5EFUqcGSEiom4rQq/FsqVZXpcfgMDKhyP0Wtx5xXhUVtarSyW+lkJGDo7DiVqTet6E2HBU1Zhcloycl03uW73ZJVjZWWiAMcfqkUS7w60VfVv3LEmuAUOzVcF9qze3uWTj63NrNK5zD96WqEKJwQgREXVrbVXlnGz5sHOCbEW1EftLa7FsaZbHeedPT8eKt3aqSzdVtSaX5ZW2ll8cAU/+7gqXPBONLCHr9P4+73lMeiLy97Tug6MItLt5oC/B7vkSbAxGiIioxzrZ8mH3BNnKmtYgw/28stNMhXBbElqck4Ef91W6lA8790Fxr7yRJSDr9P4+791otkJAQKeVYLUJl/e2tRzlS7B7vgQbgxEiIuqz2kuQdT/W1+xChF6LM09N8rrBn3Nei4MuTAOLxYYXPtzlUXkDuCbmuvN3ZsPfapzuoHveFRERURdYnJPhUjnjq8rGcSzge3ZhcU4GrDYFvxRVQZIk2GwCRrPVo3cJAJgsNuzYV6k+dl968RbAAPalnXEZ9o3x7nnhByhCoLGpGZIkIXNYPDQaWQ1unDfP68jSTldiMEJERH1Wewmy7se29WUeoddCq5HRbLVX3mzfWwGNRnIJYuoaLR6dYAHPpRdvAYxjaQeA14Zr7sGNLkzTblJtd9H97oiIiKgLBaNtvYO3UmPn86/ZUOA1kHBfenEEMPtLawHY28g7us4ue21bm51fHde2uG0c6Eiqdd65t7ss3zAYISIiakMguRftVa04z5J469bq0FaA5G3WxBtFALIMtZOs47q+dj8OJQYjREREbQjky7u9vJKOzMK4B0Pzp9t31t1fWuuRM7KrpBpmpxmRMI2MZqG4BEf+NorrSgxGiIiI2hDIl3cwl3wcAgmGnJeBvLWpdyzRdLeeIwxGiIiI2hDqhmGBBEPeZmbcl5S6Y8+RTg9GhBD461//iqKiIsTHx+OJJ56AVssYiIiIeoZQf3kH2vK+vZmZzpi9OVmdHhV89dVXSEpKwrJly7BhwwZUVlZiwIABnX1ZIiKioAj1l3eog6Gu0OnByI4dO6DT6XDVVVdh0qRJmD17dmdfkoiIqNcIdTDUFeT2Dzk5tbW1MJvNeP3111FYWIg9e/Z09iWJiIioB+n0YCQmJgaTJ08GAEyePBn79u3r7EsSERFRD9LpwcgZZ5yB7du3AwB27dqFYcOGdfYliYiIqAfp9JyR888/H19//TV+97vf4bTTTsPYsWNP6nxOOzifNMe5gnnO3ozjFRiOV2A4XoHjmAWG49XKaLYi94tCFJXVYURqLBaf71kC3JXjJQkh2mkoS0RERL3JY2/twLc7S1vKhSXMGJeKO68YH7L76fDMyBNPPAGDwYBHHnkEAPD999/jn//8J8xmMwYOHIiVK1eif//+QbtRAKiuboTNprR/oJ8kCUhMjEFVVT0YkrWP4xUYjldgOF6B45gFhuPVquBAlVMjNYGCA1WorKx3OSYY46XRyIiPj2r3uICDkdLSUixfvhwbN25Uy3RPnDiBu+++G2+88QYyMjLwxhtv4P7778fLL78c+J23ozN+gITonPP2VhyvwHC8AsPxChzHLDAcL++N1HyNSVeMV8DByDvvvIOpU6di5MiRMBgMAICNGzciIyMDGRn2RiwLFy7EqlWrYDAYkJycHNw7JiIiopPS3RqpBRyM3HXXXQCAp59+Wn3u+PHjGDhwoPpYp9MhPj4ex44dYzBCRETUzXS3RmpBKe0VQkDykm4ry51eOUxEREQ9XFCihUGDBqG8vFx9bLFYUF1djUGDBgXj9ERERNSLBSUYyc7Oxu7du9XuquvWrcPYsWORkJAQjNMTERFRLxaUpmcJCQl4/PHHce+998JsNiMxMRGrVq0KxqmJiIiol+twMHLbbbe5PJ46dSo++OCDk74hIiIi6luYYUpEREQhxWCEiIiIQorBCBEREYUUgxEiIiIKKQYjREREFFIMRoiIiCikGIwQERFRSAWl6VlX0Wg6J3bqrPP2VhyvwHC8AsPxChzHLDAcr8CczHj5+15JCCE6fBUiIiKik8TwkIiIiEKKwQgRERGFFIMRIiIiCikGI0RERBRSDEaIiIgopBiMEBERUUgxGCEiIqKQYjBCREREIcVghIiIiEKKwQgRERGFFIMRIiIiCqk+G4x8//33mDt3LmbNmoWlS5eioqIi1LcUcv/+978xZ84cXHzxxfj973+PX375BQDw8ssvY9asWcjJycGyZcvQ3NwMAFAUBStXrsQFF1yA8847D8888wz64lZHP//8M8444wwcP34cAPDhhx/ioosuwgUXXIA//vGPaGhoUI/1NZZ9xf79+7FkyRJccsklmDdvHn766ScAHDNfvvzyS8yZMwdz587FokWLUFxcDIC/k+6eeOIJ/PnPf1Yfd+Tnqa+NnfuYPfPMM7joooswZ84cXH311SgpKQHQ9riYTCbcd9996ni+/fbbHb8h0QdVVVWJrKwssXfvXiGEEK+//rq45pprQnxXobVjxw5x9tlni6qqKiGEEF999ZXIzs4W33zzjZg1a5aoq6sTVqtV3H777WL16tVCCCHefPNNsXjxYmE2m4XRaBQLFy4UGzZsCOXH6HKVlZVi7ty54tRTTxXHjh0T+/btE1OmTBHHjx8XQgixfPly8Ze//EUIIdocy77AaDSKadOmif/+979CCCG+/vprcfbZZ3PMfDAajWL06NFi//79Qggh3njjDbFo0SL+Tjo5cuSIuOWWW8SYMWPEAw88IIQQHf556itj523MPvroIzFv3jzR2NgohBBi7dq1YsGCBUKItsdl1apV4q677hKKoogTJ06I888/X/z4448duq8+OTOyceNGZGRkICMjAwCwcOFCbN26FQaDIcR3FjpxcXH429/+hoSEBADAmDFjUFVVhby8PFx00UWIiYmBRqPB5Zdfjg8++AAAkJeXh/nz50On0yE8PBwLFixQX+sLrFYr7rzzTvzpT39Sn/vyyy8xY8YMpKSkAAAWLVqEjz/+GIqitDmWfcHGjRuRnJyM888/HwAwY8YMPP/88xwzH2w2GyRJQm1tLQCgqakJ4eHh/J108s4772Dq1KlYunSp+lxHf576yth5G7OhQ4fiwQcfRGRkJAD73/9lZWUA2h6XvLw8/P73v4ckSYiPj8dFF13U4THrk8HI8ePHMXDgQPWxTqdDfHw8jh07FsK7Cq309HRMmzYNgH1a7tFHH8XZZ5+NY8eOuYzVgAED1HE6duwYBgwY4PW1vmDVqlWYNGkSsrOz1ee8jVdTUxNqamraHMu+oKSkBP3798eDDz6IefPm4aqrroLFYuGY+RAVFYVly5bhqquuwvTp0/HKK6/gT3/6E38nndx1111YtGgRNBqN+lxHf576yth5G7MxY8bgzDPPBACYzWb84x//wG9/+1sAbY9LMMesTwYjQghIkuTxvCz3yeFw0dDQgFtvvRVlZWVYuXIlAHiMleOxt3HsK2O4YcMGHD58GDfffLPHa95+thzP+RrLvsBqtWLTpk245JJL8P777+Paa6/FDTfcAKvVyjHzorCwEE899RQ++ugjfPfdd3jwwQdx/fXXQ1EU/k62oyM/Txw7oKKiAldddRViYmJwzz33AGh7XII5Zn1rpFsMGjQI5eXl6mOLxYLq6moMGjQohHcVeiUlJViwYAGio6Px+uuvIzY21mOsysvL1XFKTU31eM35Xx292XvvvYfDhw/jkksuwdy5cwEA1157Lfr37+8xJlFRUYiLi2tzLPuClJQUDBs2DBMmTABgX6bRarVex4VjZl/WGj16NIYPHw4AmDNnDmw2G2w2G38n29DRn6e+PnY///wz5s+fjwkTJuCZZ56BTqcD0Pa4BHPM+mQwkp2djd27d2Pfvn0AgHXr1mHs2LFqvkRfdPToUSxatAiXXXYZVq1aBb1eDwDIycnBJ598grq6OiiKgrfffltd88/JycH7778Pi8UCk8mE9957T32tt3v11Vfx6aef4sMPP8SHH34IwJ6lf8EFF+Dbb79Vf0HffPNNnHfeeZBluc2x7AumT5+OY8eOqRU0O3bsgMViwXnnnccx8yIzMxM7duxQq7S2bdsGq9WKq6++mr+TbTj33HM79PPUl8euoKAA11xzDe677z7cfffdLrMbbY1LTk4O3nnnHSiKgpqaGmzYsKHDY6YNyifpYRISEvD444/j3nvvhdlsRmJiIlatWhXq2wqpl19+GXV1dfjoo4/w0Ucfqc+/+OKLmD9/Pi6//HJYrVaMGzdOXZr43e9+h9LSUlx66aVobm7Geeedh/nz54fqI3QLI0eOxD333IPrrrsOzc3NSEtLw4oVKwDYv4yLi4u9jmVfkJSUhNWrV+PRRx9FU1MTNBoNnn76aYwaNYpj5sXkyZPxhz/8AUuXLkVYWBgiIyPx/PPPY9y4cTh06BB/J33o6O9gXx67p59+Goqi4MUXX8SLL76oPv/hhx+2OS5/+MMf8Pe//x1z5sxBc3MzLr/8ckyZMqVD9yAJ0YsLqYmIiKjb65PLNERERNR9MBghIiKikGIwQkRERCHFYISIiIhCisEIERERhRSDESIiIgopBiNE5MFkMvm9ceSRI0c6+W5clZeXw2KxdOk1iahzMRghIg9XXHEFduzY0e5xK1euxKuvvurXOe+77z48/PDDJ3VflZWVmDVrFhoaGk7qPETUvTAYISIPNTU1fh1XXV3duTfixmQyoampqUuvSUSdj8EIEbm46aabcPToUdxzzz149tln8d///hcXX3wxxo0bh7lz5+LLL78EAKxZswYff/wx3n33XVxzzTUAgM8//xzz58/HpEmTMH78eNxxxx0wGo0B38Pjjz+OadOmYdKkSVi0aBF+/vlnAFA3JTz33HOxdetW2Gw2vPjiizjvvPMwadIk3HzzzepeLqWlpTj99NPxyiuvYNKkSZg8eTKeeuopsOk0UTckiIjczJw5U3z22Wfihx9+EGPGjBHfffedsFqt4ptvvhFjxowRO3bsEEIIce+994ply5YJIYQ4evSoGD16tMjPzxdCCHHkyBExbdo08e6773oc25YffvhBZGdnC4PBIGw2m3jiiSfE/Pnz1XOeeuqpoqqqSgghxCuvvCJmzZolDh48KEwmk1i5cqW49NJLhaIo6rE33nijqK+vF0VFRWLatGni3//+d9DHi4hODmdGiMinDz74ALNnz8ZZZ50FjUaDGTNm4KKLLsIHH3zgcWxiYiI++eQTTJw4EbW1taisrER8fLzLFuP+CAsLQ21tLd59913s378ft912G9avX+/12HfffRc33XQThg4dCr1ejzvvvBMlJSX49ddf1WMeeOABREdHIz09HYsXL8aGDRsCGwQi6nQMRojIp6qqKqSmpro8N3jwYBw9etTj2LCwMLz//vuYNm0a5s2bhzVr1sBkMgW8LDJhwgT861//wtatW3HZZZdh5syZWLdunddjjx49ir/+9a+YMGECJkyYgMmTJ0NRFJSVlQEAZFnGKaecoh4/YMAAv6uEiKjraEN9A0TUfQ0cOBClpaUuzx05cgTJyckex3722Wf4z3/+g/Xr12PAgAEAgIULFwZ8zWPHjiE1NRWvv/46TCYTPv/8c9x7772YPHkyJElyOTYlJQUPPPAAzj77bPW54uJiDB48GAaDAYqioKKiAikpKQCAsrIyDBw4MOB7IqLOxZkRIvIQFhaG+vp6XHrppfjkk0/w/fffw2az4bvvvsMnn3yiJpLqdDrU19cDAGprayHLMnQ6HaxWK9atW4eff/4Zzc3NAV37l19+wY033oji4mKEh4cjPj4eOp0OUVFR0Ol0AKCW9s6fPx/PPPMMysrKoCgK3nzzTVx66aUu1UD/+te/YDQasW/fPrz11lu45JJLTn6AiCioODNCRB7mz5+PRx55BAsXLsSKFSuwatUqlJaWYtCgQVi+fDmmTJkCALjwwgvxxz/+EfPnz8dbb72F/Px8nHfeedDr9Rg7dizmzp2Lffv2BXTtCy64APv378fSpUtRV1eH1NRUPPHEE0hISIAQAueccw4uvvhirFq1Ctdeey2sViuuvPJKVFdXIy0tDatXr0ZKSoo6o5OYmIicnBwAwDXXXMNghKgbkkSgC7pERD1AaWkpzj33XGzevBkJCQmhvh0iagOXaYiIiCikuExDRF3q9ttvx/fff+/z9S+//BKJiYldeEdEFGpcpiEiIqKQ4jINERERhRSDESIiIgopBiNEREQUUgxGiIiIKKQYjBAREVFIMRghIiKikGIwQkRERCHFYISIiIhC6v8B0Ze5mFFJF+MAAAAASUVORK5CYII=", + "image/png": "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a+n33QcLMWpILMYOjWtyjgzgHUyNudA7gTZQGIwQERE1QWN5KY2NnDiv4VnevSk8A53jZyp9LltuaKqoOZsZthUGI0RERC2gNR/2TQl0gIanipqzmWFbYTBCRETUAlrzYe9P8bfGporaIwYjRERE7Zw/xd+aMoLS3jAYISIi6iTac15IQxiMEBERdRLtOS+kIQ3vaUxERETUyhiMEBERUUAxGCEiIqKAYjBCREREAcVghIiIiAKKwQgREREFFIMRIiIiCigGI0RERBRQDEaIiIgooBiMEBERUUAxGCEiIqKAYjBCREREAdWhNsrTalsndmqt63ZW7C//sL/8w/7yH/vMP+wv/5xLfzX1s5IQQjT7LkRERETniOEhERERBRSDESIiIgooBiNEREQUUAxGiIiIKKAYjBAREVFAMRghIiKigGIwQkRERAHFYISIiIgCisEIERERBRSDESIiIgooBiNEREQUUF02GNmyZQtmzZqF6dOnY9GiRSgsLAx0kwLuX//6F2bOnImrr74aN9xwA/bu3QsAePvttzF9+nSkpKRg6dKlqKmpAQAoioIVK1bgyiuvxNSpU/Hqq6+iK2519Ouvv+Kiiy7CmTNnAACfffYZrrrqKlx55ZW4//77UVlZqZ5bX192FYcPH8aCBQtwzTXXYPbs2fjll18AsM/q8+2332LmzJmYNWsW5s+fj9zcXAD8nfT00ksv4YknnlBfN+fnqav1nWefvfrqq7jqqqswc+ZM3HzzzTh69CiAhvvFYrFgyZIlan9+8MEHzW+Q6IJKSkrEmDFjxMGDB4UQQrz77rvilltuCXCrAmvPnj3isssuEyUlJUIIIf73v/+J5ORk8f3334vp06cLk8kkZFkW9913n1i1apUQQoj3339fpKamCqvVKsxms5g3b57YvHlzIL9GmysuLhazZs0SgwcPFqdPnxaHDh0S48ePF2fOnBFCCLFs2TLx5z//WQghGuzLrsBsNouJEyeK//znP0IIIb777jtx2WWXsc/qYTabxbBhw8Thw4eFEEK89957Yv78+fyddHHy5Elx9913i+HDh4vHH39cCCGa/fPUVfrOV599/vnnYvbs2aKqqkoIIcT69evF3LlzhRAN98vKlSvFQw89JBRFEWfPnhXTpk0TP//8c7Pa1SVHRrZu3YrExEQkJiYCAObNm4edO3eiqKgowC0LnG7duuGvf/0roqKiAADDhw9HSUkJ0tPTcdVVVyE8PBxarRY33ngjPv30UwBAeno65syZA71eD6PRiLlz56rvdQWyLOPBBx/En/70J/XYt99+i8mTJyMuLg4AMH/+fHzxxRdQFKXBvuwKtm7ditjYWEybNg0AMHnyZLzxxhvss3rY7XZIkoTy8nIAQHV1NYxGI38nXWzcuBETJkzAokWL1GPN/XnqKn3nq8/69euHJ598EiEhIQAcf//n5+cDaLhf0tPTccMNN0CSJERGRuKqq65qdp91yWDkzJkz6NWrl/par9cjMjISp0+fDmCrAishIQETJ04E4BiWe+6553DZZZfh9OnTbn3Vs2dPtZ9Onz6Nnj17+nyvK1i5ciXGjh2L5ORk9Ziv/qqurkZZWVmDfdkVHD16FD169MCTTz6J2bNnY+HChbDZbOyzeoSGhmLp0qVYuHAhJk2ahLVr1+JPf/oTfyddPPTQQ5g/fz60Wq16rLk/T12l73z12fDhw3HJJZcAAKxWK/7+97/j97//PYCG+6Ul+6xLBiNCCEiS5HVco+mS3eGmsrIS99xzD/Lz87FixQoA8Oor52tf/dhV+nDz5s04ceIE7rrrLq/3fP1sOY/V15ddgSzL2LZtG6655hp88sknuPXWW3H77bdDlmX2mQ/Z2dl4+eWX8fnnn+PHH3/Ek08+icWLF0NRFP5ONqI5P0/sO6CwsBALFy5EeHg4HnnkEQAN90tL9lnX6ulavXv3RkFBgfraZrOhtLQUvXv3DmCrAu/o0aOYO3cuwsLC8O677yIiIsKrrwoKCtR+io+P93rP9V8dndnHH3+MEydO4JprrsGsWbMAALfeeit69Ojh1SehoaHo1q1bg33ZFcTFxaF///5ISkoC4Jim0el0PvuFfeaY1ho2bBgGDhwIAJg5cybsdjvsdjt/JxvQ3J+nrt53v/76K+bMmYOkpCS8+uqr0Ov1ABrul5bssy4ZjCQnJ2P//v04dOgQAOCjjz7CiBEj1HyJrujUqVOYP38+rrvuOqxcuRIGgwEAkJKSgi+//BImkwmKouCDDz5Q5/xTUlLwySefwGazwWKx4OOPP1bf6+zWrVuHr776Cp999hk+++wzAI4s/SuvvBI//PCD+gv6/vvvY+rUqdBoNA32ZVcwadIknD59Wl1Bs2fPHthsNkydOpV95sPQoUOxZ88edZXWrl27IMsybr75Zv5ONuCKK65o1s9TV+67rKws3HLLLViyZAkefvhht9GNhvolJSUFGzduhKIoKCsrw+bNm5vdZ7oW+SYdTFRUFF588UU8+uijsFqtiI6OxsqVKwPdrIB6++23YTKZ8Pnnn+Pzzz9Xj69evRpz5szBjTfeCFmWMXLkSHVq4vrrr0deXh6uvfZa1NTUYOrUqZgzZ06gvkK7cP755+ORRx7BbbfdhpqaGgwYMADLly8H4HgY5+bm+uzLriAmJgarVq3Cc889h+rqami1WrzyyisYMmQI+8yHcePG4Y9//CMWLVqEoKAghISE4I033sDIkSNx/Phx/k7Wo7m/g12571555RUoioLVq1dj9erV6vHPPvuswX754x//iL/97W+YOXMmampqcOONN2L8+PHNaoMkRCdeSE1ERETtXpecpiEiIqL2g8EIERERBRSDESIiIgooBiNEREQUUAxGiIiIKKAYjBAREVFAMRghIi8Wi6XJG0eePHmylVvjrqCgADabrU3vSUSti8EIEXm56aabsGfPnkbPW7FiBdatW9ekay5ZsgTPPPPMObWruLgY06dPR2Vl5Tldh4jaFwYjROSlrKysSeeVlpa2bkM8WCwWVFdXt+k9iaj1MRghIjd33nknTp06hUceeQSvvfYa/vOf/+Dqq6/GyJEjMWvWLHz77bcAgDVr1uCLL77Ahx9+iFtuuQUA8M0332DOnDkYO3YsRo0ahQceeABms9nvNrz44ouYOHEixo4di/nz5+PXX38FAHVTwiuuuAI7d+6E3W7H6tWrMXXqVIwdOxZ33XWXupdLXl4eLrzwQqxduxZjx47FuHHj8PLLL4NFp4naIUFE5GHKlCni66+/Fj/99JMYPny4+PHHH4Usy+L7778Xw4cPF3v27BFCCPHoo4+KpUuXCiGEOHXqlBg2bJjIyMgQQghx8uRJMXHiRPHhhx96nduQn376SSQnJ4uioiJht9vFSy+9JObMmaNec/DgwaKkpEQIIcTatWvF9OnTxbFjx4TFYhErVqwQ1157rVAURT33jjvuEBUVFSInJ0dMnDhR/Otf/2rx/iKic8ORESKq16effooZM2bg0ksvhVarxeTJk3HVVVfh008/9To3OjoaX375JUaPHo3y8nIUFxcjMjLSbYvxpggKCkJ5eTk+/PBDHD58GPfeey82bdrk89wPP/wQd955J/r16weDwYAHH3wQR48exW+//aae8/jjjyMsLAwJCQlITU3F5s2b/esEImp1DEaIqF4lJSWIj493O9anTx+cOnXK69ygoCB88sknmDhxImbPno01a9bAYrH4PS2SlJSEf/zjH9i5cyeuu+46TJkyBR999JHPc0+dOoWnn34aSUlJSEpKwrhx46AoCvLz8wEAGo0G5513nnp+z549m7xKiIjaji7QDSCi9qtXr17Iy8tzO3by5EnExsZ6nfv111/j3//+NzZt2oSePXsCAObNm+f3PU+fPo34+Hi8++67sFgs+Oabb/Doo49i3LhxkCTJ7dy4uDg8/vjjuOyyy9Rjubm56NOnD4qKiqAoCgoLCxEXFwcAyM/PR69evfxuExG1Lo6MEJGXoKAgVFRU4Nprr8WXX36JLVu2wG6348cff8SXX36pJpLq9XpUVFQAAMrLy6HRaKDX6yHLMj766CP8+uuvqKmp8evee/fuxR133IHc3FwYjUZERkZCr9cjNDQUer0eANSlvXPmzMGrr76K/Px8KIqC999/H9dee63baqB//OMfMJvNOHToEDZs2IBrrrnm3DuIiFoUR0aIyMucOXPw7LPPYt68eVi+fDlWrlyJvLw89O7dG8uWLcP48eMBAL/73e9w//33Y86cOdiwYQMyMjIwdepUGAwGjBgxArNmzcKhQ4f8uveVV16Jw4cPY9GiRTCZTIiPj8dLL72EqKgoCCFw+eWX4+qrr8bKlStx6623QpZl/OEPf0BpaSkGDBiAVatWIS4uTh3RiY6ORkpKCgDglltuYTBC1A5Jwt8JXSKiDiAvLw9XXHEFtm/fjqioqEA3h4gawGkaIiIiCihO0xBRm7rvvvuwZcuWet//9ttvER0d3YYtIqJA4zQNERERBRSnaYiIiCigGIwQERFRQDEYISIiooBiMEJEREQBxWCEiIiIAorBCBEREQUUgxEiIiIKKAYjREREFFD/H/KCXU7iaJeSAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -2395,26 +1696,26 @@ " \n", " \n", " \n", + " lr-AdamW\n", " step\n", " train/loss_rec_step\n", - " lr-AdamW\n", " train/loss_pred_step\n", - " val/loss_pred_step\n", " val/loss_rec_step\n", - " val/loss_rec_epoch\n", + " val/loss_pred_step\n", + " val/acc\n", " val/auroc\n", " val/l1_loss\n", + " val/loss_rec_epoch\n", " val/n\n", - " val/acc\n", - " val/l2_loss\n", " val/loss_pred_epoch\n", - " train/auroc\n", + " val/l2_loss\n", " train/n\n", - " train/acc\n", - " train/loss_rec_epoch\n", - " train/loss_pred_epoch\n", " train/l1_loss\n", + " train/loss_rec_epoch\n", " train/l2_loss\n", + " train/auroc\n", + " train/loss_pred_epoch\n", + " train/acc\n", " \n", " \n", " epoch\n", @@ -2443,1255 +1744,1255 @@ " \n", " \n", " 0.0\n", - " 10\n", - " 5.441649e+08\n", " 5.373681e-05\n", - " 0.683651\n", - " 0.687014\n", - " 6.002584e+08\n", - " 5.864893e+08\n", - " 0.573195\n", - " 425.811371\n", + " 10\n", + " 3.828470e+08\n", + " 0.688285\n", + " 3.816910e+08\n", + " 0.686484\n", + " 0.545455\n", + " 0.533651\n", + " 263.837982\n", + " 3.706850e+08\n", " 154.0\n", - " 0.512987\n", - " 5.864891e+08\n", - " 0.692476\n", - " 0.600631\n", + " 0.691207\n", + " 3.706849e+08\n", " 307.0\n", - " 0.615635\n", - " 5.954105e+08\n", - " 0.688230\n", - " 427.493835\n", - " 5.954103e+08\n", + " 264.040283\n", + " 3.732675e+08\n", + " 3.732674e+08\n", + " 0.624219\n", + " 0.691203\n", + " 0.537459\n", " \n", " \n", " 1.0\n", - " 20\n", - " 5.661091e+08\n", " 9.416100e-05\n", - " 0.688336\n", - " 0.687014\n", - " 6.002584e+08\n", - " 5.864893e+08\n", - " 0.573195\n", - " 425.811371\n", + " 20\n", + " 3.732684e+08\n", + " 0.693742\n", + " 3.816910e+08\n", + " 0.686484\n", + " 0.545455\n", + " 0.533651\n", + " 263.837982\n", + " 3.706850e+08\n", " 154.0\n", - " 0.512987\n", - " 5.864891e+08\n", - " 0.692476\n", - " 0.599111\n", + " 0.691207\n", + " 3.706849e+08\n", " 307.0\n", - " 0.615635\n", - " 5.954105e+08\n", - " 0.688230\n", - " 427.493835\n", - " 5.954102e+08\n", + " 264.040283\n", + " 3.732675e+08\n", + " 3.732673e+08\n", + " 0.636095\n", + " 0.691203\n", + " 0.537459\n", " \n", " \n", " 2.0\n", - " 30\n", - " 5.780456e+08\n", " 1.589588e-04\n", - " 0.689041\n", - " 0.692700\n", - " 5.468140e+08\n", - " 5.346543e+08\n", - " 0.591617\n", - " 14155.970703\n", - " 154.0\n", + " 30\n", + " 3.301200e+08\n", + " 0.697686\n", + " 3.317749e+08\n", + " 0.644732\n", " 0.545455\n", - " 5.346473e+08\n", - " 0.692791\n", - " 0.571417\n", + " 0.516626\n", + " 14330.367188\n", + " 3.224812e+08\n", + " 154.0\n", + " 0.701648\n", + " 3.224741e+08\n", " 307.0\n", - " 0.615635\n", - " 5.861766e+08\n", - " 0.686761\n", - " 4190.505859\n", - " 5.861746e+08\n", + " 4595.383789\n", + " 3.629691e+08\n", + " 3.629668e+08\n", + " 0.501944\n", + " 0.693477\n", + " 0.537459\n", " \n", " \n", " 3.0\n", - " 40\n", - " 2.288594e+08\n", " 2.444214e-04\n", - " 0.735807\n", - " 0.784063\n", - " 2.040752e+08\n", - " 2.024271e+08\n", - " 0.569948\n", - " 44915.058594\n", + " 40\n", + " 1.552317e+08\n", + " 1.136175\n", + " 1.574633e+08\n", + " 0.708153\n", + " 0.545455\n", + " 0.474157\n", + " 32191.996094\n", + " 1.550687e+08\n", " 154.0\n", - " 0.474026\n", - " 2.024046e+08\n", - " 0.722302\n", - " 0.525330\n", + " 0.844235\n", + " 1.550526e+08\n", " 307.0\n", - " 0.384365\n", - " 4.085785e+08\n", - " 0.708873\n", - " 26462.203125\n", - " 4.085653e+08\n", + " 22527.847656\n", + " 2.502060e+08\n", + " 2.501947e+08\n", + " 0.476366\n", + " 0.754405\n", + " 0.537459\n", " \n", " \n", " 4.0\n", - " 50\n", - " 1.316204e+08\n", " 3.456573e-04\n", - " 1.084260\n", - " 0.938119\n", - " 1.014039e+08\n", - " 1.060507e+08\n", - " 0.493030\n", - " 47810.402344\n", + " 50\n", + " 6.713096e+07\n", + " 0.980456\n", + " 5.625778e+07\n", + " 0.886880\n", + " 0.545455\n", + " 0.527908\n", + " 34792.953125\n", + " 5.977599e+07\n", " 154.0\n", - " 0.487013\n", - " 1.060268e+08\n", - " 0.807023\n", - " 0.535387\n", + " 1.101779\n", + " 5.975859e+07\n", " 307.0\n", - " 0.381107\n", - " 1.910734e+08\n", - " 0.878755\n", - " 50520.066406\n", - " 1.910481e+08\n", + " 35598.894531\n", + " 1.157351e+08\n", + " 1.157173e+08\n", + " 0.539219\n", + " 1.014312\n", + " 0.537459\n", " \n", " \n", " 5.0\n", - " 60\n", - " 6.144871e+07\n", " 4.568719e-04\n", - " 0.809171\n", - " 0.938339\n", - " 4.313380e+07\n", - " 5.075046e+07\n", - " 0.514143\n", - " 41006.164062\n", + " 60\n", + " 2.642045e+07\n", + " 0.978536\n", + " 2.308333e+07\n", + " 0.675394\n", + " 0.545455\n", + " 0.578727\n", + " 33043.656250\n", + " 2.808532e+07\n", " 154.0\n", - " 0.480519\n", - " 5.072996e+07\n", - " 0.805214\n", - " 0.525106\n", + " 0.804474\n", + " 2.806880e+07\n", " 307.0\n", - " 0.397394\n", - " 7.391732e+07\n", - " 0.864978\n", - " 39737.753906\n", - " 7.389744e+07\n", + " 33114.066406\n", + " 4.238476e+07\n", + " 4.236821e+07\n", + " 0.572221\n", + " 1.015193\n", + " 0.537459\n", " \n", " \n", " 6.0\n", - " 70\n", - " 3.327324e+07\n", " 5.716998e-04\n", - " 0.893109\n", - " 0.852268\n", - " 2.876582e+07\n", - " 3.594282e+07\n", - " 0.510957\n", - " 35443.972656\n", + " 70\n", + " 1.785897e+07\n", + " 0.755543\n", + " 1.505474e+07\n", + " 0.622179\n", + " 0.545455\n", + " 0.591279\n", + " 29102.460938\n", + " 1.973319e+07\n", " 154.0\n", - " 0.487013\n", - " 3.592510e+07\n", - " 0.757081\n", - " 0.512834\n", + " 0.697333\n", + " 1.971864e+07\n", " 307.0\n", - " 0.397394\n", - " 4.383755e+07\n", - " 0.871334\n", - " 37637.578125\n", - " 4.381874e+07\n", + " 30857.492188\n", + " 2.239125e+07\n", + " 2.237582e+07\n", + " 0.639241\n", + " 0.731147\n", + " 0.537459\n", " \n", " \n", " 7.0\n", - " 80\n", - " 2.731456e+07\n", " 6.835686e-04\n", - " 0.845645\n", - " 0.840338\n", - " 2.592272e+07\n", - " 3.007823e+07\n", - " 0.538100\n", - " 32350.246094\n", + " 80\n", + " 1.050493e+07\n", + " 0.674978\n", + " 1.336781e+07\n", + " 0.622434\n", + " 0.603896\n", + " 0.627956\n", + " 26456.726562\n", + " 1.708039e+07\n", " 154.0\n", - " 0.480519\n", - " 3.006205e+07\n", - " 0.759875\n", - " 0.500923\n", + " 0.678941\n", + " 1.706716e+07\n", " 307.0\n", - " 0.387622\n", - " 3.276945e+07\n", - " 0.812428\n", - " 33550.609375\n", - " 3.275268e+07\n", + " 27715.544922\n", + " 1.720435e+07\n", + " 1.719049e+07\n", + " 0.645903\n", + " 0.686152\n", + " 0.537459\n", " \n", " \n", " 8.0\n", - " 90\n", - " 2.350157e+07\n", " 7.860752e-04\n", - " 0.786065\n", - " 0.822025\n", - " 2.319507e+07\n", - " 2.541458e+07\n", - " 0.494422\n", - " 30703.947266\n", + " 90\n", + " 6.269482e+06\n", + " 0.607573\n", + " 8.047390e+06\n", + " 0.565876\n", + " 0.655844\n", + " 0.656762\n", + " 25767.994141\n", + " 1.007904e+07\n", " 154.0\n", - " 0.480519\n", - " 2.539923e+07\n", - " 0.753329\n", - " 0.513217\n", + " 0.736531\n", + " 1.006615e+07\n", " 307.0\n", - " 0.397394\n", - " 2.584278e+07\n", - " 0.792109\n", - " 31261.455078\n", - " 2.582715e+07\n", + " 25937.605469\n", + " 1.255362e+07\n", + " 1.254065e+07\n", + " 0.641810\n", + " 0.680101\n", + " 0.573290\n", " \n", " \n", " 9.0\n", - " 100\n", - " 2.994829e+07\n", " 8.733526e-04\n", - " 0.814240\n", - " 0.787386\n", - " 2.034466e+07\n", - " 2.253749e+07\n", - " 0.505062\n", - " 27816.224609\n", + " 100\n", + " 4.580677e+06\n", + " 0.939836\n", + " 5.932549e+06\n", + " 0.573412\n", + " 0.545455\n", + " 0.603040\n", + " 25134.970703\n", + " 7.351294e+06\n", " 154.0\n", - " 0.448052\n", - " 2.252358e+07\n", - " 0.740945\n", - " 0.490849\n", + " 0.824531\n", + " 7.338727e+06\n", " 307.0\n", - " 0.387622\n", - " 2.317300e+07\n", - " 0.797736\n", - " 29715.527344\n", - " 2.315815e+07\n", + " 25082.312500\n", + " 7.819019e+06\n", + " 7.806478e+06\n", + " 0.633990\n", + " 0.742129\n", + " 0.530945\n", " \n", " \n", " 10.0\n", - " 110\n", - " 2.287953e+07\n", " 9.404052e-04\n", - " 0.862943\n", - " 0.864542\n", - " 1.684605e+07\n", - " 1.899092e+07\n", - " 0.499808\n", - " 27202.062500\n", + " 110\n", + " 3.774596e+06\n", + " 0.759675\n", + " 5.237754e+06\n", + " 0.568813\n", + " 0.545455\n", + " 0.632517\n", + " 23315.328125\n", + " 6.221246e+06\n", " 154.0\n", - " 0.480519\n", - " 1.897732e+07\n", - " 0.788708\n", - " 0.498627\n", + " 0.793456\n", + " 6.209588e+06\n", " 307.0\n", - " 0.394137\n", - " 2.169587e+07\n", - " 0.808030\n", - " 27947.347656\n", - " 2.168190e+07\n", + " 24154.738281\n", + " 5.677129e+06\n", + " 5.665052e+06\n", + " 0.628144\n", + " 0.770468\n", + " 0.534202\n", " \n", " \n", " 11.0\n", - " 120\n", - " 1.485165e+07\n", " 9.833952e-04\n", - " 1.018186\n", - " 0.884091\n", - " 1.360241e+07\n", - " 1.530007e+07\n", - " 0.482483\n", - " 26742.041016\n", + " 120\n", + " 4.951383e+06\n", + " 0.759077\n", + " 3.988008e+06\n", + " 0.568794\n", + " 0.545455\n", + " 0.610045\n", + " 22764.431641\n", + " 4.441300e+06\n", " 154.0\n", - " 0.474026\n", - " 1.528670e+07\n", - " 0.801715\n", - " 0.482319\n", + " 0.811575\n", + " 4.429918e+06\n", " 307.0\n", - " 0.387622\n", - " 1.768082e+07\n", - " 0.860365\n", - " 26572.035156\n", - " 1.766754e+07\n", + " 22907.306641\n", + " 4.982404e+06\n", + " 4.970950e+06\n", + " 0.626170\n", + " 0.764871\n", + " 0.537459\n", " \n", " \n", " 12.0\n", - " 130\n", - " 1.076234e+07\n", " 9.998620e-04\n", - " 0.723560\n", - " 0.779093\n", - " 1.675769e+07\n", - " 1.771987e+07\n", - " 0.499667\n", - " 27264.052734\n", + " 130\n", + " 3.235490e+06\n", + " 0.688275\n", + " 3.593997e+06\n", + " 0.566123\n", + " 0.545455\n", + " 0.622317\n", + " 20896.406250\n", + " 3.787677e+06\n", " 154.0\n", - " 0.474026\n", - " 1.770624e+07\n", - " 0.768020\n", - " 0.492767\n", + " 0.809658\n", + " 3.777228e+06\n", " 307.0\n", - " 0.410423\n", - " 1.450787e+07\n", - " 0.863073\n", - " 25934.945312\n", - " 1.449490e+07\n", + " 21869.498047\n", + " 4.120415e+06\n", + " 4.109480e+06\n", + " 0.621298\n", + " 0.768988\n", + " 0.537459\n", " \n", " \n", " 13.0\n", - " 140\n", - " 1.535162e+07\n", " 9.978947e-04\n", - " 0.816197\n", - " 0.827362\n", - " 1.046902e+07\n", - " 1.126796e+07\n", - " 0.476489\n", - " 24805.152344\n", + " 140\n", + " 4.231666e+06\n", + " 0.578066\n", + " 3.337130e+06\n", + " 0.554257\n", + " 0.545455\n", + " 0.627403\n", + " 20568.312500\n", + " 3.410535e+06\n", " 154.0\n", - " 0.441558\n", - " 1.125555e+07\n", - " 0.793914\n", - " 0.506581\n", + " 0.802582\n", + " 3.400250e+06\n", " 307.0\n", - " 0.390879\n", - " 1.423263e+07\n", - " 0.817220\n", - " 25579.869141\n", - " 1.421984e+07\n", + " 20941.789062\n", + " 4.005956e+06\n", + " 3.995484e+06\n", + " 0.627245\n", + " 0.765890\n", + " 0.537459\n", " \n", " \n", " 14.0\n", - " 150\n", - " 9.058856e+06\n", " 9.906398e-04\n", - " 0.665005\n", - " 0.845236\n", - " 1.118747e+07\n", - " 1.193214e+07\n", - " 0.471701\n", - " 25165.623047\n", + " 150\n", + " 2.147374e+06\n", + " 0.975382\n", + " 6.692606e+06\n", + " 0.577623\n", + " 0.545455\n", + " 0.616101\n", + " 19375.740234\n", + " 6.623621e+06\n", " 154.0\n", - " 0.454545\n", - " 1.191955e+07\n", - " 0.797385\n", - " 0.466132\n", + " 0.835594\n", + " 6.613933e+06\n", " 307.0\n", - " 0.394137\n", - " 1.179928e+07\n", - " 0.824495\n", - " 24126.640625\n", - " 1.178721e+07\n", + " 19953.783203\n", + " 3.563622e+06\n", + " 3.553646e+06\n", + " 0.620974\n", + " 0.771836\n", + " 0.537459\n", " \n", " \n", " 15.0\n", - " 160\n", - " 7.433010e+06\n", " 9.782848e-04\n", - " 0.826907\n", - " 0.760216\n", - " 8.848390e+06\n", - " 9.466553e+06\n", - " 0.480605\n", - " 25267.599609\n", + " 160\n", + " 3.840708e+06\n", + " 0.825783\n", + " 4.823332e+06\n", + " 0.549818\n", + " 0.545455\n", + " 0.633912\n", + " 19273.210938\n", + " 4.776534e+06\n", " 154.0\n", - " 0.474026\n", - " 9.453919e+06\n", - " 0.765557\n", - " 0.454330\n", + " 0.803631\n", + " 4.766898e+06\n", " 307.0\n", - " 0.400651\n", - " 9.346815e+06\n", - " 0.808850\n", - " 24184.070312\n", - " 9.334722e+06\n", + " 18918.632812\n", + " 4.579110e+06\n", + " 4.569650e+06\n", + " 0.616488\n", + " 0.778858\n", + " 0.537459\n", " \n", " \n", " 16.0\n", - " 170\n", - " 5.648272e+06\n", " 9.609581e-04\n", - " 0.994571\n", - " 0.726290\n", - " 1.092849e+07\n", - " 1.135968e+07\n", - " 0.474316\n", - " 24457.302734\n", + " 170\n", + " 2.104320e+06\n", + " 0.523547\n", + " 3.629164e+06\n", + " 0.547892\n", + " 0.551948\n", + " 0.636087\n", + " 18910.369141\n", + " 3.645812e+06\n", " 154.0\n", - " 0.461039\n", - " 1.134746e+07\n", - " 0.766995\n", - " 0.469313\n", + " 0.806723\n", + " 3.636357e+06\n", " 307.0\n", - " 0.416938\n", - " 7.972048e+06\n", - " 0.807951\n", - " 24531.482422\n", - " 7.959782e+06\n", + " 18256.263672\n", + " 3.389480e+06\n", + " 3.380352e+06\n", + " 0.602099\n", + " 0.771206\n", + " 0.537459\n", " \n", " \n", " 17.0\n", - " 180\n", - " 5.413062e+06\n", " 9.388397e-04\n", - " 0.696870\n", - " 0.800628\n", - " 8.926939e+06\n", - " 9.415244e+06\n", - " 0.482496\n", - " 24512.744141\n", + " 180\n", + " 2.383520e+06\n", + " 0.778350\n", + " 2.709408e+06\n", + " 0.549273\n", + " 0.545455\n", + " 0.622224\n", + " 18459.666016\n", + " 2.675671e+06\n", " 154.0\n", - " 0.454545\n", - " 9.402988e+06\n", - " 0.773413\n", - " 0.454053\n", + " 0.812109\n", + " 2.666441e+06\n", " 307.0\n", - " 0.400651\n", - " 8.708785e+06\n", - " 0.785358\n", - " 24043.013672\n", - " 8.696764e+06\n", + " 18122.337891\n", + " 2.857502e+06\n", + " 2.848441e+06\n", + " 0.615683\n", + " 0.774138\n", + " 0.534202\n", " \n", " \n", " 18.0\n", - " 190\n", - " 7.285614e+06\n", " 9.121597e-04\n", - " 0.799607\n", - " 0.854219\n", - " 9.366768e+06\n", - " 9.819262e+06\n", - " 0.492334\n", - " 23903.955078\n", + " 190\n", + " 1.852674e+06\n", + " 0.653480\n", + " 1.855364e+06\n", + " 0.542629\n", + " 0.551948\n", + " 0.617752\n", + " 18780.138672\n", + " 1.839965e+06\n", " 154.0\n", - " 0.467532\n", - " 9.807309e+06\n", - " 0.791529\n", - " 0.450661\n", + " 0.801879\n", + " 1.830574e+06\n", " 307.0\n", - " 0.394137\n", - " 7.851668e+06\n", - " 0.816462\n", - " 23197.699219\n", - " 7.840069e+06\n", + " 18093.642578\n", + " 2.188337e+06\n", + " 2.179290e+06\n", + " 0.596582\n", + " 0.778603\n", + " 0.537459\n", " \n", " \n", " 19.0\n", - " 200\n", - " 4.637138e+06\n", " 8.811953e-04\n", - " 0.812487\n", - " 0.791078\n", - " 9.365259e+06\n", - " 9.734963e+06\n", - " 0.467670\n", - " 23267.775391\n", + " 200\n", + " 1.432251e+06\n", + " 0.824736\n", + " 2.465458e+06\n", + " 0.540848\n", + " 0.558442\n", + " 0.625265\n", + " 18306.343750\n", + " 2.431715e+06\n", " 154.0\n", - " 0.454545\n", - " 9.723329e+06\n", - " 0.773010\n", - " 0.446891\n", + " 0.796769\n", + " 2.422562e+06\n", " 307.0\n", - " 0.394137\n", - " 7.422980e+06\n", - " 0.825549\n", - " 22935.119141\n", - " 7.411512e+06\n", + " 18212.863281\n", + " 1.822544e+06\n", + " 1.813438e+06\n", + " 0.609231\n", + " 0.772705\n", + " 0.530945\n", " \n", " \n", " 20.0\n", - " 210\n", - " 7.091221e+06\n", " 8.462685e-04\n", - " 0.744332\n", - " 0.762819\n", - " 5.795845e+06\n", - " 6.233088e+06\n", - " 0.505717\n", - " 21435.773438\n", + " 210\n", + " 2.222416e+06\n", + " 0.772893\n", + " 2.004058e+06\n", + " 0.540725\n", + " 0.610390\n", + " 0.618821\n", + " 17318.351562\n", + " 2.027601e+06\n", " 154.0\n", - " 0.519481\n", - " 6.222370e+06\n", - " 0.750935\n", - " 0.438563\n", + " 0.780261\n", + " 2.018942e+06\n", " 307.0\n", - " 0.403909\n", - " 7.568719e+06\n", - " 0.815148\n", - " 22501.644531\n", - " 7.557467e+06\n", + " 17922.779297\n", + " 2.492584e+06\n", + " 2.483623e+06\n", + " 0.606371\n", + " 0.759984\n", + " 0.537459\n", " \n", " \n", " 21.0\n", - " 220\n", - " 7.661237e+06\n", " 8.077422e-04\n", - " 0.891876\n", - " 0.764509\n", - " 4.822360e+06\n", - " 5.138458e+06\n", - " 0.495882\n", - " 21487.718750\n", + " 220\n", + " 2.102338e+06\n", + " 1.048146\n", + " 1.479407e+06\n", + " 0.544878\n", + " 0.610390\n", + " 0.625852\n", + " 16593.986328\n", + " 1.494147e+06\n", " 154.0\n", - " 0.487013\n", - " 5.127713e+06\n", - " 0.758149\n", - " 0.430649\n", + " 0.782860\n", + " 1.485850e+06\n", " 307.0\n", - " 0.400651\n", - " 5.943604e+06\n", - " 0.809750\n", - " 22050.935547\n", - " 5.932578e+06\n", + " 17289.257812\n", + " 1.784791e+06\n", + " 1.776146e+06\n", + " 0.613459\n", + " 0.748758\n", + " 0.534202\n", " \n", " \n", " 22.0\n", - " 230\n", - " 4.608010e+06\n", " 7.660170e-04\n", - " 0.813810\n", - " 0.776539\n", - " 9.626496e+06\n", - " 9.767436e+06\n", - " 0.499713\n", - " 20790.322266\n", + " 230\n", + " 1.594248e+06\n", + " 0.846258\n", + " 1.211440e+06\n", + " 0.546311\n", + " 0.603896\n", + " 0.610445\n", + " 16486.642578\n", + " 1.241548e+06\n", " 154.0\n", - " 0.461039\n", - " 9.757041e+06\n", - " 0.767783\n", - " 0.436015\n", + " 0.796351\n", + " 1.233305e+06\n", " 307.0\n", - " 0.423453\n", - " 5.465808e+06\n", - " 0.809477\n", - " 21991.695312\n", - " 5.454812e+06\n", + " 16997.818359\n", + " 1.379766e+06\n", + " 1.371267e+06\n", + " 0.619787\n", + " 0.755564\n", + " 0.547231\n", " \n", " \n", " 23.0\n", - " 240\n", - " 7.127932e+06\n", " 7.215265e-04\n", - " 0.890722\n", - " 0.799038\n", - " 5.686918e+06\n", - " 5.956794e+06\n", - " 0.498232\n", - " 21395.232422\n", + " 240\n", + " 1.044977e+06\n", + " 0.705044\n", + " 1.128485e+06\n", + " 0.544227\n", + " 0.571429\n", + " 0.614243\n", + " 16618.980469\n", + " 1.150908e+06\n", " 154.0\n", - " 0.474026\n", - " 5.946096e+06\n", - " 0.771326\n", - " 0.430622\n", + " 0.807308\n", + " 1.142599e+06\n", " 307.0\n", - " 0.381107\n", - " 6.419428e+06\n", - " 0.825284\n", - " 21516.828125\n", - " 6.408670e+06\n", + " 17051.990234\n", + " 1.133017e+06\n", + " 1.124490e+06\n", + " 0.593816\n", + " 0.774485\n", + " 0.530945\n", " \n", " \n", " 24.0\n", - " 250\n", - " 5.027418e+06\n", " 6.747334e-04\n", - " 0.906457\n", - " 0.764683\n", - " 4.603406e+06\n", - " 4.892466e+06\n", - " 0.497485\n", - " 20732.802734\n", + " 250\n", + " 8.900224e+05\n", + " 0.756685\n", + " 1.109827e+06\n", + " 0.540023\n", + " 0.603896\n", + " 0.614374\n", + " 16882.974609\n", + " 1.119542e+06\n", " 154.0\n", - " 0.506494\n", - " 4.882100e+06\n", - " 0.758548\n", - " 0.410960\n", + " 0.802029\n", + " 1.111101e+06\n", " 307.0\n", - " 0.433225\n", - " 5.109246e+06\n", - " 0.803481\n", - " 21269.396484\n", - " 5.098611e+06\n", + " 17186.554688\n", + " 1.004206e+06\n", + " 9.956129e+05\n", + " 0.591673\n", + " 0.775348\n", + " 0.530945\n", " \n", " \n", " 25.0\n", - " 260\n", - " 4.558574e+06\n", " 6.261239e-04\n", - " 0.934418\n", - " 0.759815\n", - " 3.618363e+06\n", - " 3.888981e+06\n", - " 0.504900\n", - " 20599.873047\n", + " 260\n", + " 1.322245e+06\n", + " 1.060206\n", + " 1.006332e+06\n", + " 0.543075\n", + " 0.590909\n", + " 0.610293\n", + " 16742.509766\n", + " 1.031664e+06\n", " 154.0\n", - " 0.519481\n", - " 3.878681e+06\n", - " 0.760735\n", - " 0.438072\n", + " 0.797173\n", + " 1.023292e+06\n", " 307.0\n", - " 0.452769\n", - " 4.033897e+06\n", - " 0.797715\n", - " 21130.251953\n", - " 4.023332e+06\n", + " 17167.945312\n", + " 1.025479e+06\n", + " 1.016895e+06\n", + " 0.601642\n", + " 0.769135\n", + " 0.527687\n", " \n", " \n", " 26.0\n", - " 270\n", - " 2.688080e+06\n", " 5.762034e-04\n", - " 0.924980\n", - " 0.746374\n", - " 3.541521e+06\n", - " 3.750108e+06\n", - " 0.513874\n", - " 20692.609375\n", + " 270\n", + " 9.680588e+05\n", + " 0.806078\n", + " 9.312351e+05\n", + " 0.542950\n", + " 0.597403\n", + " 0.614506\n", + " 16723.929688\n", + " 9.486651e+05\n", " 154.0\n", - " 0.545455\n", - " 3.739762e+06\n", - " 0.761508\n", - " 0.438718\n", + " 0.791804\n", + " 9.403032e+05\n", " 307.0\n", - " 0.475570\n", - " 3.312253e+06\n", - " 0.797124\n", - " 21216.498047\n", - " 3.301645e+06\n", + " 17050.216797\n", + " 9.728478e+05\n", + " 9.643225e+05\n", + " 0.616794\n", + " 0.762657\n", + " 0.557003\n", " \n", " \n", " 27.0\n", - " 280\n", - " 2.584754e+06\n", " 5.254908e-04\n", - " 0.755919\n", - " 0.738016\n", - " 3.005704e+06\n", - " 3.253088e+06\n", - " 0.504037\n", - " 21107.351562\n", + " 280\n", + " 8.104802e+05\n", + " 0.592814\n", + " 7.686469e+05\n", + " 0.545152\n", + " 0.564935\n", + " 0.610218\n", + " 16871.822266\n", + " 7.822919e+05\n", " 154.0\n", - " 0.519481\n", - " 3.242534e+06\n", - " 0.763273\n", - " 0.444053\n", + " 0.798094\n", + " 7.738559e+05\n", " 307.0\n", - " 0.482085\n", - " 3.013418e+06\n", - " 0.789957\n", - " 21445.892578\n", - " 3.002695e+06\n", + " 16890.978516\n", + " 8.349296e+05\n", + " 8.264841e+05\n", + " 0.608629\n", + " 0.768119\n", + " 0.557003\n", " \n", " \n", " 28.0\n", - " 290\n", - " 2.288546e+06\n", " 4.745132e-04\n", - " 0.710285\n", - " 0.741451\n", - " 2.653572e+06\n", - " 2.904467e+06\n", - " 0.497869\n", - " 21347.267578\n", + " 290\n", + " 6.934142e+05\n", + " 0.652751\n", + " 6.725266e+05\n", + " 0.545228\n", + " 0.577922\n", + " 0.606617\n", + " 16686.488281\n", + " 6.916299e+05\n", " 154.0\n", - " 0.525974\n", - " 2.893794e+06\n", - " 0.762297\n", - " 0.465860\n", + " 0.797690\n", + " 6.832866e+05\n", " 307.0\n", - " 0.495114\n", - " 2.721990e+06\n", - " 0.785185\n", - " 21653.322266\n", - " 2.711164e+06\n", + " 16763.529297\n", + " 6.711576e+05\n", + " 6.627759e+05\n", + " 0.621238\n", + " 0.768572\n", + " 0.540717\n", " \n", " \n", " 29.0\n", - " 300\n", - " 1.970642e+06\n", " 4.238006e-04\n", - " 0.624782\n", - " 0.741720\n", - " 2.609470e+06\n", - " 2.872510e+06\n", - " 0.498203\n", - " 21626.662109\n", + " 300\n", + " 6.312212e+05\n", + " 0.830785\n", + " 5.965037e+05\n", + " 0.545902\n", + " 0.597403\n", + " 0.605128\n", + " 16615.093750\n", + " 6.182919e+05\n", " 154.0\n", - " 0.519481\n", - " 2.861697e+06\n", - " 0.761353\n", - " 0.443779\n", + " 0.807065\n", + " 6.099844e+05\n", " 307.0\n", - " 0.485342\n", - " 2.532927e+06\n", - " 0.787990\n", - " 21773.935547\n", - " 2.522040e+06\n", + " 16666.199219\n", + " 6.119573e+05\n", + " 6.036242e+05\n", + " 0.598915\n", + " 0.769204\n", + " 0.537459\n", " \n", " \n", " 30.0\n", - " 310\n", - " 2.259510e+06\n", " 3.738801e-04\n", - " 0.828086\n", - " 0.737505\n", - " 2.564225e+06\n", - " 2.825332e+06\n", - " 0.494975\n", - " 21481.220703\n", + " 310\n", + " 6.158080e+05\n", + " 0.811130\n", + " 5.954780e+05\n", + " 0.547620\n", + " 0.597403\n", + " 0.609127\n", + " 16421.224609\n", + " 6.079666e+05\n", " 154.0\n", - " 0.538961\n", - " 2.814591e+06\n", - " 0.763618\n", - " 0.467515\n", + " 0.809536\n", + " 5.997560e+05\n", " 307.0\n", - " 0.488599\n", - " 2.448023e+06\n", - " 0.783616\n", - " 21845.962891\n", - " 2.437100e+06\n", + " 16596.595703\n", + " 5.508364e+05\n", + " 5.425382e+05\n", + " 0.605050\n", + " 0.774538\n", + " 0.537459\n", " \n", " \n", " 31.0\n", - " 320\n", - " 2.291444e+06\n", " 3.252706e-04\n", - " 0.849663\n", - " 0.722091\n", - " 2.366458e+06\n", - " 2.658573e+06\n", - " 0.505139\n", - " 21634.562500\n", + " 320\n", + " 5.026538e+05\n", + " 0.882328\n", + " 5.755126e+05\n", + " 0.545746\n", + " 0.597403\n", + " 0.612583\n", + " 16371.536133\n", + " 5.895918e+05\n", " 154.0\n", - " 0.545455\n", - " 2.647755e+06\n", - " 0.758435\n", - " 0.467656\n", + " 0.808724\n", + " 5.814060e+05\n", " 307.0\n", - " 0.488599\n", - " 2.320734e+06\n", - " 0.778579\n", - " 21826.976562\n", - " 2.309820e+06\n", + " 16531.132812\n", + " 5.186879e+05\n", + " 5.104223e+05\n", + " 0.608053\n", + " 0.777326\n", + " 0.537459\n", " \n", " \n", " 32.0\n", - " 330\n", - " 2.364777e+06\n", " 2.784775e-04\n", - " 0.657347\n", - " 0.723100\n", - " 2.341683e+06\n", - " 2.620408e+06\n", - " 0.505057\n", - " 21761.921875\n", + " 330\n", + " 5.358614e+05\n", + " 1.021165\n", + " 5.512602e+05\n", + " 0.545412\n", + " 0.590909\n", + " 0.608515\n", + " 16445.667969\n", + " 5.586182e+05\n", " 154.0\n", - " 0.525974\n", - " 2.609527e+06\n", - " 0.758403\n", - " 0.468553\n", + " 0.805811\n", + " 5.503953e+05\n", " 307.0\n", - " 0.498371\n", - " 2.175214e+06\n", - " 0.778695\n", - " 21804.451172\n", - " 2.164311e+06\n", + " 16459.632812\n", + " 5.221199e+05\n", + " 5.138900e+05\n", + " 0.611849\n", + " 0.774287\n", + " 0.534202\n", " \n", " \n", " 33.0\n", - " 340\n", - " 1.640026e+06\n", " 2.339870e-04\n", - " 0.869382\n", - " 0.722604\n", - " 2.181400e+06\n", - " 2.437381e+06\n", - " 0.508158\n", - " 21726.197266\n", + " 340\n", + " 4.337324e+05\n", + " 0.652426\n", + " 5.471139e+05\n", + " 0.547181\n", + " 0.597403\n", + " 0.607029\n", + " 16501.230469\n", + " 5.572502e+05\n", " 154.0\n", - " 0.545455\n", - " 2.426518e+06\n", - " 0.758185\n", - " 0.472785\n", + " 0.807427\n", + " 5.489996e+05\n", " 307.0\n", - " 0.501629\n", - " 2.087931e+06\n", - " 0.778114\n", - " 21794.085938\n", - " 2.077034e+06\n", + " 16438.089844\n", + " 4.755563e+05\n", + " 4.673373e+05\n", + " 0.610291\n", + " 0.773806\n", + " 0.543974\n", " \n", " \n", " 34.0\n", - " 350\n", - " 1.795371e+06\n", " 1.922618e-04\n", - " 0.744446\n", - " 0.721080\n", - " 1.974152e+06\n", - " 2.272132e+06\n", - " 0.510047\n", - " 21737.050781\n", + " 350\n", + " 4.292516e+05\n", + " 0.592870\n", + " 5.305823e+05\n", + " 0.547238\n", + " 0.590909\n", + " 0.605722\n", + " 16241.392578\n", + " 5.441442e+05\n", " 154.0\n", - " 0.538961\n", - " 2.261263e+06\n", - " 0.757024\n", - " 0.480435\n", + " 0.809580\n", + " 5.360235e+05\n", " 307.0\n", - " 0.495114\n", - " 1.926204e+06\n", - " 0.774824\n", - " 21771.789062\n", - " 1.915317e+06\n", + " 16457.912109\n", + " 4.562494e+05\n", + " 4.480204e+05\n", + " 0.605497\n", + " 0.777296\n", + " 0.543974\n", " \n", " \n", " 35.0\n", - " 360\n", - " 1.950470e+06\n", " 1.537355e-04\n", - " 0.729755\n", - " 0.714659\n", - " 1.923074e+06\n", - " 2.174796e+06\n", - " 0.504858\n", - " 21725.970703\n", + " 360\n", + " 3.792235e+05\n", + " 0.817718\n", + " 4.827171e+05\n", + " 0.548104\n", + " 0.597403\n", + " 0.606436\n", + " 16467.273438\n", + " 4.943539e+05\n", " 154.0\n", - " 0.558442\n", - " 2.163932e+06\n", - " 0.756785\n", - " 0.468786\n", + " 0.810495\n", + " 4.861202e+05\n", " 307.0\n", - " 0.495114\n", - " 1.808270e+06\n", - " 0.772539\n", - " 21782.212891\n", - " 1.797378e+06\n", + " 16426.304688\n", + " 4.210021e+05\n", + " 4.127889e+05\n", + " 0.604517\n", + " 0.777446\n", + " 0.537459\n", " \n", " \n", " 36.0\n", - " 370\n", - " 2.160890e+06\n", " 1.188087e-04\n", - " 0.812115\n", - " 0.711554\n", - " 1.814877e+06\n", - " 2.091498e+06\n", - " 0.512771\n", - " 21656.957031\n", + " 370\n", + " 3.768948e+05\n", + " 0.667097\n", + " 4.582332e+05\n", + " 0.547882\n", + " 0.590909\n", + " 0.606784\n", + " 16345.389648\n", + " 4.698886e+05\n", " 154.0\n", - " 0.551948\n", - " 2.080670e+06\n", - " 0.755239\n", - " 0.487030\n", + " 0.811673\n", + " 4.617158e+05\n", " 307.0\n", - " 0.504886\n", - " 1.706876e+06\n", - " 0.770320\n", - " 21799.580078\n", - " 1.695976e+06\n", + " 16471.261719\n", + " 3.986209e+05\n", + " 3.903852e+05\n", + " 0.590348\n", + " 0.778197\n", + " 0.537459\n", " \n", " \n", " 37.0\n", - " 380\n", - " 1.322427e+06\n", " 8.784429e-05\n", - " 0.786738\n", - " 0.707483\n", - " 1.732886e+06\n", - " 2.033935e+06\n", - " 0.511399\n", - " 21795.421875\n", + " 380\n", + " 3.865840e+05\n", + " 0.715568\n", + " 4.507610e+05\n", + " 0.547972\n", + " 0.590909\n", + " 0.606784\n", + " 16349.131836\n", + " 4.626281e+05\n", " 154.0\n", - " 0.538961\n", - " 2.023037e+06\n", - " 0.755432\n", - " 0.481139\n", + " 0.812814\n", + " 4.544535e+05\n", " 307.0\n", - " 0.504886\n", - " 1.622876e+06\n", - " 0.767466\n", - " 21823.931641\n", - " 1.611964e+06\n", + " 16462.720703\n", + " 3.807290e+05\n", + " 3.724977e+05\n", + " 0.601214\n", + " 0.778841\n", + " 0.534202\n", " \n", " \n", " 38.0\n", - " 390\n", - " 1.357794e+06\n", " 6.116426e-05\n", - " 0.858494\n", - " 0.707570\n", - " 1.693669e+06\n", - " 1.980912e+06\n", - " 0.512456\n", - " 21833.435547\n", + " 390\n", + " 3.213564e+05\n", + " 0.822219\n", + " 4.417471e+05\n", + " 0.547974\n", + " 0.590909\n", + " 0.606784\n", + " 16373.613281\n", + " 4.567294e+05\n", " 154.0\n", - " 0.532468\n", - " 1.969996e+06\n", - " 0.754542\n", - " 0.467375\n", + " 0.812972\n", + " 4.485426e+05\n", " 307.0\n", - " 0.511401\n", - " 1.567464e+06\n", - " 0.764927\n", - " 21879.181641\n", - " 1.556524e+06\n", + " 16485.037109\n", + " 3.719832e+05\n", + " 3.637408e+05\n", + " 0.599264\n", + " 0.779900\n", + " 0.540717\n", " \n", " \n", " 39.0\n", - " 400\n", - " 1.631251e+06\n", " 3.904592e-05\n", - " 0.670299\n", - " 0.704747\n", - " 1.646720e+06\n", - " 1.934979e+06\n", - " 0.514851\n", - " 21828.568359\n", + " 400\n", + " 4.139820e+05\n", + " 0.853965\n", + " 4.352016e+05\n", + " 0.548290\n", + " 0.584416\n", + " 0.605884\n", + " 16443.818359\n", + " 4.453313e+05\n", " 154.0\n", - " 0.519481\n", - " 1.924064e+06\n", - " 0.755121\n", - " 0.495549\n", + " 0.814080\n", + " 4.371093e+05\n", " 307.0\n", - " 0.517915\n", - " 1.521649e+06\n", - " 0.763280\n", - " 21913.054688\n", - " 1.510692e+06\n", + " 16492.220703\n", + " 3.653067e+05\n", + " 3.570605e+05\n", + " 0.600249\n", + " 0.780551\n", + " 0.540717\n", " \n", " \n", " 40.0\n", - " 410\n", - " 1.264775e+06\n", " 2.171919e-05\n", - " 0.772301\n", - " 0.704528\n", - " 1.608990e+06\n", - " 1.905533e+06\n", - " 0.516405\n", - " 21852.033203\n", + " 410\n", + " 3.982526e+05\n", + " 0.878409\n", + " 4.344997e+05\n", + " 0.548209\n", + " 0.584416\n", + " 0.606784\n", + " 16412.304688\n", + " 4.452476e+05\n", " 154.0\n", - " 0.519481\n", - " 1.894607e+06\n", - " 0.754415\n", - " 0.482681\n", + " 0.814228\n", + " 4.370414e+05\n", " 307.0\n", - " 0.514658\n", - " 1.482535e+06\n", - " 0.761889\n", - " 21952.068359\n", - " 1.471559e+06\n", + " 16507.814453\n", + " 3.598098e+05\n", + " 3.515558e+05\n", + " 0.596583\n", + " 0.781438\n", + " 0.537459\n", " \n", " \n", " 41.0\n", - " 420\n", - " 1.362423e+06\n", " 9.364177e-06\n", - " 0.789305\n", - " 0.704438\n", - " 1.602730e+06\n", - " 1.890933e+06\n", - " 0.516878\n", - " 21887.814453\n", + " 420\n", + " 2.995382e+05\n", + " 0.827018\n", + " 4.269576e+05\n", + " 0.548687\n", + " 0.584416\n", + " 0.607196\n", + " 16423.503906\n", + " 4.371449e+05\n", " 154.0\n", - " 0.525974\n", - " 1.879989e+06\n", - " 0.754539\n", - " 0.486893\n", + " 0.814696\n", + " 4.289332e+05\n", " 307.0\n", - " 0.521173\n", - " 1.459005e+06\n", - " 0.760535\n", - " 21971.406250\n", - " 1.448019e+06\n", + " 16514.064453\n", + " 3.531663e+05\n", + " 3.449093e+05\n", + " 0.595395\n", + " 0.781261\n", + " 0.534202\n", " \n", " \n", " 42.0\n", - " 430\n", - " 1.213753e+06\n", " 2.109313e-06\n", - " 0.797076\n", - " 0.704448\n", - " 1.596072e+06\n", - " 1.885770e+06\n", - " 0.518234\n", - " 21885.539062\n", + " 430\n", + " 2.908148e+05\n", + " 0.811297\n", + " 4.252539e+05\n", + " 0.548184\n", + " 0.584416\n", + " 0.606709\n", + " 16445.042969\n", + " 4.350918e+05\n", " 154.0\n", - " 0.519481\n", - " 1.874827e+06\n", - " 0.754502\n", - " 0.485197\n", + " 0.814739\n", + " 4.268692e+05\n", " 307.0\n", - " 0.517915\n", - " 1.445329e+06\n", - " 0.760436\n", - " 21988.955078\n", - " 1.434334e+06\n", + " 16518.646484\n", + " 3.478771e+05\n", + " 3.396178e+05\n", + " 0.589857\n", + " 0.781961\n", + " 0.537459\n", " \n", " \n", " 43.0\n", - " 439\n", - " 9.786232e+05\n", " 4.000000e-09\n", - " 0.755217\n", - " 0.704270\n", - " 1.594204e+06\n", - " 1.883888e+06\n", - " 0.516878\n", - " 21886.900391\n", + " 439\n", + " 3.534828e+05\n", + " 1.173390\n", + " 4.237027e+05\n", + " 0.548412\n", + " 0.584416\n", + " 0.606334\n", + " 16439.324219\n", + " 4.340846e+05\n", " 154.0\n", - " 0.519481\n", - " 1.872945e+06\n", - " 0.754425\n", - " 0.480866\n", + " 0.814749\n", + " 4.258649e+05\n", " 307.0\n", - " 0.521173\n", - " 1.438986e+06\n", - " 0.760232\n", - " 21991.769531\n", - " 1.427991e+06\n", + " 16522.308594\n", + " 3.450000e+05\n", + " 3.367388e+05\n", + " 0.595157\n", + " 0.781976\n", + " 0.534202\n", " \n", " \n", "\n", "" ], "text/plain": [ - " step train/loss_rec_step lr-AdamW train/loss_pred_step \\\n", + " lr-AdamW step train/loss_rec_step train/loss_pred_step \\\n", "epoch \n", - "0.0 10 5.441649e+08 5.373681e-05 0.683651 \n", - "1.0 20 5.661091e+08 9.416100e-05 0.688336 \n", - "2.0 30 5.780456e+08 1.589588e-04 0.689041 \n", - "3.0 40 2.288594e+08 2.444214e-04 0.735807 \n", - "4.0 50 1.316204e+08 3.456573e-04 1.084260 \n", - "5.0 60 6.144871e+07 4.568719e-04 0.809171 \n", - "6.0 70 3.327324e+07 5.716998e-04 0.893109 \n", - "7.0 80 2.731456e+07 6.835686e-04 0.845645 \n", - "8.0 90 2.350157e+07 7.860752e-04 0.786065 \n", - "9.0 100 2.994829e+07 8.733526e-04 0.814240 \n", - "10.0 110 2.287953e+07 9.404052e-04 0.862943 \n", - "11.0 120 1.485165e+07 9.833952e-04 1.018186 \n", - "12.0 130 1.076234e+07 9.998620e-04 0.723560 \n", - "13.0 140 1.535162e+07 9.978947e-04 0.816197 \n", - "14.0 150 9.058856e+06 9.906398e-04 0.665005 \n", - "15.0 160 7.433010e+06 9.782848e-04 0.826907 \n", - "16.0 170 5.648272e+06 9.609581e-04 0.994571 \n", - "17.0 180 5.413062e+06 9.388397e-04 0.696870 \n", - "18.0 190 7.285614e+06 9.121597e-04 0.799607 \n", - "19.0 200 4.637138e+06 8.811953e-04 0.812487 \n", - "20.0 210 7.091221e+06 8.462685e-04 0.744332 \n", - "21.0 220 7.661237e+06 8.077422e-04 0.891876 \n", - "22.0 230 4.608010e+06 7.660170e-04 0.813810 \n", - "23.0 240 7.127932e+06 7.215265e-04 0.890722 \n", - "24.0 250 5.027418e+06 6.747334e-04 0.906457 \n", - "25.0 260 4.558574e+06 6.261239e-04 0.934418 \n", - "26.0 270 2.688080e+06 5.762034e-04 0.924980 \n", - "27.0 280 2.584754e+06 5.254908e-04 0.755919 \n", - "28.0 290 2.288546e+06 4.745132e-04 0.710285 \n", - "29.0 300 1.970642e+06 4.238006e-04 0.624782 \n", - "30.0 310 2.259510e+06 3.738801e-04 0.828086 \n", - "31.0 320 2.291444e+06 3.252706e-04 0.849663 \n", - "32.0 330 2.364777e+06 2.784775e-04 0.657347 \n", - "33.0 340 1.640026e+06 2.339870e-04 0.869382 \n", - "34.0 350 1.795371e+06 1.922618e-04 0.744446 \n", - "35.0 360 1.950470e+06 1.537355e-04 0.729755 \n", - "36.0 370 2.160890e+06 1.188087e-04 0.812115 \n", - "37.0 380 1.322427e+06 8.784429e-05 0.786738 \n", - "38.0 390 1.357794e+06 6.116426e-05 0.858494 \n", - "39.0 400 1.631251e+06 3.904592e-05 0.670299 \n", - "40.0 410 1.264775e+06 2.171919e-05 0.772301 \n", - "41.0 420 1.362423e+06 9.364177e-06 0.789305 \n", - "42.0 430 1.213753e+06 2.109313e-06 0.797076 \n", - "43.0 439 9.786232e+05 4.000000e-09 0.755217 \n", + "0.0 5.373681e-05 10 3.828470e+08 0.688285 \n", + "1.0 9.416100e-05 20 3.732684e+08 0.693742 \n", + "2.0 1.589588e-04 30 3.301200e+08 0.697686 \n", + "3.0 2.444214e-04 40 1.552317e+08 1.136175 \n", + "4.0 3.456573e-04 50 6.713096e+07 0.980456 \n", + "5.0 4.568719e-04 60 2.642045e+07 0.978536 \n", + "6.0 5.716998e-04 70 1.785897e+07 0.755543 \n", + "7.0 6.835686e-04 80 1.050493e+07 0.674978 \n", + "8.0 7.860752e-04 90 6.269482e+06 0.607573 \n", + "9.0 8.733526e-04 100 4.580677e+06 0.939836 \n", + "10.0 9.404052e-04 110 3.774596e+06 0.759675 \n", + "11.0 9.833952e-04 120 4.951383e+06 0.759077 \n", + "12.0 9.998620e-04 130 3.235490e+06 0.688275 \n", + "13.0 9.978947e-04 140 4.231666e+06 0.578066 \n", + "14.0 9.906398e-04 150 2.147374e+06 0.975382 \n", + "15.0 9.782848e-04 160 3.840708e+06 0.825783 \n", + "16.0 9.609581e-04 170 2.104320e+06 0.523547 \n", + "17.0 9.388397e-04 180 2.383520e+06 0.778350 \n", + "18.0 9.121597e-04 190 1.852674e+06 0.653480 \n", + "19.0 8.811953e-04 200 1.432251e+06 0.824736 \n", + "20.0 8.462685e-04 210 2.222416e+06 0.772893 \n", + "21.0 8.077422e-04 220 2.102338e+06 1.048146 \n", + "22.0 7.660170e-04 230 1.594248e+06 0.846258 \n", + "23.0 7.215265e-04 240 1.044977e+06 0.705044 \n", + "24.0 6.747334e-04 250 8.900224e+05 0.756685 \n", + "25.0 6.261239e-04 260 1.322245e+06 1.060206 \n", + "26.0 5.762034e-04 270 9.680588e+05 0.806078 \n", + "27.0 5.254908e-04 280 8.104802e+05 0.592814 \n", + "28.0 4.745132e-04 290 6.934142e+05 0.652751 \n", + "29.0 4.238006e-04 300 6.312212e+05 0.830785 \n", + "30.0 3.738801e-04 310 6.158080e+05 0.811130 \n", + "31.0 3.252706e-04 320 5.026538e+05 0.882328 \n", + "32.0 2.784775e-04 330 5.358614e+05 1.021165 \n", + "33.0 2.339870e-04 340 4.337324e+05 0.652426 \n", + "34.0 1.922618e-04 350 4.292516e+05 0.592870 \n", + "35.0 1.537355e-04 360 3.792235e+05 0.817718 \n", + "36.0 1.188087e-04 370 3.768948e+05 0.667097 \n", + "37.0 8.784429e-05 380 3.865840e+05 0.715568 \n", + "38.0 6.116426e-05 390 3.213564e+05 0.822219 \n", + "39.0 3.904592e-05 400 4.139820e+05 0.853965 \n", + "40.0 2.171919e-05 410 3.982526e+05 0.878409 \n", + "41.0 9.364177e-06 420 2.995382e+05 0.827018 \n", + "42.0 2.109313e-06 430 2.908148e+05 0.811297 \n", + "43.0 4.000000e-09 439 3.534828e+05 1.173390 \n", "\n", - " val/loss_pred_step val/loss_rec_step val/loss_rec_epoch val/auroc \\\n", - "epoch \n", - "0.0 0.687014 6.002584e+08 5.864893e+08 0.573195 \n", - "1.0 0.687014 6.002584e+08 5.864893e+08 0.573195 \n", - "2.0 0.692700 5.468140e+08 5.346543e+08 0.591617 \n", - "3.0 0.784063 2.040752e+08 2.024271e+08 0.569948 \n", - "4.0 0.938119 1.014039e+08 1.060507e+08 0.493030 \n", - "5.0 0.938339 4.313380e+07 5.075046e+07 0.514143 \n", - "6.0 0.852268 2.876582e+07 3.594282e+07 0.510957 \n", - "7.0 0.840338 2.592272e+07 3.007823e+07 0.538100 \n", - "8.0 0.822025 2.319507e+07 2.541458e+07 0.494422 \n", - "9.0 0.787386 2.034466e+07 2.253749e+07 0.505062 \n", - "10.0 0.864542 1.684605e+07 1.899092e+07 0.499808 \n", - "11.0 0.884091 1.360241e+07 1.530007e+07 0.482483 \n", - "12.0 0.779093 1.675769e+07 1.771987e+07 0.499667 \n", - "13.0 0.827362 1.046902e+07 1.126796e+07 0.476489 \n", - "14.0 0.845236 1.118747e+07 1.193214e+07 0.471701 \n", - "15.0 0.760216 8.848390e+06 9.466553e+06 0.480605 \n", - "16.0 0.726290 1.092849e+07 1.135968e+07 0.474316 \n", - "17.0 0.800628 8.926939e+06 9.415244e+06 0.482496 \n", - "18.0 0.854219 9.366768e+06 9.819262e+06 0.492334 \n", - "19.0 0.791078 9.365259e+06 9.734963e+06 0.467670 \n", - "20.0 0.762819 5.795845e+06 6.233088e+06 0.505717 \n", - "21.0 0.764509 4.822360e+06 5.138458e+06 0.495882 \n", - "22.0 0.776539 9.626496e+06 9.767436e+06 0.499713 \n", - "23.0 0.799038 5.686918e+06 5.956794e+06 0.498232 \n", - "24.0 0.764683 4.603406e+06 4.892466e+06 0.497485 \n", - "25.0 0.759815 3.618363e+06 3.888981e+06 0.504900 \n", - "26.0 0.746374 3.541521e+06 3.750108e+06 0.513874 \n", - "27.0 0.738016 3.005704e+06 3.253088e+06 0.504037 \n", - "28.0 0.741451 2.653572e+06 2.904467e+06 0.497869 \n", - "29.0 0.741720 2.609470e+06 2.872510e+06 0.498203 \n", - "30.0 0.737505 2.564225e+06 2.825332e+06 0.494975 \n", - "31.0 0.722091 2.366458e+06 2.658573e+06 0.505139 \n", - "32.0 0.723100 2.341683e+06 2.620408e+06 0.505057 \n", - "33.0 0.722604 2.181400e+06 2.437381e+06 0.508158 \n", - "34.0 0.721080 1.974152e+06 2.272132e+06 0.510047 \n", - "35.0 0.714659 1.923074e+06 2.174796e+06 0.504858 \n", - "36.0 0.711554 1.814877e+06 2.091498e+06 0.512771 \n", - "37.0 0.707483 1.732886e+06 2.033935e+06 0.511399 \n", - "38.0 0.707570 1.693669e+06 1.980912e+06 0.512456 \n", - "39.0 0.704747 1.646720e+06 1.934979e+06 0.514851 \n", - "40.0 0.704528 1.608990e+06 1.905533e+06 0.516405 \n", - "41.0 0.704438 1.602730e+06 1.890933e+06 0.516878 \n", - "42.0 0.704448 1.596072e+06 1.885770e+06 0.518234 \n", - "43.0 0.704270 1.594204e+06 1.883888e+06 0.516878 \n", + " val/loss_rec_step val/loss_pred_step val/acc val/auroc \\\n", + "epoch \n", + "0.0 3.816910e+08 0.686484 0.545455 0.533651 \n", + "1.0 3.816910e+08 0.686484 0.545455 0.533651 \n", + "2.0 3.317749e+08 0.644732 0.545455 0.516626 \n", + "3.0 1.574633e+08 0.708153 0.545455 0.474157 \n", + "4.0 5.625778e+07 0.886880 0.545455 0.527908 \n", + "5.0 2.308333e+07 0.675394 0.545455 0.578727 \n", + "6.0 1.505474e+07 0.622179 0.545455 0.591279 \n", + "7.0 1.336781e+07 0.622434 0.603896 0.627956 \n", + "8.0 8.047390e+06 0.565876 0.655844 0.656762 \n", + "9.0 5.932549e+06 0.573412 0.545455 0.603040 \n", + "10.0 5.237754e+06 0.568813 0.545455 0.632517 \n", + "11.0 3.988008e+06 0.568794 0.545455 0.610045 \n", + "12.0 3.593997e+06 0.566123 0.545455 0.622317 \n", + "13.0 3.337130e+06 0.554257 0.545455 0.627403 \n", + "14.0 6.692606e+06 0.577623 0.545455 0.616101 \n", + "15.0 4.823332e+06 0.549818 0.545455 0.633912 \n", + "16.0 3.629164e+06 0.547892 0.551948 0.636087 \n", + "17.0 2.709408e+06 0.549273 0.545455 0.622224 \n", + "18.0 1.855364e+06 0.542629 0.551948 0.617752 \n", + "19.0 2.465458e+06 0.540848 0.558442 0.625265 \n", + "20.0 2.004058e+06 0.540725 0.610390 0.618821 \n", + "21.0 1.479407e+06 0.544878 0.610390 0.625852 \n", + "22.0 1.211440e+06 0.546311 0.603896 0.610445 \n", + "23.0 1.128485e+06 0.544227 0.571429 0.614243 \n", + "24.0 1.109827e+06 0.540023 0.603896 0.614374 \n", + "25.0 1.006332e+06 0.543075 0.590909 0.610293 \n", + "26.0 9.312351e+05 0.542950 0.597403 0.614506 \n", + "27.0 7.686469e+05 0.545152 0.564935 0.610218 \n", + "28.0 6.725266e+05 0.545228 0.577922 0.606617 \n", + "29.0 5.965037e+05 0.545902 0.597403 0.605128 \n", + "30.0 5.954780e+05 0.547620 0.597403 0.609127 \n", + "31.0 5.755126e+05 0.545746 0.597403 0.612583 \n", + "32.0 5.512602e+05 0.545412 0.590909 0.608515 \n", + "33.0 5.471139e+05 0.547181 0.597403 0.607029 \n", + "34.0 5.305823e+05 0.547238 0.590909 0.605722 \n", + "35.0 4.827171e+05 0.548104 0.597403 0.606436 \n", + "36.0 4.582332e+05 0.547882 0.590909 0.606784 \n", + "37.0 4.507610e+05 0.547972 0.590909 0.606784 \n", + "38.0 4.417471e+05 0.547974 0.590909 0.606784 \n", + "39.0 4.352016e+05 0.548290 0.584416 0.605884 \n", + "40.0 4.344997e+05 0.548209 0.584416 0.606784 \n", + "41.0 4.269576e+05 0.548687 0.584416 0.607196 \n", + "42.0 4.252539e+05 0.548184 0.584416 0.606709 \n", + "43.0 4.237027e+05 0.548412 0.584416 0.606334 \n", "\n", - " val/l1_loss val/n val/acc val/l2_loss val/loss_pred_epoch \\\n", - "epoch \n", - "0.0 425.811371 154.0 0.512987 5.864891e+08 0.692476 \n", - "1.0 425.811371 154.0 0.512987 5.864891e+08 0.692476 \n", - "2.0 14155.970703 154.0 0.545455 5.346473e+08 0.692791 \n", - "3.0 44915.058594 154.0 0.474026 2.024046e+08 0.722302 \n", - "4.0 47810.402344 154.0 0.487013 1.060268e+08 0.807023 \n", - "5.0 41006.164062 154.0 0.480519 5.072996e+07 0.805214 \n", - "6.0 35443.972656 154.0 0.487013 3.592510e+07 0.757081 \n", - "7.0 32350.246094 154.0 0.480519 3.006205e+07 0.759875 \n", - "8.0 30703.947266 154.0 0.480519 2.539923e+07 0.753329 \n", - "9.0 27816.224609 154.0 0.448052 2.252358e+07 0.740945 \n", - "10.0 27202.062500 154.0 0.480519 1.897732e+07 0.788708 \n", - "11.0 26742.041016 154.0 0.474026 1.528670e+07 0.801715 \n", - "12.0 27264.052734 154.0 0.474026 1.770624e+07 0.768020 \n", - "13.0 24805.152344 154.0 0.441558 1.125555e+07 0.793914 \n", - "14.0 25165.623047 154.0 0.454545 1.191955e+07 0.797385 \n", - "15.0 25267.599609 154.0 0.474026 9.453919e+06 0.765557 \n", - "16.0 24457.302734 154.0 0.461039 1.134746e+07 0.766995 \n", - "17.0 24512.744141 154.0 0.454545 9.402988e+06 0.773413 \n", - "18.0 23903.955078 154.0 0.467532 9.807309e+06 0.791529 \n", - "19.0 23267.775391 154.0 0.454545 9.723329e+06 0.773010 \n", - "20.0 21435.773438 154.0 0.519481 6.222370e+06 0.750935 \n", - "21.0 21487.718750 154.0 0.487013 5.127713e+06 0.758149 \n", - "22.0 20790.322266 154.0 0.461039 9.757041e+06 0.767783 \n", - "23.0 21395.232422 154.0 0.474026 5.946096e+06 0.771326 \n", - "24.0 20732.802734 154.0 0.506494 4.882100e+06 0.758548 \n", - "25.0 20599.873047 154.0 0.519481 3.878681e+06 0.760735 \n", - "26.0 20692.609375 154.0 0.545455 3.739762e+06 0.761508 \n", - "27.0 21107.351562 154.0 0.519481 3.242534e+06 0.763273 \n", - "28.0 21347.267578 154.0 0.525974 2.893794e+06 0.762297 \n", - "29.0 21626.662109 154.0 0.519481 2.861697e+06 0.761353 \n", - "30.0 21481.220703 154.0 0.538961 2.814591e+06 0.763618 \n", - "31.0 21634.562500 154.0 0.545455 2.647755e+06 0.758435 \n", - "32.0 21761.921875 154.0 0.525974 2.609527e+06 0.758403 \n", - "33.0 21726.197266 154.0 0.545455 2.426518e+06 0.758185 \n", - "34.0 21737.050781 154.0 0.538961 2.261263e+06 0.757024 \n", - "35.0 21725.970703 154.0 0.558442 2.163932e+06 0.756785 \n", - "36.0 21656.957031 154.0 0.551948 2.080670e+06 0.755239 \n", - "37.0 21795.421875 154.0 0.538961 2.023037e+06 0.755432 \n", - "38.0 21833.435547 154.0 0.532468 1.969996e+06 0.754542 \n", - "39.0 21828.568359 154.0 0.519481 1.924064e+06 0.755121 \n", - "40.0 21852.033203 154.0 0.519481 1.894607e+06 0.754415 \n", - "41.0 21887.814453 154.0 0.525974 1.879989e+06 0.754539 \n", - "42.0 21885.539062 154.0 0.519481 1.874827e+06 0.754502 \n", - "43.0 21886.900391 154.0 0.519481 1.872945e+06 0.754425 \n", + " val/l1_loss val/loss_rec_epoch val/n val/loss_pred_epoch \\\n", + "epoch \n", + "0.0 263.837982 3.706850e+08 154.0 0.691207 \n", + "1.0 263.837982 3.706850e+08 154.0 0.691207 \n", + "2.0 14330.367188 3.224812e+08 154.0 0.701648 \n", + "3.0 32191.996094 1.550687e+08 154.0 0.844235 \n", + "4.0 34792.953125 5.977599e+07 154.0 1.101779 \n", + "5.0 33043.656250 2.808532e+07 154.0 0.804474 \n", + "6.0 29102.460938 1.973319e+07 154.0 0.697333 \n", + "7.0 26456.726562 1.708039e+07 154.0 0.678941 \n", + "8.0 25767.994141 1.007904e+07 154.0 0.736531 \n", + "9.0 25134.970703 7.351294e+06 154.0 0.824531 \n", + "10.0 23315.328125 6.221246e+06 154.0 0.793456 \n", + "11.0 22764.431641 4.441300e+06 154.0 0.811575 \n", + "12.0 20896.406250 3.787677e+06 154.0 0.809658 \n", + "13.0 20568.312500 3.410535e+06 154.0 0.802582 \n", + "14.0 19375.740234 6.623621e+06 154.0 0.835594 \n", + "15.0 19273.210938 4.776534e+06 154.0 0.803631 \n", + "16.0 18910.369141 3.645812e+06 154.0 0.806723 \n", + "17.0 18459.666016 2.675671e+06 154.0 0.812109 \n", + "18.0 18780.138672 1.839965e+06 154.0 0.801879 \n", + "19.0 18306.343750 2.431715e+06 154.0 0.796769 \n", + "20.0 17318.351562 2.027601e+06 154.0 0.780261 \n", + "21.0 16593.986328 1.494147e+06 154.0 0.782860 \n", + "22.0 16486.642578 1.241548e+06 154.0 0.796351 \n", + "23.0 16618.980469 1.150908e+06 154.0 0.807308 \n", + "24.0 16882.974609 1.119542e+06 154.0 0.802029 \n", + "25.0 16742.509766 1.031664e+06 154.0 0.797173 \n", + "26.0 16723.929688 9.486651e+05 154.0 0.791804 \n", + "27.0 16871.822266 7.822919e+05 154.0 0.798094 \n", + "28.0 16686.488281 6.916299e+05 154.0 0.797690 \n", + "29.0 16615.093750 6.182919e+05 154.0 0.807065 \n", + "30.0 16421.224609 6.079666e+05 154.0 0.809536 \n", + "31.0 16371.536133 5.895918e+05 154.0 0.808724 \n", + "32.0 16445.667969 5.586182e+05 154.0 0.805811 \n", + "33.0 16501.230469 5.572502e+05 154.0 0.807427 \n", + "34.0 16241.392578 5.441442e+05 154.0 0.809580 \n", + "35.0 16467.273438 4.943539e+05 154.0 0.810495 \n", + "36.0 16345.389648 4.698886e+05 154.0 0.811673 \n", + "37.0 16349.131836 4.626281e+05 154.0 0.812814 \n", + "38.0 16373.613281 4.567294e+05 154.0 0.812972 \n", + "39.0 16443.818359 4.453313e+05 154.0 0.814080 \n", + "40.0 16412.304688 4.452476e+05 154.0 0.814228 \n", + "41.0 16423.503906 4.371449e+05 154.0 0.814696 \n", + "42.0 16445.042969 4.350918e+05 154.0 0.814739 \n", + "43.0 16439.324219 4.340846e+05 154.0 0.814749 \n", "\n", - " train/auroc train/n train/acc train/loss_rec_epoch \\\n", - "epoch \n", - "0.0 0.600631 307.0 0.615635 5.954105e+08 \n", - "1.0 0.599111 307.0 0.615635 5.954105e+08 \n", - "2.0 0.571417 307.0 0.615635 5.861766e+08 \n", - "3.0 0.525330 307.0 0.384365 4.085785e+08 \n", - "4.0 0.535387 307.0 0.381107 1.910734e+08 \n", - "5.0 0.525106 307.0 0.397394 7.391732e+07 \n", - "6.0 0.512834 307.0 0.397394 4.383755e+07 \n", - "7.0 0.500923 307.0 0.387622 3.276945e+07 \n", - "8.0 0.513217 307.0 0.397394 2.584278e+07 \n", - "9.0 0.490849 307.0 0.387622 2.317300e+07 \n", - "10.0 0.498627 307.0 0.394137 2.169587e+07 \n", - "11.0 0.482319 307.0 0.387622 1.768082e+07 \n", - "12.0 0.492767 307.0 0.410423 1.450787e+07 \n", - "13.0 0.506581 307.0 0.390879 1.423263e+07 \n", - "14.0 0.466132 307.0 0.394137 1.179928e+07 \n", - "15.0 0.454330 307.0 0.400651 9.346815e+06 \n", - "16.0 0.469313 307.0 0.416938 7.972048e+06 \n", - "17.0 0.454053 307.0 0.400651 8.708785e+06 \n", - "18.0 0.450661 307.0 0.394137 7.851668e+06 \n", - "19.0 0.446891 307.0 0.394137 7.422980e+06 \n", - "20.0 0.438563 307.0 0.403909 7.568719e+06 \n", - "21.0 0.430649 307.0 0.400651 5.943604e+06 \n", - "22.0 0.436015 307.0 0.423453 5.465808e+06 \n", - "23.0 0.430622 307.0 0.381107 6.419428e+06 \n", - "24.0 0.410960 307.0 0.433225 5.109246e+06 \n", - "25.0 0.438072 307.0 0.452769 4.033897e+06 \n", - "26.0 0.438718 307.0 0.475570 3.312253e+06 \n", - "27.0 0.444053 307.0 0.482085 3.013418e+06 \n", - "28.0 0.465860 307.0 0.495114 2.721990e+06 \n", - "29.0 0.443779 307.0 0.485342 2.532927e+06 \n", - "30.0 0.467515 307.0 0.488599 2.448023e+06 \n", - "31.0 0.467656 307.0 0.488599 2.320734e+06 \n", - "32.0 0.468553 307.0 0.498371 2.175214e+06 \n", - "33.0 0.472785 307.0 0.501629 2.087931e+06 \n", - "34.0 0.480435 307.0 0.495114 1.926204e+06 \n", - "35.0 0.468786 307.0 0.495114 1.808270e+06 \n", - "36.0 0.487030 307.0 0.504886 1.706876e+06 \n", - "37.0 0.481139 307.0 0.504886 1.622876e+06 \n", - "38.0 0.467375 307.0 0.511401 1.567464e+06 \n", - "39.0 0.495549 307.0 0.517915 1.521649e+06 \n", - "40.0 0.482681 307.0 0.514658 1.482535e+06 \n", - "41.0 0.486893 307.0 0.521173 1.459005e+06 \n", - "42.0 0.485197 307.0 0.517915 1.445329e+06 \n", - "43.0 0.480866 307.0 0.521173 1.438986e+06 \n", + " val/l2_loss train/n train/l1_loss train/loss_rec_epoch \\\n", + "epoch \n", + "0.0 3.706849e+08 307.0 264.040283 3.732675e+08 \n", + "1.0 3.706849e+08 307.0 264.040283 3.732675e+08 \n", + "2.0 3.224741e+08 307.0 4595.383789 3.629691e+08 \n", + "3.0 1.550526e+08 307.0 22527.847656 2.502060e+08 \n", + "4.0 5.975859e+07 307.0 35598.894531 1.157351e+08 \n", + "5.0 2.806880e+07 307.0 33114.066406 4.238476e+07 \n", + "6.0 1.971864e+07 307.0 30857.492188 2.239125e+07 \n", + "7.0 1.706716e+07 307.0 27715.544922 1.720435e+07 \n", + "8.0 1.006615e+07 307.0 25937.605469 1.255362e+07 \n", + "9.0 7.338727e+06 307.0 25082.312500 7.819019e+06 \n", + "10.0 6.209588e+06 307.0 24154.738281 5.677129e+06 \n", + "11.0 4.429918e+06 307.0 22907.306641 4.982404e+06 \n", + "12.0 3.777228e+06 307.0 21869.498047 4.120415e+06 \n", + "13.0 3.400250e+06 307.0 20941.789062 4.005956e+06 \n", + "14.0 6.613933e+06 307.0 19953.783203 3.563622e+06 \n", + "15.0 4.766898e+06 307.0 18918.632812 4.579110e+06 \n", + "16.0 3.636357e+06 307.0 18256.263672 3.389480e+06 \n", + "17.0 2.666441e+06 307.0 18122.337891 2.857502e+06 \n", + "18.0 1.830574e+06 307.0 18093.642578 2.188337e+06 \n", + "19.0 2.422562e+06 307.0 18212.863281 1.822544e+06 \n", + "20.0 2.018942e+06 307.0 17922.779297 2.492584e+06 \n", + "21.0 1.485850e+06 307.0 17289.257812 1.784791e+06 \n", + "22.0 1.233305e+06 307.0 16997.818359 1.379766e+06 \n", + "23.0 1.142599e+06 307.0 17051.990234 1.133017e+06 \n", + "24.0 1.111101e+06 307.0 17186.554688 1.004206e+06 \n", + "25.0 1.023292e+06 307.0 17167.945312 1.025479e+06 \n", + "26.0 9.403032e+05 307.0 17050.216797 9.728478e+05 \n", + "27.0 7.738559e+05 307.0 16890.978516 8.349296e+05 \n", + "28.0 6.832866e+05 307.0 16763.529297 6.711576e+05 \n", + "29.0 6.099844e+05 307.0 16666.199219 6.119573e+05 \n", + "30.0 5.997560e+05 307.0 16596.595703 5.508364e+05 \n", + "31.0 5.814060e+05 307.0 16531.132812 5.186879e+05 \n", + "32.0 5.503953e+05 307.0 16459.632812 5.221199e+05 \n", + "33.0 5.489996e+05 307.0 16438.089844 4.755563e+05 \n", + "34.0 5.360235e+05 307.0 16457.912109 4.562494e+05 \n", + "35.0 4.861202e+05 307.0 16426.304688 4.210021e+05 \n", + "36.0 4.617158e+05 307.0 16471.261719 3.986209e+05 \n", + "37.0 4.544535e+05 307.0 16462.720703 3.807290e+05 \n", + "38.0 4.485426e+05 307.0 16485.037109 3.719832e+05 \n", + "39.0 4.371093e+05 307.0 16492.220703 3.653067e+05 \n", + "40.0 4.370414e+05 307.0 16507.814453 3.598098e+05 \n", + "41.0 4.289332e+05 307.0 16514.064453 3.531663e+05 \n", + "42.0 4.268692e+05 307.0 16518.646484 3.478771e+05 \n", + "43.0 4.258649e+05 307.0 16522.308594 3.450000e+05 \n", "\n", - " train/loss_pred_epoch train/l1_loss train/l2_loss \n", - "epoch \n", - "0.0 0.688230 427.493835 5.954103e+08 \n", - "1.0 0.688230 427.493835 5.954102e+08 \n", - "2.0 0.686761 4190.505859 5.861746e+08 \n", - "3.0 0.708873 26462.203125 4.085653e+08 \n", - "4.0 0.878755 50520.066406 1.910481e+08 \n", - "5.0 0.864978 39737.753906 7.389744e+07 \n", - "6.0 0.871334 37637.578125 4.381874e+07 \n", - "7.0 0.812428 33550.609375 3.275268e+07 \n", - "8.0 0.792109 31261.455078 2.582715e+07 \n", - "9.0 0.797736 29715.527344 2.315815e+07 \n", - "10.0 0.808030 27947.347656 2.168190e+07 \n", - "11.0 0.860365 26572.035156 1.766754e+07 \n", - "12.0 0.863073 25934.945312 1.449490e+07 \n", - "13.0 0.817220 25579.869141 1.421984e+07 \n", - "14.0 0.824495 24126.640625 1.178721e+07 \n", - "15.0 0.808850 24184.070312 9.334722e+06 \n", - "16.0 0.807951 24531.482422 7.959782e+06 \n", - "17.0 0.785358 24043.013672 8.696764e+06 \n", - "18.0 0.816462 23197.699219 7.840069e+06 \n", - "19.0 0.825549 22935.119141 7.411512e+06 \n", - "20.0 0.815148 22501.644531 7.557467e+06 \n", - "21.0 0.809750 22050.935547 5.932578e+06 \n", - "22.0 0.809477 21991.695312 5.454812e+06 \n", - "23.0 0.825284 21516.828125 6.408670e+06 \n", - "24.0 0.803481 21269.396484 5.098611e+06 \n", - "25.0 0.797715 21130.251953 4.023332e+06 \n", - "26.0 0.797124 21216.498047 3.301645e+06 \n", - "27.0 0.789957 21445.892578 3.002695e+06 \n", - "28.0 0.785185 21653.322266 2.711164e+06 \n", - "29.0 0.787990 21773.935547 2.522040e+06 \n", - "30.0 0.783616 21845.962891 2.437100e+06 \n", - "31.0 0.778579 21826.976562 2.309820e+06 \n", - "32.0 0.778695 21804.451172 2.164311e+06 \n", - "33.0 0.778114 21794.085938 2.077034e+06 \n", - "34.0 0.774824 21771.789062 1.915317e+06 \n", - "35.0 0.772539 21782.212891 1.797378e+06 \n", - "36.0 0.770320 21799.580078 1.695976e+06 \n", - "37.0 0.767466 21823.931641 1.611964e+06 \n", - "38.0 0.764927 21879.181641 1.556524e+06 \n", - "39.0 0.763280 21913.054688 1.510692e+06 \n", - "40.0 0.761889 21952.068359 1.471559e+06 \n", - "41.0 0.760535 21971.406250 1.448019e+06 \n", - "42.0 0.760436 21988.955078 1.434334e+06 \n", - "43.0 0.760232 21991.769531 1.427991e+06 " + " train/l2_loss train/auroc train/loss_pred_epoch train/acc \n", + "epoch \n", + "0.0 3.732674e+08 0.624219 0.691203 0.537459 \n", + "1.0 3.732673e+08 0.636095 0.691203 0.537459 \n", + "2.0 3.629668e+08 0.501944 0.693477 0.537459 \n", + "3.0 2.501947e+08 0.476366 0.754405 0.537459 \n", + "4.0 1.157173e+08 0.539219 1.014312 0.537459 \n", + "5.0 4.236821e+07 0.572221 1.015193 0.537459 \n", + "6.0 2.237582e+07 0.639241 0.731147 0.537459 \n", + "7.0 1.719049e+07 0.645903 0.686152 0.537459 \n", + "8.0 1.254065e+07 0.641810 0.680101 0.573290 \n", + "9.0 7.806478e+06 0.633990 0.742129 0.530945 \n", + "10.0 5.665052e+06 0.628144 0.770468 0.534202 \n", + "11.0 4.970950e+06 0.626170 0.764871 0.537459 \n", + "12.0 4.109480e+06 0.621298 0.768988 0.537459 \n", + "13.0 3.995484e+06 0.627245 0.765890 0.537459 \n", + "14.0 3.553646e+06 0.620974 0.771836 0.537459 \n", + "15.0 4.569650e+06 0.616488 0.778858 0.537459 \n", + "16.0 3.380352e+06 0.602099 0.771206 0.537459 \n", + "17.0 2.848441e+06 0.615683 0.774138 0.534202 \n", + "18.0 2.179290e+06 0.596582 0.778603 0.537459 \n", + "19.0 1.813438e+06 0.609231 0.772705 0.530945 \n", + "20.0 2.483623e+06 0.606371 0.759984 0.537459 \n", + "21.0 1.776146e+06 0.613459 0.748758 0.534202 \n", + "22.0 1.371267e+06 0.619787 0.755564 0.547231 \n", + "23.0 1.124490e+06 0.593816 0.774485 0.530945 \n", + "24.0 9.956129e+05 0.591673 0.775348 0.530945 \n", + "25.0 1.016895e+06 0.601642 0.769135 0.527687 \n", + "26.0 9.643225e+05 0.616794 0.762657 0.557003 \n", + "27.0 8.264841e+05 0.608629 0.768119 0.557003 \n", + "28.0 6.627759e+05 0.621238 0.768572 0.540717 \n", + "29.0 6.036242e+05 0.598915 0.769204 0.537459 \n", + "30.0 5.425382e+05 0.605050 0.774538 0.537459 \n", + "31.0 5.104223e+05 0.608053 0.777326 0.537459 \n", + "32.0 5.138900e+05 0.611849 0.774287 0.534202 \n", + "33.0 4.673373e+05 0.610291 0.773806 0.543974 \n", + "34.0 4.480204e+05 0.605497 0.777296 0.543974 \n", + "35.0 4.127889e+05 0.604517 0.777446 0.537459 \n", + "36.0 3.903852e+05 0.590348 0.778197 0.537459 \n", + "37.0 3.724977e+05 0.601214 0.778841 0.534202 \n", + "38.0 3.637408e+05 0.599264 0.779900 0.540717 \n", + "39.0 3.570605e+05 0.600249 0.780551 0.540717 \n", + "40.0 3.515558e+05 0.596583 0.781438 0.537459 \n", + "41.0 3.449093e+05 0.595395 0.781261 0.534202 \n", + "42.0 3.396178e+05 0.589857 0.781961 0.537459 \n", + "43.0 3.367388e+05 0.595157 0.781976 0.534202 " ] }, "metadata": {}, @@ -3837,223 +3138,223 @@ " \n", " \n", " 0.0\n", - " 5.954103e+08\n", - " 427.493835\n", + " 3.732674e+08\n", + " 264.040283\n", " \n", " \n", " 1.0\n", - " 5.954102e+08\n", - " 427.493835\n", + " 3.732673e+08\n", + " 264.040283\n", " \n", " \n", " 2.0\n", - " 5.861746e+08\n", - " 4190.505859\n", + " 3.629668e+08\n", + " 4595.383789\n", " \n", " \n", " 3.0\n", - " 4.085653e+08\n", - " 26462.203125\n", + " 2.501947e+08\n", + " 22527.847656\n", " \n", " \n", " 4.0\n", - " 1.910481e+08\n", - " 50520.066406\n", + " 1.157173e+08\n", + " 35598.894531\n", " \n", " \n", " 5.0\n", - " 7.389744e+07\n", - " 39737.753906\n", + " 4.236821e+07\n", + " 33114.066406\n", " \n", " \n", " 6.0\n", - " 4.381874e+07\n", - " 37637.578125\n", + " 2.237582e+07\n", + " 30857.492188\n", " \n", " \n", " 7.0\n", - " 3.275268e+07\n", - " 33550.609375\n", + " 1.719049e+07\n", + " 27715.544922\n", " \n", " \n", " 8.0\n", - " 2.582715e+07\n", - " 31261.455078\n", + " 1.254065e+07\n", + " 25937.605469\n", " \n", " \n", " 9.0\n", - " 2.315815e+07\n", - " 29715.527344\n", + " 7.806478e+06\n", + " 25082.312500\n", " \n", " \n", " 10.0\n", - " 2.168190e+07\n", - " 27947.347656\n", + " 5.665052e+06\n", + " 24154.738281\n", " \n", " \n", " 11.0\n", - " 1.766754e+07\n", - " 26572.035156\n", + " 4.970950e+06\n", + " 22907.306641\n", " \n", " \n", " 12.0\n", - " 1.449490e+07\n", - " 25934.945312\n", + " 4.109480e+06\n", + " 21869.498047\n", " \n", " \n", " 13.0\n", - " 1.421984e+07\n", - " 25579.869141\n", + " 3.995484e+06\n", + " 20941.789062\n", " \n", " \n", " 14.0\n", - " 1.178721e+07\n", - " 24126.640625\n", + " 3.553646e+06\n", + " 19953.783203\n", " \n", " \n", " 15.0\n", - " 9.334722e+06\n", - " 24184.070312\n", + " 4.569650e+06\n", + " 18918.632812\n", " \n", " \n", " 16.0\n", - " 7.959782e+06\n", - " 24531.482422\n", + " 3.380352e+06\n", + " 18256.263672\n", " \n", " \n", " 17.0\n", - " 8.696764e+06\n", - " 24043.013672\n", + " 2.848441e+06\n", + " 18122.337891\n", " \n", " \n", " 18.0\n", - " 7.840069e+06\n", - " 23197.699219\n", + " 2.179290e+06\n", + " 18093.642578\n", " \n", " \n", " 19.0\n", - " 7.411512e+06\n", - " 22935.119141\n", + " 1.813438e+06\n", + " 18212.863281\n", " \n", " \n", " 20.0\n", - " 7.557467e+06\n", - " 22501.644531\n", + " 2.483623e+06\n", + " 17922.779297\n", " \n", " \n", " 21.0\n", - " 5.932578e+06\n", - " 22050.935547\n", + " 1.776146e+06\n", + " 17289.257812\n", " \n", " \n", " 22.0\n", - " 5.454812e+06\n", - " 21991.695312\n", + " 1.371267e+06\n", + " 16997.818359\n", " \n", " \n", " 23.0\n", - " 6.408670e+06\n", - " 21516.828125\n", + " 1.124490e+06\n", + " 17051.990234\n", " \n", " \n", " 24.0\n", - " 5.098611e+06\n", - " 21269.396484\n", + " 9.956129e+05\n", + " 17186.554688\n", " \n", " \n", " 25.0\n", - " 4.023332e+06\n", - " 21130.251953\n", + " 1.016895e+06\n", + " 17167.945312\n", " \n", " \n", " 26.0\n", - " 3.301645e+06\n", - " 21216.498047\n", + " 9.643225e+05\n", + " 17050.216797\n", " \n", " \n", " 27.0\n", - " 3.002695e+06\n", - " 21445.892578\n", + " 8.264841e+05\n", + " 16890.978516\n", " \n", " \n", " 28.0\n", - " 2.711164e+06\n", - " 21653.322266\n", + " 6.627759e+05\n", + " 16763.529297\n", " \n", " \n", " 29.0\n", - " 2.522040e+06\n", - " 21773.935547\n", + " 6.036242e+05\n", + " 16666.199219\n", " \n", " \n", " 30.0\n", - " 2.437100e+06\n", - " 21845.962891\n", + " 5.425382e+05\n", + " 16596.595703\n", " \n", " \n", " 31.0\n", - " 2.309820e+06\n", - " 21826.976562\n", + " 5.104223e+05\n", + " 16531.132812\n", " \n", " \n", " 32.0\n", - " 2.164311e+06\n", - " 21804.451172\n", + " 5.138900e+05\n", + " 16459.632812\n", " \n", " \n", " 33.0\n", - " 2.077034e+06\n", - " 21794.085938\n", + " 4.673373e+05\n", + " 16438.089844\n", " \n", " \n", " 34.0\n", - " 1.915317e+06\n", - " 21771.789062\n", + " 4.480204e+05\n", + " 16457.912109\n", " \n", " \n", " 35.0\n", - " 1.797378e+06\n", - " 21782.212891\n", + " 4.127889e+05\n", + " 16426.304688\n", " \n", " \n", " 36.0\n", - " 1.695976e+06\n", - " 21799.580078\n", + " 3.903852e+05\n", + " 16471.261719\n", " \n", " \n", " 37.0\n", - " 1.611964e+06\n", - " 21823.931641\n", + " 3.724977e+05\n", + " 16462.720703\n", " \n", " \n", " 38.0\n", - " 1.556524e+06\n", - " 21879.181641\n", + " 3.637408e+05\n", + " 16485.037109\n", " \n", " \n", " 39.0\n", - " 1.510692e+06\n", - " 21913.054688\n", + " 3.570605e+05\n", + " 16492.220703\n", " \n", " \n", " 40.0\n", - " 1.471559e+06\n", - " 21952.068359\n", + " 3.515558e+05\n", + " 16507.814453\n", " \n", " \n", " 41.0\n", - " 1.448019e+06\n", - " 21971.406250\n", + " 3.449093e+05\n", + " 16514.064453\n", " \n", " \n", " 42.0\n", - " 1.434334e+06\n", - " 21988.955078\n", + " 3.396178e+05\n", + " 16518.646484\n", " \n", " \n", " 43.0\n", - " 1.427991e+06\n", - " 21991.769531\n", + " 3.367388e+05\n", + " 16522.308594\n", " \n", " \n", "\n", @@ -4062,50 +3363,50 @@ "text/plain": [ " train/l2_loss train/l1_loss\n", "epoch \n", - "0.0 5.954103e+08 427.493835\n", - "1.0 5.954102e+08 427.493835\n", - "2.0 5.861746e+08 4190.505859\n", - "3.0 4.085653e+08 26462.203125\n", - "4.0 1.910481e+08 50520.066406\n", - "5.0 7.389744e+07 39737.753906\n", - "6.0 4.381874e+07 37637.578125\n", - "7.0 3.275268e+07 33550.609375\n", - "8.0 2.582715e+07 31261.455078\n", - "9.0 2.315815e+07 29715.527344\n", - "10.0 2.168190e+07 27947.347656\n", - "11.0 1.766754e+07 26572.035156\n", - "12.0 1.449490e+07 25934.945312\n", - "13.0 1.421984e+07 25579.869141\n", - "14.0 1.178721e+07 24126.640625\n", - "15.0 9.334722e+06 24184.070312\n", - "16.0 7.959782e+06 24531.482422\n", - "17.0 8.696764e+06 24043.013672\n", - "18.0 7.840069e+06 23197.699219\n", - "19.0 7.411512e+06 22935.119141\n", - "20.0 7.557467e+06 22501.644531\n", - "21.0 5.932578e+06 22050.935547\n", - "22.0 5.454812e+06 21991.695312\n", - "23.0 6.408670e+06 21516.828125\n", - "24.0 5.098611e+06 21269.396484\n", - "25.0 4.023332e+06 21130.251953\n", - "26.0 3.301645e+06 21216.498047\n", - "27.0 3.002695e+06 21445.892578\n", - "28.0 2.711164e+06 21653.322266\n", - "29.0 2.522040e+06 21773.935547\n", - "30.0 2.437100e+06 21845.962891\n", - "31.0 2.309820e+06 21826.976562\n", - "32.0 2.164311e+06 21804.451172\n", - "33.0 2.077034e+06 21794.085938\n", - "34.0 1.915317e+06 21771.789062\n", - "35.0 1.797378e+06 21782.212891\n", - "36.0 1.695976e+06 21799.580078\n", - "37.0 1.611964e+06 21823.931641\n", - "38.0 1.556524e+06 21879.181641\n", - "39.0 1.510692e+06 21913.054688\n", - "40.0 1.471559e+06 21952.068359\n", - "41.0 1.448019e+06 21971.406250\n", - "42.0 1.434334e+06 21988.955078\n", - "43.0 1.427991e+06 21991.769531" + "0.0 3.732674e+08 264.040283\n", + "1.0 3.732673e+08 264.040283\n", + "2.0 3.629668e+08 4595.383789\n", + "3.0 2.501947e+08 22527.847656\n", + "4.0 1.157173e+08 35598.894531\n", + "5.0 4.236821e+07 33114.066406\n", + "6.0 2.237582e+07 30857.492188\n", + "7.0 1.719049e+07 27715.544922\n", + "8.0 1.254065e+07 25937.605469\n", + "9.0 7.806478e+06 25082.312500\n", + "10.0 5.665052e+06 24154.738281\n", + "11.0 4.970950e+06 22907.306641\n", + "12.0 4.109480e+06 21869.498047\n", + "13.0 3.995484e+06 20941.789062\n", + "14.0 3.553646e+06 19953.783203\n", + "15.0 4.569650e+06 18918.632812\n", + "16.0 3.380352e+06 18256.263672\n", + "17.0 2.848441e+06 18122.337891\n", + "18.0 2.179290e+06 18093.642578\n", + "19.0 1.813438e+06 18212.863281\n", + "20.0 2.483623e+06 17922.779297\n", + "21.0 1.776146e+06 17289.257812\n", + "22.0 1.371267e+06 16997.818359\n", + "23.0 1.124490e+06 17051.990234\n", + "24.0 9.956129e+05 17186.554688\n", + "25.0 1.016895e+06 17167.945312\n", + "26.0 9.643225e+05 17050.216797\n", + "27.0 8.264841e+05 16890.978516\n", + "28.0 6.627759e+05 16763.529297\n", + "29.0 6.036242e+05 16666.199219\n", + "30.0 5.425382e+05 16596.595703\n", + "31.0 5.104223e+05 16531.132812\n", + "32.0 5.138900e+05 16459.632812\n", + "33.0 4.673373e+05 16438.089844\n", + "34.0 4.480204e+05 16457.912109\n", + "35.0 4.127889e+05 16426.304688\n", + "36.0 3.903852e+05 16471.261719\n", + "37.0 3.724977e+05 16462.720703\n", + "38.0 3.637408e+05 16485.037109\n", + "39.0 3.570605e+05 16492.220703\n", + "40.0 3.515558e+05 16507.814453\n", + "41.0 3.449093e+05 16514.064453\n", + "42.0 3.396178e+05 16518.646484\n", + "43.0 3.367388e+05 16522.308594" ] }, "execution_count": 30, @@ -4132,7 +3433,7 @@ { "data": { "text/plain": [ - "134469.35725099334" + "133043.64397087775" ] }, "execution_count": 31, @@ -4149,7 +3450,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -4170,12 +3471,12 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 33, "metadata": {}, "outputs": [ { "data": { - "image/png": "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5XEfS8IdmOHDh+P222/HBx98ACkltm3bhoqKClx55ZUtUT4iSjKjiQ8ReY8X4z7hDsykSZPQp08fjB49Gt9//z2uvfZaFBUV4Y477miJ8hFR0oVOJcf6IEMfpySipngv7hO+B0ZVVVx44YU4/fTTceDAAXTo0AGKouC5555DWVlZS5SRiJIodMrYeR4ReY8X4z7hDsy9996L119/HX379oXf70dNTU1LlIuIWogXB7QiIndejPuEOzDr1q3Diy++mNBrt4no1GFIQHe4ac/pCI2IMpsX4z7hDkxubi66devWEmUhohQIXfd2nkdE3uPFuE/4wtfYsWNx3333Yfv27fj222/DPkR06jOkgO7wydTHKYnInRfjPuEzMI888ggCgQCWLl1qvZVaSgkhBP7xj38kvYBElFwSLkdiGXotnIjceTHuE+7AvPrqqy1RDiJKESnhcio5tWUhotTwYtwn3IHp2rVr0jL/6KOPUFpairVr16KoqChp6RKRs9CpZOd5ROQ9Xoz7hDswyXLgwAHcd999CAaDTS9MREkTOhJzeJwyQ4/EiMidF+M+LaPXaJqGO+64A5MnT05H9kRZzelGPvNDRN7jxbhPyxmYyspK9O/fn2+wJkoHl2vhyNAjMSJqQgrjfs2aNXjmmWdgGAYURcHEiRMxZMiQqOXef/99/OY3vwkbmuXRRx9Fr1694son5R2YV155BTt37kRFRUWqsyYiNPU0AhF5Uarifs+ePZg6dSoWLlyI7t274x//+AdKS0vxxhtv4PTTTw9bdtOmTRg1ahSmTJnSrLxSfglp8eLF2LlzJ0aOHIkRI0YAAMaMGYNNmzaluihEWUk33D9E5D2pintFUTB9+nR0794dAHDWWWdBCIEDBw5ELbt582Z88sknuO6663D99ddj9erVCeWV8jMwzz//fNj33r17Y+7cuXwKiShlBM+0EGWdpuN+27ZtqK+vj5reuXNnFBQUhE1bv349brvttqhlx48fH/Zi58cffxzdunVDz549o5Zt27YtrrnmGowYMQJffvklbr75ZhQWFuKCCy6Iq0ZpewqJiNLD7YiLZ2CIvCmeuC8vL0d1dXXU/LKyMkyYMCFs2pAhQ2IuawoEApgxYwY2btyI559/3hr41m7WrFnW37169cJVV12FtWvXZk4H5vPPP093EYiyioTLgFYpLQkRpUo8cV9V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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAGsCAYAAADpDWxlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABflElEQVR4nO3de5gU1Z0//vc5Vd09DDcZYBgwRgOr5Lsx6CZ+ZQUT1FXXZ5OsiNd9Jrv7A0yelR0MKkpQwRgU1wl+iWZ/XvDHD33cxASCRNTosl7Cgr9EF2/ZFQOGSwC5XwSHmenuqnN+f3RXUX2ppnum+lLT79fz9DMzdTn1qVP1OXPq0lVCa61BREREVANktQMgIiIicrBjQkRERDWDHRMiIiKqGeyYEBERUc1gx4SIiIhqBjsmREREVDPYMSEiIqKawY4JERER1Qx2TIjqiHW8s9ohEFGFhS3vRZif/Lpv715YyQQEUqug8vSzJFTGOENbsIWZM50zPKLiSMpYxvwaAgIaQqu885bCVAlYMlpwGmd9NETe8X6xOvNKbcMWJiQUFCQkVE7spkpASRMKEgI6Y1nZf3uX6XDKzhe7gIaCzJjHO31ExWHJaM4yvMvNXp5TJwBgqGRGHeaL16/ODG1Bi1QcGsIty4nb2dYKEqZKAAAsGXXjzxeXM0++GLL3v+xxOr3kk62Ld7gTSyQSwYiWloLrnc/7U2ejY9PWvOMGjB2Nc5ctKrnMStq3dy+SyWTGvp4te5/3y3u3LrP2SUNbUMKA1DYA9Cjvvds3X65mO9m+5KxD1O5G0ohlTOPdz/z2VSCVe0oY0ELm3Sez43FywbscvzbD2Rbe5Xp/z65jp4zs6ZUwctbNyUcn70/WRmbXmaEtAKntKKBhqCRsGYHUNrSQ0BAZ8RvKQsJo8F1fv+He5Trrka+tdObLLsevXfXOUw9537v/slWWTCaRjMdPdExEnsZfq4xxpkrCkpGc6QxlwZY2YHcjYWTOn9ExkXavYtZ2HEmjcF9QpPuKWuRPOncdsmJ15pXahi1tSK2ghITUKid2bcdhywiUkBBaZywr+2/AUz9pTtn5YhfQUEJm1HXG9HY3kjJ3Gd7lZm8n4ek/myqRUYf54vWrM1MloUSq0jSEW5YTt9sxERLajgMAkoZ248+uB2fZfjFk73/Z4zTESes+e7hf3Rerc/t2HN+0Ke84Gav9k6jJZBKJRDxjX8+Wvc/75b1bl1n7pKFS/1gMbUFD9CjvM7ZvnlzNdrJ9yVkHYXUhYWS2D979zG9fBQDY3bCFmeqYnGQf8uaydzl+bYahLVgykrHcjBiy6tgpI3v6VMdJ5CzT23aerI10OGUbKt0xkTaE1ulOjsrtmEg71UaoJBKm8F1fv+He5TrrkS9fnfmyyymU28W0c4WEKe9D3TEhotJJQ0Ca+Rs4afS84SOi2hWmvGfHhKjOCFNARPI3RMKn4SKicAtT3rNjQlRnZEzA6Jf/1K2M1VYDRUTBCFPes2NCVGekWeCUbo0dORFRMMKU9+yYENUZaUoYUZ8jJ7O2boIjomCEKe/ZMSGqM0IKCOlzrdlnOBGFW5jynh0TojojIxJGNP93V2Wkto6ciCgYYcr7qkSzbt06XHnllbjiiiswdepU7N+/vxphENUlIYR79JTz6cVzEoiodoUp7yveMTl8+DBmz56N9vZ2vPLKK7j44osxd+7cSodBVLekIQp+iKjvCVPeV7xjsn79eowdOxZjx44FANxwww146623cODAgUqHQlSXhCkhI0bej6ixm+CIKBhhyvuKR7N3716MHDnS/TsajWLIkCHYs2dPpUMhqku+p3ML3BxHROEWpryv+M2vWuu817OkrK0eG1FfZZgShs/NbkaNHTkRUTDClPcVj2bUqFHYt2+f+3cikcCRI0cwatSoSodCVJdSN8HJ/J8auwmOiIIRpryveMdk4sSJ2LhxIzZv3gwAWLFiBc455xw0NTVVOhSi+lTodG6NndIlooCEKO8rfimnqakJixcvxpw5cxCPxzF06FC0t7dXOgyiuhWmU7pEFIxy5f0HH3yA1tZWvPrqq2hpaelxOV5VecDahAkTsGrVqmosmqjuOad0/cYRUd9Tjrw/dOgQ7rnnHiSTyd6EloOHR0R1RpgS0udTa18bJKJgBJ33lmXh1ltvxe233x54rHwkPVGdcZ4A6TeOiPqeYvJ+y5Yt6O7uzhk/fPhwNDc3Zwxrb2/H+PHjMXHixMBjZceEqM5IU8KI+Lwzg2dMiPqkYvJ+9uzZ2LhxY874trY2zJw50/37xRdfxI4dO8r21HZ2TIjqTJjeMkpEwSgm7xctWuR7xsRr5cqV2LdvHyZPnuwOmz59Ou69916cd955vY6VHROiOlOum1/LcXc+EQWjmLwfM2ZMUWUtW7Ys4++xY8di6dKl4f5WDhFVj3PDm9+4nijX3flEFIxy5H25sGNCVG+E9D1ygkgNL+UmOO/d+dOmTQs8XCIKQBF531ObNm3q1fzZQt0xEdDQQkAjdRpK6NTfXhrCHSa0hi1MCK0hoCG1DVuY0ELAliYidhwJoyGnHC1Eal6ZmtcZJrUCACghIbWCKmLjJo1YzrROPM4w77JNlYQSBjQEDG3BkhFYMgIASBgNOeVrIdx1VEIiYsfd5RrKSq2zjCBpxHLWz1ludh2m1tHI+lu6sWfXlbM9nDi900utkJSxvMtwhhnKypjXGefUmzd2oXWqXkTm9KZKZpTh/G4LM6OunbKcuKN2t1uvzriIHXd/t6XpxmEoy60XAe2udzH1lKoLOyNG7zTO79nDnH3A2Q97QhoS0vS5Cc4o7SY4oLx35+eNEam8c/b1jHHpbePUrZuvSO0/Th45ea+EhKmSSBgN7nggtb9rIaBgQAmZsx1SeWTCUBZsmb8Z9ea4t3xvOcXkvTONs6/EzcaCy9IQiNhxCGjYSMWYKl/CktGi2ik3Hp1/383e37UQsNP/Trw5otPLSuV0NKetcKZ31jk7773r5uSgE4+hrJztnx2rk59ayIx6dvM5PX/M6kQynfdOG+ttC7JzMd828/LuE9ltgHef8fvfkZ3/hfazYhWT97Ui1B0TIuoBIVIfv3Eo/ia4ct+dT0QBKSLvawU7JkR1JnWtufDXBou9Ca7cd+cTUTCKyftawY4JUb0p8KClUo+cyn13PhEFJMC8Lzd2TIjqjPOqc79xRNT3hCnv2TEhqjPSEP5fGzR6d+QU9N35RBSMcuZ90NgxIao3UqY+fuOIqO8JUd6zY0JUZ4SUkEb+m+Bq7ZQuEQUjTHnPjglRneG7cojqT5jynh0TonojCpzS7eUTIImoRoUo76vaMfnxj3+MAwcO4P77769mGER1RRoS2ueUbq09AZKIghGmvK9KNLt27cI///M/5zwDgYgqQAhA+nxq7HkGRBSQEOV9Vc6Y/OIXv8CECRNw5pln4sCBA9UIgahuiQLvzBA1duRERMEIU95XJZrbbrsNra2tMHxOKxFRGQlZ+ENEfU+I8p43vxLVGWFIiJAcORFRMMKU9+yYENUZIQSEzzVlv+FEFG5hynt2TIjqTYieAElEAQlR3rNjQlRnhJQQIXkCJBEFI0x5X9WOycyZM6u5eKL65HxF0G8cEfU9Icp7njEhqjNhOnIiomCEKe/ZMSGqN1L6N0Q11kARUUBClPfsmBDVG1HgSY81dnc+EQUkRHnPjglRvZES8Hu4YY0dORFRQEKU9+yYENUZUeBrg7V2rZmIghGmvGfHhKjehOjIiYgCEqK8Z8eEqM6IAu/GEDX2zgwiCkaY8r62oimRhoDQGoayUn8LAVMl3fFSq8zphYChLWghoISEJSOQ2oahLJgqCSUMdzpn/qjdlVGGoS1EVBxCawitoIR0fwcAoTViVieE1u7fTnwAELHjUEK6w5zpVHrH8MbsHaeFgCUjGbHErM689SK0dtchacTc9bKliaQRAwCYKumW711ndz2V5caYLybvfELrjHr3zuMMT9WRhhISUtvuNE55zu9RuztnmSfKtN1lGcqC1CqjXqJ2t1uGLcyM5XvrJRVDqvyIHc9YRsJoyFhHqRWSRgyGshCx45DpbW6qJAQ0onYXTJWEhnDrLbsenXrKrhMnRm9dOst0fj8xzM5Y1+ztVRLnyCnfp8aOnPJR6WbLW9dOnTq55dStFiJd93ZOHnn3cWdeIFX/DdbxjGUKpPY7qRWktmFLM2M/yc57Z5gjZnW65XvHZee9s486bYuzv3pl51q21DpGkZQxSK1gSxO2NN19tJBUm3ciB539zuHE4uSQt/60EG5eGukYnTbalmbGMrzzCa3TuWXnzfuIHXen8babTplO3psqmZFDTkxOzjrz5avDuNno1o8zTcJocJdvqNT/Def3iB1H1O52y8mO22lXnH0GSP3vSMWUGYt3+zq/O+vhzOOtvx4rQ94/++yz+Na3voW//du/xfXXX4/f//73vY8TPGNCVH9CdHc+EQUk4Lx/9913sWTJEqxcuRJNTU144403MGPGDKxbt67X795hx4So3oTonRlEFJCA837w4MFYsGABmpqaAADjxo3DoUOH0NXVhcbGxt5Eyo4JUd0J+Ca4Z599Fj/72c8ghEC/fv1w1113Ydy4cb0MkogCVUTeb9myBd3d3Tmjhw8fjubm5oxhY8aMwZgxYwAASiksXLgQF110Ua87JQA7JkT1p8BNcL7DfZTzdC4RBaiIvJ89ezY2btyYM7qtrc333XYdHR244447cPjwYSxZsiSQUNkxIao3AR45lfN0LhEFqIi8X7RokW/e57Nt2zbcdNNNGDduHBYvXoxYLBZIqOyYENWbIm6CK/bIqZync4koQEXkvZPLxdi9ezdaW1sxffp0TJ8+PYgIXeyYENUbwwAMn9RPH1GVeuRUjtO5RBSgIvK+FEuXLsWxY8ewevVqrF692h2+ZMkSjBgxoqdRAmDHhKgOFThyQulHTuU6nUtEQTp53pdi3rx5mDdvXu9C8lGVjgnv4ieqogBvfi3n6VwiClCAeV9uFe+Y8C5+oiozCtwEZ5TWQJXzdC4RBSjAvC+3indMeBc/UXVpiAKPtC/t4KCcp3OJKDhB5n25Vbxjwrv4iapMGoDfuzdk6TfBEVEIhCjvq3bzK+/iJ6oO58V2efFyKlGfFKa8r8qFpW3btuGaa67BgAED8PTTT2PQoEHVCIOoPglx4ka4nE9tNVBEFJAQ5X3Fz5jwLn6iKpNGgSdA1tYpXSIKSIjyvuIdE97FT1RlBU7p8ptxRH1UiPK+4h0T3sVPVF1aGNA+N8FpUVtHTkQUjDDlPZ/8SlRvinhnBhH1MSHKe3ZMiOqMlhLa55qylrX1oCUiCkaY8p4dE6J6E6JHUxNRQEKU9yV3TDZt2oRFixZh+/btUEpljHvttdcCC4yIykMDvjfB6cqGQkQVEqa8L7ljMn/+fDQ3N2PWrFkwTZ5wIQobLQzfm91q7SY4IgpGmPK+5J7Fxx9/jKeffhoNDQ3liIeIyk0IaN9TurV1ExwRBSREeV/yhaXRo0dj37595YiFiCpAS6Pgh4j6njDlfclnTCZOnIh//Md/xDe/+U0MHTo0Y9zUqVMDC4yIykMXOHLyf/soEYVZmPK+5I7Ju+++i9NOOw0ffPBBxnAhRFU6JloICK0htIYWApaMpOLRGsqzESJ2HJaMwhapVZZaQWgFW5oQ+sStP045UisoIdFt9nd/T5VpwJIRGMqCnX5YjRYCOn3ySQuBuOn/puSkEYPQ2l2us0OYKglbmFBCwlAWAMCWJiwRyYnN4SxHaA0B7c7rxOX87izLVAkkjRiUkJDazlhPL1MlYcmIW6/Oenl5lyOg3TpRwoAWIr0MBUMloSHcaVN1b0NpA0IrKGm685kqAVuk4jXT83mX62xbS0Ry6sKhhUBSxtxxzjzOOGd9NQQMZSFpxNIxnagHZ59KTW9DCZmqR0+6eMt1fpc682ZwZxs628ipE2d6v8bAicMbk7MNne3cG6kHLYXjWrMfqRWktgGVzhPP9vDWuaEtWDICOz3em1sKRros293nnTrvigxwhwGpV8Zn5z0AqHR9OXnv5IvUChon9qPsNsHZ9iemUzC0SuWSiLj7pTONd5s7y/TG4o01Y19O7+daSCghEbHjSBgN7nKdOLz7VlLG3HmVpy6z2wtnvHfZbjw40SY7dWKqhFu27ZlPQEMLiWS6/rNz22kznZ/ZeSO0SrX9nrYys75kRtzeHMzeJk753rbMuy3c9sK2kTAa3LrJ5kxnC9Mt11mmt505GWdbZ2+vnghT3pfcMXnmmWfKEQcRVUjqX5Df3fm1deRERMEIU9736Gs1v/71r7Fy5Urs2bMHw4YNw5QpUzB58uSAQyOisgjRTXBEFJAQ5X3JHZPly5dj8eLF+Pu//3t87nOfw44dO/Dggw/i+PHjaG1tLUeMRBSgMH1tkIiCEaa8L7lj8tRTT+GJJ57AuHHj3GFf+9rXcPvtt7NjQhQCWhR40FJtHTgRUUDClPcld0z279+Ps88+O2PY2WefjcOHDwcWFBGVj4Lh3lSXbxwR9T1hyvuSb+//sz/7M7z00ksZw1566SWMHj06sKCIqIyEhPb51No7M4goICHK+5LPmNxyyy34zne+g1WrVuHUU0/Frl278P777+OJJ54oR3xEFLAwndIlomCEKe9L7iaNHz8eq1atwrnnngshBMaPH4/Vq1fj/PPPL0d8RBQwJYyCHyLqe8KU9yWfMbn22muxbNky3HzzzT1e6MqVK/HUU08BAIYMGYJ7770XX/jCF3pcHhEVrxzPM1i3bh0WLVqEeDyOkSNH4sEHH0Rzc3NvwiSiAIUp70s+Y7Jv3z4olfuEy2Jt3boVDz30EJ566im88MILuOyyyzB//vwel0dEpUk9BTT/UZPvcw4KOHz4MGbPno329na88soruPjiizF37twyRE5EPRWmvO/Ru3KuvfZaXHzxxWhubobwXLMq5pH0o0ePxtq1axGJRGBZFnbv3o0hQ4aUGgYR9ZCG9H9nRvpYZcuWLeju7s4ZP3z48JwjovXr12Ps2LEYO3YsAOCGG25Ae3s7Dhw4gOHDhwccPRH1RJjyvuSOya5du9Dc3IwPP/wQH374oTu8lHflRCIRbNiwAd/73vfQ1dWFpUuXlhoGEfWQSr/LyG8cAMyePRsbN27MGd/W1oaZM2dmDNu7dy9Gjhzp/h2NRjFkyBDs2bOHHROiGhGmvK/au3LOO+88vPnmm3j11Vfx3e9+F6+99hoGDRoUSNlEVIAW0H634aeHL1q0yPfIKWcWrTPOnDqkrK2vIBLVtRDlfckdk1/96le+44p5X86uXbuwc+dOXHDBBQCASy+9FPPnz8eOHTtyHtxGRMHTkO6p23zjAGDMmDFFlzdq1Cj87ne/c/9OJBI4cuQIRo0a1btAiSgwYcr7kjsm2Zddjhw5gsOHD2PChAlFdUyOHj2KWbNm4fnnn0dLSwvWrl0LKWVJFUJEPacgoHwaKNWDu/MnTpyI++67D5s3b8ZZZ52FFStW4JxzzkFTU1NvQyWigIQp70vumLzwwgs5w37+85/jD3/4Q1Hzf+lLX8KcOXPwne98B1JKDBo0CE8++ST69etXaihE1ANBf22wqakJixcvxpw5cxCPxzF06FC0t7f3NkwiClCY8r7kjkk+119/Pf7yL/8SP/jBD4qafsqUKZgyZUoQiyaiEmlIKF34lG6pJkyYgFWrVvUmLCIqozDlfSAdkzVr1qB///5BFEVEZabhf4SkKxsKEVVImPK+5I7JX/zFX2TciWtZFmzbxpw5cwINjIjKoxxPgCSi2hamvC+5Y5L9sj4pJT7/+c/z8dNEIaF1gVO6PsOJKNzClPcld0ycl/UdOXIEu3btwpe+9CVYlhV4YERUHqm78/MfIfXk7nwiqn1hyvuSu0nHjh1DW1sbLrjgAvzDP/wDtm/fjksuuQSbNm0qR3xEFDClBVT66Cn3U1sNFBEFI0x5X3LH5IEHHkC/fv2wbt06mKaJM844A5MnT8b9999fjviIKGDOtWa/DxH1PWHK+5Iv5axbtw5r1qxBY2MjhBCQUuLmm2/GxIkTyxEfEQUsda05/334tXatmYiCEaa8LzmaSCSS8yz9jo4ODBgwILCgimWqBADAFiZ0+ptCpkpCaA2pbXc6Q1nQQkIL4U6nIaCEkfo9PdzQFrQQEFpDCQlDpe6dcV58pD0vQbKlCaE1InbcLc9ZlpcWArY80f8TWrsxCM+XtCwZgRYCpkrClmbGPN6yRNaOFbW7U/Gnl++dz5YmpFbp9RdIGjFIrSC1giUjGetmqmRGLFIrt36VkJBauTFkL0cJiajdnTH+RFlRt55PTG9k1KHUthuf8/ZLpz78eMc5sdni5P1sJSQidtzdLk59OvVgKAumSrrlO/WUvV1PrF/EXb5Kv1YcyKxPb3neugTg7j9ezrKcbeqU5d3/vGWUSmtAp9+bkfvpcbEVY2gLSkgkjZi7Hzp15t1OUtsQnm2T+mnk5D2Q2o6GsqAh3Pp2tr0zrTM/AHcfcnLY3Wae7eyUL7R297PsfdqZDkjlg3eZ3mm8ee+0TU5+Z8eandPeXE0YDRnr5M1rZ3+L2l0AMtsn73oBJ9oxQ1k5+Z1qX6In2tr0z6SMufuws1ynrbVFal289eHwtpnecc76JdPr5K3nfHXotJVKyIz8BFLbz2knnTpz1i8fpy11YvLWixODs48403hjy16+M6+XUx9O/Pna/1KEKe9L7phcccUVuPnmm/Huu+9Ca40tW7Zg7ty5uPzyy8sRHxEFTJ3kQ0R9T5jyvuSOyS233IIvfvGLmDZtGj777DNMmTIFLS0tuPXWW8sRHxEFzHkCZL5PT58ASUS1LUx5X/I9JoZh4Ctf+QpOOeUUHDp0CEOGDIGUEk8++STa2trKESMRBUgXeP2572vRiSjUwpT3JXdM7r77brz22mv48pe/jEgkgj179pQjLiIqE6UFbJ+GqNa+NkhEwQhT3pfcMXnjjTfw7LPPYsyYMeWIh4jKLEzvzCCiYIQp70vumMRiMZx22mnliIWIKkApAeVzt5tStXXkRETBCFPel3zHy4033oh77rkHW7duxaeffprxIaLap9OPps73qbUHLRFRMMKU9yWfMfnRj36ERCKBVatWuW8Z1lpDCIGPPvoo8ACJKFga/s8tqLUGioiCEaa8L7lj8vLLL5cjDiKqkNQ7M/zHEVHfE6a8L7ljcuqppwa28A8++ACtra149dVX0dLSEli5RORPa/g2ULX2BEgiCkaY8r7kjklQDh06hHvuuQfJZO6jeYmofJTyv9nN7+Y4Igq3MOV9VR73ZlkWbr31Vtx+++3VWDxRXfO7Ac75EFHfE6a8r8oZk/b2dowfP55vJCaqBl3g1G2NndIlooCEKO8r3jF58cUXsWPHDsydO7fSiyYiALYWsH1O3do11kARUTDClPcVv5SzcuVK7NixA5MnT8aVV14JAJg+fTo2bNhQ6VCI6pLWhT9E1PeEKe8rfsZk2bJlGX+PHTsWS5cu5bdyiCok9c4Mv3HBLmvNmjV47LHHoJSClBKzZs3CpEmTgl0IEZ1UJfO+t6r2rRwiqo5CR0hBHjl98sknmDdvHpYvX47TTz8dH330EVpbW/H666/jlFNOCW5BRHRSlcr7IFS9Y7Jp06Zqh0BUV1SBa81BHjlJKbFgwQKcfvrpAIAzzzwTQggcOnSIHROiCqtU3geh6h0TIqqsYo6ctmzZgu7u7pzxw4cPR3Nzc8awtWvX4qabbsqZdsaMGWhra3P/fvjhh3Haaadh9OjRPQ+eiHqkkmdMensJlx0TojpTTAM1e/ZsbNy4MWd8W1sbZs6cmTFs0qRJead1JBIJ3HfffXjrrbewbNky9x1bRFQ5YbqEy44JUZ0p5pTuokWLfM+YlOLgwYNoa2tD//79sXz5cgwePLjUcIkoAMXkfSlnSv0EcQmXHROiOlPMkdOYMWN6vZyOjg58+9vfxoUXXog777wTUlblQdNEhODPlJbzEi47JkR1Rin4HzkF+M6M5cuXY9u2bYhGo7jqqqvc4ffddx++/OUvB7cgIjqpYvK+lDOl5byEy44JUZ2p1LXmadOmYdq0acEVSEQ9VqkzpUDvL+Hy3CpRnbF16sgp76fGvjZIRMGoVN47l3DPPvtsPPnkkz26ryz0HZORb/8STb/6Ser391bDkhGMePNZjPifNRj24mMAAFua0Om3JxrKQvOapRjUtR86fWpp2IuP4ZSfL4IlIwAALQQarOMY/NkuAEBj4qi7vFEfvOj+roVA0oih6eh2d55h+/4nFcvHawEAw19ekhHvgO5D7u/D09OO2rgmFcfhj9H404dS87+zCg3W8Zz11UJg6Kdb3b+jyU70jx+BFgIjdr+Hke8+DwDuNIN+8X9gyxMnxpSQiNjdiFmdkDp1/m7k9t/CkhE0Jo5i5H89BwD4ny9+C0kjBi0ErLvbMPTQ5ow4+iU7Mv4e+vs1sKWJBus4Rm57E81rlmLEx2sxbO9/u/U8PF1G84ZfYVDnPgBAy/b/D43dRzLicwzu3IdTOnbn1EHzmqUAgBG73wMADOw6AADuemrPKcPE92/CyC3/iYgdx9BPt6J5zVIkjRia//1Jt86ddXbKsGQEg9JlDnrmXwAAxiPz0LL+Z+50jYljqbr7r+cwwjM/AAzqOgBDJTGw6yAAwJIRjPqfl9OxHkTzup/BVEkMWbEYlozCXDTnRD0+/6/uekQevhMAYKoERux+D/3jR9x1H3bgo5x6KZZWzivQcz+6xl5/no+hLAxb/X9jyPL/AwAY9ftfw5YmRv3Py2h+e5W7nWxpQguJIZ/thKmSGP7yEmgh3P2j4V/vxoClC9z6tqWJiIpjQGdq22fkfXr7OfMmjRgGdB+GEhKDj+9F85Y3AQAjt64HALftceZpTHwKQ1kAgJZP3smYduT23yLy6A9S4/7z3xC1c0+layHQdOxP7t8Dj+9D09HtUEJi+ME/YOTbv3TLAoARa59x2zPgRF4N7DqIfskOKCEx6n9ehhIS/ZIdGPn2L6GFwMax30DcbIShLHTNmYGWnW9nxNF0dHtGPQxb9yyUkBjUdQCjNqba3BEfr8WIP70FADBV0l3flvdfQHO6zWv56FUMObLNLUcL4cY4/OAfMurAmablP/8to/6cNr1fejt5t238jn/CyI/XYkD3YQw+vhct63+GhNGA/k/+EAAw5NAfM9pmW5pQwsCA7sMAgMH/9mCqzPbvZ2xLJ+9HffjvGPrrE/NH7DhiVif6JY+5bVvSiKHlzWfd+Ya98iQaE0cxdNUjsGQE6gffc+d39k0AGLjs/tQ88U8xcvtvEbW73VhbdmRuj1JUKu+dS7hvv/02rrrqKlx55ZW48sor8d///d9Fl8FLOUR1JkxPgCSiYITpEi47JkR1xjml6zeOiPqeMOU9OyZE9UZr/yMkDQB8ABpRnxOivGfHhKjO2Aqwbf9xRNT3hCnv2TEhqjO8x4So/oQp79kxIaozWvu/TbTWGigiCkaY8p4dE6I6o5SG8jmlm3oCZO1cayaiYIQp79kxIaozYTpyIqJghCnv2TEhqjO2rf1vgvMZTkThFqa8r0rHZO7cuXjrrbcwcOBAAMDpp5+ORx55pBqhENUdjQI3wVU0EiKqlDDlfVU6Ju+88w4ef/xxnHXWWdVYPFFdU0pX5O3CRFQ7wpT3Fe+YHDx4ELt378YjjzyCP/3pTzjjjDPw/e9/H6eeemqlQyGqS7rAuzHC8K4cIipdmPK+4i/x279/Py688ELMnTsXq1evxrhx4/BP//RPsGvtIhdRH6WhobXPp+ZO6hJREMKU9xXvmPz5n/85Hn/8cZx66qkQQuDGG2/EJ598gu3bt1c6FKK6pGznRrjcj9/XCYko3MKU9xXvmLz33nt45ZVXMoZprWGa/IIQUSUoXfhDRH1PmPK+4h2TRCKBBQsWYP/+/QCAZ555BmPGjMHnP//5SodCVJe00lB2/o+utRaKiAIRpryv+GmK8ePHY8aMGZg6dSps28aoUaPw8MMPQ4jaeeocUV+mlIbyaYhq7e58IgpGmPK+KtdPWltb0draWo1FE9U954a3/OMqHAwRVUSY8p43dhDVGaVSN7zlH1fhYIioIsKU9+yYENWZ1OvP/Y6ceEmVqC8KU96zY0JUZwofOdXYOV0iCkSY8p4dE6I6o5X/Xfi1dnc+EQUjTHlf8a8LE1F12UrBtn0+ZbrYvHPnTpx//vnYsGFDWconosKqkfc9xTMmRPVGFThCKkP71NXVhdtuuw3JZDL4womoOBXO+95gx4SozhR60qMzfMuWLeju7s4ZP3z4cDQ3N5e0vHnz5uG6667Do48+WmqoRBSQYvK+Vgjtd5tuCOzauRPJeDd0+uFsUitoCPdvUyVhyQgAIGLHkTRiEFpDCwGpFZSQEOnV9w4DAENZkNqGEgZsabplecvMxynfKSNmdcIyokgYDW75heJ04jG0lXc5ThmGsmDLE/1KUyUhtQ1bmO5wbyx+cTrlOH97f0btLsTNRne5AKAhIKChhETEjkNqG3Gz0R3vrT9vfH7xeJfn1LeAhtAqIy7vtsm3DlpI3/HZdZevrJPVVyn8ynfGaaSWEbW7YMloRj35zRuzOnOmjUZj+Nxpp5Uc333LjmLnvvwvxzhthIG7pw7GVVddhY0bN+aMb2trw8yZMzOGrV27FjfddFPOtDNmzMDAgQOxefNm3H///bjkkkvQ3t6O8847r+SYvT7ZuQOJeDwjzzLqxe5GwmjI+D3f/g7kz3tDW24eOdM7OVrMPmIoCw3Jz5A0+2XkPZC5j2XnvRbCt31xhhvKghJGRhlSp7als87Z7Uu+mLPXx/szouKwZDSnfXSmKZT3+eI/WTskPC+Qk9qGJSM57XU+pkpCCcM3106UmaoPUyWQNGI5MfUm74stx9uORezuovJeaI1+yc8QNxsrlve1gmdMiOqMLvAESOdU76JFi3zPmGSbNGlS3k7Mhg0b0N7ejmeeeaaXERNRbxWT97WCHROiOqOUhrLzX1RWKnXUNmbMmF4vZ+XKlTh69Ciuu+46AMD+/ftx5513YtasWfibv/mbXpdPRMUrJu+DtnPnTlx99dV49NFHSzpTyo4JUZ2p1NcGH3jggYy/L7nkEixcuLDXl3KIqHSV/rpwb256Z8eEqM6o9NcG/cYRUd9TTN7Xyk3v7JgQ1ZnCL/Mq37Xm119/vWxlE1FhxeT97NmzA7vpPRaL4ZprrmHHhIhOTmv/R1CH9zt6RFRIMXlfKze9s2NCVGeUrfxvgvMZTkThVkze18pN7+yYENUZrRW0z70kWrNjQtQXVSrvg7jpvSodk48//hg//OEP8dlnn0FKifnz5+Pcc8+tRihEdUfZ2v8mOJ+3jxJRuIUp7yveMenu7sa0adMwb948XH755fjNb36DW265Ba+//jpEAE/dJKLCtC7wtUHeZELUJ1Ur73ty03vFOybr16/H8OHDcfnllwNI3UDz2GOPQWvNjglRBYTp9edEFIww5X3FOybbtm1Dc3Mz7r77bmzcuBEDBgzA7NmzIWV5njxHRJmUrWDb+d+ZwZtfifqmMOV9xXsDlmXhzTffxOTJk/Hcc89h+vTp+O53v4uOjo5Kh0JUl5xTunk/vJRD1CeFKe8r3jEZMWIEzjjjDPcO3UmTJsE0TWzdurXSoRDVJefIKd+n1o6ciCgYYcr7indMvv71r2PPnj14//33AQDvvPMOEokERo8eXelQiOpSmI6ciCgYYcr7it9jMmzYMDzxxBNYuHAhOjs7YRgGfvKTn2DAgAGVDoWoLinbhvK91px/OBGFW5jyvirPMfnqV7+K5cuXV2PRRHVPa/+78GvswImIAhKmvOeTX4nqjNYKyudJj3zyK1HfFKa8Z8eEqM4o24aywnFKl4iCEaa8Z8eEqM5oVeCUbm0dOBFRQMKU9+yYENUZpWz/By2p2jpyIqJghCnv2TEhqjOprwj6XGuusUdTE1EwwpT37JgQ1Rmt/L82qGvsyImIghGmvGfHhKjOhOllXkQUjDDlfag7JpFIBAIaGqm3EksoaAj3b0MbkCK1iqYSEDLqTi+hoCAhkNog3mHOvEIraCFhC9Mty1tmPt54DG3ANDWEjAAy5pZfKE4nHqnNvMtxyjC0Adsz3tAGpLZhiBPDvbH4xemU4/zt/RmxAW3E3OU69SSgoSBhKgGpFbQRc8d768/Oij9fPN7lSW1DCSNVM1plxOXdNvnWQQvpOz677vKVdbL6KoVf+c44ZxkRG5DSzKgnv3kjhs6ZNhKJ9Ci+z5/az/dJj58/tV+PyqwkZ729+ZNRLwqAjGX8nm9/d8rIznupTTePnOmdHC1mHzG0AdOwASOWkfdAbvsgs3LVr33xtj9KGJll6PTRrjyRq972JV/M2evj/WkqASkjOe2jM83J8j47/pO1Q84yAEBoBSnMnPbar57z5X02pz4MJSFkNCem3uR9seV42zHTFkXlvYCGaVjQRqzu8l7oWnsWLREREdWtir8rh4iIiMgPOyZERERUM9gxISIioprBjgkRERHVDHZMiIiIqGawY0JEREQ1gx0TIiIiqhnsmBAREVHNYMeEqI5YxzurHQIRVVjY8j7UT37dt3cvkskkDG0BQMYjzB3Zj2c2VQJW+rHEXoa2oIQBUyWQTD/a2ZleCwmhFZQ0T/r443y8j23Ot3y/Rxn7DTe0BVuYiKh4RqzOspzHuXsfuy+1nfUIe8t9/Hv247Kd8vMt07ucfHXhXb53Hu/0J9sGANx48z3y2Tu/95HZhTixOPFlP/o+X9wRFQcAJD2PFc9XN85jtf32jezHfuerq+zH5WcvJ/vVCwoSkUgEI1paCq53Ph/ceDuOb9qad1z/saNxzv/zo5LLrCRv3gut8u5L2ftFzOpE3GzM2Z8MlYQWEhG7C93mQHf+mN0FWxgwlAVbmnmXUYizbYFUu9RgdaDbHJAzjZOf3v0i3z4GAFG7GwmjAQ3WZ4ibA3LmcX9XFiwjmnoEelbeN1gdSBoNMFUScaNfxvLy7XOmSsBOP54eKJy7pp1A3Gx058luSyIqnlFWvmU465j5moBUGY2Jo+iMDnaHOW2F3ysrnDqzpek+tj8pYzC0BUNZSBgN6VdvxKFEal5LRhGzOmGoJLqig3L+H3i3nVSW737h/b+THZsTu7d+/NrezFcYpNulOsj7UL8rJ5lMIpGIw1Dpjom0IbSGFp7GX6d3kPQwbceRNHL7YoZK7ywqjoRxYri241Ai9T4KW0bcHbgUMt1AKSHzLj875pMNN1USlowAdndGrM6yhFawpQ2pFZSQEDrdMZF2RhlOQjjr5Cwv1Rhnvm0ye5hTdr51dZbvxpk1/cm2AZBKQktGMurA+d07v0j3q/PVU746c+JzOiZS2xnDbWmfWFe7GwCQME7En69uhNYZ9ZjNiTvfvpm9rfyW453Xr+6L1bV9O45v3pR3nIzV/klUJ+9NlYTQKu++lL1fGMkuJJSRsz+5Bx5WFxLRE/9kpNUFW5jQ6f0m3zIKkVpBahsaIpULiS4kopGcaZz89O4X3rzJWCerCwlTpMqKRHLmAeB23JPGiX903rLMRBeSJqBVAgkz/Y8/va9lL1doDa3isOTJc9dUScCOI6EMaDs1T05bYndnlJVvGc46evdxJ65odycSaHBjdjsmQvjmhLC6YMmo23FLGKnylEoiYaZyEnaXW1bS0DCSXdB2Agkdy/l/4N12hkr67hfe/zvZsTltr7d+nH0g7zZw9uE8bU8pwpT3oe6YEFHphCkgIj4vGzN7/xJDIqo9Ycp7dkyI6owwBKRPQySM2mqgiCgYYcp7dkyI6ozRIGD0y3/q1miorQaKiIIRprxnx4SozggpfI+QhKytBoqIghGmvGfHhKjOSFPCiOQ/cpJmbd0ER0TBCFPes2NCVGdSR04+3yCqsSMnIgpGmPK+Kh2TdevWYdGiRYjH4xg5ciQefPBBNDc3VyMUoroTpiMnIgpGmPK+4tEcPnwYs2fPRnt7O1555RVcfPHFmDt3bqXDIKpb0hAFP0TU94Qp7yveMVm/fj3Gjh2LsWPHAgBuuOEGvPXWWzhw4EClQyGqS0Kmvh6Y91NbB05EFJAw5X3Fw9m7dy9Gjhzp/h2NRjFkyBDs2bOn0qEQ1SVhGpA+H2HmecxlkT744AOcffbZ2Lt3b4DRElEQypX35VDxe0y01hB5Hh8uZY112Yj6KCn9T93KHt4Ed+jQIdxzzz1IJpO9CY2IyqQceV8uFe+YjBo1Cr/73e/cvxOJBI4cOYJRo0ZVOhSiuiQNCelzhCTTd+1v2bIF3d3dOeOHDx+ec6O6ZVm49dZbcfvtt2PatGnBB0xEvVZM3teKindMJk6ciPvuuw+bN2/GWWedhRUrVuCcc85BU1NTpUMhqk9S+H89MD189uzZ2LhxY87otrY2zJw5M2NYe3s7xo8fj4kTJwYeKhEFpIi8rxUV75g0NTVh8eLFmDNnDuLxOIYOHYr29vZKh0FUt4o5pbto0SLfMyZeL774Inbs2MFv1hHVOF7KOYkJEyZg1apV1Vg0Ud0r5pTumDFjiipr5cqV2LdvHyZPnuwOmz59Ou69916cd955vY6ViILBSzlEVLsCPKW7bNmyjL/Hjh2LpUuXoqWlpafREVE58FIOEdWq1JGTzxMga+zIiYiCUY68f/bZZ/Gzn/0MQgj069cPd911F8aNG9ebMAGwY0JUd4QUED5fz+/tOzM2bdrUq/mJqDyCzvt3330XS5YswcqVK9HU1IQ33ngDM2bMwLp16/I+EqQU7JgQ1ZkwvTODiIJRTN6X8piAwYMHY8GCBe43aseNG4dDhw6hq6sLjY2NvYqVHROiOiNEgSOnXh7pEFFtKibvS3lMwJgxY9yb5JVSWLhwIS666KJed0oAdkyI6o4ocBNcrb3+nIiCUUzeF/uYAK+Ojg7ccccdOHz4MJYsWRJIrOyYENUZYRi+XxsURm29M4OIglFM3hf7mADHtm3bcNNNN2HcuHFYvHgxYrFYr+MEqvASvyBJKACALU3Y0oTUCjp9SkponZpG29BCQGgNoTWUMNLDFUyVdKezpQlDW0gYDZBauctQwoAtTShhQAnpTu8sw1RJtzxnvuxplJBQ6dc3Jo1YxngA0ELAUFbu+mkbETsOoTWkVojYcQCAJSOpsmTuTqAhYEvT/d1USURUHLY0IbSGoSxIrWDJCLQQblxOHM4655Sb9fpJZ77suJWQ7vItGcmoS2f6pJF/57WlCS0EpLbdddR5Li1453emz+ZsF4dTnhO3s+7e4bY0EbM63fVPGA1IGA0wVdKdz9nPpFbudsyuRy9nGqF1zrpIbbt1pYTMWU6+Mpxpsuu1FEKeOHrK/fS42IqJ2V0QWsOSkZx8curF0Jab9wDc3DW0hX7JDgCp7WbJKKS20Rkd7OYXACSMfkgaMcTNRiSNGAxlufu6oU6UYapkRt67y1dJWDLibsfO6KCcvFdCwlBWzn5hyQhiVqfbPjVYxxGx40gY/dJlDc47j7Mvx81GGCqJmN0JS0bcvDeUhc7oIFgygm6zvzuvE6MtMo9TBTSSMgaNE8vyy11LRtAVGeBOE1Hx9DqmcqnBOo6E0ZCTJ1oId7ihLMTNRrduALhtFQB0NGQ+HdzZxt7pnW3obKu42QhbmkgYDe76WTLiLkcLkaovbcGSUQBAV2QAOhqaYKpERp1E7W63XCWkb10AgEj/L0q1JzI9LLX9TZVw47aliX7JjpztKbRG1O6GqRLu/ypbmnn/TxQr6LzfvXs3Wltbce2116K9vT2wTgnAMyZEdUdIw/fMiJA8Y0LUFwWd90uXLsWxY8ewevVqrF692h2+ZMkSjBgxosdxAuyYENUd3mNCVH+Czvt58+Zh3rx5vQ0rL3ZMiOqMKPBoasEHrBH1SWHKe3ZMiOqMkLLAg5Zqq4EiomCEKe/ZMSGqM0L4n7rlY0yI+qYw5T07JkR1RpgGhN8pXZ/hRBRuYcp7dkyI6oyA8H3Cq0CNHToRUSDClPfsmBDVGWEWuAmO78oh6pPClPfsmBDVGyEBv5vdwvCENSIqXYjyvqrR/PjHP8Zdd91VzRCI6k7Yn/xKRKULU95XJZxdu3bhn//5n7Fs2bJqLJ6orjlPgMz74ZNfifqkMOV9VS7l/OIXv8CECRNw5pln4sCBA9UIgahupY6Q/J5nUFs3wRFRMMKU91XpmNx2220AgJ/85CfVWDxRfSvwzgzU2JETEQUkRHnPm1+J6gzflUNUf8KU9+yYENUZIWWBt4zW2F1wRBSIMOU9OyZE9UYW+NpgjTVQRBSQEOU9OyZEdUaIAqd0a+2lGUQUiDDlfVU7JjNnzqzm4onqkyEBv5vgauz150QUkBDlPc+YENUZISSEzxOV/IYTUbiFKe/ZMSGqN4b0f5tojR05EVFAQpT37JgQ1RshUh+/cUTU94Qo79kxIao3QhR4mVdtNVBEFJAQ5T07JkR1RhiG701wvk+GJKJQC1Pes2NCVG+E8H/NeQ+OnJ599ln87Gc/gxAC/fr1w1133YVx48b1MkgiClTAeV9O7JgQ1RkhCxw5lfjOjHfffRdLlizBypUr0dTUhDfeeAMzZszAunXrau7ZCET1LMi8L7fauhW3RAoSQmtIrVJ/C4mIHQcAaCFgKAu2MN2/tRCQ2nantWQEAhoROw5DWSfKTfcqhdaI2t3p+VPDpLYRszrd3y0ZgdQKGgJKSEitELW7ILR2y/OWHbM6oYVwxzvx29JMl6nc4bY0oYQBLVJlJ41YxvqbKpFTJ9rzz0ALAUtGYMloKkYh3OVE7HhGjNllGMpy19NUSYh0XNmc8kyVdIcJrd2/nRid+W1pusuVWrnr6/xtqiSktvPGZmjLnSY1ncqou6jdDaFT29OSEbdMb/nZMTj7iyNuNmbUodDaLStix2GqJJSQEFq5+4Kpku42dtbbWZahrYz9zjuNEkbGtM5ysjnzO9szNW8vUleKwh8AW7ZswYcffpjz2b9/f0ZRgwcPxoIFC9DU1AQAGDduHA4dOoSurq6ex3cScaMfTJXw5KZwf1dCosE67u53zrZ08siSEXRFBgBI7S+GtmDaqWmd/DJVEgO6D0FoDcOzH8es4zCUBaltdEUGIGLHIbXt5n1j4tP0vqFhy0jGvtWYOAYtRMYw777r5bQJloxAC4Fusz+SRsxdl37JjozpvWXa0kzPG0XC6AdTJd28F9CIWZ0ZOeGlhUDM6nTLj9jdaLCOZ+SDUz9OnE69O/nk5IGzvzu53G32d+NMbZ8TZcSsTjQmjkFAZ7SVqe0m3Zj7JTvQYB1Pt2XSzYWBXQchtEZj4igsGc1ZrxP/Hww3zsbEsYx66Db7Z+Ro1O5G0ojB0Kl2MGp3I2E0uPXjxOKsv/PTIaAhtHZzPDVNKicSRr+MaZ390dnmzrZIGA3QQrr/qwDk3V+KVkTe1wqeMSGqN0L6v0003eGZPXs2Nm7cmDO6ra0t48GIY8aMwZgxYwAASiksXLgQF110ERobG4OPm4h6roi8rxXsmBDVmyLembFo0SJ0d3fnjB4+fHje2To6OnDHHXfg8OHDWLJkSWChElFAyviunB//+Mc4cOAA7r///l6V42DHhKjeFHETnHMWpBjbtm3DTTfdhHHjxmHx4sWIxWInn4mIKqsMN7/u2rULDzzwANavX49vfvObvQguEzsmRPWmwE1wvqd6fezevRutra2YPn06pk+fHkBwRFQWReT9li1bfM+UNjc35wz/xS9+gQkTJuDMM8/EgQMHAguVHROieiNQ4AmQpRW1dOlSHDt2DKtXr8bq1avd4UuWLMGIESN6HiMRBauIvC/23jLHbbfdBgD4yU9+ElSUANgxIao/AZ4xmTdvHubNmxdAUERUVkXkfan3lpULOyZE9SZED1oiooAEfG9ZObFjQlRvAjxjQkQhEaK8Z8eEqN4IWeDIqbaeZ0BEAQlR3lelY8J3axBVUYA3vxJRSJQx7/PdGNsbFe+Y8N0aRNWlpQEdklO6RBSMMOV9xc/fVOPdGkTk4dwEl/fDgwOiPilEeV/xMyZ8twZRdWlpQPsdIdXYkRMRBSNMeV+1m1/5bg2iKuHXhYnqT4jyviq34m7btg3XXHMNBgwYgKeffhqDBg2qRhhEdUqkG6k8H979StRHhSfvK37GhO/WIKoyw/8mOOF3cxwRhVuI8r7iHRO+W4OoykJ0SpeIAhKivK94x4Tv1iCqLi38b4LToraOnIgoGGHKez75lajOaCGgfY6cdI0dORFRMMKU9+yYENUbafh/PbDGvjZIRAEJUd6X3DHZtGkTFi1ahO3bt0MplTHutddeCywwIioPDf8jJF3ZUIioQsKU9yV3TObPn4/m5mbMmjULpskTLkShE6KXeRFRQEKU9yX3LD7++GM8/fTTaGhoKEc8RFRmWkgon5vdRI01UEQUjDDlfcnRjB49Gvv27StHLERUCb7vyyhwREVE4RaivC/5jMnEiRPxj//4j/jmN7+JoUOHZoybOnVqYIERUXkoKaF8bnYTsrYaKCIKRpjyvuSOybvvvovTTjsNH3zwQcZwIURVOiZaCJh2AlpGoYVA0ohB6NStPLY8sXqmSsKSESSNGABAagWhFWxpQstoepoEpFZQQro/uyIDYCjLLUsLibjZCJme1xsHAKj0+MwYJYTW0ELkjHPmMVUStjDd2KS2YYlIxjKcmBy2jLjDNQS0EG6sTh1oIdx5DGVBCSO1POiMG6Gc+JzybGm65TjzeGPwTg8Aloy4dayFgCUi6XIVhNYZ6xFRcSSMBrf+nbhEej0sI5ZaD5G5e1rp9fVuHy+hlbsPOOvkncYbtxYCQmt32mxOPRragkJq/b3TKmFAC5HaTum4TJWE1DaAiLtcZ5z3a3qWjGTElr0e+QhoCK0hoN1t3XPOY6h9xoWALSOIWZ2III6kEUvvT6lt2232d6frl+zIyHtTJQGktoEtTAhoWEbU3XcBwBYmjvUbjgbrOOJGKl+VMBCPNiJix92yvG2JEhLHY0Pc/UYqOyPvLSOas79598eo3e3mQNKIoSsywJ0uancjYZy4dO787sSSNGKIWZ1IGg3ptiSBhNEAjVTu90t2QAmJhNEPBpJ580dojYiKu+1Tqj6ibt56Y3DqydAWEkZDxjhbmpBawbTikEY/928NT9siTFgy4mm3UrnlDPO2XQDcmLoiA2CqZM7+r2QqFzujgz37x4m2w2lfnbyL2HF0RnNfg+LEmqofO6OuHd2RAVBCImZ1ZrTlEasrY9oTOX6iIxA3GzPa+Wz52gGhlVtvxbQThYUn70vumDzzzDPliIOIKkQLWeB5BrV15EREwQhT3vfoazW//vWvsXLlSuzZswfDhg3DlClTMHny5IBDI6JyKHQTnKyxBoqIghGmvC+5Y7J8+XIsXrwYf//3f4/Pfe5z2LFjBx588EEcP34cra2t5YiRiIIkCpzSrbEnQBJRQEKU9yV3TJ566ik88cQTGDdunDvsa1/7Gm6//XZ2TIhCQBU4cur9dWwiqkVhyvuSOyb79+/H2WefnTHs7LPPxuHDhwMLiojKR6PAtebSnyBARCEQprwvOZo/+7M/w0svvZQx7KWXXsLo0aMDC4qIykcLI/1Nq9xPrb1llIiCEaa8L/mMyS233ILvfOc7WLVqFU499VTs2rUL77//Pp544olyxEdEAdOiwDszautSMxEFJEx5X/IZk/Hjx2PVqlU499xzIYTA+PHjsXr1apx//vnliI+IApZ6Gor/h4j6njDlfclnTK699losW7YMN998c48XunLlSjz11FMAgCFDhuDee+/FF77whR6XR0TFc07f+o3riXXr1mHRokWIx+MYOXIkHnzwQTQ3N/cmTCIKUJjyvuQzJvv27YNSqscL3Lp1Kx566CE89dRTeOGFF3DZZZdh/vz5PS6PiEokhPuwpexPT742ePjwYcyePRvt7e145ZVXcPHFF2Pu3LllCJyIeixEed+jd+Vce+21uPjii9Hc3AzhWaFiHkk/evRorF27FpFIBJZlYffu3RgyZEipYRBRD6Uese9z5ITSj5zWr1+PsWPHYuzYsQCAG264Ae3t7Thw4ACGDx/eq1iJKBhhyvuSOya7du1Cc3MzPvzwQ3z44Yfu8FLelROJRLBhwwZ873vfQ1dXF5YuXVpqGETUQxrwvaas0z+3bNmC7u7unPHDhw/POVW7d+9ejBw50v07Go1iyJAh2LNnDzsmRDUiTHlftXflnHfeeXjzzTfx6quv4rvf/S5ee+01DBqU+2IlIgqWhoTyuYrrPM9g9uzZ2LhxY874trY2zJw5M3MerTPOnDpkjb2xlKiehSnvS+6Y/OpXv/IdV8z7cnbt2oWdO3figgsuAABceumlmD9/Pnbs2JHz4DYiCp6G9H2gkjN80aJFvkdO2UaNGoXf/e537t+JRAJHjhzBqFGjAoqYiHorTHlfcsck+7LLkSNHcPjwYUyYMKGojsnRo0cxa9YsPP/882hpacHatWshpcSYMWNKDYWIeqCYU7ql5OPEiRNx3333YfPmzTjrrLOwYsUKnHPOOWhqaup9sEQUiDDlfckdkxdeeCFn2M9//nP84Q9/KGr+L33pS5gzZw6+853vQEqJQYMG4cknn0S/fv1KDYWIekAVOKXrN7yQpqYmLF68GHPmzEE8HsfQoUPR3t7e2zCJKEBhyvuSOyb5XH/99fjLv/xL/OAHPyhq+ilTpmDKlClBLJqISlbogUo9e9DShAkTsGrVqp6HRERlFp68D6RjsmbNGvTv3z+IooiozBQElPY7cqqtJ0ASUTDClPcld0z+4i/+IuNOXMuyYNs25syZE2hgRFQehR5BXWuPpiaiYIQp70vumGS/rE9Kic9//vN8/DRRSISpgSKiYIQp70vumDgv6zty5Ah27dqFL33pS7AsK/DAiKg8lJaw/U7p+gwnonALU96XHM2xY8fQ1taGCy64AP/wD/+A7du345JLLsGmTZvKER8RBcz52mD+DxH1RWHK+5I7Jg888AD69euHdevWwTRNnHHGGZg8eTLuv//+csRHRAFTWhb8EFHfE6a8L/lSzrp167BmzRo0NjZCCAEpJW6++WZMnDixHPERUdC0gNY+15T9hhNRuIUo70vuJkUikZxH1nZ0dGDAgAGBBVUsUyUAAEkjBp3+ppChrIxxzrB8N/fYMtUv00JACwElDCghYaokNAQidtydTujUyS4lZMbPmNUJJaS7XGc6LyUktBCQWrnDnHidn5aMpKexoYSEJSN5y5FaZcQSseNuLKlhRka5UiuYKnliPaAhtEbCaHDHp37aGcsBgKjd7ZaTPc5bvtCpMr117CzXklFoITLqxVm2Lc30dAkIaNjSdOva2TZe3jK86+ysQ9KzTkLrnNiduGNWp/t79vaK2HGYKuku35IRd5/ILie1zJi77S0ZQVLGcpbpbKMTda1y9lfvOnr3E2eYs384+1JvKC0KHDnVVgOVT4P1GZSQSBgNSBqp+nbqtME67k5nqiTiZmPGNrKF6eaWLVO/WzIKS0bQYB2H1MrNhW6zP7RItQPOcpyfzv7QYB3P2D+8++2JnFZIGA15t7kWAoay3Lic8h3eXHXY0kT/+BEkjZi7LyeNBigh0/tKFP2SHYjaqXa6K5Jqmw1tIW42ZpQVseOp9lEIJIwGCK0xoPswLBnJWJfsGJz1c9pWQ1kQWsNQFqS20RUdlNNWCmgoId24+yWOwtAWEkYDLBl169Jpj711kF2n3m2QNPu59Zqdp975nPYsacRypht8fK+7fCC17QG49esszxnv1KOTq92RgXmmT8CWpud/UhKWjEBA5+R9xI5nzOuU7ewP3vaup8KU9yWv7RVXXIGbb74Z7777LrTW2LJlC+bOnYvLL7+8HPERUcDUST5E1PeEKe9L7pjccsst+OIXv4hp06bhs88+w5QpU9DS0oJbb721HPERUeBSp3TzfXr6BEgiqnXhyfuS7zExDANf+cpXcMopp+DQoUMYMmQIpJR48skn0dbWVo4YiShAqVO3/uOIqO8JU96X3DG5++678dprr+HLX/4yIpEI9uzZU464iKhMwvSgJSIKRpjyvuSOyRtvvIFnn322pNcjE1HtUBqwfW528zuiIqJwC1Pel9wxicViOO2008oRCxFVQOq6sv84Iup7wpT3JV9YuvHGG3HPPfdg69at+PTTTzM+RFT7lBawfT619rVBIgpGmPK+5DMmP/rRj5BIJLBq1Sr3LcNaawgh8NFHHwUeIBEFS6PAkVONXWsmomCEKe9L7pi8/PLL5YiDiCpEaxQ4pVvZWIioMsKU9yV3TE499dTAFv7BBx+gtbUVr776KlpaWgIrl4j8pU7p+o8jor4nTHlfcsckKIcOHcI999yDZDL/I4SJqDxSR04+XxussSMnIgpGmPK+Kk9VsSwLt956K26//fZqLJ6orvndAOd8iKjvCVPeV+WMSXt7O8aPH883EhNVQ4FrzaixIyciCkiI8r7iZ0xefPFF7NixAzfddFOlF01EcO7O9/nU2N35RBSMMOV9xTsmK1euxI4dOzB58mRceeWVAIDp06djw4YNlQ6FqC7ZqvCHiPqeMOV9xS/lLFu2LOPvsWPHYunSpfxWDlHFiFo7c0tEZReevK/at3KIqDoKHSHV2pETEQUjTHlf9Xcdb9q0iWdLiCpI48TDlnI+1Q6OiMqiGnm/YsUKTJ06teT5eMaEqM4oJXyPkFSNHTkRUTAqmfeHDx/GQw89hJdeegnnnntuyfNX/YwJEVWW71FToa8TElGoVTLvV69ejc997nO44447ejQ/z5gQ1RmtARWSd2YQUTCKyfstW7agu7s7Z/zw4cPR3NycMWzt2rV5H/sxY8YMtLW1AQCee+65HsXKjglRnVFa+J669Wu4emrNmjV47LHHoJSClBKzZs3CpEmTgl0IEZ1UMXk/e/ZsbNy4MWd8W1sbZs6cmTFs0qRJeacNAjsmRHVGFThyCrJj8sknn2DevHlYvnw5Tj/9dHz00UdobW3F66+/jlNOOSW4BRHRSRWT94sWLfI9Y1JJ7JgQ1Rmt/G920+nhpZzS9SOlxIIFC3D66acDAM4880wIIXDo0CF2TIgqrJi8HzNmTOUCKoAdE6I6o1DgyCn9s5RTusVcawaAhx9+GKeddhpGjx7d09CJqIeKyftaEepv5VgyimFHtmDo8/8KAGh581loITHgqYVo2v8R+j/5QwCALU3YMtUHM5SFEW88jZbf/xoAELHjGPmnt9C08mF3GktG0Jj4FE37NiJqd2Pw8b3QIvUugZFv/zIjhrjZiJFb158oX1sZ0zX96ifutEpIDOg+7P49cvMbqbj/89/cYUNeXpoatvNtDD/4h5x1VkKi6eg29++o1QkA0EKg5ZN30LJ1nTtOC4FjN38HTQc2ZczfP34k4+/hhzbDliYGdB/GqA//HQCwcew3kDAaUvW34FYM7DqIwcf35o1HC4Gmo9vcOmg69icMW7MUw377S5xybAcMZUELgaidOgJv/vcn3flH7Pgv2DICJU7sik5dA8DIretzhjvbe8Tu9zD4+F60fPSqG4s3JgBIfP8mjEpv65Hbf4tTfr4IA499gpFb18NQFoZ8tgOndOx2l5E0YrBkxK2jhn+9GwAQW/pARiyDug6k1uXV/xfNO99BzLMdRm75TwBA//gRNCaOIWnE0LJrQ6quD3zkxjtkxWIY2kK/R+dj6KdbU8OeewQDO/en1uMH3wOQ2qeGfroVww/+AcNfXoKY1YmBXQfdfa1Uxdydv2jRIjz33HM5n+uvvz6nPOdac/bH6ZQkEgnMnz8fa9aswaOPPgohevdejqTRDwAw4qPXAADN+z+EqRIY9eG/o9vs725vy7Nf2dJEg3UcxkPfx8Cug2jZ+XZq3n9/0p2m2+yPhmQHhu37H7Ss/xlGbXoNhrLQL3EMI7euz8h9S0YwsOsgus3+MJQFS0YAnMh7677ZGLH39wCQsW8DwOEZ3wGQaq+c2Iat/ak7fuDTCzGg+3BGuwMgYz+NdR8FkGp/TvnsE3cZWgi0bPwPvHP29dAP/8CdPm42ujECwIjtv03XZQwx67hbfsuGVehoaAIADPlsJxoTxzD8wEe+28KWJpJGDLY0oYXAKS88jkGrHoWpEjnT9nv2Ybf9a9r5Hmwj6sakhUhtuw9eBAAMf+lxdz637f14bUYdDd/2W7R88s6JdkqabnkDn14Ic9Gc1HIfnY+R7z6PoVtS6+zdXi2fvAMAONq/Bd1mf7f8UekclVphQPdhDOw6CEtG3DbglI7dGHb4Y4z444n2dvhLjyNuNsJUSQw/tBlJI+bGNfLtX2JQevuN+OM6DOzcj5Fb/hMj//RWqrxP/4TkovkAgGEvPgbgxH4z6ve/xqgPXsSwI1t8t0MxqvFtvClTpuCpp54qeT6eMSGqM8oGbNt/HBDcKd2DBw+ira0N/fv3x/LlyzF48OBAyiWi0hST97Ui1GdMiKh0lXoCZEdHB7797W/j7LPPxpNPPslOCVEVhemJzzxjQlRnlNIneQJkMK9AX758ObZt24ZoNIqrrrrKHX7ffffhy1/+ciDLIKLiVCrvg8COCVGdKXRNOchrzdOmTcO0adOCK5CIeqxSeR8EdkyI6oyt/K8119pbRokoGGHKe3ZMiOoMH0lPVH/ClPfsmBDVmTCd0iWiYIQp79kxIaozSmn/rw3W2E1wRBSMMOU9OyZEdSZMR05EFIww5X1VOiZz587FW2+9hYEDBwIATj/9dDzyyCPVCIWo7tgFjpxq7SY4IgpGmPK+Kh2Td955B48//jjOOuusaiyeqL4VegR1jR05EVFAQpT3Fe+YHDx4ELt378YjjzyCP/3pTzjjjDPw/e9/H6eeemqlQyGqS7Zd4Mipxh5NTUTBCFPeV/yR9Pv378eFF16IuXPnYvXq1Rg3bhz+6Z/+CXat1QxRH6WhobXPp9YOnYgoEGHK+4p3TP78z/8cjz/+OE499VQIIXDjjTfik08+wfbt2ysdClFd0ip1F36+j66xa81EFIww5X3FOybvvfceXnnllYxhWmuYJr8gRFQJtkrfCJf3U+3oiKgcwpT3Fe+YJBIJLFiwAPv37wcAPPPMMxgzZgw+//nPVzoUovqkNbTK/6m57w0SUTBClPcVP00xfvx4zJgxA1OnToVt2xg1ahQefvhhCFE7D3ch6stSN8Hlb4h4qxdR3xSmvK/K9ZPW1la0trZWY9FEdc+54S3/uAoHQ0QVEaa8540dRPVGF7jZrcYaKCIKSIjynh0TojqTutktfwtlq4rfdkZEFRCmvGfHhKjOaK2hfN5/7neql4jCLUx5z44JUZ1RtobyuQnObzgRhVuY8p4dE6I6o7SG8jlC8htOROEWprxnx4SozmhbQ1n5rzVrm1/bJ+qLwpT37JgQ1RmlUx+/cUTU94Qp74WutbteSvDJzh1IxruhROqOYqkVNAR0+mFtUbsbCaMh43ehNbQQkFpBCQmhNQQ0lJAwlAVbpvpqpkpCaAUlDNjShKmSsGTEncYpJ5tTrlNG1OqEZcSQMBrcMpx5nZ/OcGf+1E/bHeblLN8bvxYChrJgaAsA3HXOrg8v73zOOmePj9pdiJuNGcMcWghE7DikthE3GyG1gtDKLctbD9nLzMfZDifqMbX+Tjn54nTikTr1dKB8473Lc+rWG2ex8ZUi37o7DGVBCQMCqfq1ZDRjO/utZ4N1HAmjIWNcNBrD5047reT47n/qGHbuy/9EpdNGGLjr/xpUcpmVtGfHNnQnLHdbmSoJJQy3zhsTx9AZTa1D//gRHI8Ncef15qCT9xE7jqQRAwBE7LibR91mf7csp/3wtile3m0etbvRv/MAEtEBOB4bgogdhy0jEOn9TwkjHUvCXa7UClLbMFUC3Wb/jLKF1u60TvzO8qJ2N0w7DqlsdDQ0udNqId3l5NsXs9sgb7vSv/swPus3zJ02Ysdhyahb3/3jRyCVjc/6DXPbyaQRg9QKhkq665S9rHyidjds4bQZttueOPF420avfO2d3/IidhxaSDfO7O2VvX6F6slvvFNO9ro7TJWELUxIbaNf4hiSZkNG2+rdr7z/YwZ17Uci0h9dkQEnpg1B3q9ZswaPPfYYlFKQUmLWrFmYNGlS0fPzjAlRnVG2gu3zcgxVY6d0iSgYlcr7Tz75BPPmzcPy5ctx+umn46OPPkJraytef/11nHLKKUWVUVtfXiaisgvT68+JKBiVynspJRYsWIDTTz8dAHDmmWdCCIFDhw4VXQbPmBDVGWX53wSnLB6rEPVFxeT9li1b0N3dnTN++PDhaG5uzhi2du1a3HTTTTnTzpgxA21tbe7fDz/8ME477TSMHj266FjZMSGqMxr+XxvkGROivqmYvJ89ezY2btyYM76trQ0zZ87MGDZp0qS80zoSiQTuu+8+vPXWW1i2bFlJL+plx4SozihbQflea/Z7mQYRhVkxeb9o0SLfMyalOHjwINra2tC/f38sX74cgwcPLml+dkyI6ozWKPBo6goHQ0QVUUzejxkzptfL6ejowLe//W1ceOGFuPPOOyFl6ZeHeUGZqM5opQt+ymHnzp04//zzsWHDhrKUT0SFVSrvly9fjm3btuHtt9/GVVddhSuvvBJXXnkl/vu//7voMnjGhKjOKGVD2fmfZ6DK8JbRrq4u3HbbbUgmk4GXTUTFqVTeT5s2DdOmTetVGTxjQlRntEqd0s330WW4xWTevHm47rrrMGTIkJNPTERlUem8742qnDH5+OOP8cMf/hCfffYZpJSYP38+zj333GqEQlR3lCpwE5xKDQ/qa4MDBw5ELBbDNddcg0cffTSA6ImoJ4rJ+1pR8Y5Jd3c3pk2bhnnz5uHyyy/Hb37zG9xyyy14/fXXS/o6ERH1TKFrys7wIL42uGHDBrS3t+OZZ54JIGoi6o1i8r5WVLxjsn79egwfPhyXX345gFSj9thjj0FrzY4JUQVoraF8zt06r84K4muDK1euxNGjR3HdddcBAPbv348777wTs2bNwt/8zd/0IHIi6qli8r5WVLxjsm3bNjQ3N+Puu+/Gxo0bMWDAAMyePbtHXykiotIpW/k/ATJ9qjeIrw0+8MADGX9fcsklWLhwIc4777xel01EpSkm72tFxXsDlmXhzTffxOTJk/Hcc89h+vTp+O53v4uOjo5Kh0JUl3zfl5H+EFHfE6a8r/gZkxEjRuCMM85wj5omTZoE0zSxdetWjBs3rtLhENUdZSvYls/XBst45PT666+XrWwiKqxaed8TFT9j8vWvfx179uzB+++/DwB45513kEgkSnrBDxH1nNaq4IeI+p4w5X3Fz5gMGzYMTzzxBBYuXIjOzk4YhoGf/OQnGDBgQKVDIapLyi7wllG7tk7pElEwwpT3VXmOyVe/+lUsX768GosmqntaqwJ359fWkRMRBSNMec9H0hPVmTA9z4CIghGmvGfHhKjOpL42GI6b4IgoGGHKe3ZMiOpNoZvdauyULhEFJER5z44JUZ2xC3xt0K6xIyciCkaY8p4dE6I6o3WBa8019qAlIgpGmPKeHROiehOiU7pEFJAQ5X2oOyaRSAQCGir9nDgJBQ0BjdTLACMKgIxl/C6goSEgoaAg01OnyjC0AVukqsTQBoRW0ELCFiYMbUCmf9rCdMvJ5pTrlGGaGkJGARlzy3DmdX46w535AUBo5Q7zcpbvjd8tQ6enT69zdn14eeez8yxHQCNiA9qIZQxzaAiYSkBqBW3EIKEgtHLL8tZD9jLzcbaD+3d6/Z1y8sXpTC916vRkvvHe5Xnr1m+d/eIrRb51dxjagBKGW79CRjK2s996moYCjGjGuEgk0qP4ThvZ4Huz22kjG3pUZiWZkSiiwnC3laENaCHdOjdlP0TN1H5rikZEIyf2YW8OOnlvKpHKUQCmEjDS+5MyYm5ZTvvhbVO8vNs8ogBDD4AZSS3bVAKGNCHSjb8SRioWJd3lOvljKgPKyCxfQLvTOvE7y4uoVDlSKUSjMXdaLVIfAHn3xXxtkNOumGhENHoiBlMJSBlx69sUjZDKRjQac9tJIaOQUJDKcNcpe1n5RBRgpOtDaOW2J0483rbRK19757c8UwloId04s7dX9voVqie/8U452evujdcQBqS2YcpGwIhltK3e/cr7P8bQ/WGaJ/ZnoD7yXuhaO4dDREREdYuv9CUiIqKawY4JERER1Qx2TIiIiKhmsGNCRERENYMdEyIiIqoZ7JgQERFRzWDHhIiIiGoGOyZERERUM9gxISIioprBjgkRERHVDHZMiIiIqGaErmOybt06XHnllbjiiiswdepU7N+/v9oh1Ywf//jHuOuuu9y/n3/+eXzjG9/AX//1X2PWrFno6Ohwxy1duhRXXHEFLrvsMtx7771IJpPVCLkqnn32WXzrW9/C3/7t3+L666/H73//ewD+daKUwoMPPoi//uu/xqWXXop//dd/rbnXhPd1zHt/zPviMO9DRIfIoUOH9Pnnn6//8Ic/aK21fvrpp/W0adOqHFX17dy5U8+YMUOPGzdO33nnnVprrTdv3qwvuOACvXfvXq211g888ICeN2+e1lrr3/zmN/qKK67Qx44d05Zl6Ztvvlk/8cQTVYu/kt555x190UUX6UOHDmmttX799df1xIkTC9bJT3/6U/3tb39bx+Nx3dXVpW+44Qb94osvVnM16grzPj/mffGY9+ESqjMm69evx9ixYzF27FgAwA033IC33noLBw4cqHJk1fWLX/wCEyZMwNSpU91hr776KiZNmoQRI0YAAFpbW/HCCy9AKYX/+I//wDe+8Q0MHDgQhmHg7/7u77Bq1apqhV9RgwcPxoIFC9DU1AQAGDduHA4dOlSwTv7jP/4DV199NaLRKBoaGnDNNdfUTX3VAuZ9fsz74jHvwyVUHZO9e/di5MiR7t/RaBRDhgzBnj17qhhV9d12221obW2FYRjusD179mTUVUtLCzo7O/Hpp5/mHVcvdThmzBhceOGFAFKnahcuXIiLLrqoYJ3s2bMHLS0tecdR+THv82PeF495Hy6h6phorSGEyBkuZahWo2Ly1ZUzLHtcvmn7so6ODrS1teGTTz7Bgw8+CMC/TvLtd9znKod5XxrmvT/mfTiEqpZHjRqFffv2uX8nEgkcOXIEo0aNqmJUtSm7rvbt24f+/ftj8ODBecfVUx1u27YN11xzDQYMGICnn34agwYNKlgnp556as4471EWlRfzvnjMe3/M+/AIVcdk4sSJ2LhxIzZv3gwAWLFiBc455xz3uiGd8Fd/9VdYu3atm1g//elPcemll0JKicsuuwwvvfQSjh07BqUUfv7zn+Pyyy+vcsSVsXv3brS2tuLaa69Fe3s7YrEYABSsk8suuwzPPfccEokEuru7sXLlyrqpr1rAvC8e8z4/5n24mNUOoBRNTU1YvHgx5syZg3g8jqFDh6K9vb3aYdWkM888E3fccQduvPFGJJNJfOELX8C//Mu/AAC+/vWvY8uWLfi7v/s7WJaFr3zlK7jpppuqHHFlLF26FMeOHcPq1auxevVqd/iSJUtw9dVX562T6667Drt27cJVV12FZDKJSy+9FFdffXW1VqHuMO+Lx7zPj3kfLkJrfjGbiIiIakOoLuUQERFR38aOCREREdUMdkyIiIioZrBjQkRERDWDHRMiIiKqGeyYEBERUc1gx4SIiIhqBjsmhF27dmHs2LE4fPhwtUMhogph3lOtYseEiIiIagY7JpThlVdewdVXX43x48fjq1/9Km655RZ0dXVh3759+F//639hy5Yt7rRr167FRRddBKUUjh49irlz5+LCCy/E1772Ndx///2Ix+MAgOeeew7XX389Wltbcf755+O9996r1uoRUR7Me6ol7JiQKx6P44477sD3v/99vPXWW3j++eexYcMGvPjiixgxYgTGjx+PX//61+70q1evxre+9S1IKTFnzhwcP34cL7/8Mp5//nls3rwZDz30kDvt+++/j2nTpuGNN97AuHHjqrF6RJQH855qDTsm5IpGo3jppZfwv//3/8bRo0dx8OBBDBkyxH1T6eTJk/Hiiy8CADo7O/H6669j8uTJOHjwIN544w3ceeedGDhwIJqamnDLLbdgxYoVbtmDBg3CX/3VX6F///4wDKMq60dEuZj3VGtC9XZhKi8hBJ577jmsWLECsVgMX/ziF9Hd3Q3nPY+XX3457r33Xnz44Yf44x//iC984QsYM2YMfv/73wMAvvnNb2aUZ1kWDh48CABobm6u7MoQUVGY91Rr2DEh1+9+9zv86le/wi9/+Uu0tLQAAG644QZ3fGNjIy699FK88sor+OMf/4jJkycDAEaMGAEhBH7zm99gwIABAICuri7s378fQ4cOBZBq/Iio9jDvqdbwUg65tm/fDiklotEoLMvCihUr8MEHHyCZTLrTTJ48GWvWrMF//dd/uUdKI0aMwMSJE7Fw4UJ0dHSgs7MT99xzD26++WY2TEQ1jnlPtYYdE3JNmTIF48aNw6WXXoqvfe1reO2113DllVdi8+bN7jQXXHABurq6cN5556Gpqckd/qMf/Qi2beOKK67ApEmTcPToUTz66KPVWA0iKgHznmqN0M6FRKIiXX/99Zg6dSquuOKKaodCRBXCvKdK4T0mVLSdO3finXfewZ49e3DJJZdUOxwiqgDmPVUaOyZUtIceegi//e1v0d7ejmg0Wu1wiKgCmPdUabyUQ0RERDWDN78SERFRzWDHhIiIiGoGOyZERERUM9gxISIioprBjgkRERHVDHZMiIiIqGawY0JEREQ1gx0TIiIiqhn/P34Owhc5drZvAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -4185,7 +3486,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjEAAAGsCAYAAAAsf/b0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAy0klEQVR4nO3dfXSU9Z3//9fcJOEu0hBqbsiuUBTYQqlYXA1SassE0IAxBiFZz3qWYlkgPStQQMDlJgoqsUpb8GaxKS0eMNyEVBIJNawYKbruwUo1P7dH15vFwJCYZAKGJGSumfn9gZkvEJEkhEw+k+fjnDnHud7zufL5vK9c8cU1VzK2QCAQEAAAgGHsoZ4AAABARxBiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYiRADAACMRIgBAABGIsQA6JDPP/+8U/bj8/l04sSJTtkXgJ6FEANAklRRUaHhw4ertrb2sq997bXXNH/+/E75ugsXLlRJSUm7x/3zP/+z8vLyrvjr/+QnP9H+/fuveD8Auh4hBkC71dXVqbM+scTj8XTKfgD0PIQYAF9r//79ysjI0C233KIf/OAHWrhwoRobG/Xuu+9q9erV+vjjjzVmzBj5fD6dOnVKy5cv1/jx4/XDH/5Q69at09mzZyVJe/bs0f3336+HH35YY8eO1e23364tW7ZIkh555BEdOXJEGzZs0MMPPyyv16uVK1cqOTlZ48aN0+zZs/XZZ59dco7/+7//q3vvvVdjxozRAw88oJMnT0qSJk+erJdeein4utOnT+t73/veN+5Lkv72t7/ppz/9qX74wx9q9OjRysrK0ieffHLZffp8Pm3evFkul0u33HKL5s2bF5xLRUWFvve972nNmjUaO3ZscO0ArhwhBkArbrdbS5cu1bJly/T222/r5Zdf1pEjR1RcXKwxY8YoJydHQ4cO1bvvviuHw6GHHnpIZ86cUUlJiV5++WV9+OGHeuqpp4L7e/vttzVy5Ej913/9l5YsWaInn3xSJ0+e1KpVqzR27FgtXLhQ69at0x//+Ee9//77Ki0tVVlZma699lpt2LDhkvN8/fXXlZOTo7feekuxsbFatGiRJCktLU379u0Lvm7//v367ne/q8GDB3/juhcsWKBbb71VZWVlevPNN9W3b18999xzl93n1q1bVVhYqLy8PL3xxhsaMmSI5s+fH7xa1dzcrN69e+utt97Svffe2+7jAeDrEWIAtBIbG6tXXnlFN998s06dOqXq6mrFxMSosrKy1Wurq6t18OBBrVixQtHR0RowYIAWLlyoXbt2BV8zYMAA/dM//ZOcTqdSU1PlcDi+9sbgqKgoHT9+XAUFBTpx4oTWrVunX//615ecZ1ZWlr773e+qV69eWrx4sd555x253W6lpaXpnXfeCc537969SktLu+y6X3jhBc2aNUvNzc06ceKEvvWtbwX38U373Llzp+bOnavrrrtOUVFRWrRokT799FO9//77wX2npaUpIiJC/fr1u+w8ALSNM9QTAND9REREaM+ePdq1a5eioqI0YsQINTU1fe19MC2/WTR16tQLtluWperqaknnQtH5nE6n/H5/q33dddddamxsVGFhoXJzc5WUlKSlS5dq4sSJXzvPxMTE4H9/+9vfltPp1BdffKHRo0frBz/4gfbt26fJkyfrvffe06ZNmy677vfff1//+q//qlOnTumGG26QZVmy2WySpEGDBl1ynydOnNCaNWv06KOPBvfl9/t1/PhxDRgwQJJ07bXXXvbrA2gfQgyAVkpKSvTHP/5Ru3fvVnx8vCQpMzPza18bFxcnm82m119/PXiVobGxUVVVVa3Cy+V89tlnGjt2rGbOnKn6+npt375dCxYs0DvvvKPIyMhWr6+qqgr+98mTJ2VZlgYNGiTpXCDavXu3bDabJkyYoG9961vf+LUrKyu1ePFi/eEPf9DNN98sSXr66af17rvvBl9zqX3GxcVpxYoVuv3224Ov/fjjj5WUlKQvvviiXT0A0Ha8nQSglVOnTslutysyMlKWZWnXrl3661//Kq/XK0mKjIxUQ0OD/H6/4uLidNttt+mxxx5TfX29GhoatHr1av3bv/1b8CrGN4mMjNSXX34p6dyvbj/44IOqrKxU3759FR0drX79+snp/Pp/b7300kv68MMPdebMGT3++OP68Y9/HAxOd9xxhz788EPt2bNHd99992XnUV9fL7/fr169ekmSjhw5ot27dwfX/E37zMjI0KZNm3T8+HH5/X5t27ZN6enpqquru+zXBdBxXIkB0Mo999yj//7v/5bL5VJUVJS+//3vKy0tTR9++KEk6eabb1avXr00duxYvfrqq3ryySe1fv16TZkyRWfPntVNN92kZ599tk1f66677lJOTo4++eQTPf3006qoqNA999yjhoYGDR06VM8884zs9q//95bL5dKDDz6o6upqjR8/Xo8//niw1q9fP/34xz/W4cOHNWHChMvOY+jQoVqwYIHmzJkjy7J03XXXKTMzU9u2bZPX6w3ez/J1+5w9e7Ysy9L9998vj8ejIUOG6D/+4z8UFxenioqKNvUBQPvZAp31xx4AoJt56qmndObMGa1atapb7xNAx3AlBkDYqaqq0rFjx4K/9txd9wngynBPDICw8+qrr+qBBx5QZmamhg8f3m33CeDK8HYSAAAwEldiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYqUf8nZjTpxvl87X+sDnTxcT0lcdzJtTT6LHof+hxDEKPYxBa4dp/h8Oua67pfdnX9YgQ4/P5ZVnhFWJaPpLG5/OLX5LvevQ/9DgGoccxCC36z9tJAADAUIQYAABgJEIMAAAwEiEGAAAYiRADAACMRIgBAABGIsQAAAAjEWIAAICRCDEAAMBIHQoxf/3rXzVq1CidPHlSkvTyyy8rNTVVkydP1oIFC1RfXx98bV5enqZMmaKUlBTl5OTI6/VKkvx+v9avX6/JkyfL5XJp06ZNCnz1Jwebmpq0bNmy4Lj8/PwrXScAAAgz7Q4xNTU1Wr16dTCMfPTRR1q/fr1+97vf6U9/+pPi4+OVm5srSSorK9Pu3bu1a9cu7d+/X7W1tdqyZYskKT8/X+Xl5SoqKlJxcbEOHz6sffv2SZI2btwoy7JUUlKinTt3asuWLTp69GgnLRkAAISDdoUYy7K0aNEiLVmyJLjtwIED+tGPfqS4uDhJ0n333aeioiL5/X6VlpYqNTVV0dHRcjgcysrKUmFhoSSptLRUGRkZioyMVK9evTR9+vQLajNnzpTNZlNMTIxSU1ODtY6y2cLvEa7rMuVB/0P/4BiE/sExoP9Xa11t0a4PgMzNzdUtt9yi2267LbjN7XYrISEh+Dw+Pl4NDQ2qq6uT2+3WmDFjLqi53e7guPj4+DbXysvL2zPVC8TE9O3w2O4uNjY61FPo0eh/6HEMQo9jEFo9uf9tDjHFxcU6duyYli9f3qpm+5rY1LLt4lrL80Ag0Kpmt9svW+sIj+eMfL7w+xTr2Nho1dR82WM/vTSU6H9oeC2fLN+5htts0oAB/VRbWx88Bk6HTRFORwhn2LNwHoRWOPff4bC36QJEm0NMQUGBKisrdffddwe3zZ49W3fccUfwBl9JqqysVN++fdW/f38lJiaqsrLyglpiYqIkadCgQa1qLVd0WmpJSUmtah0Vbge4RSAQvmszAf3vOl7Lp6XPvaVTZ5ov+Zr+fSOVOy+ZINPFOA9Cqyf3v80hpuWG3BbDhw9XXl6evvzyS/30pz9VZWWl4uLitG3bNrlcLtntdqWkpCg3N1f33Xef+vXrp/z8fE2aNEmSlJKSoj179mjKlCny+/0qKChQenp6sLZjxw6NGTNGp0+fVnFxsdasWdN5qwZgHMsX0Kkzzfrl/HHqHeX86l+h/VRTc+5KTONZS4uffVOWL6CIdr1RDsBUV3yq33DDDVq6dKkeeOABeb1eDRkyRE888YQkacKECfr444+VlZUly7J00003ad68eZKkGTNmqKKiQunp6fJ6vXK5XMrIyJAkZWdna+3atZo2bZq8Xq+ysrKUnJx8pVMFEAZ6RzmDIaZPrwg1RDl77L9CgZ7OFgiE/+nv8ZyRZYXfPTEDB0arujr83gs1Af3veo1nLWVveEPPLJwQDDHnH4OL67j6OA9CK5z773S27Z4Y/mIvAAAwEiEGAAAYiRADAACMRIgBAABGIsQAAAAjEWIAAICRCDEAAMBIhBgAAGAkQgwAADASIQYAABiJEAMAAIxEiAEAAEYixAAAACMRYgAAgJEIMQAAwEiEGAAAYCRCDAAAMBIhBgAAGIkQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYiRADAACMRIgBAABGIsQAAAAjEWIAAICRCDEAAMBIhBgAAGAkQgwAADASIQYAABiJEAMAAIzkbO+AgoIC/f73v5ckxcTEKCcnR0OGDNHEiRPVu3dvORwOSVJqaqrmzJmjpqYmrVmzRkePHpXP59Ps2bOVmZkpSfJ4PFq+fLmOHTsmn8+nJUuWyOVySZI+//xzrVixQrW1tbLb7XrkkUc0ZsyYTlo2AAAwXbtCzCeffKKnnnpKRUVFio2N1YsvvqhVq1bpl7/8pRoaGnTgwAHZbLYLxmzcuFGWZamkpER1dXXKzMzUiBEjdOONNyonJ0fDhg3T888/r4qKCs2cOVMjR45UQkKCFi1apOnTp2vmzJkqLy/X3Llz9eqrr6pPnz6d2gAAAGCmdoWY73znOyorK1NERIQsy9KJEycUExOjd955R3369NGsWbNUU1OjW2+9VYsWLVLv3r1VWlqqdevWyWazKSYmRqmpqSosLNSoUaN08OBBlZSUSJKSkpI0fvx4FRUVKS0tTX/72990zz33SJJGjRqlwYMH6/XXX9edd97ZoYVelK2M17KecFuXKeh/1zu/5y2Pi7efX8fVx3kQWvS/A28nRURE6MiRI3rwwQfV2NiovLw8ffbZZxo3bpxWrFghm82mxYsX64knnlBOTo7cbrfi4+OD4+Pj41VeXi6Px6OmpqZWNbfbLbfbrYEDByoiIiJYi4uL04kTJzq0yJiYvh0aZ4LY2OhQT6FHo/9dp6HJK0mKje2nPr3+38+GlmNwqTquPs6D0OrJ/W93iJGksWPH6vDhwzpw4IDmzJmj//zP/1R6enqwPnfuXM2ZM0c5OTkKBAKt3mKy2+0KBAKSdMnaxdtbah3h8ZyRz+fv0NjuymY7941bU/OlvmoluhD973qNZy1JUk1NvRqinK2OwcV1XH2cB6EVzv13OOxtugDRrlRQUVGht956K/jc5XIpIiJC27Zt03vvvRfcHggE5HSe+yEyaNAgVVZWBmuVlZVKSEhQbGysoqKiVFVV1aqWmJio6upqWZYVrFVVVSkhIaE9071AIBB+j3BdlykP+h/6nl/uOY+uPyY86H9nrast2hViTp06pQULFujkyZOSpLKyMtntdvl8Pj399NNqbm6WZVnKy8tTamqqJCklJUU7duyQ3+9XXV2diouLNWnSJDkcDk2cOFHbt2+XJB0/flyHDh2Sy+VSXFycRowYocLCQknSBx98oI8++kjjxo1rz3QBAEAYa9c115EjR+qhhx7Sz372M9ntdl1zzTV64YUXNHToUFVXVystLU2WZSk5OVkLFiyQJGVnZ2vt2rWaNm2avF6vsrKylJycLElauXKlVq1apalTp8qyLC1btkyDBw+WJD311FNauXKltm7dKkl6+umn1b9//85bOQAAMJotEGjPhRszeTxnZFnhd0/MwIHRqq4Ov/dCTUD/u17jWUvZG97QMwsnqPdX98ScfwwuruPq4zwIrXDuv9N5Fe6JAQAA6C4IMQAAwEiEGAAAYCRCDAAAMBIhBgAAGIkQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYiRADAACMRIgBAABGIsQAAAAjEWIAAICRCDEAAMBIhBgAAGAkQgwAADASIQYAABiJEAMAAIxEiAEAAEYixAAAACMRYgAAgJEIMQAAwEiEGAAAYCRCDAAAMBIhBgAAGIkQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgpHaHmIKCAk2bNk3Tpk3T/fffr08//VSSlJeXpylTpiglJUU5OTnyer2SJL/fr/Xr12vy5MlyuVzatGmTAoGAJKmpqUnLli0LjsvPzw9+HY/Ho7lz5+rOO+/U5MmTdeDAgc5YLwAACBPtCjGffPKJnnrqKf3+979XUVGRUlJStGrVKpWVlWn37t3atWuX9u/fr9raWm3ZskWSlJ+fr/LychUVFam4uFiHDx/Wvn37JEkbN26UZVkqKSnRzp07tWXLFh09elSSlJOTo2HDhmnfvn3Ky8vT6tWr5Xa7O3f1AADAWO0KMd/5zndUVlam2NhYWZalEydOKCYmRqWlpUpNTVV0dLQcDoeysrJUWFgoSSotLVVGRoYiIyPVq1cvTZ8+/YLazJkzZbPZFBMTo9TUVBUWFsqyLB08eFCZmZmSpKSkJI0fP15FRUWdvHwAAGAqZ3sHRERE6MiRI3rwwQfV2NiovLw8bdq0SWPGjAm+Jj4+PnjVxO12Kz4+vs218vJyeTweNTU1XXJcR9hsHR7aLbWsJ9zWZQr63/XO73nL4+Lt59dx9XEehBb970CIkaSxY8fq8OHDOnDggObMmaPRo0fLdlEXW54HAoFWNbvd/o21lntmLjWuvWJi+nZonAliY6NDPYUejf53nYamc/fZxcb2U59eEcHtLcfgUnVcfZwHodWT+9+uEFNRUaHPP/9cycnJkiSXy6VVq1bJ7/ersrIy+LrKykolJiZKkgYNGtSqlpCQcEEtKSnpglpsbKyioqJUVVWluLi4YO3666/v0CI9njPy+fwdGttd2WznvnFrar7UV5kPXYj+d73Gs5YkqaamXg1RzlbH4OI6rj7Og9AK5/47HPY2XYBo16WNU6dOacGCBTp58qQkqaysTHa7Xf/yL/+iV155RadPn5bf71d+fr4mTZokSUpJSdGePXvU3NyspqYmFRQUXFDbsWOH/H6/6urqVFxcrEmTJsnhcGjixInavn27JOn48eM6dOiQXC5Xu5pwvkAg/B7hui5THvQ/9D2/3HMeXX9MeND/zlpXW7TrnysjR47UQw89pJ/97Gey2+265ppr9MILL+gf/uEf9MknnygrK0uWZemmm27SvHnzJEkzZsxQRUWF0tPT5fV65XK5lJGRIUnKzs7W2rVrNW3aNHm9XmVlZQWv8qxcuVKrVq3S1KlTZVmWli1bpsGDB7dnugAAIIzZAoH2ZB4zeTxnZFnh93bSwIHRqq4Ov8uIJqD/Xa/xrKXsDW/omYUT1Purt5POPwYX13H1cR6EVjj33+m8Cm8nAQAAdBeEGAAAYCRCDAAAMBIhBgAAGIkQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYiRADAACMRIgBAABGIsQAAAAjEWIAAICRCDEAAMBIhBgAAGAkQgwAADASIQYAABiJEAMAAIxEiAEAAEYixAAAACMRYgAAgJEIMQAAwEiEGAAAYCRCDAAAMBIhBgAAGIkQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYydneAS+99JK2b98um82m3r176+GHH9bo0aM1ceJE9e7dWw6HQ5KUmpqqOXPmqKmpSWvWrNHRo0fl8/k0e/ZsZWZmSpI8Ho+WL1+uY8eOyefzacmSJXK5XJKkzz//XCtWrFBtba3sdrseeeQRjRkzphOXDgAATNauEPOXv/xFmzdvVkFBgQYMGKCDBw9q/vz5KigoUENDgw4cOCCbzXbBmI0bN8qyLJWUlKiurk6ZmZkaMWKEbrzxRuXk5GjYsGF6/vnnVVFRoZkzZ2rkyJFKSEjQokWLNH36dM2cOVPl5eWaO3euXn31VfXp06dTGwAAAMzUrhDTv39/PfrooxowYIAkafTo0aqpqdGbb76pPn36aNasWaqpqdGtt96qRYsWqXfv3iotLdW6detks9kUExOj1NRUFRYWatSoUTp48KBKSkokSUlJSRo/fryKioqUlpamv/3tb7rnnnskSaNGjdLgwYP1+uuv68477+zQQi/KVsZrWU+4rcsU9L/rnd/zlsfF28+v4+rjPAgt+t/OEDN06FANHTpUkuT3+/XYY4/p9ttvlySNGzdOK1askM1m0+LFi/XEE08oJydHbrdb8fHxwX3Ex8ervLxcHo9HTU1NrWput1tut1sDBw5UREREsBYXF6cTJ050aJExMX07NM4EsbHRoZ5Cj0b/u05Dk1eSFBvbT316/b+fDS3H4FJ1XH2cB6HVk/vf7ntiJKm+vl5Lly5VbW2tNm/erGuuuUbp6enB+ty5czVnzhzl5OQoEAi0eovJbrcrEAhI0iVrF29vqXWEx3NGPp+/Q2O7K5vt3DduTc2X+qqV6EL0v+s1nrUkSTU19WqIcrY6BhfXcfVxHoRWOPff4bC36QJEu8/0Tz/9VPPmzdPo0aO1YcMGRUVFqbi4WH//93+v0aNHS5ICgYCcznO7HjRokCorK5WUlCRJqqysVEJCgmJjYxUVFaWqqirFxcUFa9dff70SExNVXV0ty7KC+6mqqgre9NsR4XaAWwQC4bs2E9D/rtPS54t73vL8UnVcffQ8tHpy/9t1aePEiRO67777dO+99yo3N1dRUVGSpM8++0xPP/20mpubZVmW8vLylJqaKklKSUnRjh075Pf7VVdXp+LiYk2aNEkOh0MTJ07U9u3bJUnHjx/XoUOH5HK5FBcXpxEjRqiwsFCS9MEHH+ijjz7SuHHjOnPtAADAYO26EpOXl6fTp09r79692rt3b3D7c889p+rqaqWlpcmyLCUnJ2vBggWSpOzsbK1du1bTpk2T1+tVVlaWkpOTJUkrV67UqlWrNHXqVFmWpWXLlmnw4MGSpKeeekorV67U1q1bJUlPP/20+vfv3wlLBgAA4cAWCIT/RSiP54wsK/zuiRk4MFrV1eH3XqgJ6H/XazxrKXvDG3pm4QT1/uqemPOPwcV1XH2cB6EVzv13Ott2Twx/sRcAABiJEAMAAIxEiAEAAEYixAAAACMRYgAAgJEIMQAAwEiEGAAAYCRCDAAAMBIhBgAAGIkQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYiRADAACMRIgBAABGIsQAAAAjEWIAAICRCDEAAMBIhBgAAGAkQgwAADASIQYAABiJEAMAAIxEiAEAAEYixAAAACMRYgAAgJEIMQAAwEiEGAAAYCRCDAAAMBIhBgAAGIkQAwAAjESIAQAARmpXiHnppZc0bdo03XXXXZo5c6bee+89SVJeXp6mTJmilJQU5eTkyOv1SpL8fr/Wr1+vyZMny+VyadOmTQoEApKkpqYmLVu2LDguPz8/+HU8Ho/mzp2rO++8U5MnT9aBAwc6a70AACBMtDnE/OUvf9HmzZv1hz/8QXv37tXcuXM1f/58lZWVaffu3dq1a5f279+v2tpabdmyRZKUn5+v8vJyFRUVqbi4WIcPH9a+ffskSRs3bpRlWSopKdHOnTu1ZcsWHT16VJKUk5OjYcOGad++fcrLy9Pq1avldrs7f/UAAMBYbQ4x/fv316OPPqoBAwZIkkaPHq2amhqVlpYqNTVV0dHRcjgcysrKUmFhoSSptLRUGRkZioyMVK9evTR9+vQLajNnzpTNZlNMTIxSU1NVWFgoy7J08OBBZWZmSpKSkpI0fvx4FRUVXdFCbbbwe4Trukx50P/Q9/xyz3l0/THhQf87a11t4WzrC4cOHaqhQ4dKOvc20WOPPabbb79dbrdbY8aMCb4uPj4+eNXE7XYrPj6+zbXy8nJ5PB41NTVdclxHxMT07fDY7i42NjrUU+jR6H/XaWg69zZ1bGw/9ekVEdzecgwuVcfVx3kQWj25/20OMS3q6+u1dOlS1dbWavPmzVq4cKFsF8WmlueBQKBVzW63f2Ot5Z6ZS43rCI/njHw+f4fHd0c227lv3JqaL/VVy9CF6H/XazxrSZJqaurVEOVsdQwuruPq4zwIrXDuv8Nhb9MFiHad6Z9++qnmzZun0aNHa8OGDYqKilJiYqIqKyuDr6msrFRiYqIkadCgQa1qCQkJF9SSkpIuqMXGxioqKkpVVVWKi4sL1q6//vr2TLWVcDvALQKB8F2bCeh/12np88U9b3l+qTquPnoeWj25/22+vHHixAndd999uvfee5Wbm6uoqChJUkpKil555RWdPn1afr9f+fn5mjRpUrC2Z88eNTc3q6mpSQUFBRfUduzYIb/fr7q6OhUXF2vSpElyOByaOHGitm/fLkk6fvy4Dh06JJfL1dlrBwAABmvzlZi8vDydPn1ae/fu1d69e4PbN2/erIyMDGVlZcmyLN10002aN2+eJGnGjBmqqKhQenq6vF6vXC6XMjIyJEnZ2dlau3atpk2bJq/Xq6ysLCUnJ0uSVq5cqVWrVmnq1KmyLEvLli3T4MGDO3HZAADAdLZAIPwvQnk8Z2RZ4XdPzMCB0aquDr/3Qk1A/7te41lL2Rve0DMLJ6j3V/fEnH8MLq7j6uM8CK1w7r/T2bZ7YviLvQAAwEiEGAAAYCRCDAAAMBIhBgAAGIkQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYiRADAACMRIgBAABGIsQAAAAjEWIAAICRCDEAAMBIhBgAAGAkQgwAADASIQYAABiJEAMAAIxEiAEAAEYixAAAACMRYgAAgJEIMQAAwEiEGAAAYCRCDAAAMBIhBgAAGIkQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEIMAAAwkrMjg371q1/piy++0Lp16yRJ999/vyorK9WrVy9J0s0336x///d/l9/v15NPPqnXXntNPp9Pd999t7Kzs2Wz2dTU1KQ1a9bo6NGj8vl8mj17tjIzMyVJHo9Hy5cv17Fjx+Tz+bRkyRK5XK5OWjIAAAgH7QoxFRUVevzxx/XnP/9ZU6dOlSR5vV6Vl5fr9ddf1zXXXHPB6/Pz81VeXq6ioiL5/X7NmjVLQ4YMUWpqqjZu3CjLslRSUqK6ujplZmZqxIgRuvHGG5WTk6Nhw4bp+eefV0VFhWbOnKmRI0cqISGh81YOAACM1q4Qs2PHDo0bN0433HCDvvjiC0nSBx98oMjISC1evFhut1ujRo3S0qVLFRMTo9LSUmVkZCgyMlKSNH36dBUWFio1NVWlpaVat26dbDabYmJilJqaqsLCQo0aNUoHDx5USUmJJCkpKUnjx49XUVGR5syZ0+GF2mwdHtottawn3NZlCvrf9c7vecvj4u3n13H1cR6EFv1vZ4j5xS9+IUnauHFjcNupU6d06623avXq1YqOjtbjjz+uJUuW6Le//a3cbrfi4+ODr42Pj5fb7Zakr62Vl5fL4/GoqanpkuM6Iiamb4fHdnexsdGhnkKPRv+7TkOTV5IUG9tPfXpFBLe3HINL1XH1cR6EVk/uf4fuiTnfhAkTNGHChODzn//850pOTlZDQ4MCgYBsF0VEu/3cvcSXqgUCAUm65LiO8HjOyOfzd3h8d2SznfvGran5Ul+1DF2I/ne9xrOWJKmmpl4NUc5Wx+DiOq4+zoPQCuf+Oxz2Nl2AuOIzvaysTE6nU7fddpukc+HEbrfL6XRq0KBBqqysDL62srIyeF9LSy0pKemCWmxsrKKiolRVVaW4uLhg7frrr7+ieYbbAW4RCITv2kxA/7tOS58v7nnL80vVcfXR89Dqyf2/4l+xrq2t1WOPPab6+npJ0ubNm+VyuRQZGamUlBTt2bNHzc3NampqUkFBgSZNmiRJSklJ0Y4dO+T3+1VXV6fi4mJNmjRJDodDEydO1Pbt2yVJx48f16FDh/jtJAAAcIErvhKTnp6uY8eO6d5775Xf79fw4cP1yCOPSJJmzJihiooKpaeny+v1yuVyKSMjQ5KUnZ2ttWvXatq0afJ6vcrKylJycrIkaeXKlVq1apWmTp0qy7K0bNkyDR48+EqnCgAAwogtEAj/i1AezxlZVvjdEzNwYLSqq8PvvVAT0P+u13jWUvaGN/TMwgnq/dU9Mecfg4vruPo4D0IrnPvvdLbtnhj+Yi8AADASIQYAABiJEAMAAIxEiAEAAEYixAAAACMRYgAAgJEIMQAAwEiEGAAAYCRCDAAAMBIhBgAAGIkQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYiRADAACMRIgBAABGIsQAAAAjEWIAAICRnKGeAAB0psaz1iVrTodNEU5HF84GwNVEiAEQFpwOm/r3jdTiZ9+85Gv6941U7rxkggwQJggxAMJChNOh3HnJsnyBr603nrW0+Nk3ZfkCiuAnHxAWOJUBhI0Ip4OAAvQg3NgLAACMRIgBAABGIsQAAAAjEWIAAICRCDEAAMBIhBgAAGAkQgwAADASIQYAABiJEAMAAIxEiAEAAEbqUIj51a9+pYcffjj4/OWXX1ZqaqomT56sBQsWqL6+PljLy8vTlClTlJKSopycHHm9XkmS3+/X+vXrNXnyZLlcLm3atEmBwLnPPGlqatKyZcuC4/Lz869kjQAAIAy1K8RUVFQoOztbW7ZsCW776KOPtH79ev3ud7/Tn/70J8XHxys3N1eSVFZWpt27d2vXrl3av3+/amtrg2Pz8/NVXl6uoqIiFRcX6/Dhw9q3b58kaePGjbIsSyUlJdq5c6e2bNmio0ePdtKSAQBAOGhXiNmxY4fGjRunWbNmBbcdOHBAP/rRjxQXFydJuu+++1RUVCS/36/S0lKlpqYqOjpaDodDWVlZKiwslCSVlpYqIyNDkZGR6tWrl6ZPn35BbebMmbLZbIqJiVFqamqw1lE2W/g9wnVdpjzof+h73t5jwDG7+seEB/3vrHW1Rbs+7/UXv/iFpHNXSlq43W4lJCQEn8fHx6uhoUF1dXVyu90aM2bMBTW32x0cFx8f3+ZaeXl5e6Z6gZiYvh0e293FxkaHego9Gv3vOg1N596Kjo3tpz69IoLb23oMLjUeV47zILR6cv875UPrbV8Tm1q2XVxreR4IBFrV7Hb7ZWsd4fGckc/n7/D47shmO/eNW1Pzpb66lQhdiP53vcazliSppqZeDVHOdh+Di8fjynEehFY499/hsLfpAsQVn8mJiYmqqKgIPq+srFTfvn3Vv39/JSYmqrKy8oJaYmKiJGnQoEGtai1XdFpqSUlJrWodFW4HuEUgEL5rMwH97zotfb645209BpcajytHT0OrJ/f/in/FeuLEiSorKwsGkm3btsnlcslutyslJUWvvPKKTp8+Lb/fr/z8fE2aNEmSlJKSoj179qi5uVlNTU0qKCi4oLZjxw75/X7V1dWpuLg4WAMAAJA64UrMDTfcoKVLl+qBBx6Q1+vVkCFD9MQTT0iSJkyYoI8//lhZWVmyLEs33XST5s2bJ0maMWOGKioqlJ6eLq/XK5fLpYyMDElSdna21q5dq2nTpsnr9SorK0vJyclXOlUAABBGbIFA+F+E8njOyLLC756YgQOjVV0dfu+FmoD+d73Gs5ayN7yhZxZOUO+v7olpzzG4eDyuHOdBaIVz/53Ott0Tw1/sBQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYiRADAACMRIgBAABGIsQAAAAjEWIAAICRCDEAAMBIhBgAAGAkQgwAADASIQYAABiJEAMAAIxEiAEAAEYixAAAACMRYgAAgJEIMQAAwEiEGAAAYCRCDAAAMBIhBgAAGIkQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYiRADAACMRIgBAABGIsQAAAAjEWIAAICRnJ21o+XLl+vtt99WdHS0JOm6667Tb37zG+Xl5WnXrl3y+XwaP368VqxYoYiICPn9fj355JN67bXX5PP5dPfddys7O1s2m01NTU1as2aNjh49Kp/Pp9mzZyszM7OzpgoAAMJAp4WYd955R88//7yGDRsW3FZWVqbdu3dr165d6tOnjxYtWqQtW7Zozpw5ys/PV3l5uYqKiuT3+zVr1iwNGTJEqamp2rhxoyzLUklJierq6pSZmakRI0boxhtv7KzpAgAAw3VKiKmurtaJEyf0m9/8Rv/3f/+nwYMHa9myZSotLVVqamrw6kxWVpZycnI0Z84clZaWKiMjQ5GRkZKk6dOnq7CwUKmpqSotLdW6detks9kUExOj1NRUFRYWXlGIsdk6Y6XdR8t6wm1dpqD/Xe/8nrc8zt/e3vG4cpwHoUX/OynEVFVVafz48Vq+fLkSExP129/+VnPnztXAgQM1ZsyY4Ovi4+PldrslSW63W/Hx8W2ulZeXd3h+MTF9Ozy2u4uNjQ71FHo0+t91Gpq8kqTY2H7q0ysiuL2tx+BS43HlOA9Cqyf3v1NCzHe/+109//zzwecPPPCAnnvuOV177bWyXRQRW54HAoFWNbvdftlaR3g8Z+Tz+Ts8vjuy2c5949bUfKlAINSz6Xnof9drPGtJkmpq6tUQ5Wz3Mbh4PK4c50FohXP/HQ57my5AdMqZ/O6776qyslJTpkwJbgsEAvJ6vaqsrAxuq6ysVGJioiRp0KBBrWoJCQkX1JKSklrVOircDnCLQCB812YC+t91Wvp8cc/begwuNR5Xjp6GVk/uf6f8inVzc7MeffRRVVVVSZJefPFFDR06VLNnz9Yrr7yi06dPy+/3Kz8/X5MmTZIkpaSkaM+ePWpublZTU5MKCgouqO3YsUN+v191dXUqLi4O1gAAAKROuhJzyy23aP78+Zo1a5Z8Pp8SExP161//WoMGDdInn3yirKwsWZalm266SfPmzZMkzZgxQxUVFUpPT5fX65XL5VJGRoYkKTs7W2vXrtW0adPk9XqVlZWl5OTkzpgqAAAIE7ZAIPwvQnk8Z2RZ4XdPzMCB0aquDr/3Qk1A/7te41lL2Rve0DMLJ6j3V/fEtOcYXDweV47zILTCuf9OZ9vuieEv9gIAACMRYgAAgJEIMQAAwEiEGAAAYCRCDAAAMBIhBgAAGIkQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYiRADAACMRIgBAABGIsQAAAAjOUM9AQDoSo1nrUvWnA6bIpyOLpwNgCtBiAHQIzgdNvXvG6nFz755ydf07xup3HnJBBnAEIQYAD1ChNOh3HnJsnyBr603nrW0+Nk3ZfkCiuAnI2AETlUAPUaE00FAAcIIN/YCAAAjEWIAAICRCDEAAMBIhBgAAGAkQgwAADASIQYAABiJEAMAAIxEiAEAAEYixAAAACMRYgAAgJEIMQAAwEiEGAAAYCRCDAAAMBIhBgAAGKlbfyj9oUOH9Mtf/lJnz55VQkKC1q9fr2uvvTbU0wIQxhrPWt9YdzpsinA6umg2AL5Jtw0xtbW1Wrx4sbZu3arhw4dr69atWr58ufLy8kI9NQBhyOmwqX/fSC1+9s1vfF3/vpHKmf2PinCYeyH7ckHMa/lk+QJXbXxb9gG0RbcNMX/+8581fPhwDR8+XJKUmZmp3NxcffHFF/r2t7/drn05rsIPG8vnl8//zSfp1WST1HjWK18goEDoptFj0f+uF5A0dFB/RUY65HTaZbOd2+502jvlGDiddm34t/HfeF5bPr+e/+P/p40F71/5Fwyhfr0jNPfukXJ+zc/GljXWN3ovOz7CaW91HrRl/OXmgLbpDj+HHHbbVTmGbf3/ti0Q6J4/gjdv3qyPP/5Y69evD2774Q9/qGeeeUajR48O4cwAAEB30G0jcCAQkK3ln1rnsdu77ZQBAEAX6raJIDExUZWVlcHnzc3N8ng8SkxMDOGsAABAd9FtQ8xtt92mDz74QB9++KEkadeuXfr+97+vAQMGhHhmAACgO+i298RI0ptvvqknn3xSZ8+eVWxsrJ544gkNGjQo1NMCAADdQLcOMQAAAJfSbd9OAgAA+CaEGAAAYCRCDAAAMBIhBgAAGIkQAwAAjESIAQAARiLEAAAAIxFiwsDnn3+uf/zHf9SRI0dCPZUe59VXX1V6errS0tKUnp6usrKyUE+pRzh06JDS0tI0ZcoUzZo1S1VVVaGeUo/y0ksvadq0abrrrrs0c+ZMvffee6GeUo/117/+VaNGjdLJkydDPZWQcIZ6ArgyjY2N+sUvfiGv95s/9h6d7/jx41q5cqV27typ6667Tv/zP/+j++67T6+99pq+9a1vhXp6Yau2tlaLFy/W1q1bNXz4cG3dulXLly9XXl5eqKfWI/zlL3/R5s2bVVBQoAEDBujgwYOaP3++Dh069LUf2ourp6amRqtXr+7RP/+5EmO4lStXasaMGYqJiQn1VHocu92uRx99VNddd50k6YYbbpDNZlNNTU2IZxbe/vznP2v48OEaPny4JCkzM1Nvv/22vvjiixDPrGfo37+/Hn300eDn2I0ePVo1NTVqbGwM8cx6FsuytGjRIi1ZsiTUUwkprsR0c2VlZZo3b16r7fPnz1d0dLSioqI0ffp0PfvssyGYXc/wTcfg5z//efD5r3/9a/3d3/2dvvOd73Tl9HqckydPKiEhIfg8MjJSMTExcrvd+va3vx3CmfUMQ4cO1dChQyVJfr9fjz32mG6//Xb16dMnxDPrWXJzc3XLLbfotttuC/VUQooQ08396Ec/0gcffNBq+5EjR5Sbm6sXX3wxBLPqWS51DFo0Nzdr7dq1evvtt7VlyxYuqV9lgUDga3tst3NhuSvV19dr6dKlqq2t1ebNm0M9nR6luLhYx44d0/Lly0M9lZDjrDdUQUGBTp06pRkzZigtLU1VVVVasWKF9u3bF+qp9SjV1dW6//77dfz4ce3cuVOJiYmhnlLYS0xMVGVlZfB5c3OzPB4Pve9Cn376qaZPn65+/frpD3/4g6655ppQT6lHKSgo0LFjx3T33XcrLS1NkjR79uwe+csdfIp1mPjJT36i3NxcjR07NtRT6THq6+s1ffp0jR8/XitWrOBKQBepra3VHXfcoRdffFHDhg3Ttm3btG/fPm3bti3UU+sRTpw4oenTp2v27NmaPXt2qKcDScOHD1dZWZni4+NDPZUux9tJQAft3LlTn376qSIjI5Wenh7cvnbtWn3ve98L4czC24ABA7RhwwY99NBDOnv2rGJjY5WbmxvqafUYeXl5On36tPbu3au9e/cGt2/evFlxcXEhnBl6Iq7EAAAAI3H9GwAAGIkQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYiRADAACM9P8DFk6EOL9BF1oAAAAASUVORK5CYII=", + "image/png": "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", "text/plain": [ "
" ] @@ -4242,16 +3543,16 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(torch.Size([32, 7, 256]), tensor(1.3786), tensor(0.8856), tensor(1.1028), 112)" + "(torch.Size([32, 7, 256]), tensor(0.7619), tensor(0.4899), tensor(0.6304), 112)" ] }, - "execution_count": 35, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -4269,7 +3570,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ @@ -4282,7 +3583,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -4291,13 +3592,13 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "33117dcc09e249a6b639f11d35c12210", + "model_id": "312fab950bc247a5b52b4d4970f032af", "version_major": 2, "version_minor": 0 }, @@ -4312,8 +3613,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 644 ms, sys: 71.6 ms, total: 715 ms\n", - "Wall time: 285 ms\n" + "CPU times: user 496 ms, sys: 0 ns, total: 496 ms\n", + "Wall time: 47.4 ms\n" ] } ], @@ -4325,13 +3626,13 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "120283faf55843bf85f7698d61ed9f62", + "model_id": "2d9803609afc45029c62d4d3f2dcba27", "version_major": 2, "version_minor": 0 }, @@ -4346,8 +3647,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5.26 s, sys: 337 ms, total: 5.6 s\n", - "Wall time: 606 ms\n" + "CPU times: user 5.15 s, sys: 0 ns, total: 5.15 s\n", + "Wall time: 436 ms\n" ] } ], @@ -4359,7 +3660,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -4372,28 +3673,14 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Trainer will use only 1 of 2 GPUs because it is running inside an interactive / notebook environment. You may try to set `Trainer(devices=2)` but please note that multi-GPU inside interactive / notebook environments is considered experimental and unstable. Your mileage may vary.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "training probe\n", - "requires_grad: False\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ + "Trainer will use only 1 of 2 GPUs because it is running inside an interactive / notebook environment. You may try to set `Trainer(devices=2)` but please note that multi-GPU inside interactive / notebook environments is considered experimental and unstable. Your mileage may vary.\n", "GPU available: True (cuda), used: True\n", "TPU available: False, using: 0 TPU cores\n", "IPU available: False, using: 0 IPUs\n", @@ -4411,10 +3698,18 @@ "347.287 Total estimated model params size (MB)\n" ] }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "training probe\n", + "requires_grad: False\n" + ] + }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "bae6e88578b34eb4a145ebf5e6416a79", + "model_id": "5f2b8d3f2d444ba692ae08dbc096dcd4", "version_major": 2, "version_minor": 0 }, @@ -4436,7 +3731,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "675c1404bf4a4a7180fb91a81a7ef7ed", + "model_id": "bab4858efadf4edb95af1452db839f35", "version_major": 2, "version_minor": 0 }, @@ -4450,7 +3745,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "98d8a83731df40d99ff9df01583bfdc8", + "model_id": "86c6a1bd22bc42069fc9dcddc061bc68", "version_major": 2, "version_minor": 0 }, @@ -4464,7 +3759,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "50acbe256cb44c6aaa6c310948e9f970", + "model_id": "ddbd49cc3e9d4deb879d513a85633a33", "version_major": 2, "version_minor": 0 }, @@ -4478,7 +3773,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f24d07ad0b9a455db6887e29f28fd841", + "model_id": "e1baeaa4c0b842008607d7f0e4c45621", "version_major": 2, "version_minor": 0 }, @@ -4492,7 +3787,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "9ccf8c13090f498b97880d2816d7cadb", + "model_id": "8c03a72d74c8441a8259d22776fa8bce", "version_major": 2, "version_minor": 0 }, @@ -4506,7 +3801,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "961fd169e8774e0698efc8c33e9f3a6a", + "model_id": "ab5a1dbaa91c4121a6401567ed2e8c93", "version_major": 2, "version_minor": 0 }, @@ -4520,7 +3815,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1b0dd70592e740e1aa5158a4ec9f62b5", + "model_id": "41ea60adc61948c4a67f358b4956fd8e", "version_major": 2, "version_minor": 0 }, @@ -4534,7 +3829,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5a0b216cde064e23b064e1154d8e572f", + "model_id": "0340b722467745e389ab1bf624488930", "version_major": 2, "version_minor": 0 }, @@ -4548,7 +3843,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "4bd79a1d187145d4a783997410c59d20", + "model_id": "d6f7bb11d12c4a8cb71bb84e8d537f85", "version_major": 2, "version_minor": 0 }, @@ -4562,7 +3857,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "eb90aac606ec424aab2afb514646cca9", + "model_id": "953132d2de714a91b798c0a0140df592", "version_major": 2, "version_minor": 0 }, @@ -4576,7 +3871,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "efbbd2f6b79c400a8b406e62f620126d", + "model_id": "3a763e502efd4e1aa092ac6911825149", "version_major": 2, "version_minor": 0 }, @@ -4590,7 +3885,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e33b11b5cc26441680d936b071916d05", + "model_id": "7eef1f6495524142bb00655d26acd734", "version_major": 2, "version_minor": 0 }, @@ -4604,7 +3899,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "207de3bb88234d01b6675054d5eef9b1", + "model_id": "9d4c8bccc4414d98b1a538aecbd15c98", "version_major": 2, "version_minor": 0 }, @@ -4618,7 +3913,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b2cd652195be498b82882b585c372803", + "model_id": "fe3d137f7cd64c4cb3bd3d093b453708", "version_major": 2, "version_minor": 0 }, @@ -4632,7 +3927,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "268e32700601460a90613f53b99a7004", + "model_id": "b35e5c81fdc647dfbfd22a9c64a0c4a8", "version_major": 2, "version_minor": 0 }, @@ -4646,7 +3941,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "c18f6872681240799aecb9d229038dde", + "model_id": "dec525984bb642a9a5cada438528283d", "version_major": 2, "version_minor": 0 }, @@ -4660,7 +3955,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7edece0d7042446f9515e840540b8608", + "model_id": "bdc58a9ab2e7421c90b74ffdf04930d7", "version_major": 2, "version_minor": 0 }, @@ -4674,7 +3969,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0de656e16f5f43f4a352b0d84cee4974", + "model_id": "24f6513cd00c46a99bca46a48cf94986", "version_major": 2, "version_minor": 0 }, @@ -4688,7 +3983,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "3fbf89997cfd412cbf8c21874fad3829", + "model_id": "cfc0feed294b4ffeb38450c16d679acd", "version_major": 2, "version_minor": 0 }, @@ -4702,7 +3997,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1acdaf60f90a496faa7b5579342d996f", + "model_id": "d815466bf1b54d12bfe9c813ab34b38d", "version_major": 2, "version_minor": 0 }, @@ -4716,7 +4011,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7cfd854b18824c0f967c069a0b3671f7", + "model_id": "b8f791ff2e7f4ec991123691d02b9d93", "version_major": 2, "version_minor": 0 }, @@ -4730,7 +4025,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "23b77d9742ae4aa9818fdfdf58959eaa", + "model_id": "f89e2257297d4915a235a282d3bbdd2a", "version_major": 2, "version_minor": 0 }, @@ -4744,7 +4039,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7eacd788e2c4461eab66f8daf713f39c", + "model_id": "33a500feb45442af864b269eb49a18ed", "version_major": 2, "version_minor": 0 }, @@ -4758,7 +4053,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "6fcab91363f443acb6621e9bbbaf2484", + "model_id": "f03b6f24619641ba98d204ad183dffcf", "version_major": 2, "version_minor": 0 }, @@ -4772,7 +4067,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f7ed216e52b8479d9f4b559ab93cc8f8", + "model_id": "130faf7233e746b08504a6084e16659c", "version_major": 2, "version_minor": 0 }, @@ -4786,7 +4081,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "41a0367d5a524334a076853ee604a62d", + "model_id": "e0ccc971445d4ab3994438a406a79b82", "version_major": 2, "version_minor": 0 }, @@ -4800,7 +4095,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8ae58c500b6f4bfa9adec5c7d8c2467a", + "model_id": "7704c38ceba940e69c4037eb0984c4d5", "version_major": 2, "version_minor": 0 }, @@ -4814,7 +4109,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "9b736e9420e24027a0d6a7d39f7d71f0", + "model_id": "6ba9b246d9f04f50a7e610cbc561f365", "version_major": 2, "version_minor": 0 }, @@ -4828,7 +4123,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e38bc857163843f8b904463b1e49b2ed", + "model_id": "ac7cdebf9af94cea95c53877988db517", "version_major": 2, "version_minor": 0 }, @@ -4842,7 +4137,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "cc3bd1768df34235aa00bb6a33b7611d", + "model_id": "7eb466e5c5b4436bae2b8e1f3d338512", "version_major": 2, "version_minor": 0 }, @@ -4856,7 +4151,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ad769091f6c9432f8abd475ef5a6c863", + "model_id": "ce8dc2f72b154ea08136bb9910ad71df", "version_major": 2, "version_minor": 0 }, @@ -4870,7 +4165,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a114926545fc4ba3b8be375d8c21a0d4", + "model_id": "0a3056d4dfe24ea7a387e7810d178631", "version_major": 2, "version_minor": 0 }, @@ -4884,7 +4179,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e3a977366ab14ee8aceaf3adc92f24c2", + "model_id": "4280632fa69d4852b9dbf18baca2b804", "version_major": 2, "version_minor": 0 }, @@ -4898,7 +4193,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e5c6c90112ef48fb8d6d53e4bfa46fe0", + "model_id": "f669360daebf426aa88d25231897e2f5", "version_major": 2, "version_minor": 0 }, @@ -4912,7 +4207,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5dda0e6b3ce24169877e181c8d340ec9", + "model_id": "f748d93b919f4f6b8219cb34868e72a6", "version_major": 2, "version_minor": 0 }, @@ -4926,7 +4221,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ef2605a9f2f147718e40c680406bf45e", + "model_id": "8cd27426c0454a299e5231bb6aaccedb", "version_major": 2, "version_minor": 0 }, @@ -4940,7 +4235,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "086bd0fb359d444b8c01d734fbc645cf", + "model_id": "a5b9c356459b40fdade3649066fd1303", "version_major": 2, "version_minor": 0 }, @@ -4954,7 +4249,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f6e9d374fd83497ebda7f30d4f05cf7a", + "model_id": "0ef6c7f3f33c46929c73b02aa2937bd1", "version_major": 2, "version_minor": 0 }, @@ -4968,7 +4263,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "fb4d9b2750cc462b9bddf4a3f3cd01fc", + "model_id": "68911be536f0452c9e2f24115a77860c", "version_major": 2, "version_minor": 0 }, @@ -4982,7 +4277,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "fa4a476fd19c4b49b8db29c58b3dd8e3", + "model_id": "a9efa646067d4685a0519bda87e3196b", "version_major": 2, "version_minor": 0 }, @@ -4996,7 +4291,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "c38fb4f67c184792bd3ca3e357801eb7", + "model_id": "fb37279bfbd34566a2d18cf0e1f3fcaf", "version_major": 2, "version_minor": 0 }, @@ -5010,7 +4305,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "19916d1b3ed84ec292bb89fd48082e31", + "model_id": "c1b9998b2ff24c38b4254ee76f1c8779", "version_major": 2, "version_minor": 0 }, @@ -5024,7 +4319,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "cefc0d07e3a945049a9813acd3ed3b65", + "model_id": "2e55e0a255b648b4838bc57a95594ecc", "version_major": 2, "version_minor": 0 }, @@ -5038,7 +4333,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "964738849760438b8baeaf8d1bccbe26", + "model_id": "0e161f526d8f4d058c8171a45cd48d06", "version_major": 2, "version_minor": 0 }, @@ -5052,7 +4347,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "d9d5289ec1744deead39f330e4bac8e0", + "model_id": "78bb307710ed49728b17687eeb948e07", "version_major": 2, "version_minor": 0 }, @@ -5095,12 +4390,12 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 41, "metadata": {}, "outputs": [ { "data": { - "image/png": "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NHbsWBUUFCg+Pl6SNGzYML311luqra2Vx+PRihUrNHz48BD3NjodOnRIv/zlL5vPrNi0aZPsdrtuvfVWamQBL730ktavX6+1a9dq7dq1krxnJ40YMSKqX+diQt0Bs6SkpGj+/PmaOXOmGhsblZqaqoKCglB3C2344Q9/qBkzZmjy5Mn69ttv1atXLz3xxBOh7lZUWrRokWpra/XGG2/ojTfeaP7+888/rxtvvFHjx4+Xy+XSRRdd1OoQM4Kvb9++mjlzpqZMmSK73a6kpCQtXLhQP/rRj7R3715qZFHR/jpnMwzDCHUnAABAdImOcR4AAGApBBAAAGA6AggAADAdAQQAAJiOAAIAAExHAAEAAKYjgAAAANMRQABY2sGDB5Wbm6uqqqpQdwVAABFAAACA6QggAPy2Z88e5efna8CAARoxYoRWrFghSXrwwQf1yCOPaNy4cbrgggs0bty45usvSVJhYaFuuukmXXzxxRo5cqRWrlzZ/LO6ujo99NBDGjBggC699FLNnDlTR48ebf75ypUrNXz4cF1wwQW65557WvwMQPghgADwy5EjR5Sfn69BgwZp69ateuaZZ7RgwQK9++67kqQ1a9borrvu0ocffqj+/ftr2rRpampqUlFRkSZPnqzx48ersLBQc+fO1fz58/XWW29Jkh599FEdPHhQb7/9tt5991198803euqpp5p/7969e7VmzRq98847+vjjj/Xaa6+F5PEDCIyouRgdgMDYtGmTOnXqpClTpkiSzj33XE2YMEF/+9vflJKSopEjR+qKK66QJN1zzz1avny5Pv74YxUWFuriiy/WmDFjJEn9+vXTpEmT9Nprr2nYsGHasGGDlixZotTUVEnSH/7wBzU0NDT/3jvvvFOdO3dW586dNWDAAO3fv9/cBw4goAggAPxSXFysb775Rv3792/+nsfjUY8ePZSSkqIf/OAHzd+PjY1VWlqanE6nKisrlZWV1aKtHj166M0339ShQ4fU1NSkzMzM5p91795dkncRqiSdddZZLdp1u93BeHgATEIAAeCX9PR0nXvuuS2mQCorK+VyuTR//nyVlZU1f7+pqUkVFRXq3r27MjIytH379hZtHThwQF27dlVKSopiY2NVWlqq9PR0SdIXX3yhwsJCDR8+3JwHBsBUrAEB4Jcrr7xSpaWlWrlypVwul0pLS5Wfn6+FCxdKktatW6dPPvlETU1Neuqpp5Senq4LL7xQ1113nT799FOtWbNGLpdLO3fu1LJlyzRmzBg5HA6NHj1af/zjH1VTU6Pa2lrNmzdPpaWlIX60AIKFAALAL0lJSVq0aJHWr1+vQYMG6YYbbtDFF1+sGTNmSJIuueQSFRQUaODAgfryyy+1cOFCORwO9ezZU88995yWL1+uAQMG6L777tNdd92lG2+8UZL08MMPKysrS9ddd52GDx+unj176r777gvlQwUQRDbDMIxQdwJAZHjwwQfVuXNn/eY3vwl1VwBYHCMgAADAdAQQAABgOqZgAACA6RgBAQAApiOAAAAA0xFAAACA6QggAADAdAQQAABgOgIIAAAwHQEEAACYjgACAABMRwABAACm+3/aMCL99wITnQAAAABJRU5ErkJggg==", + "image/png": "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9Re9+uqLruDSuHFT18Jv69Z9pe3b/6uhQ+9wPTc/P0/5+Xn65puNev31f0iSkpKS1LZt+wu+7r59e7V//15Nn/6M676CghP6+ecduuKKPykm5hJ1754mSWrU6Epdemkt/fDD1vN+Nps2bVCXLl0VHR0tSXr00XGSSnp6UlIuV926l0mSUlIu10cfLb1gG32FAAKcxtdf0oC/1KsRr+wjBXIaktVSctvb0tJu0fLln6hWrdq6/vouys/P07333qVu3XrqT39qpO7d0/Tll5+fWtPkD2vWfKE//7nDWfsrbX0Jp9OQw+FQ585dlZraQps3f6OtWzdrzpzZevXVN9WsWaqWLPlYW7Z8o61bv9Xdd9+hSZOmXnCYwWY7/XBY0j6rtWTNldPnpTidDt1++191++39JJVcyyUnJ1txcfFnPFeSIiIufIh1OBwqX7683nrrHdd9ubm5Kl++vI4cyT1r3RfDMGS12s772ZS87h+nyObn550akvrf96mzamEmhmCA09SrES/rqd9bX31JA/7Qv3OKrm2UrCoJ0bq2UbL6d07x+mt07dpNmzZ9rRUrlikt7S/avv3/FBMTo0GDhqpVq+u0ceMGGYZx1sFz7dovS53/0bJlay1f/omOHSvpFfn44w8UFxenOnXq6pFH7tfXX69Xly5d9cgjjyk2NlYHDx7Uc89N0eLF76hdu4568MFHVbduPf32254Ltn3r1s3KyEiXJH3wwT/VuHFTxcWdvcJny5Zt9OmnHys/v+SPkyVL3tVDD42QJLVq1UYff/yBJCkv74jWr197wdetU6eO4uIqnPG8u+++U+vXfyVJOno0X1999aWkkmGi9PSDatq02Xk/m2uuaanVq1eqqKhQkvT66y9ryZL3LtgWs9EDApzm9y/l0yfqAaEgOirC58OJcXFxatGipfbu/U316tVXzZo1tWLFMvXte4tiYmJUt2491apVW/v27VVkZKQkKTs7W4ZhKCmp8ln769atp7KzszRs2F2uCZ/PPfeibDabhg4drueem6JFi96RzWZVmzZt1aJFS9WuXUfPPDNBAwferoiICF12WX3deGP3C7Y9KamKpk6drKysLFWpUkVPPDG51O26d09TdnaWhg8fIqvVovj4CnrmmedksVj08MOj9eyzk/XXv/5FlSolql69+hd83YiIcnr22ef10kvPa+nSRSouLlaPHmnq1OkGpacflNVq1dq1X2ru3DdksVj09NPTFB8ff97PpmfPm5WVdUhDhgyUJDVokKL77x+lf/971QXbYyaL4c/+Fzfk5h736oV6LBYpKSlO2dlHg+7yx+GCGgU+amQ+p9OpQ4f2qUqVS92+FHpwXujMfCVnwazQiy++avprn69G6ekH1afPzVqzZpPJrXLPuX4mIyKsSki45ILPpwcEABDS9u79VU88Ma7Ux8qXL6+ePW/26es/8cRj2rv3t1Ifu//+h9Ss2TU+ff1ARQ8IAg41CnzUyHz0gISmYK4RPSAAzsnXi08BQFmV6Zto5syZysrK0tNPP33WY0VFRZo+fbo2b96swsJC9erVS8OGDbvohgLwHOuaAAhUHp2Gu3//fo0YMUJz58495zbPP/+8MjMztXTpUte/r7/++qIbCsBzrGsCIFB51AOyaNEitW7dWg0aNFBWVlap23z44YdasGCBIiIiFBsbq7feesu1UhsAc5mx+BQAlIVHAWTUqFGSpFmzZpX6eE5OjvLy8rRlyxZNmjRJeXl56tmzp4YMGXJRjbRYLryNp/vy5j7hXdTIewZ0SZFF0q4D+apfI179u6R45XOlRubjs0agsljK9vPp1dlodnvJhbt2796tt956S3l5ebrjjjtUpUoV9ezZs0z7dGcmbVkkJp69wh0CCzXyjscGtfTZvqmReRwOh7KyrIqIsLp9FoxUckYCAluw1sjplKxWqxITY89aMt4dXg0gCQkJKleunG6++WbZbDZVqlRJ7du313fffVfmAJKbe1wOh3dPw01MjFNODqcPBipqFPiokfmcTqecTqfsdqfczR9mn+L58MP36bHHHnfrEvS/e/bZSWrXroNatbrugttOmTJRXbt209NPP6XHH5+kJk2aXkRr/W/lyuVatuwjzZo1299NkeT5wme//0zm5Bw7IxTbbH44DTcyMlIdO3bU+++/r0aNGunEiRNav369Bg4ceFH79cUXnGH4Zr/wHmoU+KiReS72czaKC1S4fr4cmbtkS66v8m0GyBIZ7Z3GnfLNN197fHGzsWMfd2s7h8Ohbdt+0ujR48vSNPhQWb8HvBJA0tLSNHnyZF111VWaNGmSnnnmGd10002y2+268cYblZaW5o2XAQCUUeH6+bLv2igZTtmPZqtQUnSHu722/wkT/iappBfk6NE8NWnSTL/8skt9+w5Q06bN9Pzzz+rEiRPKzs5S9eo1NHHis6pYsaJGjrxbPXr00g033KTrrkvV0KHDtHHjemVlZalXr7+of/87JUk//PCdGjW66qyu/nXrvtI//vGGHA67ypWL1JAh96ply9bKz8/X5MlPKisrUxaLRSkpV+jRR8fJbrdr2rSn9fPPO2SzRah69RoaN+5JxcTEnPO9pacf1L33DlKrVtdpx47/U3FxsYYNu0/XXddOy5d/oo8//sA1BWH27Ln65puvNXfu32W3n5TNZtNdd92jVq3ayG636+WXZ2jDhnWqWDFB1avXcOuzPX78mGbNmqGdO3fI4bDriisa6f77H1ZMzCW69dYeuu66dvrPf35UXt4RdevWU3feOeS8n40kffbZp1q48G1ZrVZFR8do9Ohxio4u+QxmzpyuH3/8Xnl5eerbt79uvbWP+z8IHihTALnvvvvOuP3RRx+5/l+hQgVNnTr14loFAPAqR+YuyTg1HGM45cjc7dX9P/nkZK1a9ZleeGGWhg8foksvraWJE6dIkmbPfkUdOnRSjx695HQ69fDDI09dpK7/WfspVy5Sr732D+3a9bMGD+6vXr1uVWxsrL766kv9+c8dzth2795fNWXKBL3yyt9Vp05d7dr1s+6//1698cZb2rhxvcqXL6+5c9+Rw+HQ9OnPaN++vdq3b69+++1Xvf12ydVhX331Jf388w41aXL1ed9fTk6OrryyscaOfVzbtv1HDz00QosWfShJ+vXXX7R48UeKj6+g/fv36ZVXXtSsWbOVkFDJFV5mz35b69d/pZ07d2j+/MWyWq0aPfpBtz7bWbNmqFatOho79nEZhqGXX56h1157WaNGjZFUElDeeOMt5efna+jQgWrY8HLVrFnznJ9NcXGRXnzxef397/NUo0ZNffbZp3r99Vf00EOPyuFw6PLL/6QHH3xU27f/n+69d5B69OilqKjybrXVEyyJCABhwJZcX/aj2SUhxGKVLbmeT1/v9AP60KHDtGXLN3rnnfk6cGCffvvtVzVu3LTU57Vt206SVL9+AxmGoWPHjio2NlbffvuNhg0784/fLVu+VdOmzVSnTl3Xcxo3bqLNmzepefMWmjdvrh54YLiaN0/Vbbf9VbVr11FsbKzy8/N0zz2DdM0116pdu45q1OjKC76fmJhL1L17SW9+o0ZX6tJLa+mHH7ZKkurUuUzx8RUkSd98s1E5OTl66KGRrufabBHavftnffPN17r++i6KioqSVHJl3Q8/XHrB11637itVrPij/vWvFZIku/2kKlZMcD1+6619ZLVaVbFiRbVr11GbNm1QZuZl5/xsiooK1bx5qmrUqClJ6tq1m7p27ab09IOyWCzq0uVGSVJKyuWy2+3Kz89X5coEEABAGZRvM0CFkhyZu2VLrqfybQb49PVO/4t5woS/qaCgQJ063aBrrmmhwsKCc84V+f3gLEkWi0WGYWj79v+qbt3LznhMKpkE+b+cTkMOh111616mJUs+0tat3+q777booYeGa+TIh9S5c1ctXPhP/fjj99q69Vs99dQ49er1F/Xrd8d538//Dv0YhiGr1XbWe3U6HWrSpKmeffYF131ZWYeUkFBJH3/8vqQ/3ndEhHuHYKfTqSeemKSGDS+XJJ04cVwnT54stW2/t+t8n03J6/5x3qzdbtdvv/2qmJgYWa1/nGVlOXVura8uGRec5/4AADxiiYxWdIe7FdtnqqI73O31CahSyYHQ4XCcdf+mTRs0cOBd6tKlq2Jj4/Ttt5tLPUCey5o1X+jPf25/1v2pqS20desW/frrHknSrl0/6/vvtyo19VrNn/+WXnhhmlq1uk7Dhz+gFi1aadeun/Wvf32m0aMfUpMmV2vIkHvVtWs37dy5/YJtOHo0X1999aUk6T//+VHp6QfVtGmzUtp0rb77bot27fpZkvTf//5HffrcrOzsbLVqdZ1WrlyhwsJC2e12ffbZcrfef8uWrbV48btyOBxyOByaPPkpvfHGq67Hly//WJKUm5urL7/8XG3atD3vZ9Os2TX6/vutysjIkCR98cVqPf30U261xZvoAQEAeEW7dh11//3DlJt7+Iz77733Pk2Y8DfFxcWpXLlyuvrq5tq/f6/b+92wYZ369z+7h6J27ToaN+4JTZz4N9ntdlmtNo0f/6Tq1KmrSpUS9cwzT6l//96KjIxScnKyRox4UDExMfr2200aMOA2RUfHKDY21q0za6xWq9au/VJz574hi8Wip5+epvj4s1cWrlOnrsaNe0rPPPPUqSUkDE2YMEVVq1ZVz5436+DBAxo48HZVqFBB9es31LFjRy/42g8++IheeukF3XFHXzmdDl1xxZ80YsSDrsezs7N11139VVBwQn/96wClpraQpHN+NpL00EOj9dhjD8sw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AL4RWrELAAAEBQIIAAAwHQEEAACYjgACAABMRwABAACmI4AAAADTEUAAAIDpCCAAAMB0BBAAAGA6AggAADBdWAWQtWvXKi0tTV27dtWgQYN06NAhfzcJp5k5c6bGjx/vuv3RRx+pW7duuuGGG/Tggw/q2LFjfmxdeHv33XfVo0cP9ezZU7fffrt+/PFHSdKcOXPUtWtXde7cWRMmTNDJkyf93NLwtXTpUvXo0UM9evTQwIEDtWfPHknUKND88MMPuvLKK5WRkSEpzL/njDCRk5NjtGjRwti+fbthGIbx9ttvG3fddZefWwXDMIx9+/YZw4cPNxo3bmyMGzfOMAzD2Llzp9GqVSsjIyPDMAzDmDJlivH444/7s5lha8uWLUb79u2NnJwcwzAM49///rfRpk0b48svvzS6du1q5OfnG3a73bj//vuN2bNn+7m14Wn37t1Gq1atjOzsbMMwDGPevHlG//79qVGAyc7ONtLS0oyGDRsa6enpYf89FzY9IOvWrVNKSopSUlIkSX369NGmTZuUlZXl55Zh0aJFat26tQYNGuS6b/Xq1WrXrp2Sk5MlSf369dMnn3wip9Ppr2aGrQoVKmjSpEmqVKmSJKlx48bKycnRqlWr1K1bN8XFxclms6lv37764IMP/Nza8HTZZZdpzZo1SkxMlN1u18GDB5WQkECNAojdbtfDDz+sRx991HVfuH/PhU0AycjIULVq1Vy3IyMjlZCQoPT0dD+2CpI0atQo9evXTzabzXVfenr6GfWqWrWqTpw4oSNHjvihheGtXr16uu666yRJTqdTzzzzjNq3b19qjfh98p9y5crp22+/Vbt27bRo0SINGjSIGgWQadOm6dprr1WbNm1c94X791zYBBDDMGSxWM6632oNm48g6JRWr9LugzmOHTumkSNH6sCBA5o6daqks+tBffwrNTVV69ev17Rp03T33XdLokaBYNmyZdq7d6+GDRt21mPh/D0XNkff6tWrKzMz03W7uLhYubm5ql69uh9bhXP533plZmbqkksuUYUKFfzYqvC1Z88e3XrrrYqNjdXbb7+t+Pj4UmvE75N/7N+/X19//bXrdqdOnVSuXDk5nU5qFACWLl2qvXv3qlevXkpLS5MkDR48WFWqVAnr77mwCSBt2rTRf//7X+3cuVOStGTJEjVp0sQ1ro3Acv3112vNmjWuX86FCxeqU6dO9Fj5wcGDB9WvXz/17t1b06ZNU1RUlCSpc+fO+vTTT5Wfny+n06n33ntPXbp08XNrw1NeXp4efPBB15kVa9askdVq1Z133kmNAsDcuXO1fPlyffTRR/roo48klZyddMMNN4T191yEvxtglkqVKmnGjBkaM2aMioqKlJiYqGnTpvm7WTiHBg0aaPTo0RoyZIhOnjypunXr6tlnn/V3s8LSnDlzlJ+fr48//lgff/yx6/433nhDf/nLX9S3b1/Z7XY1a9as1C5m+F6jRo00ZswYDR06VFarVfHx8XrzzTd1xRVX6JdffqFGASrcv+cshmEY/m4EAAAIL+HRzwMAAAIKAQQAAJiOAAIAAExHAAEAAKYjgAAAANMRQAAAgOkIIAAAwHQEEAABbf/+/UpJSdHhw4f93RQAXkQAAQAApiOAAPDYrl27NGjQILVo0UI33HCD3nvvPUnS2LFj9fjjj6tPnz5q2rSp+vTp47r+kiRt2rRJt99+u5o3b66uXbtq0aJFrseOHTumcePGqUWLFrr22ms1ZswYnThxwvX4okWL1KVLFzVt2lQPPPDAGY8BCD4EEAAeOX78uAYNGqTWrVtr/fr1evHFF/Xaa69p9erVkqQPP/xQI0aM0DfffKPU1FTde++9Ki4u1u7duzVkyBD17dtXmzZt0tSpUzVjxgx9+umnkqQJEyZo//79WrFihVavXq2DBw/qhRdecL3uL7/8og8//FArV67U1q1btXTpUr+8fwDeETYXowPgHWvWrFH58uU1dOhQSdLll1+ufv36afHixapUqZK6du2qtm3bSpIeeOABLVy4UFu3btWmTZvUvHlz9erVS5LUpEkTDRgwQEuXLlXnzp312Wefad68eUpMTJQkTZ8+XYWFha7XHTZsmGJiYhQTE6MWLVpo79695r5xAF5FAAHgkQMHDujgwYNKTU113ed0OlWzZk1VqlRJtWvXdt1frlw5JSUlKTs7Wzk5OapRo8YZ+6pZs6Y++eQT5eXlqbi4WNWrV3c9VrVqVUklk1AlqWLFimfs1+Fw+OLtATAJAQSAR5KTk3X55ZefMQSSk5Mju92uGTNmKDMz03V/cXGxsrKyVLVqVVWrVk0bN248Y1/79u1T5cqVValSJZUrV04ZGRlKTk6WJG3btk2bNm1Sly5dzHljAEzFHBAAHmnfvr0yMjK0aNEi2e12ZWRkaNCgQXrzzTclScuWLdN3332n4uJivfDCC0pOTtbVV1+t7t276/vvv9eHH34ou92uH374QQsWLFCvXr1ks9nUo0cPvfTSSzpy5Ijy8/P13HPPKSMjw8/vFoCvEEAAeCQ+Pl5z5szR8uXL1bp1a91yyy1q3ry5Ro8eLUm65pprNG3aNLVs2VLbt2/Xm2++KZvNpksvvVSzZ8/WwoUL1aJFC40aNUojRozQX/7yF0nS+PHjVaNGDXXv3l1dunTRpZdeqlGjRvnzrQLwIYthGIa/GwEgNIwdO1YxMTF64okn/N0UAAGOHhAAAGA6AggAADAdQzAAAMB09IAAAADTEUAAAIDpCCAAAMB0BBAAAGA6AggAADAdAQQAAJiOAAIAAExHAAEAAKYjgAAAANP9PyoPdVeGDBgNAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -5110,7 +4405,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiAAAAG+CAYAAACqDb+yAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABCFUlEQVR4nO3deXhTVf7H8U+SUtpalpbSsi+C1BkcQKhslWFRkBEKyKAWWRQBRWRURAFxXFBUKCjuig6DsqjA4IKKOKKCLIICbsP8AFsXtra0pVAKXUhyf38UMyAFEkhutvfreXgektzce5Jvm3x6zrnnWgzDMAQAAGAiq78bAAAAwg8BBAAAmI4AAgAATEcAAQAApiOAAAAA0xFAAACA6QggAADAdAQQAABgOgIIAAAwHQEECCJ79uxRcnKyDhw44O+meF3fvn319ttv+7sZldq0aZMuvfRSfzcDCCkEEAAAYDoCCBCktm/frptuukkpKSm64oor9PLLL8vhcEiSduzYofT0dKWkpOjKK6/UjBkzXI+tWLFCvXv3VkpKitLS0vTOO++4dbzJkyfrgQceUHp6utq0aaP09HTt3LlTUkUPwZVXXqlx48YpJSVFH330kcrKyjRjxgx169ZNnTt31qRJk3To0CHX/lasWKGePXvq0ksv1YMPPqhjx465/dq3bt3qen1paWlatWqV67Fhw4ZpxowZ6tu3ry699FKNHDlSOTk5rsc//vhj9evXT23btlX//v1Peu7+/fv1t7/9Te3atVPnzp31xBNPuN43wzD0/PPPq0ePHmrbtq0eeughOZ1Ot9sM4HcMAEFj9+7dRosWLYyCggLjsssuM15++WWjrKzMyMzMNHr27GnMmTPHMAzDGDx4sPHCCy8YTqfT2Lt3r9GlSxfjs88+M44ePWq0bNnS+Prrrw3DMIx169YZrVu3Ng4cOHDWY0+aNMm45JJLjC+++MIoKyszZs6caXTv3t0oKyszNm7caLRo0cKYP3++UVZWZpSUlBiPPvqoMXjwYGP//v3G4cOHjbvvvtsYO3asYRiGsXPnTqNly5bG6tWrjfLycuOVV14xWrRoYSxbtuys7di3b5/Rpk0bY/ny5Ybdbjc2btxopKSkGNu2bTMMwzCGDh1qtG/f3vj++++No0ePGhMmTDCuu+46wzAMY8OGDUarVq2ML774wrDb7cbq1auNVq1aGVu2bHG9b+PHjzcOHz5s7N+/3/jLX/5izJs3z/X6Zs6caZSVlRk7d+40WrdubXz66aeeFxGAYRiGQQ8IEISWLVummjVr6tZbb1VkZKSaNWumsWPHatmyZZKkqlWrau3atVq1apWqV6+u1atXq3v37q7Hli1bpq+//lrt27fX1q1bFRcX59Zxe/furS5duigyMlJ33nmnCgsLtXXrVtfjAwYMUGRkpKpWraqlS5fq7rvvVu3atRUbG6vJkydr1apVOnDggD766CN17NhRXbt2VZUqVTRq1CjVqVPHrTa8//77at26tdLS0mSz2dShQwf95S9/0dKlS13bDB48WH/6058UHR2tiRMn6ttvv9Xu3bv1zjvvqG/fvurSpYtsNpu6du2qPn366J133tHevXu1ZcsWTZ48WbGxsapdu7Zefvll9erVS5JktVo1btw4RUZG6qKLLtLFF1+sXbt2udVmAKeK8HcDAHiuvLxc9erVO+m+Bg0aaN++fZKk2bNn65lnntETTzyh3NxcdenSRVOnTlVSUpIWLVqkF198UePGjdOxY8d07bXXasKECYqMjDzrcRs3buz6f5UqVZSQkKD8/HzVrl1b0dHRqlatmiTpwIEDKi0t1a233iqLxeJ6TtWqVbVnzx7l5eWdFDgsFovq16/v1mvft2+fNm/erJSUFNd9DodDHTp0qLSdiYmJioiIUH5+vgoKCtSuXbtT3rctW7YoLy9PERERSkxMdD3WqFEjSdLu3bsVFRWlqKiok17/b8MzADxHAAGCUL169bR3796T7tu9e7dq164twzC0fft23XPPPXrooYf0yy+/6O9//7tmz56tv//97zp06JCeffZZOZ1Offvttxo3bpySk5M1cODAsx43NzfX9f/y8nJXkHA4HCcFjbi4OEVGRuqtt97SRRddJEmy2+369ddf1bhxYyUlJZ3UcyJVzL9wR1JSknr06KFnn33WdV9OTs5JAerEdubk5Mhut6tOnTqqW7eu9uzZU+n7VqdOHdntduXn5yshIUGStH79euXk5KhBgwZutQ2A+xiCAYJQ165ddeTIEb388ssqLy/XTz/9pJdeekkDBgyQxWLRY489phdeeEHl5eVKSEhQRESEatasqaNHj2rkyJFatWqVLBaLEhMTZbFYVLNmTbeO+8EHH+ibb75ReXm5nnrqKSUlJVV6eqrVatU111yjmTNn6sCBAyovL9fTTz+t4cOHy263q0+fPtq8ebM+/vhj2e12LViwQLt373arDX379tWGDRv06aefyul0KjMzU9ddd52WL1/u2ubNN99UVlaWjh49qhkzZqhjx46qW7eurrnmGn344Ydau3atHA6HvvjiC3344Yfq37+/6tSpo/bt22vWrFk6evSo9u/fr+nTp6u4uNitdgHwDAEECFJz587Vhg0b1LlzZ914443q27evxo4dK0l66qmn9MMPP6hz587q0aOHEhMTNW7cOCUmJmr27NmaPXu22rZtqxtuuEFDhw5Vjx493DrmZZddpoyMDHXs2FHbt2/Xq6++KpvNVum29913n5o0aaKBAweqU6dO+u677/SPf/xDUVFRatq0qZ599lk9/fTTSklJ0ebNm9W6dWu32tCwYUO9+OKLmjNnjtq3b6+bb75ZgwYN0o033ujapl27drr77rvVpUsX2e12zZ4923X/9OnTlZGRoZSUFM2YMUNPPPGEOnXq5HrfSktL1aNHDw0cOFA9evTQ8OHD3WoXAM9YDMMw/N0IAIFv8uTJiomJ0YMPPujvppzRsGHD1K1bN40cOdLfTQFwBvSAAAAA0zEJFYD++9//asiQIad9fNCgQaa1ZdCgQcrKyqr0scjISG3atMm0tgDwHYZgAACA6RiCAQAApiOAAAAA0xFAAACA6QggAADAdAQQAABguoA/DbeoqEQOh9Or+4yLu0CFhUe8uk94FzUKfNQo8FGjwBeKNbLZrKpePfqs2wV8AHE4nLLbvRdAfrtelsPhFCcgByZqFPioUeCjRoEv3GvEEAwAADAdAQQAAJgu4IdgAAAnM4yzd9lbLJLD4ZDTGZ7d+8EgmGtktZ5//wUBBACChNPp1IEDubLby93aPi/PKqfTu5P44V3BWiOLxapq1WoqJqbaOe+DAAIAQeLw4YOyWq2qXbuBLL/NYDyDiAirVyfxw/uCs0aGysvLdehQviSdcwghgABAEDAMQyUlxapVq45sNptbz7FarfJCTzl8KFhrFBUVLSlBhw4VnHMACcKXDQDhp+LC5Ybb4QPwtcjISBmG45yHkAggABBUzj70Apjj/H4WCSAAAMB0BBAAgOm2bt2s668fcNJ9N96Yrl9++Vldu3bwT6O8bPr0RzV37hx/N8NlxYr3deedY/3dDBcCCADA7zIzf1T9+g1VtWpVfzcFJuEsGAAIAyVldi38ZIey9hapWf3qGtozWdFVvfcV8MgjD6hRo8a66aZRkqQ1az7XokWva+DAa/X220tlt9t18GCh+vTpp5Ejbz3l+WvWfKY//7nbKfcvWDBPH3/8kWw2m2rVStD48feqYcNG2rFju556aoaOHTsmyVDfvgM0cOC1ys7ep8cee1hHjx6VZKhjx1TdcsuZ/+pfseJ9ffzxCtlsEcrLy9UFF8RqypQH1ahREz322MM6dOiQsrP36k9/aq2JE+/XokWv69NP/y3DMBQXF6+77rpXjRo1VkFBvh5//BHl5marVq0EOZ1O1a6deNb3bteuX/T000/q0KGDstuP6aqrrtYNNwxXdvY+jRkzQp06Xa4dO/5P5eXluu22v+nyy7ue8b1xOByaM+d5ffHFGkVERKhJkya6774HJUkHDxZq8uS7lZ2drWPHynXvvVN06aXtztpGX6AHJEwY5SUq+fwVFb81USWfvyKjvMTfTQJgooWf7NCmbbnaX1iiTdtytfCTHV7df//+A/XRRx+4bn/44Xu66qqr9fbbS/XEE7P0z38u1IsvztXrr8/VwYMHT3n+hg3r1Llzl5Pu++ijD/T556v08sv/1Ouvv6nu3a/QpEnj5XA4NH/+XPXu3Uf//OdCzZz5jL75Zovsdrv+9a/F+uMfL9E//7lQL7zwD+3Zs1uHDp16vN/7z3++17hxd2rBgiX685+765FHHnQ9duRIsebPX6yJE+/Xxx+v0LZt/9GcOa9p3rw3dM01gzRlyr2SpNmzZ+rCC5tp4cKleuCBR7Vr1y9nPa7dbteUKRM1cuStmjt3gebMeU1r167WZ5+tkiQVFBTokktaad68NzRlysN65JEHVVhYeMb35r333tZ3332refMWaeHCJapRo6beeedfkqR9+/bq1lvH6fXX31Ra2jV69dWXztpGX6EHJEyUrl8ge+ZGyXDKfjhfpZKiu9/i72YBMEnW3iI5jy/37TQqbntT69aXqkqVSH377VY1aNBI27b9oEcema6ePXvryy/Xac+e3frll59lGIZKS0/+A2jv3j2qVq2aqlevriNHil33f/nlel19dZpiY2MlSWlpA/T887O1e/cudet2hZ58coa2bPla7dpdpvHj71VERIRSU7vo/vsn6pdffla7dikaM2acatSoedb2p6S014UXNpck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qyEYR25mRfiQJMMpR26WfxsEAECYCqsAYktqLlmOv2SLVbakZv5tEAAAYSqshmCiUoepVJJOmAMCAADMF1YBxBIZrZgetyghoZry8w/LMPzdIgAAwlNYDcEAAIDAQAABAACmI4AAAADTEUAAAIDpCCAAAMB0YXUWTEmZXYs+2aGfs4vVtG6shvRMVnTVsHoLAAAICGH17bvwkx3atC1XTkPKPXBEhqTRfVv6u1kAAISdsBqCydpbJOfxtT+cRsVtAABgPo97QNauXatZs2aprKxMdevW1YwZM5SYmHjSNrm5uZoyZYr2798vp9Opm266Sddee63XGn2umtWvrvyDJXIaktVScRsIZSVldi38ZIey9hapWf3qGsqwI4AA4dEn0YEDB3TPPfdo/vz5Sk5O1vz583Xfffdp7ty5J203e/ZsJScna+7cudq/f7969+6tjh07qmHDhl5tvKeG9kyWRdLPOcVqWqdiDggQyk4cdsw/WCKJYUcAgcGjALJu3TolJycrObniizs9PV0ZGRnKy8tT7dq1Xds5HA4VFxfLMAyVlpbKarXKZrN5t+XnILpqhEantWQpdoQNhh0BBCqPAkhOTo7q1q3ruh0ZGam4uDhlZ2efFEDuueceDRkyRF26dNHBgwc1btw41atX75wbabGc81NPuy9v7hPeFWo1Kimza+G/dyhzb5Ga16+uob3MGwZp/rthx+b1q3vlfQ21GoUiahT4wr1GHn0KGoYhSyXvlNV68lzWCRMmaMiQIRoxYoSys7N14403qnnz5rryyis9bmBc3AUeP8cdtWpV88l+4T2hUqOn3tiija5hkFJVrVpFd9/QzpRj3zm4naq+/b22/1qoixvHaczAVoqJquK1/YdKjUIZNQp84VojjwJIvXr1tHHjRtft8vJyFRYWntS7ceDAAX399dd69dVXJUl169ZVr169tGHDhnMKIIWFR+RwOD1+3ulYLBXFLihgCCZQhVqNtv1UcMIwiKFtPxUoP/+waccf3quF6/9Hi0t1tLj0vPcZajUKRdQo8IVqjWw2q1udBx4FkNTUVE2bNk07d+5UixYttHTpUrVu3Vrx8fGubeLi4lS/fn198MEHuvbaa1VcXKz169drxIgRnr+K43xRGMPwzX7hPd6qkb/PBKns7KtQ+dnj9yjwUaPAF6418uhTOD4+XrNnz9akSZNUVlam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TRulp6e7rr8kSZs2bdL111+vdu3aqXfv3lq8eLHrseLiYk2ZMkXt27dXhw4dNGnSJB09etT1+OLFi9WrVy+1adNGd95550mPAQg+BBAAHjly5IhGjBihzp07a/369XrmmWf00ksvadWqVZKkd999V7fffru++uorpaSkaMyYMSovL1dWVpZGjRqlwYMHa9OmTZoxY4Zmz56tDz/8UJI0depU7dmzRx999JFWrVqlffv26amnnnId96efftK7776rjz/+WFu3btWyZcv88voBeEfYXIwOgHesWbNGUVFRGj16tCTp4osv1pAhQ7RkyRLFx8erd+/e6tKliyTpzjvv1KJFi7R161Zt2rRJ7dq104ABAyRJrVu31rBhw7Rs2TL17NlTK1eu1Pz581WrVi1J0syZM1VaWuo67m233aaYmBjFxMSoffv22rVrl7kvHIBXEUAAeGTv3r3at2+fUlJSXPc5nU41aNBA8fHxaty4sev+KlWqKCEhQfn5+SooKFD9+vVP2leDBg30/vvv69ChQyovL1e9evVcj9WpU0dSxSRUSapZs+ZJ+3U4HL54eQBMQgAB4JGkpCRdfPHFJw2BFBQUyG63a/bs2crNzXXdX15erry8PNWpU0d169bVxo0bT9rX7t27Vbt2bcXHx6tKlSrKyclRUlKSJGnbtm3atGmTevXqZc4LA2Aq5oAA8Ei3bt2Uk5OjxYsXy263KycnRyNGjNCrr74qSfrggw/0zTffqLy8XE899ZSSkpJ06aWXqm/fvvr222/17rvvym6367vvvtPChQs1YMAA2Ww2paWl6dlnn9XBgwdVVFSkWbNmKScnx8+vFoCvEEAAeKR69eqaO3euVqxYoc6dO2vgwIFq166dJk6cKEm67LLLlJGRoY4dO2r79u169dVXZbPZ1LBhQ82ZM0eLFi1S+/btNWHCBN1+++3661//Kkm6//77Vb9+ffXt21e9evVSw4YNNWHCBH++VAA+ZDEMw/B3IwCEhsmTJysmJkYPPvigv5sCIMDRAwIAAExHAAEAAKZjCAYAAJiOHhAAAGA6AggAADAdAQQAAJiOAAIAAExHAAEAAKYjgAAAANMRQAAAgOkIIAAAwHQEEAAAYLr/B/I+hVin4HlQAAAAAElFTkSuQmCC", + "image/png": "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W40cOVK9evXSyJEjvfezkqTCwkLdfPPN6t27t4YOHapXXnnF+7Pq6mo9+OCDuvTSS9W3b19NnTpVR44c8f78lVde0ZAhQ9SrVy/de++9jX4GIPwQTgAEzOHDhzV27Fj1799fa9eu1eOPP6558+bp3XfflSS9/vrr+tnPfqYPP/xQffr00cSJE1VfX68dO3Zo3LhxuuWWW1RYWKjZs2dr7ty5euuttyRJ06dP1+7du7V8+XK9++672rt3rx577DHv6+7cuVOvv/663nnnHW3cuFGvvvpqSPYfQGBw4z8AAbNq1Sq1bdtW48ePlySdf/75GjVqlP7v//5PycnJGjp0qC6//HJJ0r333quXXnpJGzduVGFhoXr37q3hw4dLkrKzszVmzBi9+uqrGjx4sN5++20tXLhQKSkpkqRHHnlEtbW13te966671K5dO7Vr106XXnqpvvnmm9bdcQABRTgBEDB79uzR3r171adPH+9zHo9HnTp1UnJyss4++2zv87GxsUpNTVV5ebkqKiqUmZnZaFudOnXSm2++qQMHDqi+vl4ZGRnen5155pmSGibEStIZZ5zRaLtutzsYuweglRBOAARMWlqazj///EbDKhUVFXK5XJo7d65KS0u9z9fX12vfvn0688wzlZ6ervXr1zfa1q5du9ShQwclJycrNjZWJSUlSktLkyR9/vnnKiws1JAhQ1pnxwC0KuacAAiYK664QiUlJXrllVfkcrlUUlKisWPHav78+ZKkpUuXatOmTaqvr9djjz2mtLQ0XXTRRbr++uu1efNmvf7663K5XNqyZYtefPFFDR8+XA6HQ8OGDdP//u//av/+/Tp48KDmzJmjkpKSEO8tgGAhnAAImMTERC1YsEDLli1T//79deONN6p37966//77JUmXXHKJ8vPz1a9fP23dulXz58+Xw+FQ586d9fTTT+ull17SpZdeqsmTJ+tnP/uZbrrpJknSr3/9a2VmZur666/XkCFD1LlzZ02ePDmUuwogiGyWZVmhbgSAyPfAAw+oXbt2+t3vfhfqpgAwHD0nAADAKIQTAABgFIZ1AACAUeg5AQAARiGcAAAAoxBOAACAUQgnAADAKIQTAABgFMIJAAAwCuEEAAAYhXACAACMQjgBAABG+X8dM9MPbz89XQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -5139,25 +4434,25 @@ " \n", " \n", " \n", - " step\n", " train/loss_rec_step\n", " train/loss_pred_step\n", - " val/loss_pred_step\n", + " step\n", " val/loss_rec_step\n", - " val/loss_rec_epoch\n", + " val/loss_pred_step\n", + " val/acc\n", " val/auroc\n", " val/l1_loss\n", + " val/loss_rec_epoch\n", " val/n\n", - " val/acc\n", - " val/l2_loss\n", " val/loss_pred_epoch\n", - " train/auroc\n", + " val/l2_loss\n", " train/n\n", - " train/acc\n", - " train/loss_rec_epoch\n", - " train/loss_pred_epoch\n", " train/l1_loss\n", + " train/loss_rec_epoch\n", " train/l2_loss\n", + " train/auroc\n", + " train/loss_pred_epoch\n", + " train/acc\n", " \n", " \n", " epoch\n", @@ -5185,1214 +4480,1214 @@ " \n", " \n", " 0.0\n", + " 317341.46875\n", + " 0.750734\n", " 9\n", - " 1.182340e+06\n", - " 0.634697\n", - " 0.635492\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.670953\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.580182\n", + " 0.610390\n", + " 0.642554\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.525974\n", - " 1872917.0\n", - " 0.814268\n", - " 0.559346\n", + " 0.675582\n", + " 425863.9375\n", " 307.0\n", - " 0.589577\n", - " 1438230.875\n", - " 0.846415\n", - " 21990.455078\n", - " 1427235.750\n", + " 16519.121094\n", + " 344612.56250\n", + " 336353.03125\n", + " 0.644976\n", + " 0.734680\n", + " 0.576547\n", " \n", " \n", " 1.0\n", + " 333048.68750\n", + " 0.639979\n", " 19\n", - " 1.345072e+06\n", - " 0.557636\n", - " 0.598052\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.662013\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.538155\n", + " 0.636364\n", + " 0.645794\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.597403\n", - " 1872917.0\n", - " 0.648931\n", - " 0.657845\n", + " 0.708072\n", + " 425863.9375\n", " 307.0\n", - " 0.628664\n", - " 1438231.000\n", - " 0.668884\n", - " 21990.458984\n", - " 1427235.750\n", + " 16519.123047\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.693617\n", + " 0.671386\n", + " 0.583062\n", " \n", " \n", " 2.0\n", + " 290681.90625\n", + " 0.623242\n", " 29\n", - " 1.576135e+06\n", - " 0.591931\n", - " 0.584167\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.750130\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.545128\n", + " 0.623377\n", + " 0.698181\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.610390\n", - " 1872917.0\n", - " 0.644291\n", - " 0.745154\n", + " 0.641758\n", + " 425863.9375\n", " 307.0\n", - " 0.638436\n", - " 1438230.875\n", - " 0.627850\n", - " 21990.457031\n", - " 1427235.625\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.718803\n", + " 0.643272\n", + " 0.654723\n", " \n", " \n", " 3.0\n", + " 358911.78125\n", + " 0.588615\n", " 39\n", - " 1.361723e+06\n", - " 0.624457\n", - " 0.726895\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.718876\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.655330\n", + " 0.623377\n", + " 0.711776\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.668831\n", - " 1872917.0\n", - " 0.639570\n", - " 0.822406\n", + " 0.668705\n", + " 425863.9375\n", " 307.0\n", - " 0.723127\n", - " 1438230.875\n", - " 0.549150\n", - " 21990.457031\n", - " 1427235.750\n", + " 16519.119141\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.744478\n", + " 0.636399\n", + " 0.661238\n", " \n", " \n", " 4.0\n", + " 386470.15625\n", + " 0.781435\n", " 49\n", - " 1.120079e+06\n", - " 0.763037\n", - " 0.582415\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.699400\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.614236\n", + " 0.610390\n", + " 0.718339\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.623377\n", - " 1872917.0\n", - " 0.691840\n", - " 0.809829\n", + " 0.668234\n", + " 425863.9375\n", " 307.0\n", - " 0.716612\n", - " 1438231.000\n", - " 0.583850\n", - " 21990.458984\n", - " 1427235.750\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.756434\n", + " 0.703600\n", + " 0.609121\n", " \n", " \n", " 5.0\n", + " 336454.46875\n", + " 0.562884\n", " 59\n", - " 1.559835e+06\n", - " 0.535794\n", - " 1.060955\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.619049\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.633807\n", + " 0.564935\n", + " 0.740926\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.525974\n", - " 1872917.0\n", - " 1.112498\n", - " 0.795981\n", + " 0.724875\n", + " 425863.9375\n", " 307.0\n", - " 0.700326\n", - " 1438231.000\n", - " 0.552490\n", - " 21990.458984\n", - " 1427235.750\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.813413\n", + " 0.606972\n", + " 0.657980\n", " \n", " \n", " 6.0\n", + " 290409.62500\n", + " 1.049181\n", " 69\n", - " 1.465921e+06\n", - " 2.991578\n", - " 1.306474\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.739977\n", - " 21885.367188\n", + " 423665.21875\n", + " 1.312531\n", + " 0.512987\n", + " 0.741922\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.532468\n", - " 1872917.0\n", - " 1.048195\n", - " 0.790288\n", + " 1.169899\n", + " 425863.9375\n", " 307.0\n", - " 0.635179\n", - " 1438231.000\n", - " 1.126661\n", - " 21990.458984\n", - " 1427235.750\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.821166\n", + " 0.706567\n", + " 0.605863\n", " \n", " \n", " 7.0\n", + " 332164.68750\n", + " 0.743222\n", " 79\n", - " 1.144246e+06\n", - " 0.768128\n", - " 0.637859\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.737357\n", - " 21885.367188\n", + " 423665.21875\n", + " 1.432864\n", + " 0.512987\n", + " 0.706680\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.707792\n", - " 1872917.0\n", - " 0.615004\n", - " 0.817999\n", + " 1.262260\n", + " 425863.9375\n", " 307.0\n", - " 0.543974\n", - " 1438230.875\n", - " 1.066298\n", - " 21990.455078\n", - " 1427235.625\n", + " 16519.119141\n", + " 344612.56250\n", + " 336353.03125\n", + " 0.782922\n", + " 0.728517\n", + " 0.635179\n", " \n", " \n", " 8.0\n", + " 323330.93750\n", + " 0.494952\n", " 89\n", - " 1.353968e+06\n", - " 0.574782\n", - " 0.632014\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.724788\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.840226\n", + " 0.545455\n", + " 0.774286\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.714286\n", - " 1872917.0\n", - " 0.612911\n", - " 0.799933\n", + " 1.079983\n", + " 425863.9375\n", " 307.0\n", - " 0.592834\n", - " 1438231.000\n", - " 0.693450\n", - " 21990.457031\n", - " 1427235.750\n", + " 16519.119141\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.815575\n", + " 0.720674\n", + " 0.589577\n", " \n", " \n", " 9.0\n", + " 342591.46875\n", + " 0.580802\n", " 99\n", - " 1.337384e+06\n", - " 0.600462\n", - " 0.540945\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.827630\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.549032\n", + " 0.642857\n", + " 0.676131\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.746753\n", - " 1872917.0\n", - " 0.535939\n", - " 0.798542\n", + " 0.645718\n", + " 425863.9375\n", " 307.0\n", - " 0.664495\n", - " 1438231.125\n", - " 0.623075\n", - " 21990.458984\n", - " 1427235.750\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.791030\n", + " 0.818828\n", + " 0.566775\n", " \n", " \n", " 10.0\n", + " 327839.75000\n", + " 0.747007\n", " 109\n", - " 1.301120e+06\n", - " 0.680717\n", - " 0.652962\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.813646\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.821483\n", + " 0.538961\n", + " 0.793477\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.558442\n", - " 1872917.0\n", - " 0.713234\n", - " 0.859066\n", + " 0.733439\n", + " 425863.9375\n", " 307.0\n", - " 0.706840\n", - " 1438230.875\n", - " 0.580137\n", - " 21990.458984\n", - " 1427235.750\n", + " 16519.119141\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.799731\n", + " 0.608062\n", + " 0.687296\n", " \n", " \n", " 11.0\n", + " 388538.87500\n", + " 0.611111\n", " 119\n", - " 1.286362e+06\n", - " 0.552412\n", - " 0.625013\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.800757\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.691665\n", + " 0.584416\n", + " 0.703963\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.688312\n", - " 1872917.0\n", - " 0.577954\n", - " 0.870304\n", + " 0.732056\n", + " 425863.9375\n", " 307.0\n", - " 0.752443\n", - " 1438230.875\n", - " 0.490665\n", - " 21990.457031\n", - " 1427235.625\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.781938\n", + " 0.721151\n", + " 0.589577\n", " \n", " \n", " 12.0\n", + " 375695.31250\n", + " 0.893181\n", " 129\n", - " 1.336431e+06\n", - " 1.009193\n", - " 0.993961\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.680195\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.586188\n", + " 0.603896\n", + " 0.697646\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.487013\n", - " 1872917.0\n", - " 0.787368\n", - " 0.848842\n", + " 0.628228\n", + " 425863.9375\n", " 307.0\n", - " 0.690554\n", - " 1438230.875\n", - " 0.679112\n", - " 21990.455078\n", - " 1427235.750\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.00000\n", + " 0.757390\n", + " 0.706083\n", + " 0.563518\n", " \n", " \n", " 13.0\n", + " 308990.15625\n", + " 0.476430\n", " 139\n", - " 1.553428e+06\n", - " 1.257464\n", - " 0.612175\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.800079\n", - " 21885.367188\n", + " 423665.21875\n", + " 1.315883\n", + " 0.551948\n", + " 0.681095\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.714286\n", - " 1872917.0\n", - " 0.623519\n", - " 0.811033\n", + " 1.641692\n", + " 425863.9375\n", " 307.0\n", - " 0.589577\n", - " 1438230.875\n", - " 0.742965\n", - " 21990.458984\n", - " 1427235.750\n", + " 16519.123047\n", + " 344612.62500\n", + " 336353.03125\n", + " 0.803226\n", + " 0.583009\n", + " 0.661238\n", " \n", " \n", " 14.0\n", + " 338278.15625\n", + " 0.665565\n", " 149\n", - " 1.363776e+06\n", - " 0.495535\n", - " 0.691103\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.826003\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.675037\n", + " 0.590909\n", + " 0.788781\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.675325\n", - " 1872917.0\n", - " 0.585435\n", - " 0.847192\n", + " 0.642030\n", + " 425863.9375\n", " 307.0\n", - " 0.742671\n", - " 1438230.875\n", - " 0.572263\n", - " 21990.457031\n", - " 1427235.750\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.808782\n", + " 0.738327\n", + " 0.638436\n", " \n", " \n", " 15.0\n", + " 296028.46875\n", + " 0.502055\n", " 159\n", - " 8.766204e+05\n", - " 0.475753\n", - " 0.670254\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.782214\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.521029\n", + " 0.681818\n", + " 0.742762\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.538961\n", - " 1872917.0\n", - " 0.794975\n", - " 0.887661\n", + " 0.619203\n", + " 425863.9375\n", " 307.0\n", - " 0.693811\n", - " 1438230.875\n", - " 0.534876\n", - " 21990.455078\n", - " 1427235.750\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.802534\n", + " 0.641488\n", + " 0.644951\n", " \n", " \n", " 16.0\n", + " 315296.93750\n", + " 0.452430\n", " 169\n", - " 1.279335e+06\n", - " 0.281322\n", - " 0.444776\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.880176\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.587831\n", + " 0.642857\n", + " 0.681411\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.805195\n", - " 1872917.0\n", - " 0.427298\n", - " 0.923471\n", + " 0.812129\n", + " 425863.9375\n", " 307.0\n", - " 0.798046\n", - " 1438230.875\n", - " 0.432401\n", - " 21990.457031\n", - " 1427235.750\n", + " 16519.121094\n", + " 344612.53125\n", + " 336353.03125\n", + " 0.844532\n", + " 0.604061\n", + " 0.706840\n", " \n", " \n", " 17.0\n", + " 299669.75000\n", + " 0.616571\n", " 179\n", - " 1.767086e+06\n", - " 0.320299\n", - " 0.516623\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.800203\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.510954\n", + " 0.701299\n", + " 0.783939\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.766234\n", - " 1872917.0\n", - " 0.554734\n", - " 0.907138\n", + " 0.575469\n", + " 425863.9375\n", " 307.0\n", - " 0.785016\n", - " 1438230.875\n", - " 0.463313\n", - " 21990.458984\n", - " 1427235.625\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.834311\n", + " 0.582068\n", + " 0.687296\n", " \n", " \n", " 18.0\n", + " 347835.62500\n", + " 0.323102\n", " 189\n", - " 1.363108e+06\n", - " 0.517960\n", - " 0.658268\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.830847\n", - " 21885.367188\n", + " 423665.21875\n", + " 1.368361\n", + " 0.551948\n", + " 0.670845\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.519481\n", - " 1872917.0\n", - " 0.804349\n", - " 0.915498\n", + " 1.609445\n", + " 425863.9375\n", " 307.0\n", - " 0.710098\n", - " 1438231.000\n", - " 0.595279\n", - " 21990.458984\n", - " 1427235.625\n", + " 16519.121094\n", + " 344612.62500\n", + " 336353.03125\n", + " 0.866793\n", + " 0.519147\n", + " 0.752443\n", " \n", " \n", " 19.0\n", + " 317371.28125\n", + " 0.541845\n", " 199\n", - " 1.468891e+06\n", - " 0.532226\n", - " 0.489780\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.835177\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.514295\n", + " 0.668831\n", + " 0.774502\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.785714\n", - " 1872917.0\n", - " 0.508584\n", - " 0.887371\n", + " 0.597094\n", + " 425863.9375\n", " 307.0\n", - " 0.700326\n", - " 1438230.875\n", - " 0.557870\n", - " 21990.457031\n", - " 1427235.625\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.832350\n", + " 0.780163\n", + " 0.671010\n", " \n", " \n", " 20.0\n", + " 345399.59375\n", + " 0.587215\n", " 209\n", - " 1.337886e+06\n", - " 0.417262\n", - " 0.468444\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.845518\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.494890\n", + " 0.720779\n", + " 0.798501\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.785714\n", - " 1872917.0\n", - " 0.501948\n", - " 0.907889\n", + " 0.552289\n", + " 425863.9375\n", " 307.0\n", - " 0.814332\n", - " 1438230.875\n", - " 0.415024\n", - " 21990.457031\n", - " 1427235.875\n", + " 16519.121094\n", + " 344612.62500\n", + " 336353.03125\n", + " 0.857076\n", + " 0.543142\n", + " 0.736156\n", " \n", " \n", " 21.0\n", + " 398918.56250\n", + " 0.545435\n", " 219\n", - " 1.757860e+06\n", - " 0.155574\n", - " 0.414827\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.907593\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.497975\n", + " 0.720779\n", + " 0.783762\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.824675\n", - " 1872917.0\n", - " 0.374801\n", - " 0.936039\n", + " 0.565441\n", + " 425863.9375\n", " 307.0\n", - " 0.820847\n", - " 1438230.875\n", - " 0.428269\n", - " 21990.458984\n", - " 1427235.625\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.864509\n", + " 0.496256\n", + " 0.781759\n", " \n", " \n", " 22.0\n", + " 349698.78125\n", + " 0.542646\n", " 229\n", - " 1.477317e+06\n", - " 0.581470\n", - " 0.400171\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.864242\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.485205\n", + " 0.720779\n", + " 0.795811\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.779221\n", - " 1872917.0\n", - " 0.466724\n", - " 0.941970\n", + " 0.576850\n", + " 425863.9375\n", " 307.0\n", - " 0.843648\n", - " 1438231.000\n", - " 0.362999\n", - " 21990.458984\n", - " 1427235.875\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.881896\n", + " 0.459051\n", + " 0.781759\n", " \n", " \n", " 23.0\n", + " 293096.25000\n", + " 0.892161\n", " 239\n", - " 1.123604e+06\n", - " 0.358573\n", - " 0.504396\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.890606\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.558605\n", + " 0.681818\n", + " 0.818330\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.733766\n", - " 1872917.0\n", - " 0.556962\n", - " 0.953830\n", + " 0.580117\n", + " 425863.9375\n", " 307.0\n", - " 0.866450\n", - " 1438230.875\n", - " 0.329498\n", - " 21990.458984\n", - " 1427235.750\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.880551\n", + " 0.510156\n", + " 0.752443\n", " \n", " \n", " 24.0\n", + " 336998.78125\n", + " 0.456766\n", " 249\n", - " 1.244140e+06\n", - " 0.221016\n", - " 0.423291\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.864906\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.514400\n", + " 0.681818\n", + " 0.773132\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.759740\n", - " 1872917.0\n", - " 0.468389\n", - " 0.955236\n", + " 0.598204\n", + " 425863.9375\n", " 307.0\n", - " 0.869707\n", - " 1438230.875\n", - " 0.309423\n", - " 21990.458984\n", - " 1427236.000\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.00000\n", + " 0.889233\n", + " 0.483187\n", + " 0.745928\n", " \n", " \n", " 25.0\n", + " 336657.78125\n", + " 0.352279\n", " 259\n", - " 1.229171e+06\n", - " 0.572359\n", - " 0.426384\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.899623\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.499970\n", + " 0.753247\n", + " 0.813220\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.792208\n", - " 1872917.0\n", - " 0.419104\n", - " 0.965302\n", + " 0.525120\n", + " 425863.9375\n", " 307.0\n", - " 0.863192\n", - " 1438230.875\n", - " 0.291807\n", - " 21990.458984\n", - " 1427235.625\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.885650\n", + " 0.521461\n", + " 0.726384\n", " \n", " \n", " 26.0\n", + " 364991.59375\n", + " 0.392412\n", " 269\n", - " 1.108842e+06\n", - " 0.349935\n", - " 0.534997\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.878364\n", - " 21885.367188\n", - " 154.0\n", + " 423665.21875\n", + " 0.444270\n", " 0.740260\n", - " 1872917.0\n", - " 0.505887\n", - " 0.967783\n", + " 0.820374\n", + " 16437.994141\n", + " 434082.9375\n", + " 154.0\n", + " 0.509455\n", + " 425863.9375\n", " 307.0\n", - " 0.863192\n", - " 1438231.000\n", - " 0.282614\n", - " 21990.458984\n", - " 1427235.625\n", + " 16519.121094\n", + " 344612.62500\n", + " 336353.03125\n", + " 0.884739\n", + " 0.454626\n", + " 0.785016\n", " \n", " \n", " 27.0\n", + " 325794.31250\n", + " 0.382157\n", " 279\n", - " 1.417008e+06\n", - " 0.322971\n", - " 0.428234\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.888956\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.475072\n", + " 0.746753\n", + " 0.811566\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.824675\n", - " 1872917.0\n", - " 0.420687\n", - " 0.962200\n", + " 0.504831\n", + " 425863.9375\n", " 307.0\n", - " 0.879479\n", - " 1438231.000\n", - " 0.295518\n", - " 21990.457031\n", - " 1427235.875\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.899927\n", + " 0.427676\n", + " 0.791531\n", " \n", " \n", " 28.0\n", + " 352676.09375\n", + " 0.464475\n", " 289\n", - " 1.555399e+06\n", - " 0.372679\n", - " 0.394874\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.890331\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.555674\n", + " 0.681818\n", + " 0.818800\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.779221\n", - " 1872917.0\n", - " 0.417190\n", - " 0.970679\n", + " 0.607507\n", + " 425863.9375\n", " 307.0\n", - " 0.850163\n", - " 1438230.875\n", - " 0.280738\n", - " 21990.458984\n", - " 1427235.750\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.903702\n", + " 0.415076\n", + " 0.781759\n", " \n", " \n", " 29.0\n", + " 380415.43750\n", + " 0.355161\n", " 299\n", - " 1.493378e+06\n", - " 0.302444\n", - " 0.389936\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.887009\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.462625\n", + " 0.740260\n", + " 0.813411\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.759740\n", - " 1872917.0\n", - " 0.439355\n", - " 0.968188\n", + " 0.515112\n", + " 425863.9375\n", " 307.0\n", - " 0.882736\n", - " 1438230.875\n", - " 0.288812\n", - " 21990.457031\n", - " 1427235.750\n", + " 16519.123047\n", + " 344612.62500\n", + " 336353.06250\n", + " 0.886742\n", + " 0.463156\n", + " 0.762215\n", " \n", " \n", " 30.0\n", + " 339168.53125\n", + " 0.558701\n", " 309\n", - " 1.548551e+06\n", - " 0.254045\n", - " 0.426346\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.892754\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.451284\n", + " 0.766234\n", + " 0.812033\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.811688\n", - " 1872917.0\n", - " 0.395364\n", - " 0.980634\n", + " 0.507966\n", + " 425863.9375\n", " 307.0\n", - " 0.905537\n", - " 1438231.000\n", - " 0.219980\n", - " 21990.458984\n", - " 1427235.625\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.00000\n", + " 0.921069\n", + " 0.416532\n", + " 0.804560\n", " \n", " \n", " 31.0\n", + " 369215.43750\n", + " 0.673223\n", " 319\n", - " 8.691558e+05\n", - " 0.304821\n", - " 0.779696\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.890992\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.442745\n", + " 0.707792\n", + " 0.819671\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.759740\n", - " 1872917.0\n", - " 0.577802\n", - " 0.980449\n", + " 0.559673\n", + " 425863.9375\n", " 307.0\n", - " 0.892508\n", - " 1438231.000\n", - " 0.263563\n", - " 21990.458984\n", - " 1427235.750\n", + " 16519.119141\n", + " 344612.56250\n", + " 336353.03125\n", + " 0.907090\n", + " 0.371414\n", + " 0.824104\n", " \n", " \n", " 32.0\n", + " 354872.09375\n", + " 0.396891\n", " 329\n", - " 1.396107e+06\n", - " 0.187379\n", - " 0.391000\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.893189\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.468585\n", + " 0.746753\n", + " 0.803561\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.805195\n", - " 1872917.0\n", - " 0.391255\n", - " 0.973779\n", + " 0.510009\n", + " 425863.9375\n", " 307.0\n", - " 0.850163\n", - " 1438230.875\n", - " 0.329469\n", - " 21990.455078\n", - " 1427235.750\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.913617\n", + " 0.375423\n", + " 0.817590\n", " \n", " \n", " 33.0\n", + " 346428.78125\n", + " 0.363398\n", " 339\n", - " 1.627215e+06\n", - " 0.129498\n", - " 0.449625\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.895050\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.563169\n", + " 0.675325\n", + " 0.773566\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.759740\n", - " 1872917.0\n", - " 0.497273\n", - " 0.982901\n", + " 0.635229\n", + " 425863.9375\n", " 307.0\n", - " 0.921824\n", - " 1438231.000\n", - " 0.220396\n", - " 21990.458984\n", - " 1427235.750\n", + " 16519.123047\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.930962\n", + " 0.357142\n", + " 0.811075\n", " \n", " \n", " 34.0\n", + " 300021.84375\n", + " 0.580191\n", " 349\n", - " 1.368952e+06\n", - " 0.211941\n", - " 0.408100\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.889521\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.609344\n", + " 0.655844\n", + " 0.822872\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.824675\n", - " 1872917.0\n", - " 0.423250\n", - " 0.985325\n", + " 0.685291\n", + " 425863.9375\n", " 307.0\n", - " 0.902280\n", - " 1438231.000\n", - " 0.221393\n", - " 21990.458984\n", - " 1427235.750\n", + " 16519.119141\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.929558\n", + " 0.409185\n", + " 0.807818\n", " \n", " \n", " 35.0\n", + " 356599.28125\n", + " 0.490928\n", " 359\n", - " 1.401348e+06\n", - " 0.302265\n", - " 0.451895\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.891075\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.442997\n", + " 0.746753\n", + " 0.815979\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.753247\n", - " 1872917.0\n", - " 0.497889\n", - " 0.988963\n", + " 0.503653\n", + " 425863.9375\n", " 307.0\n", - " 0.912052\n", - " 1438230.875\n", - " 0.203206\n", - " 21990.457031\n", - " 1427235.750\n", + " 16519.119141\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.909506\n", + " 0.445129\n", + " 0.771987\n", " \n", " \n", " 36.0\n", + " 353163.09375\n", + " 0.393840\n", " 369\n", - " 1.127392e+06\n", - " 0.273849\n", - " 0.413880\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.890482\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.476871\n", + " 0.701299\n", + " 0.826601\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.798701\n", - " 1872917.0\n", - " 0.446077\n", - " 0.985271\n", + " 0.538854\n", + " 425863.9375\n", " 307.0\n", - " 0.925081\n", - " 1438231.000\n", - " 0.170113\n", - " 21990.457031\n", - " 1427235.750\n", + " 16519.119141\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.925727\n", + " 0.367817\n", + " 0.820847\n", " \n", " \n", " 37.0\n", + " 356153.62500\n", + " 0.365479\n", " 379\n", - " 1.139963e+06\n", - " 0.078704\n", - " 0.432375\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.893461\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.438253\n", + " 0.753247\n", + " 0.816300\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.798701\n", - " 1872917.0\n", - " 0.453471\n", - " 0.982970\n", + " 0.509939\n", + " 425863.9375\n", " 307.0\n", - " 0.934853\n", - " 1438231.000\n", - " 0.164219\n", - " 21990.457031\n", - " 1427235.625\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.926261\n", + " 0.349602\n", + " 0.843648\n", " \n", " \n", " 38.0\n", + " 393634.68750\n", + " 0.498922\n", " 389\n", - " 1.209724e+06\n", - " 0.162566\n", - " 0.488511\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.894522\n", - " 21885.367188\n", - " 154.0\n", + " 423665.21875\n", + " 0.414778\n", " 0.753247\n", - " 1872917.0\n", - " 0.512033\n", - " 0.989370\n", + " 0.813469\n", + " 16437.994141\n", + " 434082.9375\n", + " 154.0\n", + " 0.511835\n", + " 425863.9375\n", " 307.0\n", - " 0.931596\n", - " 1438230.875\n", - " 0.159590\n", - " 21990.457031\n", - " 1427235.625\n", + " 16519.123047\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.932563\n", + " 0.348991\n", + " 0.846906\n", " \n", " \n", " 39.0\n", + " 335286.75000\n", + " 0.255487\n", " 399\n", - " 1.167848e+06\n", - " 0.186313\n", - " 0.430364\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.902007\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.415039\n", + " 0.746753\n", + " 0.815930\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.792208\n", - " 1872917.0\n", - " 0.451821\n", - " 0.988411\n", + " 0.514698\n", + " 425863.9375\n", " 307.0\n", - " 0.941368\n", - " 1438231.125\n", - " 0.142256\n", - " 21990.458984\n", - " 1427235.750\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.934335\n", + " 0.329925\n", + " 0.850163\n", " \n", " \n", " 40.0\n", + " 291337.18750\n", + " 0.349353\n", " 409\n", - " 1.470358e+06\n", - " 0.227514\n", - " 0.435719\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.901063\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.412945\n", + " 0.740260\n", + " 0.816333\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.792208\n", - " 1872917.0\n", - " 0.456698\n", - " 0.993015\n", + " 0.512335\n", + " 425863.9375\n", " 307.0\n", - " 0.938111\n", - " 1438230.875\n", - " 0.143769\n", - " 21990.458984\n", - " 1427235.625\n", + " 16519.123047\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.941051\n", + " 0.326241\n", + " 0.846906\n", " \n", " \n", " 41.0\n", + " 293692.90625\n", + " 0.318963\n", " 419\n", - " 1.408957e+06\n", - " 0.052067\n", - " 0.446724\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.901063\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.412700\n", + " 0.753247\n", + " 0.813581\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.792208\n", - " 1872917.0\n", - " 0.466636\n", - " 0.987455\n", + " 0.511711\n", + " 425863.9375\n", " 307.0\n", - " 0.944625\n", - " 1438230.875\n", - " 0.136968\n", - " 21990.455078\n", - " 1427235.625\n", + " 16519.123047\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.942792\n", + " 0.324854\n", + " 0.859935\n", " \n", " \n", " 42.0\n", + " 323024.56250\n", + " 0.421881\n", " 429\n", - " 1.646227e+06\n", - " 0.166026\n", - " 0.451591\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.901062\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.412261\n", + " 0.753247\n", + " 0.814405\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.792208\n", - " 1872917.0\n", - " 0.471052\n", - " 0.991528\n", + " 0.512567\n", + " 425863.9375\n", " 307.0\n", - " 0.947883\n", - " 1438230.875\n", - " 0.134828\n", - " 21990.457031\n", - " 1427235.625\n", + " 16519.119141\n", + " 344612.56250\n", + " 336353.03125\n", + " 0.946595\n", + " 0.322408\n", + " 0.863192\n", " \n", " \n", " 43.0\n", + " 396642.78125\n", + " 0.520435\n", " 439\n", - " 1.732364e+06\n", - " 0.167422\n", - " 0.451927\n", - " 1594047.875\n", - " 1883859.75\n", - " 0.901062\n", - " 21885.367188\n", + " 423665.21875\n", + " 0.412287\n", + " 0.753247\n", + " 0.814405\n", + " 16437.994141\n", + " 434082.9375\n", " 154.0\n", - " 0.792208\n", - " 1872917.0\n", - " 0.471417\n", - " 0.985526\n", + " 0.512637\n", + " 425863.9375\n", " 307.0\n", - " 0.951140\n", - " 1438230.875\n", - " 0.134423\n", - " 21990.457031\n", - " 1427235.875\n", + " 16519.121094\n", + " 344612.59375\n", + " 336353.03125\n", + " 0.929539\n", + " 0.322021\n", + " 0.863192\n", " \n", " \n", "\n", "" ], "text/plain": [ - " step train/loss_rec_step train/loss_pred_step val/loss_pred_step \\\n", - "epoch \n", - "0.0 9 1.182340e+06 0.634697 0.635492 \n", - "1.0 19 1.345072e+06 0.557636 0.598052 \n", - "2.0 29 1.576135e+06 0.591931 0.584167 \n", - "3.0 39 1.361723e+06 0.624457 0.726895 \n", - "4.0 49 1.120079e+06 0.763037 0.582415 \n", - "5.0 59 1.559835e+06 0.535794 1.060955 \n", - "6.0 69 1.465921e+06 2.991578 1.306474 \n", - "7.0 79 1.144246e+06 0.768128 0.637859 \n", - "8.0 89 1.353968e+06 0.574782 0.632014 \n", - "9.0 99 1.337384e+06 0.600462 0.540945 \n", - "10.0 109 1.301120e+06 0.680717 0.652962 \n", - "11.0 119 1.286362e+06 0.552412 0.625013 \n", - "12.0 129 1.336431e+06 1.009193 0.993961 \n", - "13.0 139 1.553428e+06 1.257464 0.612175 \n", - "14.0 149 1.363776e+06 0.495535 0.691103 \n", - "15.0 159 8.766204e+05 0.475753 0.670254 \n", - "16.0 169 1.279335e+06 0.281322 0.444776 \n", - "17.0 179 1.767086e+06 0.320299 0.516623 \n", - "18.0 189 1.363108e+06 0.517960 0.658268 \n", - "19.0 199 1.468891e+06 0.532226 0.489780 \n", - "20.0 209 1.337886e+06 0.417262 0.468444 \n", - "21.0 219 1.757860e+06 0.155574 0.414827 \n", - "22.0 229 1.477317e+06 0.581470 0.400171 \n", - "23.0 239 1.123604e+06 0.358573 0.504396 \n", - "24.0 249 1.244140e+06 0.221016 0.423291 \n", - "25.0 259 1.229171e+06 0.572359 0.426384 \n", - "26.0 269 1.108842e+06 0.349935 0.534997 \n", - "27.0 279 1.417008e+06 0.322971 0.428234 \n", - "28.0 289 1.555399e+06 0.372679 0.394874 \n", - "29.0 299 1.493378e+06 0.302444 0.389936 \n", - "30.0 309 1.548551e+06 0.254045 0.426346 \n", - "31.0 319 8.691558e+05 0.304821 0.779696 \n", - "32.0 329 1.396107e+06 0.187379 0.391000 \n", - "33.0 339 1.627215e+06 0.129498 0.449625 \n", - "34.0 349 1.368952e+06 0.211941 0.408100 \n", - "35.0 359 1.401348e+06 0.302265 0.451895 \n", - "36.0 369 1.127392e+06 0.273849 0.413880 \n", - "37.0 379 1.139963e+06 0.078704 0.432375 \n", - "38.0 389 1.209724e+06 0.162566 0.488511 \n", - "39.0 399 1.167848e+06 0.186313 0.430364 \n", - "40.0 409 1.470358e+06 0.227514 0.435719 \n", - "41.0 419 1.408957e+06 0.052067 0.446724 \n", - "42.0 429 1.646227e+06 0.166026 0.451591 \n", - "43.0 439 1.732364e+06 0.167422 0.451927 \n", + " train/loss_rec_step train/loss_pred_step step val/loss_rec_step \\\n", + "epoch \n", + "0.0 317341.46875 0.750734 9 423665.21875 \n", + "1.0 333048.68750 0.639979 19 423665.21875 \n", + "2.0 290681.90625 0.623242 29 423665.21875 \n", + "3.0 358911.78125 0.588615 39 423665.21875 \n", + "4.0 386470.15625 0.781435 49 423665.21875 \n", + "5.0 336454.46875 0.562884 59 423665.21875 \n", + "6.0 290409.62500 1.049181 69 423665.21875 \n", + "7.0 332164.68750 0.743222 79 423665.21875 \n", + "8.0 323330.93750 0.494952 89 423665.21875 \n", + "9.0 342591.46875 0.580802 99 423665.21875 \n", + "10.0 327839.75000 0.747007 109 423665.21875 \n", + "11.0 388538.87500 0.611111 119 423665.21875 \n", + "12.0 375695.31250 0.893181 129 423665.21875 \n", + "13.0 308990.15625 0.476430 139 423665.21875 \n", + "14.0 338278.15625 0.665565 149 423665.21875 \n", + "15.0 296028.46875 0.502055 159 423665.21875 \n", + "16.0 315296.93750 0.452430 169 423665.21875 \n", + "17.0 299669.75000 0.616571 179 423665.21875 \n", + "18.0 347835.62500 0.323102 189 423665.21875 \n", + "19.0 317371.28125 0.541845 199 423665.21875 \n", + "20.0 345399.59375 0.587215 209 423665.21875 \n", + "21.0 398918.56250 0.545435 219 423665.21875 \n", + "22.0 349698.78125 0.542646 229 423665.21875 \n", + "23.0 293096.25000 0.892161 239 423665.21875 \n", + "24.0 336998.78125 0.456766 249 423665.21875 \n", + "25.0 336657.78125 0.352279 259 423665.21875 \n", + "26.0 364991.59375 0.392412 269 423665.21875 \n", + "27.0 325794.31250 0.382157 279 423665.21875 \n", + "28.0 352676.09375 0.464475 289 423665.21875 \n", + "29.0 380415.43750 0.355161 299 423665.21875 \n", + "30.0 339168.53125 0.558701 309 423665.21875 \n", + "31.0 369215.43750 0.673223 319 423665.21875 \n", + "32.0 354872.09375 0.396891 329 423665.21875 \n", + "33.0 346428.78125 0.363398 339 423665.21875 \n", + "34.0 300021.84375 0.580191 349 423665.21875 \n", + "35.0 356599.28125 0.490928 359 423665.21875 \n", + "36.0 353163.09375 0.393840 369 423665.21875 \n", + "37.0 356153.62500 0.365479 379 423665.21875 \n", + "38.0 393634.68750 0.498922 389 423665.21875 \n", + "39.0 335286.75000 0.255487 399 423665.21875 \n", + "40.0 291337.18750 0.349353 409 423665.21875 \n", + "41.0 293692.90625 0.318963 419 423665.21875 \n", + "42.0 323024.56250 0.421881 429 423665.21875 \n", + "43.0 396642.78125 0.520435 439 423665.21875 \n", "\n", - " val/loss_rec_step val/loss_rec_epoch val/auroc val/l1_loss val/n \\\n", - "epoch \n", - "0.0 1594047.875 1883859.75 0.670953 21885.367188 154.0 \n", - "1.0 1594047.875 1883859.75 0.662013 21885.367188 154.0 \n", - "2.0 1594047.875 1883859.75 0.750130 21885.367188 154.0 \n", - "3.0 1594047.875 1883859.75 0.718876 21885.367188 154.0 \n", - "4.0 1594047.875 1883859.75 0.699400 21885.367188 154.0 \n", - "5.0 1594047.875 1883859.75 0.619049 21885.367188 154.0 \n", - "6.0 1594047.875 1883859.75 0.739977 21885.367188 154.0 \n", - "7.0 1594047.875 1883859.75 0.737357 21885.367188 154.0 \n", - "8.0 1594047.875 1883859.75 0.724788 21885.367188 154.0 \n", - "9.0 1594047.875 1883859.75 0.827630 21885.367188 154.0 \n", - "10.0 1594047.875 1883859.75 0.813646 21885.367188 154.0 \n", - "11.0 1594047.875 1883859.75 0.800757 21885.367188 154.0 \n", - "12.0 1594047.875 1883859.75 0.680195 21885.367188 154.0 \n", - "13.0 1594047.875 1883859.75 0.800079 21885.367188 154.0 \n", - "14.0 1594047.875 1883859.75 0.826003 21885.367188 154.0 \n", - "15.0 1594047.875 1883859.75 0.782214 21885.367188 154.0 \n", - "16.0 1594047.875 1883859.75 0.880176 21885.367188 154.0 \n", - "17.0 1594047.875 1883859.75 0.800203 21885.367188 154.0 \n", - "18.0 1594047.875 1883859.75 0.830847 21885.367188 154.0 \n", - "19.0 1594047.875 1883859.75 0.835177 21885.367188 154.0 \n", - "20.0 1594047.875 1883859.75 0.845518 21885.367188 154.0 \n", - "21.0 1594047.875 1883859.75 0.907593 21885.367188 154.0 \n", - "22.0 1594047.875 1883859.75 0.864242 21885.367188 154.0 \n", - "23.0 1594047.875 1883859.75 0.890606 21885.367188 154.0 \n", - "24.0 1594047.875 1883859.75 0.864906 21885.367188 154.0 \n", - "25.0 1594047.875 1883859.75 0.899623 21885.367188 154.0 \n", - "26.0 1594047.875 1883859.75 0.878364 21885.367188 154.0 \n", - "27.0 1594047.875 1883859.75 0.888956 21885.367188 154.0 \n", - "28.0 1594047.875 1883859.75 0.890331 21885.367188 154.0 \n", - "29.0 1594047.875 1883859.75 0.887009 21885.367188 154.0 \n", - "30.0 1594047.875 1883859.75 0.892754 21885.367188 154.0 \n", - "31.0 1594047.875 1883859.75 0.890992 21885.367188 154.0 \n", - "32.0 1594047.875 1883859.75 0.893189 21885.367188 154.0 \n", - "33.0 1594047.875 1883859.75 0.895050 21885.367188 154.0 \n", - "34.0 1594047.875 1883859.75 0.889521 21885.367188 154.0 \n", - "35.0 1594047.875 1883859.75 0.891075 21885.367188 154.0 \n", - "36.0 1594047.875 1883859.75 0.890482 21885.367188 154.0 \n", - "37.0 1594047.875 1883859.75 0.893461 21885.367188 154.0 \n", - "38.0 1594047.875 1883859.75 0.894522 21885.367188 154.0 \n", - "39.0 1594047.875 1883859.75 0.902007 21885.367188 154.0 \n", - "40.0 1594047.875 1883859.75 0.901063 21885.367188 154.0 \n", - "41.0 1594047.875 1883859.75 0.901063 21885.367188 154.0 \n", - "42.0 1594047.875 1883859.75 0.901062 21885.367188 154.0 \n", - "43.0 1594047.875 1883859.75 0.901062 21885.367188 154.0 \n", + " val/loss_pred_step val/acc val/auroc val/l1_loss \\\n", + "epoch \n", + "0.0 0.580182 0.610390 0.642554 16437.994141 \n", + "1.0 0.538155 0.636364 0.645794 16437.994141 \n", + "2.0 0.545128 0.623377 0.698181 16437.994141 \n", + "3.0 0.655330 0.623377 0.711776 16437.994141 \n", + "4.0 0.614236 0.610390 0.718339 16437.994141 \n", + "5.0 0.633807 0.564935 0.740926 16437.994141 \n", + "6.0 1.312531 0.512987 0.741922 16437.994141 \n", + "7.0 1.432864 0.512987 0.706680 16437.994141 \n", + "8.0 0.840226 0.545455 0.774286 16437.994141 \n", + "9.0 0.549032 0.642857 0.676131 16437.994141 \n", + "10.0 0.821483 0.538961 0.793477 16437.994141 \n", + "11.0 0.691665 0.584416 0.703963 16437.994141 \n", + "12.0 0.586188 0.603896 0.697646 16437.994141 \n", + "13.0 1.315883 0.551948 0.681095 16437.994141 \n", + "14.0 0.675037 0.590909 0.788781 16437.994141 \n", + "15.0 0.521029 0.681818 0.742762 16437.994141 \n", + "16.0 0.587831 0.642857 0.681411 16437.994141 \n", + "17.0 0.510954 0.701299 0.783939 16437.994141 \n", + "18.0 1.368361 0.551948 0.670845 16437.994141 \n", + "19.0 0.514295 0.668831 0.774502 16437.994141 \n", + "20.0 0.494890 0.720779 0.798501 16437.994141 \n", + "21.0 0.497975 0.720779 0.783762 16437.994141 \n", + "22.0 0.485205 0.720779 0.795811 16437.994141 \n", + "23.0 0.558605 0.681818 0.818330 16437.994141 \n", + "24.0 0.514400 0.681818 0.773132 16437.994141 \n", + "25.0 0.499970 0.753247 0.813220 16437.994141 \n", + "26.0 0.444270 0.740260 0.820374 16437.994141 \n", + "27.0 0.475072 0.746753 0.811566 16437.994141 \n", + "28.0 0.555674 0.681818 0.818800 16437.994141 \n", + "29.0 0.462625 0.740260 0.813411 16437.994141 \n", + "30.0 0.451284 0.766234 0.812033 16437.994141 \n", + "31.0 0.442745 0.707792 0.819671 16437.994141 \n", + "32.0 0.468585 0.746753 0.803561 16437.994141 \n", + "33.0 0.563169 0.675325 0.773566 16437.994141 \n", + "34.0 0.609344 0.655844 0.822872 16437.994141 \n", + "35.0 0.442997 0.746753 0.815979 16437.994141 \n", + "36.0 0.476871 0.701299 0.826601 16437.994141 \n", + "37.0 0.438253 0.753247 0.816300 16437.994141 \n", + "38.0 0.414778 0.753247 0.813469 16437.994141 \n", + "39.0 0.415039 0.746753 0.815930 16437.994141 \n", + "40.0 0.412945 0.740260 0.816333 16437.994141 \n", + "41.0 0.412700 0.753247 0.813581 16437.994141 \n", + "42.0 0.412261 0.753247 0.814405 16437.994141 \n", + "43.0 0.412287 0.753247 0.814405 16437.994141 \n", "\n", - " val/acc val/l2_loss val/loss_pred_epoch train/auroc train/n \\\n", - "epoch \n", - "0.0 0.525974 1872917.0 0.814268 0.559346 307.0 \n", - "1.0 0.597403 1872917.0 0.648931 0.657845 307.0 \n", - "2.0 0.610390 1872917.0 0.644291 0.745154 307.0 \n", - "3.0 0.668831 1872917.0 0.639570 0.822406 307.0 \n", - "4.0 0.623377 1872917.0 0.691840 0.809829 307.0 \n", - "5.0 0.525974 1872917.0 1.112498 0.795981 307.0 \n", - "6.0 0.532468 1872917.0 1.048195 0.790288 307.0 \n", - "7.0 0.707792 1872917.0 0.615004 0.817999 307.0 \n", - "8.0 0.714286 1872917.0 0.612911 0.799933 307.0 \n", - "9.0 0.746753 1872917.0 0.535939 0.798542 307.0 \n", - "10.0 0.558442 1872917.0 0.713234 0.859066 307.0 \n", - "11.0 0.688312 1872917.0 0.577954 0.870304 307.0 \n", - "12.0 0.487013 1872917.0 0.787368 0.848842 307.0 \n", - "13.0 0.714286 1872917.0 0.623519 0.811033 307.0 \n", - "14.0 0.675325 1872917.0 0.585435 0.847192 307.0 \n", - "15.0 0.538961 1872917.0 0.794975 0.887661 307.0 \n", - "16.0 0.805195 1872917.0 0.427298 0.923471 307.0 \n", - "17.0 0.766234 1872917.0 0.554734 0.907138 307.0 \n", - "18.0 0.519481 1872917.0 0.804349 0.915498 307.0 \n", - "19.0 0.785714 1872917.0 0.508584 0.887371 307.0 \n", - "20.0 0.785714 1872917.0 0.501948 0.907889 307.0 \n", - "21.0 0.824675 1872917.0 0.374801 0.936039 307.0 \n", - "22.0 0.779221 1872917.0 0.466724 0.941970 307.0 \n", - "23.0 0.733766 1872917.0 0.556962 0.953830 307.0 \n", - "24.0 0.759740 1872917.0 0.468389 0.955236 307.0 \n", - "25.0 0.792208 1872917.0 0.419104 0.965302 307.0 \n", - "26.0 0.740260 1872917.0 0.505887 0.967783 307.0 \n", - "27.0 0.824675 1872917.0 0.420687 0.962200 307.0 \n", - "28.0 0.779221 1872917.0 0.417190 0.970679 307.0 \n", - "29.0 0.759740 1872917.0 0.439355 0.968188 307.0 \n", - "30.0 0.811688 1872917.0 0.395364 0.980634 307.0 \n", - "31.0 0.759740 1872917.0 0.577802 0.980449 307.0 \n", - "32.0 0.805195 1872917.0 0.391255 0.973779 307.0 \n", - "33.0 0.759740 1872917.0 0.497273 0.982901 307.0 \n", - "34.0 0.824675 1872917.0 0.423250 0.985325 307.0 \n", - "35.0 0.753247 1872917.0 0.497889 0.988963 307.0 \n", - "36.0 0.798701 1872917.0 0.446077 0.985271 307.0 \n", - "37.0 0.798701 1872917.0 0.453471 0.982970 307.0 \n", - "38.0 0.753247 1872917.0 0.512033 0.989370 307.0 \n", - "39.0 0.792208 1872917.0 0.451821 0.988411 307.0 \n", - "40.0 0.792208 1872917.0 0.456698 0.993015 307.0 \n", - "41.0 0.792208 1872917.0 0.466636 0.987455 307.0 \n", - "42.0 0.792208 1872917.0 0.471052 0.991528 307.0 \n", - "43.0 0.792208 1872917.0 0.471417 0.985526 307.0 \n", + " val/loss_rec_epoch val/n val/loss_pred_epoch val/l2_loss train/n \\\n", + "epoch \n", + "0.0 434082.9375 154.0 0.675582 425863.9375 307.0 \n", + "1.0 434082.9375 154.0 0.708072 425863.9375 307.0 \n", + "2.0 434082.9375 154.0 0.641758 425863.9375 307.0 \n", + "3.0 434082.9375 154.0 0.668705 425863.9375 307.0 \n", + "4.0 434082.9375 154.0 0.668234 425863.9375 307.0 \n", + "5.0 434082.9375 154.0 0.724875 425863.9375 307.0 \n", + "6.0 434082.9375 154.0 1.169899 425863.9375 307.0 \n", + "7.0 434082.9375 154.0 1.262260 425863.9375 307.0 \n", + "8.0 434082.9375 154.0 1.079983 425863.9375 307.0 \n", + "9.0 434082.9375 154.0 0.645718 425863.9375 307.0 \n", + "10.0 434082.9375 154.0 0.733439 425863.9375 307.0 \n", + "11.0 434082.9375 154.0 0.732056 425863.9375 307.0 \n", + "12.0 434082.9375 154.0 0.628228 425863.9375 307.0 \n", + "13.0 434082.9375 154.0 1.641692 425863.9375 307.0 \n", + "14.0 434082.9375 154.0 0.642030 425863.9375 307.0 \n", + "15.0 434082.9375 154.0 0.619203 425863.9375 307.0 \n", + "16.0 434082.9375 154.0 0.812129 425863.9375 307.0 \n", + "17.0 434082.9375 154.0 0.575469 425863.9375 307.0 \n", + "18.0 434082.9375 154.0 1.609445 425863.9375 307.0 \n", + "19.0 434082.9375 154.0 0.597094 425863.9375 307.0 \n", + "20.0 434082.9375 154.0 0.552289 425863.9375 307.0 \n", + "21.0 434082.9375 154.0 0.565441 425863.9375 307.0 \n", + "22.0 434082.9375 154.0 0.576850 425863.9375 307.0 \n", + "23.0 434082.9375 154.0 0.580117 425863.9375 307.0 \n", + "24.0 434082.9375 154.0 0.598204 425863.9375 307.0 \n", + "25.0 434082.9375 154.0 0.525120 425863.9375 307.0 \n", + "26.0 434082.9375 154.0 0.509455 425863.9375 307.0 \n", + "27.0 434082.9375 154.0 0.504831 425863.9375 307.0 \n", + "28.0 434082.9375 154.0 0.607507 425863.9375 307.0 \n", + "29.0 434082.9375 154.0 0.515112 425863.9375 307.0 \n", + "30.0 434082.9375 154.0 0.507966 425863.9375 307.0 \n", + "31.0 434082.9375 154.0 0.559673 425863.9375 307.0 \n", + "32.0 434082.9375 154.0 0.510009 425863.9375 307.0 \n", + "33.0 434082.9375 154.0 0.635229 425863.9375 307.0 \n", + "34.0 434082.9375 154.0 0.685291 425863.9375 307.0 \n", + "35.0 434082.9375 154.0 0.503653 425863.9375 307.0 \n", + "36.0 434082.9375 154.0 0.538854 425863.9375 307.0 \n", + "37.0 434082.9375 154.0 0.509939 425863.9375 307.0 \n", + "38.0 434082.9375 154.0 0.511835 425863.9375 307.0 \n", + "39.0 434082.9375 154.0 0.514698 425863.9375 307.0 \n", + "40.0 434082.9375 154.0 0.512335 425863.9375 307.0 \n", + "41.0 434082.9375 154.0 0.511711 425863.9375 307.0 \n", + "42.0 434082.9375 154.0 0.512567 425863.9375 307.0 \n", + "43.0 434082.9375 154.0 0.512637 425863.9375 307.0 \n", "\n", - " train/acc train/loss_rec_epoch train/loss_pred_epoch train/l1_loss \\\n", - "epoch \n", - "0.0 0.589577 1438230.875 0.846415 21990.455078 \n", - "1.0 0.628664 1438231.000 0.668884 21990.458984 \n", - "2.0 0.638436 1438230.875 0.627850 21990.457031 \n", - "3.0 0.723127 1438230.875 0.549150 21990.457031 \n", - "4.0 0.716612 1438231.000 0.583850 21990.458984 \n", - "5.0 0.700326 1438231.000 0.552490 21990.458984 \n", - "6.0 0.635179 1438231.000 1.126661 21990.458984 \n", - "7.0 0.543974 1438230.875 1.066298 21990.455078 \n", - "8.0 0.592834 1438231.000 0.693450 21990.457031 \n", - "9.0 0.664495 1438231.125 0.623075 21990.458984 \n", - "10.0 0.706840 1438230.875 0.580137 21990.458984 \n", - "11.0 0.752443 1438230.875 0.490665 21990.457031 \n", - "12.0 0.690554 1438230.875 0.679112 21990.455078 \n", - "13.0 0.589577 1438230.875 0.742965 21990.458984 \n", - "14.0 0.742671 1438230.875 0.572263 21990.457031 \n", - "15.0 0.693811 1438230.875 0.534876 21990.455078 \n", - "16.0 0.798046 1438230.875 0.432401 21990.457031 \n", - "17.0 0.785016 1438230.875 0.463313 21990.458984 \n", - "18.0 0.710098 1438231.000 0.595279 21990.458984 \n", - "19.0 0.700326 1438230.875 0.557870 21990.457031 \n", - "20.0 0.814332 1438230.875 0.415024 21990.457031 \n", - "21.0 0.820847 1438230.875 0.428269 21990.458984 \n", - "22.0 0.843648 1438231.000 0.362999 21990.458984 \n", - "23.0 0.866450 1438230.875 0.329498 21990.458984 \n", - "24.0 0.869707 1438230.875 0.309423 21990.458984 \n", - "25.0 0.863192 1438230.875 0.291807 21990.458984 \n", - "26.0 0.863192 1438231.000 0.282614 21990.458984 \n", - "27.0 0.879479 1438231.000 0.295518 21990.457031 \n", - "28.0 0.850163 1438230.875 0.280738 21990.458984 \n", - "29.0 0.882736 1438230.875 0.288812 21990.457031 \n", - "30.0 0.905537 1438231.000 0.219980 21990.458984 \n", - "31.0 0.892508 1438231.000 0.263563 21990.458984 \n", - "32.0 0.850163 1438230.875 0.329469 21990.455078 \n", - "33.0 0.921824 1438231.000 0.220396 21990.458984 \n", - "34.0 0.902280 1438231.000 0.221393 21990.458984 \n", - "35.0 0.912052 1438230.875 0.203206 21990.457031 \n", - "36.0 0.925081 1438231.000 0.170113 21990.457031 \n", - "37.0 0.934853 1438231.000 0.164219 21990.457031 \n", - "38.0 0.931596 1438230.875 0.159590 21990.457031 \n", - "39.0 0.941368 1438231.125 0.142256 21990.458984 \n", - "40.0 0.938111 1438230.875 0.143769 21990.458984 \n", - "41.0 0.944625 1438230.875 0.136968 21990.455078 \n", - "42.0 0.947883 1438230.875 0.134828 21990.457031 \n", - "43.0 0.951140 1438230.875 0.134423 21990.457031 \n", + " train/l1_loss train/loss_rec_epoch train/l2_loss train/auroc \\\n", + "epoch \n", + "0.0 16519.121094 344612.56250 336353.03125 0.644976 \n", + "1.0 16519.123047 344612.59375 336353.03125 0.693617 \n", + "2.0 16519.121094 344612.59375 336353.03125 0.718803 \n", + "3.0 16519.119141 344612.59375 336353.03125 0.744478 \n", + "4.0 16519.121094 344612.59375 336353.03125 0.756434 \n", + "5.0 16519.121094 344612.59375 336353.03125 0.813413 \n", + "6.0 16519.121094 344612.59375 336353.03125 0.821166 \n", + "7.0 16519.119141 344612.56250 336353.03125 0.782922 \n", + "8.0 16519.119141 344612.59375 336353.03125 0.815575 \n", + "9.0 16519.121094 344612.59375 336353.03125 0.791030 \n", + "10.0 16519.119141 344612.59375 336353.03125 0.799731 \n", + "11.0 16519.121094 344612.59375 336353.03125 0.781938 \n", + "12.0 16519.121094 344612.59375 336353.00000 0.757390 \n", + "13.0 16519.123047 344612.62500 336353.03125 0.803226 \n", + "14.0 16519.121094 344612.59375 336353.03125 0.808782 \n", + "15.0 16519.121094 344612.59375 336353.03125 0.802534 \n", + "16.0 16519.121094 344612.53125 336353.03125 0.844532 \n", + "17.0 16519.121094 344612.59375 336353.03125 0.834311 \n", + "18.0 16519.121094 344612.62500 336353.03125 0.866793 \n", + "19.0 16519.121094 344612.59375 336353.03125 0.832350 \n", + "20.0 16519.121094 344612.62500 336353.03125 0.857076 \n", + "21.0 16519.121094 344612.59375 336353.03125 0.864509 \n", + "22.0 16519.121094 344612.59375 336353.03125 0.881896 \n", + "23.0 16519.121094 344612.59375 336353.03125 0.880551 \n", + "24.0 16519.121094 344612.59375 336353.00000 0.889233 \n", + "25.0 16519.121094 344612.59375 336353.03125 0.885650 \n", + "26.0 16519.121094 344612.62500 336353.03125 0.884739 \n", + "27.0 16519.121094 344612.59375 336353.03125 0.899927 \n", + "28.0 16519.121094 344612.59375 336353.03125 0.903702 \n", + "29.0 16519.123047 344612.62500 336353.06250 0.886742 \n", + "30.0 16519.121094 344612.59375 336353.00000 0.921069 \n", + "31.0 16519.119141 344612.56250 336353.03125 0.907090 \n", + "32.0 16519.121094 344612.59375 336353.03125 0.913617 \n", + "33.0 16519.123047 344612.59375 336353.03125 0.930962 \n", + "34.0 16519.119141 344612.59375 336353.03125 0.929558 \n", + "35.0 16519.119141 344612.59375 336353.03125 0.909506 \n", + "36.0 16519.119141 344612.59375 336353.03125 0.925727 \n", + "37.0 16519.121094 344612.59375 336353.03125 0.926261 \n", + "38.0 16519.123047 344612.59375 336353.03125 0.932563 \n", + "39.0 16519.121094 344612.59375 336353.03125 0.934335 \n", + "40.0 16519.123047 344612.59375 336353.03125 0.941051 \n", + "41.0 16519.123047 344612.59375 336353.03125 0.942792 \n", + "42.0 16519.119141 344612.56250 336353.03125 0.946595 \n", + "43.0 16519.121094 344612.59375 336353.03125 0.929539 \n", "\n", - " train/l2_loss \n", - "epoch \n", - "0.0 1427235.750 \n", - "1.0 1427235.750 \n", - "2.0 1427235.625 \n", - "3.0 1427235.750 \n", - "4.0 1427235.750 \n", - "5.0 1427235.750 \n", - "6.0 1427235.750 \n", - "7.0 1427235.625 \n", - "8.0 1427235.750 \n", - "9.0 1427235.750 \n", - "10.0 1427235.750 \n", - "11.0 1427235.625 \n", - "12.0 1427235.750 \n", - "13.0 1427235.750 \n", - "14.0 1427235.750 \n", - "15.0 1427235.750 \n", - "16.0 1427235.750 \n", - "17.0 1427235.625 \n", - "18.0 1427235.625 \n", - "19.0 1427235.625 \n", - "20.0 1427235.875 \n", - "21.0 1427235.625 \n", - "22.0 1427235.875 \n", - "23.0 1427235.750 \n", - "24.0 1427236.000 \n", - "25.0 1427235.625 \n", - "26.0 1427235.625 \n", - "27.0 1427235.875 \n", - "28.0 1427235.750 \n", - "29.0 1427235.750 \n", - "30.0 1427235.625 \n", - "31.0 1427235.750 \n", - "32.0 1427235.750 \n", - "33.0 1427235.750 \n", - "34.0 1427235.750 \n", - "35.0 1427235.750 \n", - "36.0 1427235.750 \n", - "37.0 1427235.625 \n", - "38.0 1427235.625 \n", - "39.0 1427235.750 \n", - "40.0 1427235.625 \n", - "41.0 1427235.625 \n", - "42.0 1427235.625 \n", - "43.0 1427235.875 " + " train/loss_pred_epoch train/acc \n", + "epoch \n", + "0.0 0.734680 0.576547 \n", + "1.0 0.671386 0.583062 \n", + "2.0 0.643272 0.654723 \n", + "3.0 0.636399 0.661238 \n", + "4.0 0.703600 0.609121 \n", + "5.0 0.606972 0.657980 \n", + "6.0 0.706567 0.605863 \n", + "7.0 0.728517 0.635179 \n", + "8.0 0.720674 0.589577 \n", + "9.0 0.818828 0.566775 \n", + "10.0 0.608062 0.687296 \n", + "11.0 0.721151 0.589577 \n", + "12.0 0.706083 0.563518 \n", + "13.0 0.583009 0.661238 \n", + "14.0 0.738327 0.638436 \n", + "15.0 0.641488 0.644951 \n", + "16.0 0.604061 0.706840 \n", + "17.0 0.582068 0.687296 \n", + "18.0 0.519147 0.752443 \n", + "19.0 0.780163 0.671010 \n", + "20.0 0.543142 0.736156 \n", + "21.0 0.496256 0.781759 \n", + "22.0 0.459051 0.781759 \n", + "23.0 0.510156 0.752443 \n", + "24.0 0.483187 0.745928 \n", + "25.0 0.521461 0.726384 \n", + "26.0 0.454626 0.785016 \n", + "27.0 0.427676 0.791531 \n", + "28.0 0.415076 0.781759 \n", + "29.0 0.463156 0.762215 \n", + "30.0 0.416532 0.804560 \n", + "31.0 0.371414 0.824104 \n", + "32.0 0.375423 0.817590 \n", + "33.0 0.357142 0.811075 \n", + "34.0 0.409185 0.807818 \n", + "35.0 0.445129 0.771987 \n", + "36.0 0.367817 0.820847 \n", + "37.0 0.349602 0.843648 \n", + "38.0 0.348991 0.846906 \n", + "39.0 0.329925 0.850163 \n", + "40.0 0.326241 0.846906 \n", + "41.0 0.324854 0.859935 \n", + "42.0 0.322408 0.863192 \n", + "43.0 0.322021 0.863192 " ] }, - "execution_count": 42, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -6405,7 +5700,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -6420,7 +5715,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "9fb94ab276bd454db88cee71c30c773c", + "model_id": "d918e5b7ea634168bcaff4b5bf3f0003", "version_major": 2, "version_minor": 0 }, @@ -6437,12 +5732,12 @@ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n",
        "┃        Test metric               DataLoader 0               DataLoader 1               DataLoader 2        ┃\n",
        "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
-       "│         test/acc              0.9511400461196899         0.7922077775001526         0.8116883039474487     │\n",
-       "│        test/auroc             0.9900705814361572         0.9010624885559082          0.901390790939331     │\n",
-       "│       test/l1_loss              21990.455078125             21885.3671875             22052.931640625      │\n",
-       "│       test/l2_loss                1427235.875                 1872917.0                 1674740.625        │\n",
-       "│   test/loss_pred_epoch        0.13438470661640167        0.47141677141189575        0.4837687015533447     │\n",
-       "│    test/loss_rec_epoch             1438231.0                 1883859.75                 1685767.25         │\n",
+       "│         test/acc              0.8631922006607056         0.7532467246055603         0.7792207598686218     │\n",
+       "│        test/auroc             0.9291849136352539         0.8144053220748901         0.8583093881607056     │\n",
+       "│       test/l1_loss              16519.123046875            16437.994140625            16585.658203125      │\n",
+       "│       test/l2_loss               336353.03125                425863.9375                 400474.75         │\n",
+       "│   test/loss_pred_epoch        0.32199224829673767        0.5126374959945679         0.4895579218864441     │\n",
+       "│    test/loss_rec_epoch           344612.59375                434082.9375               408767.59375        │\n",
        "│          test/n                      307.0                      154.0                      154.0           │\n",
        "└───────────────────────────┴───────────────────────────┴───────────────────────────┴───────────────────────────┘\n",
        "
\n" @@ -6451,12 +5746,12 @@ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", "┃\u001b[1m \u001b[0m\u001b[1m Test metric \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 0 \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 1 \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 2 \u001b[0m\u001b[1m \u001b[0m┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", - "│\u001b[36m \u001b[0m\u001b[36m test/acc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.9511400461196899 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.7922077775001526 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8116883039474487 \u001b[0m\u001b[35m \u001b[0m│\n", - "│\u001b[36m \u001b[0m\u001b[36m test/auroc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.9900705814361572 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.9010624885559082 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.901390790939331 \u001b[0m\u001b[35m \u001b[0m│\n", - "│\u001b[36m \u001b[0m\u001b[36m test/l1_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 21990.455078125 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 21885.3671875 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 22052.931640625 \u001b[0m\u001b[35m \u001b[0m│\n", - "│\u001b[36m \u001b[0m\u001b[36m test/l2_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 1427235.875 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 1872917.0 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 1674740.625 \u001b[0m\u001b[35m \u001b[0m│\n", - "│\u001b[36m \u001b[0m\u001b[36m test/loss_pred_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.13438470661640167 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.47141677141189575 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.4837687015533447 \u001b[0m\u001b[35m \u001b[0m│\n", - "│\u001b[36m \u001b[0m\u001b[36m test/loss_rec_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 1438231.0 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 1883859.75 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 1685767.25 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/acc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8631922006607056 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.7532467246055603 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.7792207598686218 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/auroc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.9291849136352539 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8144053220748901 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8583093881607056 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l1_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 16519.123046875 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 16437.994140625 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 16585.658203125 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l2_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 336353.03125 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 425863.9375 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 400474.75 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_pred_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.32199224829673767 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.5126374959945679 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.4895579218864441 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_rec_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 344612.59375 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 434082.9375 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 408767.59375 \u001b[0m\u001b[35m \u001b[0m│\n", "│\u001b[36m \u001b[0m\u001b[36m test/n \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 307.0 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 154.0 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 154.0 \u001b[0m\u001b[35m \u001b[0m│\n", "└───────────────────────────┴───────────────────────────┴───────────────────────────┴───────────────────────────┘\n" ] @@ -6470,12 +5765,12 @@ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n",
        "┃        Test metric               DataLoader 3        ┃\n",
        "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
-       "│         test/acc              0.8764227628707886     │\n",
-       "│        test/auroc             0.9502072930335999     │\n",
-       "│       test/l1_loss              21979.818359375      │\n",
-       "│       test/l2_loss                1600814.25         │\n",
-       "│   test/loss_pred_epoch        0.3062663674354553     │\n",
-       "│    test/loss_rec_epoch            1611803.875        │\n",
+       "│         test/acc              0.8146341443061829     │\n",
+       "│        test/auroc             0.8867481350898743     │\n",
+       "│       test/l1_loss              16515.486328125      │\n",
+       "│       test/l2_loss               374822.71875        │\n",
+       "│   test/loss_pred_epoch        0.41169214248657227    │\n",
+       "│    test/loss_rec_epoch            383080.4375        │\n",
        "│          test/n                      615.0           │\n",
        "└───────────────────────────┴───────────────────────────┘\n",
        "
\n" @@ -6484,12 +5779,12 @@ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", "┃\u001b[1m \u001b[0m\u001b[1m Test metric \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 3 \u001b[0m\u001b[1m \u001b[0m┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", - "│\u001b[36m \u001b[0m\u001b[36m test/acc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8764227628707886 \u001b[0m\u001b[35m \u001b[0m│\n", - "│\u001b[36m \u001b[0m\u001b[36m test/auroc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.9502072930335999 \u001b[0m\u001b[35m \u001b[0m│\n", - "│\u001b[36m \u001b[0m\u001b[36m test/l1_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 21979.818359375 \u001b[0m\u001b[35m \u001b[0m│\n", - "│\u001b[36m \u001b[0m\u001b[36m test/l2_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 1600814.25 \u001b[0m\u001b[35m \u001b[0m│\n", - "│\u001b[36m \u001b[0m\u001b[36m test/loss_pred_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.3062663674354553 \u001b[0m\u001b[35m \u001b[0m│\n", - "│\u001b[36m \u001b[0m\u001b[36m test/loss_rec_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 1611803.875 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/acc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8146341443061829 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/auroc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8867481350898743 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l1_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 16515.486328125 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l2_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 374822.71875 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_pred_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.41169214248657227 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_rec_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 383080.4375 \u001b[0m\u001b[35m \u001b[0m│\n", "│\u001b[36m \u001b[0m\u001b[36m test/n \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 615.0 \u001b[0m\u001b[35m \u001b[0m│\n", "└───────────────────────────┴───────────────────────────┘\n" ] @@ -6506,7 +5801,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -6526,9 +5821,64 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 44, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d9d78ffe0cef49109eabec84c15cef73", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Testing: | | 0/? [00:00┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", + "┃ Test metric DataLoader 0 ┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", + "│ test/acc 0.8146341443061829 │\n", + "│ test/auroc 0.8869682550430298 │\n", + "│ test/l1_loss 16516.830078125 │\n", + "│ test/l2_loss 374832.40625 │\n", + "│ test/loss_pred_epoch 0.41171228885650635 │\n", + "│ test/loss_rec_epoch 383090.875 │\n", + "│ test/n 615.0 │\n", + "└───────────────────────────┴───────────────────────────┘\n", + "\n" + ], + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1m Test metric \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 0 \u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", + "│\u001b[36m \u001b[0m\u001b[36m test/acc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8146341443061829 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/auroc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8869682550430298 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l1_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 16516.830078125 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l2_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 374832.40625 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_pred_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.41171228885650635 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_rec_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 383090.875 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/n \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 615.0 \u001b[0m\u001b[35m \u001b[0m│\n", + "└───────────────────────────┴───────────────────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# print(f\"training with x_feats={x_feats} with c={c}\")\n", "rs2 = trainer1.test(net, dataloaders=[dl_ood])\n", @@ -6549,9 +5899,710 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 45, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Trainer will use only 1 of 2 GPUs because it is running inside an interactive / notebook environment. You may try to set `Trainer(devices=2)` but please note that multi-GPU inside interactive / notebook environments is considered experimental and unstable. Your mileage may vary.\n", + "Using 16bit Automatic Mixed Precision (AMP)\n", + "GPU available: True (cuda), used: True\n", + "TPU available: False, using: 0 TPU cores\n", + "IPU available: False, using: 0 IPUs\n", + "HPU available: False, using: 0 HPUs\n", + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "\n", + " | Name | Type | Params\n", + "-------------------------------------\n", + "0 | ae | AutoEncoder | 82.7 M\n", + "1 | head | Sequential | 4.1 M \n", + "-------------------------------------\n", + "86.8 M Trainable params\n", + "0 Non-trainable params\n", + "86.8 M Total params\n", + "347.287 Total estimated model params size (MB)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "training both ae and probe\n", + "requires_grad: True\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "29533ab19b444961a440791923a95964", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Sanity Checking: | | 0/? [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:492: Your `test_dataloader`'s sampler has shuffling enabled, it is strongly recommended that you turn shuffling off for val/test dataloaders.\n", + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:441: The 'test_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "9942664c14434bd7ab90712f0a33e6d2", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Testing: | | 0/? [00:00┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", + "┃ Test metric DataLoader 0 DataLoader 1 DataLoader 2 ┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", + "│ test/acc 1.0 0.7792207598686218 0.8116883039474487 │\n", + "│ test/auroc 1.0 0.8337568640708923 0.890852689743042 │\n", + "│ test/l1_loss 13389.2607421875 13325.943359375 13440.3974609375 │\n", + "│ test/l2_loss 247347.9375 353132.875 325225.25 │\n", + "│ test/loss_pred_epoch 0.001399834523908794 1.0838972330093384 0.948072075843811 │\n", + "│ test/loss_rec_epoch 254042.546875 359795.90625 331945.46875 │\n", + "│ test/n 307.0 154.0 154.0 │\n", + "└───────────────────────────┴───────────────────────────┴───────────────────────────┴───────────────────────────┘\n", + "\n" + ], + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1m Test metric \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 0 \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 1 \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 2 \u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", + "│\u001b[36m \u001b[0m\u001b[36m test/acc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 1.0 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.7792207598686218 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8116883039474487 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/auroc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 1.0 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8337568640708923 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.890852689743042 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l1_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 13389.2607421875 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 13325.943359375 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 13440.3974609375 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l2_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 247347.9375 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 353132.875 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 325225.25 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_pred_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.001399834523908794 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 1.0838972330093384 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.948072075843811 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_rec_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 254042.546875 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 359795.90625 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 331945.46875 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/n \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 307.0 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 154.0 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 154.0 \u001b[0m\u001b[35m \u001b[0m│\n", + "└───────────────────────────┴───────────────────────────┴───────────────────────────┴───────────────────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n",
+       "┃        Test metric               DataLoader 3        ┃\n",
+       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
+       "│         test/acc              0.8975609540939331     │\n",
+       "│        test/auroc             0.9320342540740967     │\n",
+       "│       test/l1_loss               13386.2109375       │\n",
+       "│       test/l2_loss               293338.15625        │\n",
+       "│   test/loss_pred_epoch        0.5095239877700806     │\n",
+       "│    test/loss_rec_epoch           300031.28125        │\n",
+       "│          test/n                      615.0           │\n",
+       "└───────────────────────────┴───────────────────────────┘\n",
+       "
\n" + ], + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1m Test metric \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 3 \u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", + "│\u001b[36m \u001b[0m\u001b[36m test/acc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8975609540939331 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/auroc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.9320342540740967 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l1_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 13386.2109375 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l2_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 293338.15625 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_pred_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.5095239877700806 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_rec_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 300031.28125 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/n \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 615.0 \u001b[0m\u001b[35m \u001b[0m│\n", + "└───────────────────────────┴───────────────────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:441: The 'predict_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "da9c3583be8546b5ad788c246ab8cfd2", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Predicting: | | 0/? [00:00\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", + "
llm gavediddidn't
instructed to
tell a truth0.810.78
tell a lie0.820.71
\n", + "" + ], + "text/plain": [ + "llm gave did didn't\n", + "instructed to \n", + "tell a truth 0.81 0.78\n", + "tell a lie 0.82 0.71" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "⭐PRIMARY METRIC⭐ acc=79.55% from probe\n", + "⭐SECONDARY METRIC⭐ acc_lie_lie=81.82% from probe\n" + ] + } + ], "source": [ "# look at hist\n", "df_hist, _ = read_metrics_csv(trainer3.logger.experiment.metrics_file_path)\n", @@ -6704,15 +6977,159 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 49, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:441: The 'predict_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e2e1636a5c0f40d38baf64d24c20b2d3", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Predicting: | | 0/? [00:00\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", + "
llm gavediddidn't
instructed to
tell a truth0.810.78
tell a lie0.820.71
\n", + "" + ], + "text/plain": [ + "llm gave did didn't\n", + "instructed to \n", + "tell a truth 0.81 0.78\n", + "tell a lie 0.82 0.71" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "⭐PRIMARY METRIC⭐ acc=79.55% from probe\n", + "⭐SECONDARY METRIC⭐ acc_lie_lie=81.82% from probe\n" + ] + }, + { + "ename": "KeyError", + "evalue": "0", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[49], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m testval_metrics \u001b[38;5;241m=\u001b[39m calc_metrics(dm, trainer3, net, use_val\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m----> 2\u001b[0m rs \u001b[38;5;241m=\u001b[39m \u001b[43mrename_pl_test_results\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtrain\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mval\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtest\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mood\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# rs['test'] = {**rs['test'], **test_metrics}\u001b[39;00m\n\u001b[1;32m 4\u001b[0m rs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtest\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124macc_lie_lie\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m testval_metrics[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124macc_lie_lie\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", + "File \u001b[0;32m/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/src/helpers/lightning.py:38\u001b[0m, in \u001b[0;36mrename_pl_test_results\u001b[0;34m(rs, ks)\u001b[0m\n\u001b[1;32m 32\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrename_pl_test_results\u001b[39m(rs: List[Dict[\u001b[38;5;28mstr\u001b[39m, \u001b[38;5;28mfloat\u001b[39m]], ks\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtrain\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mval\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtest\u001b[39m\u001b[38;5;124m\"\u001b[39m]):\n\u001b[1;32m 33\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 34\u001b[0m \u001b[38;5;124;03m pytorch lighting test outputs `List of dictionaries with metrics logged during the test phase` where the dataloaders are named `test/val/dataloader_idx_0` etc. This renames them to `val` etc.\u001b[39;00m\n\u001b[1;32m 35\u001b[0m \n\u001b[1;32m 36\u001b[0m \u001b[38;5;124;03m UPDATE some version output a dict of dicts\u001b[39;00m\n\u001b[1;32m 37\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 38\u001b[0m rs \u001b[38;5;241m=\u001b[39m \u001b[43m{\u001b[49m\n\u001b[1;32m 39\u001b[0m \u001b[43m \u001b[49m\u001b[43mks\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m_transform_dl_k\u001b[49m\n\u001b[1;32m 40\u001b[0m \u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43mk\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrs\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitems\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m}\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mi\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mrange\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mks\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 41\u001b[0m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\n\u001b[1;32m 42\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m rs\n", + "File \u001b[0;32m/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/src/helpers/lightning.py:40\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 32\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrename_pl_test_results\u001b[39m(rs: List[Dict[\u001b[38;5;28mstr\u001b[39m, \u001b[38;5;28mfloat\u001b[39m]], ks\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtrain\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mval\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtest\u001b[39m\u001b[38;5;124m\"\u001b[39m]):\n\u001b[1;32m 33\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 34\u001b[0m \u001b[38;5;124;03m pytorch lighting test outputs `List of dictionaries with metrics logged during the test phase` where the dataloaders are named `test/val/dataloader_idx_0` etc. This renames them to `val` etc.\u001b[39;00m\n\u001b[1;32m 35\u001b[0m \n\u001b[1;32m 36\u001b[0m \u001b[38;5;124;03m UPDATE some version output a dict of dicts\u001b[39;00m\n\u001b[1;32m 37\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m 38\u001b[0m rs \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 39\u001b[0m ks[i]: {_transform_dl_k\n\u001b[0;32m---> 40\u001b[0m (k): v \u001b[38;5;28;01mfor\u001b[39;00m k, v \u001b[38;5;129;01min\u001b[39;00m \u001b[43mrs\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m\u001b[38;5;241m.\u001b[39mitems()} \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;28mlen\u001b[39m(ks))\n\u001b[1;32m 41\u001b[0m }\n\u001b[1;32m 42\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m rs\n", + "\u001b[0;31mKeyError\u001b[0m: 0" + ] + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click here for more info. View Jupyter log for further details." + ] + } + ], "source": [ "testval_metrics = calc_metrics(dm, trainer3, net, use_val=True)\n", "rs = rename_pl_test_results(rs, [\"train\", \"val\", \"test\", \"ood\"])\n", "# rs['test'] = {**rs['test'], **test_metrics}\n", - "rs[\"test\"][\"acc_lie_lie\"] = testval_metrics[\"acc_lie_lie\"]\n", - "rs[\"testval_metrics\"] = rs[\"test\"]" + "# rs[\"test\"][\"acc_lie_lie\"] = testval_metrics[\"acc_lie_lie\"]\n", + "# rs[\"testval_metrics\"] = rs[\"test\"]" ] }, { @@ -6755,7 +7172,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.0" + "version": "3.11.0rc1" } }, "nbformat": 4, diff --git a/notebooks/11c_sae_no_imp.ipynb b/notebooks/11c_sae_no_imp.ipynb new file mode 100644 index 0000000..1bee66d --- /dev/null +++ b/notebooks/11c_sae_no_imp.ipynb @@ -0,0 +1,7192 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Trying a sparse 1 layer autoencoder, then a probe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import numpy as np\n", + "import pandas as pd\n", + "from matplotlib import pyplot as plt\n", + "from tqdm.auto import tqdm\n", + "\n", + "\n", + "\n", + "from typing import Optional, List, Dict, Union\n", + "from jaxtyping import Float\n", + "from torch import Tensor\n", + "\n", + "import torch\n", + "import torch.nn as nn\n", + "import torch.nn.functional as F\n", + "\n", + "from torch import Tensor\n", + "from torch import optim\n", + "from torch.utils.data import random_split, DataLoader, TensorDataset\n", + "\n", + "from pathlib import Path\n", + "from einops import rearrange\n", + "\n", + "import transformers\n", + "from transformers import (\n", + " AutoTokenizer,\n", + " AutoModelForCausalLM,\n", + " BitsAndBytesConfig,\n", + " AutoConfig,\n", + ")\n", + "from peft import (\n", + " get_peft_config,\n", + " get_peft_model,\n", + " LoraConfig,\n", + " TaskType,\n", + " LoftQConfig,\n", + " IA3Config,\n", + ")\n", + "from pathlib import Path\n", + "import datasets\n", + "from datasets import Dataset\n", + "\n", + "from loguru import logger\n", + "\n", + "logger.add(os.sys.stderr, format=\"{time} {level} {message}\", level=\"INFO\")\n", + "\n", + "# load my code\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "\n", + "import lightning.pytorch as pl\n", + "\n", + "from src.config import ExtractConfig\n", + "from src.llms.load import load_model\n", + "from src.helpers.torch_helpers import clear_mem\n", + "from src.llms.phi.model_phi import PhiForCausalLMWHS\n", + "from src.eval.ds import filter_ds_to_known\n", + "from src.datasets.act_dm import ActivationDataModule\n", + "\n", + "# plt.style.use(\"ggplot\")\n", + "# plt.style.use(\"seaborn-v0_8\")\n", + "import seaborn as sns\n", + "sns.set_theme('paper')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Paramsnet\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# params\n", + "\n", + "# cfg = ExtractConfig(\n", + "# # model=\"microsoft/phi-2\",\n", + "# # # batch_size=1,\n", + "# # prompt_format=\"phi\",\n", + "# )\n", + "# cfg\n", + "\n", + "# params\n", + "batch_size = 32\n", + "lr = 1e-3 # at 3e-4 I get nan\n", + "wd = 0 # 1e-5\n", + "\n", + "MAX_ROWS = 2000\n", + "\n", + "SKIP=5 # skip initial N layers\n", + "STRIDE=4 # skip every N layers\n", + "DECIMATE=1 # discard N features for speed\n", + "\n", + "device = \"cuda:0\"\n", + "max_epochs = 44\n", + "\n", + "l1_coeff = 0.5 # 0.5 # neel uses 3e-4 ! https://github.dev/neelnanda-io/1L-Sparse-Autoencoder/blob/bcae01328a2f41d24bd4a9160828f2fc22737f75/utils.py#L106, but them they sum l1 where mean l2\n", + " # x_feats=x_feats. other use 1e-1\n", + "\n", + "\n", + "BASE_FOLDER = Path(\"/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/notebooks/lightning_logs/version_24/\")\n", + "layers_names = (\n", + " 'fc1', 'Wqkv',\n", + " 'fc2', 'out_proj')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load data" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(PosixPath('/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/notebooks/lightning_logs/version_24/hidden_states/.ds/ds_valtest_8b8fd6070504d5ef'),\n", + " PosixPath('/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/notebooks/lightning_logs/version_24/hidden_states/.ds/ds_OOD_a41d3a61513ade30'))" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load hidden state from a previously loaded adapter\n", + "# the columns with _base are from the base model, and adapt from adapter\n", + "# FROM TRAINING TRUTH\n", + "f1_val = next(iter(BASE_FOLDER.glob('hidden_states/.ds/ds_valtest_*')))\n", + "f1_ood = next(iter(BASE_FOLDER.glob('hidden_states/.ds/ds_OOD_*')))\n", + "f1_val, f1_ood" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# # insample_datasets = list(set(ds_val['ds_string_base']))\n", + "# # outsample_datasets = list(set(ds_ood['ds_string_base']))\n", + "# # print(insample_datasets, outsample_datasets)\n", + "# from src.datasets.act_dm import ActivationDataModule, SharedDataset\n", + "\n", + "\n", + "# class ActivationDataModule2(ActivationDataModule):\n", + "# def to_tds(self, ds, name):\n", + "# \"\"\"huggingface dataset to pytorch.\"\"\"\n", + "# h = self.hparams\n", + "# # 4x faster if we make it a tensor ourselves\n", + "# ds = ds.with_format(None)\n", + "# tds = torch.utils.data.TensorDataset(\n", + "# torch.FloatTensor(ds['X'][..., 0]), torch.FloatTensor(ds['y']))\n", + " \n", + "# # this shared dataset is 10x faster with multiple workers\n", + "# if h.num_workers>0: \n", + "# tds = SharedDataset(tds, f\"{self.hparams.name}_{name}\") \n", + "# return tds" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "select rows are 74.39% based on knowledge\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "dd5b1f4404b74220aa358c61e09e863e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Map: 0%| | 0/615 [00:00 b l f versions')[..., 0]\n", + " data.append(X1)\n", + " \n", + " # concat layers\n", + " # x = rearrange(data, 'b parts l f v -> b l (parts f) v')\n", + " X = torch.concat(data, dim=2)[:, SKIP::STRIDE, ::DECIMATE]\n", + "\n", + " y = ds['binary_ans_base']-ds['binary_ans_adapt']\n", + " return dict(X=X, y=y)\n", + "\n", + "\n", + "\n", + "def prepare_ds(ds):\n", + " \"\"\"\n", + " prepare a dataset for training\n", + "\n", + " this should front load much of the computation\n", + " it should restrict it to the needed rows X and y\n", + " \n", + " \"\"\"\n", + " ds = (ds\n", + " .with_format(\"torch\")\n", + " .select_columns(input_columns)\n", + " .map(ds2xy_batched, batched=True, batch_size=128,\n", + " remove_columns=input_columns)\n", + " )\n", + " return ds\n", + "\n", + "def load_file_to_dm(f, stage):\n", + " ds1 = Dataset.from_file(str(f1_val), in_memory=True).with_format(\"torch\")\n", + " ds1 = filter_ds_to_known(ds1, verbose=True, true_col='truth')\n", + " ds = prepare_ds(ds1)\n", + "\n", + " # limit size\n", + " MAX_SAMPLES = min(len(ds), MAX_ROWS*2)\n", + " ds = ds.select(range(0, MAX_SAMPLES))\n", + "\n", + " dm = ActivationDataModule(ds, f.stem, batch_size=batch_size, num_workers=0)\n", + " dm.setup(stage)\n", + " dm.dm_orig = ds1\n", + " return dm\n", + "\n", + "\n", + "dm = load_file_to_dm(f1_val, 'train')\n", + "dm_ood = load_file_to_dm(f1_ood, 'all')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "dl_train = dm.train_dataloader()\n", + "dl_val = dm.val_dataloader()\n", + "dl_test = dm.test_dataloader()\n", + "dl_ood = dm_ood.all_dataloader()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Experiment with dataloading speeds:\n", + "- does it help to save the Xy dataset to disc, then load, while keeping in mem?. no not faster at all\n", + "- does it help to use num_workers > 0? yes 3x faster\n", + "- the shared dataset wrapper is 10x faster, and less mem" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Get importance matrix from adapter" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# from src.probes.importance_matrix import get_importance_matrix\n", + "\n", + "\n", + "# f = f\"{BASE_FOLDER}/checkpoint_last/adapter_model.safetensors\"\n", + "# importance_matrix = get_importance_matrix(f, layers=layers_names)[SKIP::STRIDE, ::DECIMATE]\n", + "# plt.hist(importance_matrix.flatten(), bins=155);\n", + "importance_matrix = None\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# ((importance_matrix>0)*1.0).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# ds_test2 = dm.datasets['test']\n", + "# shape1 = ds_test2[0][0].shape\n", + "# shape2= importance_matrix.shape\n", + "# np.testing.assert_equal(shape1, shape2, err_msg=\"shape mismatch between ds and importance matrix\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Model" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "from src.vae.conv_inception import PLAE, LinBnDrop, PLBase, recursive_requires_grad, accuracy, auroc\n", + "\n", + "from src.vae.sae import AutoEncoder, AutoEncoderConfig" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "class PLAE(PLBase):\n", + " def __init__(\n", + " self,\n", + " c_in,\n", + " steps_per_epoch,\n", + " max_epochs,\n", + " # depth=0,\n", + " lr=4e-3,\n", + " weight_decay=1e-9,\n", + " # hs=64,\n", + " n_latent=32,\n", + " l1_coeff=1,\n", + " dropout=0,\n", + " importance_matrix=None,\n", + " **kwargs,\n", + " ):\n", + " super().__init__(steps_per_epoch=steps_per_epoch, max_epochs=max_epochs, lr=lr, weight_decay=weight_decay)\n", + " self.save_hyperparameters()\n", + "\n", + " n_layers, n_channels = c_in\n", + " self.ae_cfg = AutoEncoderConfig(\n", + " n_instances=n_layers,\n", + " n_input_ae=n_channels,\n", + " n_hidden_ae=n_latent,\n", + " tied_weights=False,\n", + " l1_coeff=l1_coeff,\n", + " )\n", + "\n", + " self.ae = AutoEncoder(\n", + " self.ae_cfg,\n", + " importance_matrix=importance_matrix,\n", + " )\n", + " \n", + " n = n_latent * n_layers\n", + " self.head = nn.Sequential(\n", + " LinBnDrop(n, n, bn=False),\n", + " LinBnDrop(n, n // 4, dropout=dropout, bn=False),\n", + " LinBnDrop(n // 4, n // 12, bn=False),\n", + " nn.Linear(n // 12, 1),\n", + " # nn.Tanh(),\n", + " )\n", + " self._ae_mode = True\n", + "\n", + " def ae_mode(self, mode=0):\n", + " \"\"\"\n", + " mode 0, train the ae\n", + " mode 1, train only the prob\n", + " mode 2, train both\n", + " \"\"\"\n", + " if mode==0:\n", + " print('training ae')\n", + " elif mode==1:\n", + " print('training probe')\n", + " elif mode==2:\n", + " print('training both ae and probe')\n", + " self._ae_mode = mode\n", + " recursive_requires_grad(self.ae, mode in [0, 2])\n", + "\n", + " def forward(self, x):\n", + " if x.ndim == 4:\n", + " x = x.squeeze(3)\n", + " # x = rearrange(x, \"b l h -> b h l\")\n", + " # if not self._ae_mode:\n", + " # with torch.no_grad():\n", + " # l1_loss, l2_loss, loss, latent, h_rec = self.ae(x)\n", + " # else:\n", + " l1_loss, l2_loss, loss, latent, h_rec = self.ae(x)\n", + "\n", + " latent2 = rearrange(latent, \"b l h -> b (l h)\")\n", + " pred = self.head(latent2).squeeze(1)\n", + " return dict(\n", + " pred=pred,\n", + " l1_loss=l1_loss,\n", + " l2_loss=l2_loss,\n", + " loss=loss,\n", + " latent=latent,\n", + " h_rec=h_rec,\n", + " )\n", + "\n", + " def _step(self, batch, batch_idx, stage=\"train\"): \n", + " if stage == \"train\":\n", + " # Normalize the decoder weights before each optimization step\n", + " self.ae.normalize_decoder()\n", + "\n", + "\n", + " device = next(self.parameters()).device\n", + " x, y = batch # batch['X'], batch['y']\n", + " x = x.to(device)\n", + " y = y.to(device)\n", + " x0 = x#[..., 0]\n", + " # x1 = x[..., 1]\n", + " info0 = self(x0)\n", + " # info1 = self(x1)\n", + " # ypred1 = info1[\"pred\"]\n", + " logits = info0[\"pred\"]\n", + " y_probs = F.sigmoid(logits)\n", + " y_cls = y_probs > 0.5\n", + "\n", + " if stage == \"pred\":\n", + " return (y_probs).float()\n", + " \n", + " pred_loss = F.binary_cross_entropy_with_logits(logits, (y>0.).float())\n", + "\n", + " # pred_loss = F.smooth_l1_loss(ypred0, y)\n", + " rec_loss = info0[\"loss\"] \n", + " l1_loss = info0[\"l1_loss\"].mean()\n", + " l2_loss = info0[\"l2_loss\"].mean()\n", + "\n", + " self.log(\n", + " f\"{stage}/auroc\",\n", + " auroc(y_probs, y > 0, \"binary\"),\n", + " on_epoch=True,\n", + " on_step=False,\n", + " )\n", + " self.log(\n", + " f\"{stage}/acc\",\n", + " accuracy(y_cls, y > 0, \"binary\"),\n", + " on_epoch=True,\n", + " on_step=False,\n", + " )\n", + " self.log(\n", + " f\"{stage}/loss_pred\",\n", + " float(pred_loss),\n", + " on_epoch=True,\n", + " on_step=True,\n", + " prog_bar=True,\n", + " )\n", + " self.log(\n", + " f\"{stage}/loss_rec\",\n", + " float(rec_loss),\n", + " on_epoch=True,\n", + " on_step=True,\n", + " prog_bar=True,\n", + " )\n", + " self.log(f\"{stage}/l1_loss\", l1_loss, on_epoch=True, on_step=False)\n", + " self.log(f\"{stage}/l2_loss\", l2_loss, on_epoch=True, on_step=False)\n", + " self.log(\n", + " f\"{stage}/n\",\n", + " float(len(y)),\n", + " on_epoch=True,\n", + " on_step=False,\n", + " reduce_fx=torch.sum,\n", + " )\n", + " if self._ae_mode == 0:\n", + " assert torch.isfinite(rec_loss), \"rec_loss is not finite\"\n", + " return rec_loss\n", + " elif self._ae_mode == 1:\n", + " assert torch.isfinite(pred_loss), \"pred_loss is not finite\"\n", + " return pred_loss\n", + " elif self._ae_mode == 2:\n", + " # , train/loss_pred_epoch=0.0195, train/loss_rec_epoch=169.0\n", + " assert torch.isfinite(pred_loss), \"pred_loss is not finite\"\n", + " assert torch.isfinite(rec_loss), \"rec_loss is not finite\"\n", + " return pred_loss * 50000 + rec_loss" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Train" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Metrics\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 5\n", + "torch.Size([32, 7, 23040]) x\n" + ] + } + ], + "source": [ + "\n", + "\n", + "print(len(dl_train), len(dl_val))\n", + "b = next(iter(dl_train))\n", + "x, y = b # b['X'], b['y']\n", + "print(x.shape, \"x\")\n", + "if x.ndim == 3:\n", + " x = x.unsqueeze(-1)\n", + "c_in = x.shape[1:-1]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# # TEST\n", + "# for b in tqdm(dl_train):\n", + "# pass" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# %%time\n", + "# # oh no, this is very slow\n", + "# g = iter(dl_train)\n", + "# b = next(g)\n", + "# b = next(g)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "torch.Size([7, 23040])\n" + ] + }, + { + "data": { + "text/plain": [ + "({'pred': tensor(0.0577),\n", + " 'l1_loss': tensor(447.2836),\n", + " 'l2_loss': tensor(35908708.),\n", + " 'loss': tensor(35908928.),\n", + " 'latent': tensor(0.2496),\n", + " 'h_rec': tensor(0.0031)},\n", + " {'pred': torch.Size([32]),\n", + " 'l1_loss': torch.Size([32]),\n", + " 'l2_loss': torch.Size([32]),\n", + " 'loss': torch.Size([]),\n", + " 'latent': torch.Size([32, 7, 256]),\n", + " 'h_rec': torch.Size([32, 7, 23040])})" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "net = PLAE(\n", + " c_in=c_in,\n", + " steps_per_epoch=len(dl_train),\n", + " max_epochs=max_epochs,\n", + " lr=lr,\n", + " weight_decay=wd,\n", + " # hs=64,\n", + " dropout=0,\n", + " n_latent=256, # there will be layers * n_latent latent features\n", + " l1_coeff=l1_coeff, \n", + " importance_matrix=importance_matrix,\n", + ")\n", + "print(c_in)\n", + "x1= x[..., 0]\n", + "with torch.no_grad():\n", + " y = net(x1)\n", + "{k: v.abs().mean() for k, v in y.items()}, {k: v.shape for k, v in y.items()}" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2048.714285714286" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "14341/c_in[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "==========================================================================================\n", + "Layer (type:depth-idx) Output Shape Param #\n", + "==========================================================================================\n", + "PLAE [32, 7, 23040] --\n", + "├─AutoEncoder: 1-1 [32] 82,738,432\n", + "├─Sequential: 1-2 [32, 1] --\n", + "│ └─LinBnDrop: 2-1 [32, 1792] --\n", + "│ │ └─Linear: 3-1 [32, 1792] 3,213,056\n", + "│ │ └─ReLU: 3-2 [32, 1792] --\n", + "│ └─LinBnDrop: 2-2 [32, 448] --\n", + "│ │ └─Linear: 3-3 [32, 448] 803,264\n", + "│ │ └─ReLU: 3-4 [32, 448] --\n", + "│ └─LinBnDrop: 2-3 [32, 149] --\n", + "│ │ └─Linear: 3-5 [32, 149] 66,901\n", + "│ │ └─ReLU: 3-6 [32, 149] --\n", + "│ └─Linear: 2-4 [32, 1] 150\n", + "==========================================================================================\n", + "Total params: 86,821,803\n", + "Trainable params: 86,821,803\n", + "Non-trainable params: 0\n", + "Total mult-adds (Units.MEGABYTES): 130.67\n", + "==========================================================================================\n", + "Input size (MB): 20.64\n", + "Forward/backward pass size (MB): 0.61\n", + "Params size (MB): 347.29\n", + "Estimated Total Size (MB): 368.54\n", + "==========================================================================================" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from torchinfo import summary\n", + "\n", + "summary(net, input_data=x1, depth=4) # input_size=(batch_size, 1, 28, 28))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Train autoencoder" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "torch.set_float32_matmul_precision('medium')" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# %%time\n", + "# for b in tqdm(dl_train):\n", + "# pass" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "with torch.no_grad():\n", + " o = net.predict_step(b)\n", + " l1_loss, l2_loss, loss, acts, h_reconstructed = net.ae(b[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "# l1_coeff = 0.5" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor(3369.)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "((acts>1)*1.0).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(tensor([454.3978, 454.7835, 448.6992, 441.6068, 417.2707, 448.6612, 475.8464,\n", + " 458.5211, 471.8102, 444.4535, 466.0010, 450.3542, 447.6740, 455.9492,\n", + " 460.3827, 450.3036, 458.3523, 450.4668, 463.0191, 460.2495, 367.9336,\n", + " 456.1146, 454.4958, 465.9121, 455.3669, 456.8765, 418.1169, 398.1932,\n", + " 475.9533, 461.2486, 444.1835, 379.8762]),\n", + " tensor([72751472., 74363224., 73388864., 69565112., 58488100., 72698944.,\n", + " 86736288., 76342368., 80661376., 67314328., 79999608., 70294944.,\n", + " 70709360., 74207688., 76094648., 74251960., 77935376., 74227056.,\n", + " 78577632., 77667496., 37289508., 73902656., 74154384., 82430536.,\n", + " 73620992., 74764248., 61144036., 52865812., 84504080., 78896800.,\n", + " 72299680., 46008636.]))" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l1_loss, l2_loss/l1_coeff" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "from src.helpers.lightning import read_metrics_csv, plot_hist, rename_pl_test_results\n", + "\n", + "from lightning.pytorch.callbacks import LearningRateMonitor" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using 16bit Automatic Mixed Precision (AMP)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "training ae\n", + "requires_grad: True\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "GPU available: True (cuda), used: True\n", + "TPU available: False, using: 0 TPU cores\n", + "IPU available: False, using: 0 IPUs\n", + "HPU available: False, using: 0 HPUs\n", + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/logger_connector/logger_connector.py:67: Starting from v1.9.0, `tensorboardX` has been removed as a dependency of the `lightning.pytorch` package, due to potential conflicts with other packages in the ML ecosystem. For this reason, `logger=True` will use `CSVLogger` as the default logger, unless the `tensorboard` or `tensorboardX` packages are found. Please `pip install lightning[extra]` or one of them to enable TensorBoard support by default\n", + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "\n", + " | Name | Type | Params\n", + "-------------------------------------\n", + "0 | ae | AutoEncoder | 82.7 M\n", + "1 | head | Sequential | 4.1 M \n", + "-------------------------------------\n", + "86.8 M Trainable params\n", + "0 Non-trainable params\n", + "86.8 M Total params\n", + "347.287 Total estimated model params size (MB)\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6a627c6df26249bd80537b23c37a3b6f", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Sanity Checking: | | 0/? [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAG+CAYAAABBOgSxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA0y0lEQVR4nO3deXyU5aH28euZyS4JZCMkgSomnoD4ggoGIW1xAzlHEI64sEWNFarVqgdURG1P1WORiIL044qgbCpSLFq1tnh6REglCihWEDABgQCJGQgkIZuTed4/gilIAjNhZp5Zft+/MpMn99wzd2Zy5V4N0zRNAQAAWMRmdQUAAEB4I4wAAABLEUYAAIClCCMAAMBShBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgB4rKysTDk5OTp48KDWr1+vG264Qf3799ell16qZ599Vu6cMlFcXKwLLrjAD7UFEOgIIwBOy+23367rr79en376qRYsWKC33npLr7/+utXVAhBECCMAOqysrExDhgzRmDFjZLfb1bNnTw0dOlQbNmzwuKzi4uLWHpbhw4dr2bJlrd9bt26dRo0a1fq9l156qfV7ixcv1mWXXaaLLrpIY8aM0erVq73y3AD4D2EEQId1795ds2bNar3d1NSkjz/+WL169fKonNLSUt16660aN26ciouLNXPmTM2ePVvvvfeeJGnatGkqKCjQhg0bNGfOHL3wwgvaunWrdu3apcLCQi1YsECfffaZxo4dq4ceekjNzc1efZ4AfIswAsArGhsbdc899ygqKkoTJkzw6Gffffdd9e/fX6NHj1ZERIT69eun/Px8rVixQpIUHR2tDz74QB9//LHOOussrV+/Xr169VJERIRcLpeWLVumL7/8Utdcc43WrFkju93ui6cIwEcIIwBOW3l5uSZOnKjDhw/r1VdfVVxcnEc/f+DAAWVmZh53X/fu3bVv3z5J0iuvvKLOnTvrwQcfVG5urqZPn67a2lplZmZqwYIF2rFjh26++Wbl5eXpxRdfdGsCLYDAQRgBcFq++uorjRkzRr1799arr76qLl26eFxGenq6ysrKjrtvz549Sk1NVVNTk7799lvNmDFDa9eu1Ztvvql//vOfeuWVV3Tw4EFFRUXpxRdfbB3eefbZZ/Xpp5966dkB8AfCCIAOa2pq0i9+8QuN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8LVixQqNHDlSI0eO1I033qidO3dKoo0CzaZNm3TeeeepvLxcUph/zplh6MCBA2Zubq65detW0zRNc+HCheYtt9xica1gmqa5Z88e81e/+pXZt29f88EHHzRN0zS3b99uDho0yCwvLzdN0zRnzJhh/uY3v7GymmFrw4YN5iWXXGIeOHDANE3T/Pvf/27m5eWZH330kTl8+HCzurradDqd5l133WW++OKLFtc2PJWWlpqDBg0yHQ6HaZqmuWjRInPixIm0UYBxOBzmqFGjzH/7t38z9+/fH/afc2HZM7J27Vrl5OQoJydHkjR27FgVFxersrLS4pph2bJlGjx4sAoKClrv+/DDDzVkyBClpaVJkiZMmKA///nPcrlcVlUzbHXu3FmPPfaYkpKSJEl9+/bVgQMHtGrVKl111VWKj4+X3W7XuHHj9Kc//cni2oans88+W6tXr1ZycrKcTqf27dunxMRE2iiAOJ1OTZkyRffdd1/rfeH+OReWYaS8vFzp6emtt6OiopSYmKj9+/dbWCtI0tSpUzVhwgTZ7fbW+/bv339ce3Xr1k11dXU6dOiQBTUMb1lZWfrpT38qSXK5XPr973+vSy65pM024v1kncjISK1fv15DhgzRsmXLVFBQQBsFkMLCQg0cOFB5eXmt94X751xYhhHTNGUYxgn322xh+XIEhbbaq6374B+1tbW68847tXfvXs2cOVPSie1B+1hrwIABKioqUmFhoSZPniyJNgoE7777rnbv3q3bb7/9hO+F8+dcWP71zcjIUEVFRevtpqYmVVVVKSMjw8JaoT0/bq+KigqdccYZ6ty5s4W1Cl87d+7Utddeq06dOmnhwoVKSEhos414P1mjrKxMn3zySevtK664QpGRkXK5XLRRAFixYoV2796t0aNHa9SoUZKkX/ziF+ratWtYf86FZRjJy8vTli1btH37dknS8uXL1a9fv9ZxcASWyy+/XKtXr259oy5dulRXXHEFPVkW2LdvnyZMmKDrrrtOhYWFio6OliQNHTpU7733nqqrq+VyufTGG29o2LBhFtc2PB0+fFj33HNP6wqN1atXy2az6eabb6aNAsArr7yi999/X2+//bbefvttSS2rnK688sqw/pyLsLoCVkhKStLs2bM1bdo0NTY2Kjk5WYWFhVZXC+0455xzdP/99+vWW2/V999/r549e+qJJ56wulphaf78+aqurtY777yjd955p/X+l156SWPGjNG4cePkdDp14YUXttkNDd/r06ePpk2bpkmTJslmsykhIUHz5s1T7969tWPHDtooQIX755xhmqZpdSUAAED4Co/+HwAAELAIIwAAwFKEEQAAYCnCCAAAsBRhBAAAWIowAgAALEUYAQAAliKMAAgaZWVlysnJ0cGDB62uCgAvIowAAABLEUYAnJaSkhIVFBQoNzdXV155pd544w1J0gMPPKDf/OY3Gjt2rM4//3yNHTu29TwoSSouLtYNN9yg/v37a/jw4Vq2bFnr92pra/Xggw8qNzdXAwcO1LRp01RXV9f6/WXLlmnYsGE6//zzdffddx/3PQDBhzACoMOOHDmigoICDR48WEVFRXrmmWf0/PPP68MPP5QkrVy5UnfccYc+/fRTDRgwQLfddpuamppUWlqqW2+9VePGjVNxcbFmzpyp2bNn67333pMkPfLIIyorK9Nf/vIXffjhh9q3b5+efvrp1sfdsWOHVq5cqb/+9a/auHGjVqxYYcnzB+AdYXlQHgDvWL16tWJiYjRp0iRJUq9evTRhwgS9+eabSkpK0vDhw/Wzn/1MknT33Xdr6dKl2rhxo4qLi9W/f3+NHj1aktSvXz/l5+drxYoVGjp0qD744AMtWrRIycnJkqQnn3xSDQ0NrY97++23Ky4uTnFxccrNzdXu3bv9+8QBeBVhBECH7d27V/v27dOAAQNa73O5XOrevbuSkpJ05plntt4fGRmplJQUORwOHThwQJmZmceV1b17d/35z3/W4cOH1dTUpIyMjNbvdevWTVLLBFZJ6tKly3HlNjc3++LpAfATwgiADktLS1OvXr2OGyY5cOCAnE6nZs+erYqKitb7m5qaVFlZqW7duik9PV3r1q07rqw9e/YoNTVVSUlJioyMVHl5udLS0iRJmzdvVnFxsYYNG+afJwbAr5gzAqDDLrnkEpWXl2vZsmVyOp0qLy9XQUGB5s2bJ0l699139fnnn6upqUlPP/200tLSdMEFF2jEiBH64osvtHLlSjmdTm3atElLlizR6NGjZbfbNXLkSM2dO1eHDh1SdXW1Zs2apfLycoufLQBfIYwA6LCEhATNnz9f77//vgYPHqxrrrlG/fv31/333y9Juuiii1RYWKiLL75YW7du1bx582S329WjRw+9+OKLWrp0qXJzczV16lTdcccdGjNmjCTpoYceUmZmpkaMGKFhw4apR48emjp1qpVPFYAPGaZpmlZXAkDoeeCBBxQXF6ff/va3VlcFQICjZwQAAFiKMAIAACzFMA0AALAUPSMAAMBShBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFL/H+XbeiS2aXZ+AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAG+CAYAAABBOgSxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB9RUlEQVR4nO3deXxTVfo/8M9N0qR76UbZobRQpALKUlZFlCozgijgDAiMoiLqV51xGZcZZxwcV1zHHVFcqDvqqKgz4m9QAYGyqEiB0pYCbaFtuiVNmqVJzu+PNLdZ2wbapsvn/XrNa0hyc3PvsZCn5zzPcyQhhAARERFRiChCfQFERETUuzEYISIiopBiMEJEREQhxWCEiIiIQorBCBEREYUUgxEiIiIKKQYjREREFFIMRoiIiCikGIwQUY9XUlIS6ksgohYwGCHq4UpLS5GRkYGamppQX0pI5OTk4OGHHw71ZRBRCxiMEFGPVltbC+56QdS1MRgh6kUOHz6Ma665BhMnTsRFF12EV155BXa7HQCQn5+PxYsXY+LEiZg9ezYef/xx+bWvvvoKc+bMwcSJEzFv3jx8+umnbfq8e++9F3/605+QnZ2NCy+8ECaTCYWFhVixYgWysrJwySWX4P3335ePt1qtePzxxzF9+nRMmjQJN910E6qqqlr9nPLycqxYsQKTJk3CrFmzcN9996GhoQFfffUV1q5di61bt+KSSy6Rj7311lsxZcoUXHjhhXjppZfk+3z++edx2223YeXKlTjnnHNw2WWXITc3N6gxJqLTIIioRyspKREjR44U1dXVYtKkSeKVV14RFotFFBYWiuzsbLF27VohhBBLliwRL774onA4HKKsrEycd9554n//+59oaGgQmZmZYvfu3UIIIbZt2ybGjRsnampqWv3se+65R2RlZYmSkhKh1+uFwWAQM2bMEK+++qqwWq3i0KFD4vzzzxebN28WQgjxzDPPiLlz54oTJ04Is9ksbr/9dnHjjTe2+jl33XWXuP/++0VjY6OoqakR8+bNEzk5OUIIIZ577jlxww03CCGEsNlsYv78+eKf//ynMJlMoqSkRMydO1e8+eab8rEjR44Un3zyibBarSInJ0eMHz9eVFdXBz/wRNRmnBkh6iU+/vhj9OnTB6tWrYJarUZaWhpuvvlmfPzxxwAAjUaDrVu34ttvv0VsbCy+++47zJo1S37t448/xu7du5GVlYV9+/YhPj6+TZ87ceJEDBo0CDExMfj+++8RHh6OlStXIiwsDKNGjcLSpUvx4YcfAgA+//xzrFq1CoMHD4ZGo8H999+PP/7xj61+hkajwb59+/D1119DCIF///vfWLp0qc9xBw4cQHFxMe655x6Eh4dj0KBBuPHGG+XPB4AJEybgiiuuQFhYGJYuXYqkpCRs2bKlTfdKRKdHFeoLIKLOYbVaMWDAAI/nBg0ahJMnTwIAnnnmGfzrX//Co48+ioqKCpx33nlYvXo1UlJS8M477+Cll17CLbfcgsbGRlx55ZW48847oVarW/3cvn37yn8uKyvDyZMnMXHiRPk5h8OBQYMGAQC0Wi369+8vv5aQkICEhIRWP+P+++/Hiy++iJdeegl33303JkyYgNWrVyMtLc3juLKyMlitVkydOlV+TggBSZLkx0OHDvV4T//+/du0VEREp48zI0S9xIABA1BWVubxXElJCZKTkyGEwOHDh3HXXXfhf//7H7788ksYDAY888wzMBgM0Ol0eO6557Bjxw689tpr+OKLL7Bp06Y2fa77F31KSgpGjRqFPXv2yP/bvHkz1q1bBwDo168fKioq5OPLysrwzDPPtPoZrlyYr7/+Gt999x0SExPxj3/8w+e4lJQU9OnTx+Pz//e//+Hf//63fIz75wPAyZMn0a9fvzbdKxGdHgYjRL3EzJkzYTQa8corr8BqteLo0aN4+eWXcfnll0OSJDz88MN48cUXYbVakZSUBJVKhT59+qChoQHXXXcdvv32W0iShL59+0KSJPTp0yfoa7jgggtQXl6ODz74ADabTU48dQUj8+fPx6uvvopTp07BbDbjX//6FwoLC1s97yuvvIJHHnkEDQ0NiI+Ph0ajka9PrVbDYDAAAMaOHYvExET861//gsViQV1dHf70pz95lP7u2LED/+///T/YbDa8+eab0Ol0uOCCC4K+VyJqOwYjRL3I66+/jh9//BHTpk3D1Vdfjblz5+Lmm28GADz99NP49ddfMW3aNFx44YXo27cvbrnlFvTt2xfPPPMMnnnmGYwfPx5XXXUVli1bhgsvvDDoz4+NjcXrr7+Or776CtOmTcOCBQswYcIE3H333QCAG264Aeeddx4WL16M888/H1arFQ899FCr5129ejUMBgMuuOACTJ06FfX19fjb3/4G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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + "
train/loss_rec_steplr-AdamWsteptrain/loss_pred_stepval/loss_pred_stepval/loss_rec_stepval/loss_pred_epochval/l1_lossval/nval/aurocval/l2_lossval/loss_rec_epochval/acctrain/acctrain/l2_losstrain/loss_pred_epochtrain/l1_losstrain/ntrain/auroctrain/loss_rec_epoch
epoch
0.03.461290e+075.373681e-05100.6909820.7039073.578138e+070.694671443.252899154.00.4919223.495302e+073.495324e+070.4870130.3843653.534922e+070.701103444.834473307.00.4278603.534944e+07
1.03.467024e+079.416100e-05200.6885710.7000953.500953e+070.6932728128.790527154.00.6166353.420325e+073.420732e+070.4870130.4299673.530958e+070.699373982.634888307.00.4615793.531007e+07
2.02.264678e+071.589588e-04300.6544440.6451232.199153e+070.70568237187.746094154.00.6530442.160981e+072.162840e+070.5129870.5146583.004551e+070.68574521290.494141307.00.6146993.005616e+07
3.09.912304e+062.444214e-04400.6676750.6409129.799989e+060.72349369843.101562154.00.6473659.848128e+069.883050e+060.5129870.6156351.388700e+070.67297054841.902344307.00.6029951.391442e+07
4.04.940090e+063.456573e-04500.9438110.9348613.654870e+060.80577547388.441406154.00.4694734.046236e+064.069930e+060.4870130.5146586.154806e+060.72317761723.933594307.00.5886676.185669e+06
5.03.123402e+064.568719e-04600.9594171.0082021.981449e+060.85248543902.628906154.00.4335922.425092e+062.447044e+060.4870130.3843652.986016e+060.94993550847.777344307.00.5405013.011440e+06
6.02.899509e+065.716998e-04700.8575821.0072411.553650e+060.85184742101.246094154.00.4351022.026930e+062.047981e+060.4870130.3843652.196814e+060.97413744307.980469307.00.4920522.218968e+06
7.01.818972e+066.835686e-04800.7942731.0261721.510616e+060.85805437513.156250154.00.4751171.987747e+062.006504e+060.4870130.3843652.005284e+060.96232840189.382812307.00.4948682.025378e+06
8.01.847052e+067.860752e-04900.7748950.8837751.225119e+060.79079036348.972656154.00.4756121.615220e+061.633394e+060.4870130.3843651.865500e+060.90395136509.386719307.00.5174011.883755e+06
9.09.024920e+058.733526e-041000.7843250.7450239.101245e+050.74388034629.148438154.00.4931281.208413e+061.225727e+060.4545450.3973941.423096e+060.81080834553.054688307.00.5670111.440372e+06
10.09.838836e+059.404052e-041100.7042140.6630687.079582e+050.70277834422.039062154.00.4960759.521154e+059.693266e+050.4740260.4364821.167888e+060.74025033798.820312307.00.5591471.184787e+06
11.06.867856e+059.833952e-041200.7413000.6227286.000532e+050.69289334801.960938154.00.5477047.353364e+057.527374e+050.5519480.5504898.893985e+050.70047733416.199219307.00.5956319.061066e+05
12.04.397864e+059.998620e-041300.7140050.6220174.199640e+050.67915734926.363281154.00.6044154.832221e+055.006853e+050.5714290.5732905.955487e+050.68971933861.046875307.00.5760516.124792e+05
13.05.757654e+059.978947e-041400.6100120.6551684.187298e+050.68332535046.910156154.00.6043644.601047e+054.776282e+050.6038960.5863194.818463e+050.69416834061.089844307.00.5791354.988769e+05
14.03.456456e+059.906398e-041500.6109070.6592105.346467e+050.68881435878.519531154.00.5818125.592660e+055.772053e+050.5714290.5895774.374242e+050.69962734646.500000307.00.5832054.547475e+05
15.04.978493e+059.782848e-041600.6886140.6810833.881329e+050.69428235273.968750154.00.5697914.125633e+054.302003e+050.5714290.5700334.278664e+050.70353634530.148438307.00.5778304.451315e+05
16.03.262636e+059.609581e-041700.8844680.6762195.696443e+050.70744534328.269531154.00.5231425.820535e+055.992176e+050.5454550.5407174.129102e+050.72108634218.207031307.00.5610034.300194e+05
17.04.437711e+059.388397e-041800.7308090.6852227.760880e+050.71103932772.195312154.00.4956787.764691e+057.928552e+050.5064940.5244305.389957e+050.73519732919.160156307.00.5627405.554552e+05
18.06.890862e+059.121597e-041900.6901200.7820471.262466e+060.75182932279.195312154.00.5060401.258861e+061.275001e+060.4740260.4820856.600542e+050.74131830264.439453307.00.5365746.751864e+05
19.07.358140e+058.811953e-042000.8572390.7382686.440987e+050.74472826270.236328154.00.3942376.352681e+056.484032e+050.4545450.3843657.836710e+050.78334229354.525391307.00.5425857.983483e+05
20.04.247281e+058.462685e-042100.6592760.7553504.547318e+050.73819730330.937500154.00.4566114.479140e+054.630794e+050.4675320.4136815.152013e+050.75781528281.005859307.00.5445445.293419e+05
21.03.645094e+058.077422e-042200.8226180.7213933.414654e+050.71914527995.916016154.00.5091163.441176e+053.581156e+050.5064940.3973943.846792e+050.78060429392.710938307.00.5149383.993756e+05
22.02.524307e+057.660170e-042300.7868460.7258163.860918e+050.71851232012.675781154.00.5225283.880368e+054.040432e+050.5259740.4234533.197314e+050.76754929954.390625307.00.5377733.347086e+05
23.02.321588e+057.215265e-042400.8865770.7203133.353431e+050.71757829505.882812154.00.5255023.241512e+053.389042e+050.5194810.4299672.862280e+050.77123730940.042969307.00.5721213.016981e+05
24.02.765246e+056.747334e-042500.8241050.7693462.732291e+050.73830332806.496094154.00.5172342.659364e+052.823396e+050.5000000.4071662.503219e+050.79027231086.423828307.00.5582512.658651e+05
25.02.591485e+056.261239e-042600.9153190.7723072.482292e+050.74134231074.392578154.00.5167082.406862e+052.562234e+050.4870130.3876222.199712e+050.82070532205.775391307.00.5603802.360742e+05
26.01.742583e+055.762034e-042700.8697190.7693752.222660e+050.74443633442.238281154.00.4977332.190684e+052.357896e+050.4870130.3908791.995468e+050.82331032395.576172307.00.5517782.157445e+05
27.02.169805e+055.254908e-042800.7538960.7742631.930827e+050.74460432168.878906154.00.4943921.882019e+052.042864e+050.4740260.3908791.801717e+050.82032232943.886719307.00.5542541.966436e+05
28.01.895485e+054.745132e-042900.8846440.7775371.657529e+050.74852133433.941406154.00.4848911.636236e+051.803405e+050.4805190.3876221.656091e+050.82077333062.593750307.00.5359251.821404e+05
29.01.541918e+054.238006e-043000.7996610.7659781.743113e+050.74229532463.734375154.00.4928001.714195e+051.876514e+050.4935060.3908791.524323e+050.82074633314.578125307.00.5318441.690896e+05
30.01.488257e+053.738801e-043100.8814320.7765381.516751e+050.74579833254.281250154.00.4993001.492527e+051.658798e+050.4870130.3908791.425359e+050.81934133044.281250307.00.5403601.590580e+05
31.01.519959e+053.252706e-043200.8155890.7529461.432502e+050.73646032279.078125154.00.5102061.416874e+051.578269e+050.4935060.3876221.304552e+050.81716532936.066406307.00.5491401.469232e+05
32.01.477622e+052.784775e-043300.7694460.7540161.330207e+050.73573332213.464844154.00.5166941.307337e+051.468405e+050.4935060.3908791.182753e+050.81552632514.667969307.00.5398461.345326e+05
33.01.317741e+052.339870e-043400.8328680.7417231.272012e+050.72878931754.328125154.00.5204361.266065e+051.424836e+050.4870130.3843651.104454e+050.80539232219.078125307.00.5563561.265549e+05
34.01.214637e+051.922618e-043500.8138400.7278931.224709e+050.72218731463.166016154.00.5315091.217398e+051.374714e+050.4935060.4039091.026613e+050.79116431883.472656307.00.5515291.186031e+05
35.01.614108e+051.537355e-043600.7092520.7168271.148723e+050.71897831371.294922154.00.5323581.140879e+051.297735e+050.4935060.4136819.772023e+040.78292631596.820312307.00.5598801.135186e+05
36.01.234989e+051.188087e-043700.7884100.7040561.121212e+050.71232131190.378906154.00.5458481.099481e+051.255433e+050.5000000.4169389.230008e+040.77805531413.316406307.00.5477711.080067e+05
37.01.079999e+058.784429e-053800.7894940.6847311.120074e+050.70821531159.753906154.00.5444551.078406e+051.234205e+050.4870130.4201958.878269e+040.77126031273.576172307.00.5477441.044195e+05
38.01.169752e+056.116426e-053900.7419970.6876641.069960e+050.70740430936.412109154.00.5470781.040315e+051.194997e+050.5000000.4332258.815236e+040.75965831166.986328307.00.5538581.037359e+05
39.07.377189e+043.904592e-054000.7736510.6791341.031445e+050.70552831006.474609154.00.5467901.013189e+051.168221e+050.4870130.4201958.275794e+040.75930231084.941406307.00.5566339.830041e+04
40.09.729823e+042.171919e-054100.6489160.6749081.028341e+050.70443330961.068359154.00.5527619.969197e+041.151725e+050.5000000.4169388.013504e+040.75518031069.642578307.00.5440199.566986e+04
41.08.634038e+049.364177e-064200.6752480.6746041.012167e+050.70424530919.636719154.00.5519189.873870e+041.141985e+050.5000000.4267107.902053e+040.75397931020.652344307.00.5532679.453087e+04
42.07.507551e+042.109313e-064300.8339300.6729411.004236e+050.70389830888.146484154.00.5496139.826592e+041.137100e+050.5000000.4332257.800331e+040.75263731058.779297307.00.5523879.353270e+04
43.07.855788e+044.000000e-094390.7646390.6723741.003861e+050.70366730880.197266154.00.5515179.816409e+041.136042e+050.5000000.4429977.758846e+040.75216231015.906250307.00.5493059.309641e+04
\n", + "
" + ], + "text/plain": [ + " train/loss_rec_step lr-AdamW step train/loss_pred_step \\\n", + "epoch \n", + "0.0 3.461290e+07 5.373681e-05 10 0.690982 \n", + "1.0 3.467024e+07 9.416100e-05 20 0.688571 \n", + "2.0 2.264678e+07 1.589588e-04 30 0.654444 \n", + "3.0 9.912304e+06 2.444214e-04 40 0.667675 \n", + "4.0 4.940090e+06 3.456573e-04 50 0.943811 \n", + "5.0 3.123402e+06 4.568719e-04 60 0.959417 \n", + "6.0 2.899509e+06 5.716998e-04 70 0.857582 \n", + "7.0 1.818972e+06 6.835686e-04 80 0.794273 \n", + "8.0 1.847052e+06 7.860752e-04 90 0.774895 \n", + "9.0 9.024920e+05 8.733526e-04 100 0.784325 \n", + "10.0 9.838836e+05 9.404052e-04 110 0.704214 \n", + "11.0 6.867856e+05 9.833952e-04 120 0.741300 \n", + "12.0 4.397864e+05 9.998620e-04 130 0.714005 \n", + "13.0 5.757654e+05 9.978947e-04 140 0.610012 \n", + "14.0 3.456456e+05 9.906398e-04 150 0.610907 \n", + "15.0 4.978493e+05 9.782848e-04 160 0.688614 \n", + "16.0 3.262636e+05 9.609581e-04 170 0.884468 \n", + "17.0 4.437711e+05 9.388397e-04 180 0.730809 \n", + "18.0 6.890862e+05 9.121597e-04 190 0.690120 \n", + "19.0 7.358140e+05 8.811953e-04 200 0.857239 \n", + "20.0 4.247281e+05 8.462685e-04 210 0.659276 \n", + "21.0 3.645094e+05 8.077422e-04 220 0.822618 \n", + "22.0 2.524307e+05 7.660170e-04 230 0.786846 \n", + "23.0 2.321588e+05 7.215265e-04 240 0.886577 \n", + "24.0 2.765246e+05 6.747334e-04 250 0.824105 \n", + "25.0 2.591485e+05 6.261239e-04 260 0.915319 \n", + "26.0 1.742583e+05 5.762034e-04 270 0.869719 \n", + "27.0 2.169805e+05 5.254908e-04 280 0.753896 \n", + "28.0 1.895485e+05 4.745132e-04 290 0.884644 \n", + "29.0 1.541918e+05 4.238006e-04 300 0.799661 \n", + "30.0 1.488257e+05 3.738801e-04 310 0.881432 \n", + "31.0 1.519959e+05 3.252706e-04 320 0.815589 \n", + "32.0 1.477622e+05 2.784775e-04 330 0.769446 \n", + "33.0 1.317741e+05 2.339870e-04 340 0.832868 \n", + "34.0 1.214637e+05 1.922618e-04 350 0.813840 \n", + "35.0 1.614108e+05 1.537355e-04 360 0.709252 \n", + "36.0 1.234989e+05 1.188087e-04 370 0.788410 \n", + "37.0 1.079999e+05 8.784429e-05 380 0.789494 \n", + "38.0 1.169752e+05 6.116426e-05 390 0.741997 \n", + "39.0 7.377189e+04 3.904592e-05 400 0.773651 \n", + "40.0 9.729823e+04 2.171919e-05 410 0.648916 \n", + "41.0 8.634038e+04 9.364177e-06 420 0.675248 \n", + "42.0 7.507551e+04 2.109313e-06 430 0.833930 \n", + "43.0 7.855788e+04 4.000000e-09 439 0.764639 \n", + "\n", + " val/loss_pred_step val/loss_rec_step val/loss_pred_epoch \\\n", + "epoch \n", + "0.0 0.703907 3.578138e+07 0.694671 \n", + "1.0 0.700095 3.500953e+07 0.693272 \n", + "2.0 0.645123 2.199153e+07 0.705682 \n", + "3.0 0.640912 9.799989e+06 0.723493 \n", + "4.0 0.934861 3.654870e+06 0.805775 \n", + "5.0 1.008202 1.981449e+06 0.852485 \n", + "6.0 1.007241 1.553650e+06 0.851847 \n", + "7.0 1.026172 1.510616e+06 0.858054 \n", + "8.0 0.883775 1.225119e+06 0.790790 \n", + "9.0 0.745023 9.101245e+05 0.743880 \n", + "10.0 0.663068 7.079582e+05 0.702778 \n", + "11.0 0.622728 6.000532e+05 0.692893 \n", + "12.0 0.622017 4.199640e+05 0.679157 \n", + "13.0 0.655168 4.187298e+05 0.683325 \n", + "14.0 0.659210 5.346467e+05 0.688814 \n", + "15.0 0.681083 3.881329e+05 0.694282 \n", + "16.0 0.676219 5.696443e+05 0.707445 \n", + "17.0 0.685222 7.760880e+05 0.711039 \n", + "18.0 0.782047 1.262466e+06 0.751829 \n", + "19.0 0.738268 6.440987e+05 0.744728 \n", + "20.0 0.755350 4.547318e+05 0.738197 \n", + "21.0 0.721393 3.414654e+05 0.719145 \n", + "22.0 0.725816 3.860918e+05 0.718512 \n", + "23.0 0.720313 3.353431e+05 0.717578 \n", + "24.0 0.769346 2.732291e+05 0.738303 \n", + "25.0 0.772307 2.482292e+05 0.741342 \n", + "26.0 0.769375 2.222660e+05 0.744436 \n", + "27.0 0.774263 1.930827e+05 0.744604 \n", + "28.0 0.777537 1.657529e+05 0.748521 \n", + "29.0 0.765978 1.743113e+05 0.742295 \n", + "30.0 0.776538 1.516751e+05 0.745798 \n", + "31.0 0.752946 1.432502e+05 0.736460 \n", + "32.0 0.754016 1.330207e+05 0.735733 \n", + "33.0 0.741723 1.272012e+05 0.728789 \n", + "34.0 0.727893 1.224709e+05 0.722187 \n", + "35.0 0.716827 1.148723e+05 0.718978 \n", + "36.0 0.704056 1.121212e+05 0.712321 \n", + "37.0 0.684731 1.120074e+05 0.708215 \n", + "38.0 0.687664 1.069960e+05 0.707404 \n", + "39.0 0.679134 1.031445e+05 0.705528 \n", + "40.0 0.674908 1.028341e+05 0.704433 \n", + "41.0 0.674604 1.012167e+05 0.704245 \n", + "42.0 0.672941 1.004236e+05 0.703898 \n", + "43.0 0.672374 1.003861e+05 0.703667 \n", + "\n", + " val/l1_loss val/n val/auroc val/l2_loss val/loss_rec_epoch \\\n", + "epoch \n", + "0.0 443.252899 154.0 0.491922 3.495302e+07 3.495324e+07 \n", + "1.0 8128.790527 154.0 0.616635 3.420325e+07 3.420732e+07 \n", + "2.0 37187.746094 154.0 0.653044 2.160981e+07 2.162840e+07 \n", + "3.0 69843.101562 154.0 0.647365 9.848128e+06 9.883050e+06 \n", + "4.0 47388.441406 154.0 0.469473 4.046236e+06 4.069930e+06 \n", + "5.0 43902.628906 154.0 0.433592 2.425092e+06 2.447044e+06 \n", + "6.0 42101.246094 154.0 0.435102 2.026930e+06 2.047981e+06 \n", + "7.0 37513.156250 154.0 0.475117 1.987747e+06 2.006504e+06 \n", + "8.0 36348.972656 154.0 0.475612 1.615220e+06 1.633394e+06 \n", + "9.0 34629.148438 154.0 0.493128 1.208413e+06 1.225727e+06 \n", + "10.0 34422.039062 154.0 0.496075 9.521154e+05 9.693266e+05 \n", + "11.0 34801.960938 154.0 0.547704 7.353364e+05 7.527374e+05 \n", + "12.0 34926.363281 154.0 0.604415 4.832221e+05 5.006853e+05 \n", + "13.0 35046.910156 154.0 0.604364 4.601047e+05 4.776282e+05 \n", + "14.0 35878.519531 154.0 0.581812 5.592660e+05 5.772053e+05 \n", + "15.0 35273.968750 154.0 0.569791 4.125633e+05 4.302003e+05 \n", + "16.0 34328.269531 154.0 0.523142 5.820535e+05 5.992176e+05 \n", + "17.0 32772.195312 154.0 0.495678 7.764691e+05 7.928552e+05 \n", + "18.0 32279.195312 154.0 0.506040 1.258861e+06 1.275001e+06 \n", + "19.0 26270.236328 154.0 0.394237 6.352681e+05 6.484032e+05 \n", + "20.0 30330.937500 154.0 0.456611 4.479140e+05 4.630794e+05 \n", + "21.0 27995.916016 154.0 0.509116 3.441176e+05 3.581156e+05 \n", + "22.0 32012.675781 154.0 0.522528 3.880368e+05 4.040432e+05 \n", + "23.0 29505.882812 154.0 0.525502 3.241512e+05 3.389042e+05 \n", + "24.0 32806.496094 154.0 0.517234 2.659364e+05 2.823396e+05 \n", + "25.0 31074.392578 154.0 0.516708 2.406862e+05 2.562234e+05 \n", + "26.0 33442.238281 154.0 0.497733 2.190684e+05 2.357896e+05 \n", + "27.0 32168.878906 154.0 0.494392 1.882019e+05 2.042864e+05 \n", + "28.0 33433.941406 154.0 0.484891 1.636236e+05 1.803405e+05 \n", + "29.0 32463.734375 154.0 0.492800 1.714195e+05 1.876514e+05 \n", + "30.0 33254.281250 154.0 0.499300 1.492527e+05 1.658798e+05 \n", + "31.0 32279.078125 154.0 0.510206 1.416874e+05 1.578269e+05 \n", + "32.0 32213.464844 154.0 0.516694 1.307337e+05 1.468405e+05 \n", + "33.0 31754.328125 154.0 0.520436 1.266065e+05 1.424836e+05 \n", + "34.0 31463.166016 154.0 0.531509 1.217398e+05 1.374714e+05 \n", + "35.0 31371.294922 154.0 0.532358 1.140879e+05 1.297735e+05 \n", + "36.0 31190.378906 154.0 0.545848 1.099481e+05 1.255433e+05 \n", + "37.0 31159.753906 154.0 0.544455 1.078406e+05 1.234205e+05 \n", + "38.0 30936.412109 154.0 0.547078 1.040315e+05 1.194997e+05 \n", + "39.0 31006.474609 154.0 0.546790 1.013189e+05 1.168221e+05 \n", + "40.0 30961.068359 154.0 0.552761 9.969197e+04 1.151725e+05 \n", + "41.0 30919.636719 154.0 0.551918 9.873870e+04 1.141985e+05 \n", + "42.0 30888.146484 154.0 0.549613 9.826592e+04 1.137100e+05 \n", + "43.0 30880.197266 154.0 0.551517 9.816409e+04 1.136042e+05 \n", + "\n", + " val/acc train/acc train/l2_loss train/loss_pred_epoch \\\n", + "epoch \n", + "0.0 0.487013 0.384365 3.534922e+07 0.701103 \n", + "1.0 0.487013 0.429967 3.530958e+07 0.699373 \n", + "2.0 0.512987 0.514658 3.004551e+07 0.685745 \n", + "3.0 0.512987 0.615635 1.388700e+07 0.672970 \n", + "4.0 0.487013 0.514658 6.154806e+06 0.723177 \n", + "5.0 0.487013 0.384365 2.986016e+06 0.949935 \n", + "6.0 0.487013 0.384365 2.196814e+06 0.974137 \n", + "7.0 0.487013 0.384365 2.005284e+06 0.962328 \n", + "8.0 0.487013 0.384365 1.865500e+06 0.903951 \n", + "9.0 0.454545 0.397394 1.423096e+06 0.810808 \n", + "10.0 0.474026 0.436482 1.167888e+06 0.740250 \n", + "11.0 0.551948 0.550489 8.893985e+05 0.700477 \n", + "12.0 0.571429 0.573290 5.955487e+05 0.689719 \n", + "13.0 0.603896 0.586319 4.818463e+05 0.694168 \n", + "14.0 0.571429 0.589577 4.374242e+05 0.699627 \n", + "15.0 0.571429 0.570033 4.278664e+05 0.703536 \n", + "16.0 0.545455 0.540717 4.129102e+05 0.721086 \n", + "17.0 0.506494 0.524430 5.389957e+05 0.735197 \n", + "18.0 0.474026 0.482085 6.600542e+05 0.741318 \n", + "19.0 0.454545 0.384365 7.836710e+05 0.783342 \n", + "20.0 0.467532 0.413681 5.152013e+05 0.757815 \n", + "21.0 0.506494 0.397394 3.846792e+05 0.780604 \n", + "22.0 0.525974 0.423453 3.197314e+05 0.767549 \n", + "23.0 0.519481 0.429967 2.862280e+05 0.771237 \n", + "24.0 0.500000 0.407166 2.503219e+05 0.790272 \n", + "25.0 0.487013 0.387622 2.199712e+05 0.820705 \n", + "26.0 0.487013 0.390879 1.995468e+05 0.823310 \n", + "27.0 0.474026 0.390879 1.801717e+05 0.820322 \n", + "28.0 0.480519 0.387622 1.656091e+05 0.820773 \n", + "29.0 0.493506 0.390879 1.524323e+05 0.820746 \n", + "30.0 0.487013 0.390879 1.425359e+05 0.819341 \n", + "31.0 0.493506 0.387622 1.304552e+05 0.817165 \n", + "32.0 0.493506 0.390879 1.182753e+05 0.815526 \n", + "33.0 0.487013 0.384365 1.104454e+05 0.805392 \n", + "34.0 0.493506 0.403909 1.026613e+05 0.791164 \n", + "35.0 0.493506 0.413681 9.772023e+04 0.782926 \n", + "36.0 0.500000 0.416938 9.230008e+04 0.778055 \n", + "37.0 0.487013 0.420195 8.878269e+04 0.771260 \n", + "38.0 0.500000 0.433225 8.815236e+04 0.759658 \n", + "39.0 0.487013 0.420195 8.275794e+04 0.759302 \n", + "40.0 0.500000 0.416938 8.013504e+04 0.755180 \n", + "41.0 0.500000 0.426710 7.902053e+04 0.753979 \n", + "42.0 0.500000 0.433225 7.800331e+04 0.752637 \n", + "43.0 0.500000 0.442997 7.758846e+04 0.752162 \n", + "\n", + " train/l1_loss train/n train/auroc train/loss_rec_epoch \n", + "epoch \n", + "0.0 444.834473 307.0 0.427860 3.534944e+07 \n", + "1.0 982.634888 307.0 0.461579 3.531007e+07 \n", + "2.0 21290.494141 307.0 0.614699 3.005616e+07 \n", + "3.0 54841.902344 307.0 0.602995 1.391442e+07 \n", + "4.0 61723.933594 307.0 0.588667 6.185669e+06 \n", + "5.0 50847.777344 307.0 0.540501 3.011440e+06 \n", + "6.0 44307.980469 307.0 0.492052 2.218968e+06 \n", + "7.0 40189.382812 307.0 0.494868 2.025378e+06 \n", + "8.0 36509.386719 307.0 0.517401 1.883755e+06 \n", + "9.0 34553.054688 307.0 0.567011 1.440372e+06 \n", + "10.0 33798.820312 307.0 0.559147 1.184787e+06 \n", + "11.0 33416.199219 307.0 0.595631 9.061066e+05 \n", + "12.0 33861.046875 307.0 0.576051 6.124792e+05 \n", + "13.0 34061.089844 307.0 0.579135 4.988769e+05 \n", + "14.0 34646.500000 307.0 0.583205 4.547475e+05 \n", + "15.0 34530.148438 307.0 0.577830 4.451315e+05 \n", + "16.0 34218.207031 307.0 0.561003 4.300194e+05 \n", + "17.0 32919.160156 307.0 0.562740 5.554552e+05 \n", + "18.0 30264.439453 307.0 0.536574 6.751864e+05 \n", + "19.0 29354.525391 307.0 0.542585 7.983483e+05 \n", + "20.0 28281.005859 307.0 0.544544 5.293419e+05 \n", + "21.0 29392.710938 307.0 0.514938 3.993756e+05 \n", + "22.0 29954.390625 307.0 0.537773 3.347086e+05 \n", + "23.0 30940.042969 307.0 0.572121 3.016981e+05 \n", + "24.0 31086.423828 307.0 0.558251 2.658651e+05 \n", + "25.0 32205.775391 307.0 0.560380 2.360742e+05 \n", + "26.0 32395.576172 307.0 0.551778 2.157445e+05 \n", + "27.0 32943.886719 307.0 0.554254 1.966436e+05 \n", + "28.0 33062.593750 307.0 0.535925 1.821404e+05 \n", + "29.0 33314.578125 307.0 0.531844 1.690896e+05 \n", + "30.0 33044.281250 307.0 0.540360 1.590580e+05 \n", + "31.0 32936.066406 307.0 0.549140 1.469232e+05 \n", + "32.0 32514.667969 307.0 0.539846 1.345326e+05 \n", + "33.0 32219.078125 307.0 0.556356 1.265549e+05 \n", + "34.0 31883.472656 307.0 0.551529 1.186031e+05 \n", + "35.0 31596.820312 307.0 0.559880 1.135186e+05 \n", + "36.0 31413.316406 307.0 0.547771 1.080067e+05 \n", + "37.0 31273.576172 307.0 0.547744 1.044195e+05 \n", + "38.0 31166.986328 307.0 0.553858 1.037359e+05 \n", + "39.0 31084.941406 307.0 0.556633 9.830041e+04 \n", + "40.0 31069.642578 307.0 0.544019 9.566986e+04 \n", + "41.0 31020.652344 307.0 0.553267 9.453087e+04 \n", + "42.0 31058.779297 307.0 0.552387 9.353270e+04 \n", + "43.0 31015.906250 307.0 0.549305 9.309641e+04 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "net.ae_mode(0)\n", + " \n", + "lr_logger = LearningRateMonitor(logging_interval='step')\n", + "trainer1 = pl.Trainer(\n", + " precision=\"16-mixed\",\n", + " gradient_clip_val=20,\n", + " # devices=2,\n", + " accelerator=\"auto\",\n", + " devices=\"1\",\n", + " max_epochs=max_epochs,# * VAE_EPOCH_MULT,\n", + " log_every_n_steps=1,\n", + " # enable_progress_bar=False, enable_model_summary=False\n", + " callbacks=[lr_logger],\n", + ")\n", + "\n", + "# LOAD_CHECKPONT = Path('/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/notebooks/lightning_logs/version_52/1_ae.ckpt')\n", + "LOAD_CHECKPONT = None\n", + "if LOAD_CHECKPONT:\n", + " PLAE.load_from_checkpoint(LOAD_CHECKPONT)\n", + "else:\n", + " trainer1.fit(model=net, train_dataloaders=dl_train, \n", + " val_dataloaders=dl_val # FIXME why does this slow it down with multiple processes?\n", + " );\n", + "\n", + " df_hist, df_hist_step = read_metrics_csv(trainer1.logger.experiment.metrics_file_path)\n", + " plot_hist(df_hist, ['l2_loss', 'l1_loss', 'loss_rec'], logy=True)\n", + " plt.show()\n", + " plot_hist(df_hist_step, ['loss_rec_step'], logy=True)\n", + "\n", + " display(df_hist)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "df_hist, df_hist_step = read_metrics_csv(trainer1.logger.experiment.metrics_file_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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PW//XadScwkMw8BisXzu+1ar/lld0ReN1Rd9T3pHXV0dS5cupaioiMcffxz4/HhofMw1fvx43nvvPVauXMn3v/99QGPkKt544w0KCgr4wQ9+8Ln7vPl3nf76XoK4uDjKyso6vm5ubsbhcBAXF2diKvki/3esysrKCAoKIjQ01MRU3isvL4+bb76Z4OBgnn32WUJCQr5wjPRZMkdhYSHvv/9+x9fTp0/Hx8eHtrY2jZGLeOWVVygoKODGG28kIyMDgO9973v069fPq3/XqdRcgilTppCVlcWJEycAWLt2LWlpaR3HCojrmDZtGjt27Oj4sL/wwgtMnz5de9VMUFxczG233caCBQtYuXIlfn5+AFx//fVs3LiRmpoa2traeOmll5gxY4bJab1TdXU1P/rRjzrOptmxYwdWq5U77rhDY+QinnnmGTZt2sTrr7/O66+/DrSfmTZz5kyv/l1nNzuAOwsPD+fJJ5/kZz/7GU1NTURERLBy5UqzY8kXGDp0KA888AB33nknLS0tDBw4kMcee8zsWF5p1apV1NTUsH79etavX9/x/aeffpqbbrqJb37zmzidTi677LIv3LUuPS81NZWf/exn3HXXXVitVkJCQvjrX//K8OHDOXXqlMbIhXn77zqLYRiG2SFERERELpV37I8SERERj6dSIyIiIh5BpUZEREQ8gkqNiIiIeASVGhEREfEIKjUiIiLiEVRqRERExCOo1IiI1yksLCQlJYWqqiqzo4hIN1KpEREREY+gUiMiLiE3N5fFixczYcIEZs6cyUsvvQTAz3/+cx588EEWLlzImDFjWLhwYcd6awB79+7l1ltvZdy4ccyaNYs1a9Z03FdXV8cvfvELJkyYwMSJE/nZz35GfX19x/1r1qxhxowZjBkzhnvvvfeC+0TE/ajUiIjpzp8/z+LFi5k8eTLvvfce//Vf/8Vf/vIXtm7dCsBrr73G3XffzQcffMD48eNZsmQJzc3NnDx5kjvvvJNvfvOb7N27l8cff5wnn3ySjRs3ArB8+XIKCwvZvHkzW7dupbi4mD/84Q8dr3vq1Clee+013nzzTfbv388rr7xiyvsXke6hBS1FxHQ7duzA39+fu+66C4Bhw4Zx22238fLLLxMeHs6sWbO48sorAbj33nt54YUX2L9/P3v37mXcuHHceOONAKSlpbFo0SJeeeUVrr/+erZs2cJzzz1HREQEAE888QSNjY0dr/uDH/yAwMBAAgMDmTBhAgUFBb37xkWkW6nUiIjpioqKKC4uZvz48R3fa2trIyEhgfDwcAYMGNDxfR8fHyIjI6moqKCyspL4+PgLtpWQkMCGDRuorq6mubmZuLi4jvtiYmKA9gOFAfr27XvBdltbW3vi7YlIL1GpERHTRUdHM2zYsAumfyorK3E6nTz55JOUlZV1fL+5uZmzZ88SExNDbGwse/bsuWBbZ86cISoqivDwcHx8fCgtLSU6OhqAo0ePsnfvXmbMmNE7b0xEepWOqRER011zzTWUlpayZs0anE4npaWlLF68mL/+9a8AvPHGGxw4cIDm5mb+8Ic/EB0dzdixY5k3bx4HDx7ktddew+l0cujQIZ5//nluvPFGbDYb6enp/OlPf+LcuXPU1NTwu9/9jtLSUpPfrYj0FJUaETFdSEgIq1atYtOmTUyePJn58+czbtw4HnjgAQAuv/xyVq5cyRVXXEF2djZ//etfsdlsJCYm8tRTT/HCCy8wYcIEfvKTn3D33Xdz0003AfDLX/6S+Ph45s2bx4wZM0hMTOQnP/mJmW9VRHqQxTAMw+wQIiJf5uc//zmBgYE89NBDZkcRERenPTUiIiLiEVRqRERExCNo+klEREQ8gvbUiIiIiEdQqRERERGPoFIjIiIiHkGlRkRERDyCSo2IiIh4BJUaERER8QgqNSIiIuIRVGpERETEI/z/M1dgiH13KnoAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Check the LR\n", + "df_hist, df_hist_step = read_metrics_csv(trainer1.logger.experiment.metrics_file_path)\n", + "df_hist['lr-AdamW'].plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "l2_loss ~= l1_loss * l1_coeff" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.5" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l1_coeff" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "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", + " \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", + " \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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
train/l2_losstrain/l1_loss
epoch
0.03.534922e+07444.834473
1.03.530958e+07982.634888
2.03.004551e+0721290.494141
3.01.388700e+0754841.902344
4.06.154806e+0661723.933594
5.02.986016e+0650847.777344
6.02.196814e+0644307.980469
7.02.005284e+0640189.382812
8.01.865500e+0636509.386719
9.01.423096e+0634553.054688
10.01.167888e+0633798.820312
11.08.893985e+0533416.199219
12.05.955487e+0533861.046875
13.04.818463e+0534061.089844
14.04.374242e+0534646.500000
15.04.278664e+0534530.148438
16.04.129102e+0534218.207031
17.05.389957e+0532919.160156
18.06.600542e+0530264.439453
19.07.836710e+0529354.525391
20.05.152013e+0528281.005859
21.03.846792e+0529392.710938
22.03.197314e+0529954.390625
23.02.862280e+0530940.042969
24.02.503219e+0531086.423828
25.02.199712e+0532205.775391
26.01.995468e+0532395.576172
27.01.801717e+0532943.886719
28.01.656091e+0533062.593750
29.01.524323e+0533314.578125
30.01.425359e+0533044.281250
31.01.304552e+0532936.066406
32.01.182753e+0532514.667969
33.01.104454e+0532219.078125
34.01.026613e+0531883.472656
35.09.772023e+0431596.820312
36.09.230008e+0431413.316406
37.08.878269e+0431273.576172
38.08.815236e+0431166.986328
39.08.275794e+0431084.941406
40.08.013504e+0431069.642578
41.07.902053e+0431020.652344
42.07.800331e+0431058.779297
43.07.758846e+0431015.906250
\n", + "
" + ], + "text/plain": [ + " train/l2_loss train/l1_loss\n", + "epoch \n", + "0.0 3.534922e+07 444.834473\n", + "1.0 3.530958e+07 982.634888\n", + "2.0 3.004551e+07 21290.494141\n", + "3.0 1.388700e+07 54841.902344\n", + "4.0 6.154806e+06 61723.933594\n", + "5.0 2.986016e+06 50847.777344\n", + "6.0 2.196814e+06 44307.980469\n", + "7.0 2.005284e+06 40189.382812\n", + "8.0 1.865500e+06 36509.386719\n", + "9.0 1.423096e+06 34553.054688\n", + "10.0 1.167888e+06 33798.820312\n", + "11.0 8.893985e+05 33416.199219\n", + "12.0 5.955487e+05 33861.046875\n", + "13.0 4.818463e+05 34061.089844\n", + "14.0 4.374242e+05 34646.500000\n", + "15.0 4.278664e+05 34530.148438\n", + "16.0 4.129102e+05 34218.207031\n", + "17.0 5.389957e+05 32919.160156\n", + "18.0 6.600542e+05 30264.439453\n", + "19.0 7.836710e+05 29354.525391\n", + "20.0 5.152013e+05 28281.005859\n", + "21.0 3.846792e+05 29392.710938\n", + "22.0 3.197314e+05 29954.390625\n", + "23.0 2.862280e+05 30940.042969\n", + "24.0 2.503219e+05 31086.423828\n", + "25.0 2.199712e+05 32205.775391\n", + "26.0 1.995468e+05 32395.576172\n", + "27.0 1.801717e+05 32943.886719\n", + "28.0 1.656091e+05 33062.593750\n", + "29.0 1.524323e+05 33314.578125\n", + "30.0 1.425359e+05 33044.281250\n", + "31.0 1.304552e+05 32936.066406\n", + "32.0 1.182753e+05 32514.667969\n", + "33.0 1.104454e+05 32219.078125\n", + "34.0 1.026613e+05 31883.472656\n", + "35.0 9.772023e+04 31596.820312\n", + "36.0 9.230008e+04 31413.316406\n", + "37.0 8.878269e+04 31273.576172\n", + "38.0 8.815236e+04 31166.986328\n", + "39.0 8.275794e+04 31084.941406\n", + "40.0 8.013504e+04 31069.642578\n", + "41.0 7.902053e+04 31020.652344\n", + "42.0 7.800331e+04 31058.779297\n", + "43.0 7.758846e+04 31015.906250" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_hist[['train/l2_loss','train/l1_loss']]" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "l1 coeff should be approx\n" + ] + }, + { + "data": { + "text/plain": [ + "5351.793750702701" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print('l1 coeff should be approx')\n", + "ratio = df_hist['train/l2_loss']/df_hist['train/l1_loss']\n", + "ratio = ratio[np.isfinite(ratio)]\n", + "ratio.mean()/l1_coeff\n" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "# ((latent>0)*1.0).mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5/10 [00:04<00:04, 1.10it/s, v_num=295, val/loss_pred=0.0849, val/loss_rec=9.58e+5, train/loss_pred=0.350, train/loss_rec=9.8e+5]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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tk+5lvika6An6bEhpra2VkuXLtW2bds0cuRIbdu2TStXrlReXl6whwYgBLXnU66lc590nTP37xUexo1sm01qaPKosdmS/5s/V7NXI/Befj02xPzlL3/RyJEjNXLkSElSZmamcnNz9cUXX+jKK6/s0LHCLsMPG8vrk9cXnKvWJqmx2SOv388PjiChB93PL2l44iBFRITJ4bDLZju33eGwd0kPHA67Nv7rxG+9ri2vT8/96f9pU8F7l/4FEfIG9A3X/DtGy3EZA2+wfxaF2W2XZX7t/f92jw0xp06dUnx8fGA9IiJC0dHRcrlcHQ4xAwf27erh9Qh9rwwP9hB6PXrQvX695NY22664on+3jmHdgpu79esB7dFbfxb12Puhfr9fttZ/an2N3d5jhwwAALpRj00ECQkJqqysDKy3tLTI7XYrISEhiKMCAAA9RY8NMTfffLPef/99ffjhh5Kk3bt364c//KEGDx4c5JEBAICewOb399zHEl9//XU9/vjjam5uVkxMjB577DElJiYGe1gAAKAH6NEhBgAA4GJ67NtJAAAA34YQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEJMCPj888/193//9zp69Giwh9LrvPzyy0pPT1daWprS09NVVlYW7CH1CocPH1ZaWpqmTZumOXPmqKqqKthD6nVeeOEFzZgxQ7fffrtmz56td999N9hD6pXeeecdjRkzRqdOnQr2UIKix36KNdqnsbFRv/zlL+XxeII9lF7nxIkTWr16tXbt2qWrr75a//3f/627775br7zyiq644opgDy9k1dbWaunSpdq2bZtGjhypbdu2aeXKlcrLywv20HqNv/71r9qyZYsKCgo0ePBgHTp0SAsXLtThw4e/8YN7cXnU1NRo7dq1vfrnP3diDLd69WrNmjVL0dHRwR5Kr2O32/Xwww/r6quvliRde+21stlsqqmpCfLIQttf/vIXjRw5UiNHjpQkZWZm6s0339QXX3wR5JH1HoMGDdLDDz8c+Cy7sWPHqqamRo2NjUEeWe9hWZaWLFmiZcuWBXsoQcWdmB6urKxMCxYsaLN94cKFioqKUmRkpGbOnKlnnnkmCKPrHb6tB7/4xS8C60899ZT+5m/+Rt/73ve6c3i9zqlTpxQfHx9Yj4iIUHR0tFwul6688sogjqz3GD58uIYPHy5J8vl8euSRR3TrrbeqX79+QR5Z75Gbm6sbb7xRN998c7CHElSEmB7ulltu0fvvv99m+9GjR5Wbm6vnn38+CKPqXS7Wg1YtLS1at26d3nzzTW3dupXb6ZeZ3+//xnNst3NjubvV19dr+fLlqq2t1ZYtW4I9nF6juLhYx48f18qVK4M9lKDjqjdUQUGBTp8+rVmzZiktLU1VVVVatWqV9u/fH+yh9SrV1dW65557dOLECe3atUsJCQnBHlLIS0hIUGVlZWC9paVFbrebc9/NPv30U82cOVMDBgzQH//4Rw0cODDYQ+o1CgoKdPz4cd1xxx1KS0uTJM2dO7dX/nIHn2IdIn76058qNzdX48ePD/ZQeo36+nrNnDlTEydO1KpVq7gT0E1qa2v1s5/9TM8//7xGjBih7du3a//+/dq+fXuwh9ZrnDx5UjNnztTcuXM1d+7cYA+n1xs5cqTKysoUFxcX7KF0O95OAjpp165d+vTTTxUREaH09PTA9nXr1ukHP/hBEEcW2gYPHqyNGzfq/vvvV3Nzs2JiYpSbmxvsYfUqeXl5OnPmjPbt26d9+/YFtm/ZskWxsbFBHBl6G+7EAAAAI3H/GwAAGIkQAwAAjESIAQAARiLEAAAAIxFiAACAkQgxAADASIQYAABgJEIMAAAwEiEGAAAYiRADAACM9P8BAmfReubITtUAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# visualize latent space\n", + "from matplotlib import cm\n", + "\n", + "\n", + "def plot_latent(latent):\n", + "\n", + " # plot image of latent space\n", + " vmax = latent.abs().max()\n", + " for i in range(4):\n", + " plt.subplot(2, 2, i + 1)\n", + " vmax = latent[i].abs().max()\n", + " plt.imshow(\n", + " latent[i],\n", + " cmap=cm.coolwarm,\n", + " interpolation=\"none\",\n", + " aspect=\"auto\",\n", + " vmin=-vmax,\n", + " vmax=vmax,\n", + " )\n", + " plt.xlabel(\"layer\")\n", + " plt.ylabel(\"neuron\")\n", + " if i < 2:\n", + " plt.xlabel(\"\")\n", + " plt.xticks([])\n", + " if i % 2 == 1:\n", + " plt.ylabel(\"\")\n", + " plt.yticks([])\n", + " plt.grid(False)\n", + " plt.colorbar()\n", + " # plt.colorbar()\n", + " plt.subplots_adjust(wspace=0.05, hspace=0.05)\n", + " plt.show()\n", + "\n", + " # histogram\n", + " latentf = rearrange(latent, \"b n l -> (b n) l\").flatten()\n", + " vmax = (latentf.abs().mean() + 5 * latentf.abs().std()).item()\n", + " plt.hist(latentf, bins=55, range=[-vmax, vmax], histtype=\"step\")\n", + " plt.title(\"latents by layer\")\n", + " plt.show()\n", + "\n", + "\n", + "latent = y[\"latent\"].cpu() # .reshape(64, 24, 12) # [Batch, Latent, Layer]\n", + "plot_latent(latent)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(torch.Size([32, 7, 256]), tensor(1.3731), tensor(0.8811), tensor(1.0941), 112)" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "latent.shape, latent.diff(dim=1).std(), latent.std(), latent.diff(dim=2).std(), 16*7" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# helpers" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [], + "source": [ + "from src.eval.ds import ds2df\n", + "\n", + "def get_acc_subset(df, query, verbose=True):\n", + " assert (df['y'].mean()<0).any(), 'y should be [-1, 1]'\n", + " assert (df['y'].mean()>-1).all(), 'y should be [-1, 1]'\n", + " assert (df['y'].mean()<1).all(), 'y should be [-1, 1]'\n", + " assert (df['probe_pred'].mean()>0).all(), 'pred should be [0,1]'\n", + " assert (df['probe_pred'].mean()<1).all(), 'pred should be [0,1]'\n", + "\n", + " if query:\n", + " df = df.query(query)\n", + " # df[\"probe_cls\"] = df[\"probe_pred\"] > 0.5\n", + " acc = ((df[\"probe_pred\"]>0.5) == (df[\"y\"]>0)).mean()\n", + " if verbose:\n", + " print(f\"acc={acc:2.2%},\\tn={len(df)},\\t[{query}] \")\n", + " return acc\n", + "\n", + "\n", + "def calc_metrics(dm, net, trainer=None, split=\"test\", verbose=True):\n", + "\n", + " # predict\n", + " dl_test = dm.create_dataloader(split)\n", + " if trainer is None:\n", + " trainer = pl.Trainer(logger=False, enable_progress_bar=False, enable_model_summary=False)\n", + " rt = trainer.predict(net, dataloaders=dl_test)\n", + " y_test_pred = np.concatenate(rt)\n", + "\n", + " # get original df\n", + " splits = dm.splits[split]\n", + " df = ds2df(dm.dm_orig).rename(columns=lambda s:s.replace('_base',''))\n", + " df['y'] = dm.ds['y']\n", + " df_test = df.iloc[splits[0] : splits[1]].copy()\n", + " df_test[\"probe_pred\"] = y_test_pred\n", + "\n", + " if verbose:\n", + " print(f\"probe results on subsets of the data for {split}\")\n", + " acc = get_acc_subset(df_test, \"\", verbose=verbose)\n", + " get_acc_subset(\n", + " df_test, \"instructed_to_lie==True\", verbose=verbose\n", + " ) # it was ph told to lie\n", + " get_acc_subset(\n", + " df_test, \"instructed_to_lie==False\", verbose=verbose\n", + " ) # it was told not to lie\n", + " get_acc_subset(\n", + " df_test, \"ans==label_true\", verbose=verbose\n", + " ) # the llm gave the true ans\n", + " get_acc_subset(\n", + " df_test, \"ans==label_instructed\", verbose=verbose\n", + " ) # the llm gave the desired ans\n", + " acc_lie_lie = get_acc_subset(\n", + " df_test, \"instructed_to_lie==True & ans==label_instructed\", verbose=verbose\n", + " ) # it was told to lie, and it did lie\n", + " acc_lie_truth = get_acc_subset(\n", + " df_test, \"instructed_to_lie==True & ans!=label_instructed\", verbose=verbose\n", + " )\n", + "\n", + " a = get_acc_subset(\n", + " df_test, \"instructed_to_lie==False & ans==label_instructed\", verbose=False\n", + " )\n", + " b = get_acc_subset(\n", + " df_test, \"instructed_to_lie==False & ans!=label_instructed\", verbose=False\n", + " )\n", + " c = get_acc_subset(\n", + " df_test, \"instructed_to_lie==True & ans==label_instructed\", verbose=False\n", + " )\n", + " d = get_acc_subset(\n", + " df_test, \"instructed_to_lie==True & ans!=label_instructed\", verbose=False\n", + " )\n", + " \n", + "\n", + " df_confusion = pd.DataFrame(\n", + " [[a, b], [c, d]],\n", + " index=[\"tell a truth\", \"tell a lie\"],\n", + " columns=[\"did\", \"didn't\"],\n", + " )\n", + " df_confusion.index.name = \"instructed to\"\n", + " df_confusion.columns.name = \"llm gave\"\n", + "\n", + "\n", + " if verbose:\n", + " print(f\"⭐PRIMARY METRIC⭐ acc={acc:2.2%} from probe on {split}\")\n", + " print(f\"⭐SECONDARY METRIC⭐ acc_lie_lie={acc_lie_lie:2.2%} from probe on {split}\")\n", + " \n", + " print(\"\\n\\nprobe accuracy for quadrants:\")\n", + " print(df_confusion.round(2).to_markdown())\n", + " print('\\n\\n')\n", + "\n", + "\n", + " return dict(acc=acc, acc_lie_lie=acc_lie_lie, acc_lie_truth=acc_lie_truth, df_test=df_test, df_confusion=df_confusion)\n", + "\n", + "\n", + "# r = testval_metrics = calc_metrics(dm, trainer3, net, use_val=True)\n", + "# r['df_test']" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [], + "source": [ + "# dm_ood.splits" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:441: The 'predict_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "fd2d4f586f554d5dae890ef860e1c9b9", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Predicting: | | 0/? [00:00 5\u001b[0m c \u001b[38;5;241m=\u001b[39m \u001b[43mcalc_metrics\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdm_ood\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnet\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtrainer1\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mall\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 6\u001b[0m pd\u001b[38;5;241m.\u001b[39mDataFrame([a, b, c], index\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtest\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mval\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mood\u001b[39m\u001b[38;5;124m'\u001b[39m])\n", + "Cell \u001b[0;32mIn[113], line 29\u001b[0m, in \u001b[0;36mcalc_metrics\u001b[0;34m(dm, net, trainer, split, verbose)\u001b[0m\n\u001b[1;32m 26\u001b[0m y_test_pred \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mconcatenate(rt)\n\u001b[1;32m 28\u001b[0m \u001b[38;5;66;03m# get original df\u001b[39;00m\n\u001b[0;32m---> 29\u001b[0m splits \u001b[38;5;241m=\u001b[39m \u001b[43mdm\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msplits\u001b[49m\u001b[43m[\u001b[49m\u001b[43msplit\u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m 30\u001b[0m df \u001b[38;5;241m=\u001b[39m ds2df(dm\u001b[38;5;241m.\u001b[39mdm_orig)\u001b[38;5;241m.\u001b[39mrename(columns\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mlambda\u001b[39;00m s:s\u001b[38;5;241m.\u001b[39mreplace(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_base\u001b[39m\u001b[38;5;124m'\u001b[39m,\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m'\u001b[39m))\n\u001b[1;32m 31\u001b[0m df[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m dm\u001b[38;5;241m.\u001b[39mds[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m'\u001b[39m]\n", + "\u001b[0;31mKeyError\u001b[0m: 'all'" + ] + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click here for more info. View Jupyter log for further details." + ] + } + ], + "source": [ + "a = calc_metrics(dm, net, trainer1, 'test')\n", + "b = calc_metrics(dm, net,trainer1, 'val')\n", + "pd.DataFrame([a, b], index=['test', 'val'])\n", + "\n", + "c = calc_metrics(dm_ood, net, trainer1, 'all')\n", + "pd.DataFrame([a, b, c], index=['test', 'val', 'ood'])\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "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", + "
accacc_lie_lieacc_lie_truthdf_test
test0.8441560.7500000.923077binary_ans label_true label_instructed ...
val0.8441560.6666670.875000binary_ans label_true label_instructed ...
\n", + "
" + ], + "text/plain": [ + " acc acc_lie_lie acc_lie_truth \\\n", + "test 0.844156 0.750000 0.923077 \n", + "val 0.844156 0.666667 0.875000 \n", + "\n", + " df_test \n", + "test binary_ans label_true label_instructed ... \n", + "val binary_ans label_true label_instructed ... " + ] + }, + "execution_count": 111, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Train probe" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "# # net.save_checkpoint\n", + "# f = Path(trainer1.log_dir)/\"1_ae.ckpt\"\n", + "# trainer1.save_checkpoint(f)\n", + "# # PosixPath('/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/notebooks/lightning_logs/version_52/1_ae.ckpt')\n", + "# f" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "# net.configure_optimizers()" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "33ebf4b746f0457bb6cce39211d4708b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/10 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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kQ08+eSTeuWVV7Rx40Zt3LhRUtvVSePHj4/qz7kYqxtgltTUVC1fvlwLFy5US0uL0tLSVFRUZHWz0IWzzz5bd9xxh2bPnq2vv/5aAwcO1O9+9zurmxWVVq5cqYaGBr344ot68cUX259/7LHHdM0112j69OnyeDy68MILO+1iRugNHjxYCxcu1Jw5c+R0OpWcnKzHH39c3/nOd/TZZ59RI5uK9s85h2EYhtWNAAAA0SU6+nkAAICtEEAAAIDpCCAAAMB0BBAAAGA6AggAADAdAQQAAJiOAAIAAExHAAFga+Xl5crLy1NdXZ3VTQEQRAQQAABgOgIIgICVlpaqsLBQw4YN0/jx4/Xcc89Jku68807dc889mjZtms4//3xNmzat/f5LklRSUqLrrrtOF110kSZMmKC1a9e2f6+xsVF33XWXhg0bpksuuUQLFy7UkSNH2r+/du1ajRs3Tueff75++tOfdvgegPBDAAEQkMOHD6uwsFAjRoxQcXGxHnroIa1YsUKvv/66JGnDhg368Y9/rHfeeUdDhw7VvHnz1NraqrKyMs2ePVvTp09XSUmJli5dquXLl+vll1+WJN17770qLy/Xq6++qtdff11fffWVHnzwwfaf+9lnn2nDhg167bXX9MEHH+j555+35P0DCI6ouRkdgODYunWrEhISNGfOHEnSOeecoxkzZuivf/2rUlNTNWHCBF1++eWSpJ/+9Kd65pln9MEHH6ikpEQXXXSRpk6dKkkaMmSIZs2apeeff15jx47V5s2btWrVKqWlpUmSfv/736u5ubn9586fP1+9evVSr169NGzYMO3du9fcNw4gqAggAAKyf/9+ffXVVxo6dGj7cz6fT/3791dqaqrOOOOM9udjY2OVnp4ut9ut2tpaZWdnd9hX//799dJLL+ngwYNqbW1VVlZW+/f69esnqW0SqiSddtppHfbr9XpD8fYAmIQAAiAgGRkZOuecczoMgdTW1srj8Wj58uWqqqpqf761tVU1NTXq16+fMjMztWPHjg772rdvn/r06aPU1FTFxsaqsrJSGRkZkqRPPvlEJSUlGjdunDlvDICpmAMCICCjRo1SZWWl1q5dK4/Ho8rKShUWFurxxx+XJG3atEkffvihWltb9eCDDyojI0MXXHCBJk2apI8++kgbNmyQx+PRzp07tWbNGk2dOlUul0uTJ0/W//zP/+jAgQNqaGjQsmXLVFlZafG7BRAqBBAAAUlOTtbKlSv1yiuvaMSIEbr66qt10UUX6Y477pAkXXzxxSoqKtLw4cP16aef6vHHH5fL5dKAAQP06KOP6plnntGwYcN022236cc//rGuueYaSdLdd9+t7OxsTZo0SePGjdOAAQN02223WflWAYSQwzAMw+pGAIgMd955p3r16qVf/epXVjcFgM3RAwIAAExHAAEAAKZjCAYAAJiOHhAAAGA6AggAADAdAQQAAJiOAAIAAExHAAEAAKYjgAAAANMRQAAAgOkIIAAAwHQEEAAAYLr/D6Bhh6YqdamgAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + "
train/loss_rec_stepsteptrain/loss_pred_stepval/loss_pred_stepval/loss_rec_stepval/loss_pred_epochval/l1_lossval/nval/aurocval/l2_lossval/loss_rec_epochval/acctrain/acctrain/l2_losstrain/loss_pred_epochtrain/l1_losstrain/ntrain/auroctrain/loss_rec_epoch
epoch
0.077397.77343891.0697880.778202100395.218751.16050830877.785156154.00.56624398168.09375113606.9843750.5259740.51140177545.3984381.02066131012.433594307.00.57896693051.617188
1.091063.453125190.8437100.660874100395.218750.86228230877.785156154.00.71081898168.09375113606.9843750.5194810.50814377545.4062500.88421531012.433594307.00.65415693051.625000
2.090795.132812290.9490220.689792100395.218750.69063130877.785156154.00.60730198168.09375113606.9843750.6038960.61563577545.3984380.72364931012.433594307.00.68080793051.632812
3.089330.171875390.6019210.809051100395.218750.98667330877.785156154.00.67114798168.09375113606.9843750.5454550.67752477545.4062500.61669131012.433594307.00.71868393051.625000
4.090714.328125490.7097740.704353100395.218750.65131330877.785156154.00.68420198168.09375113606.9843750.6168830.59609177545.4062500.70074731012.433594307.00.72585393051.625000
5.0106039.632812590.6514280.678959100395.218750.74141230877.785156154.00.74093098168.09375113606.9843750.5974030.62866477545.3984380.63859331012.433594307.00.76566993051.625000
6.081858.281250690.5696710.570009100395.218750.73093830877.785156154.00.81758498168.09375113606.9843750.5779220.69055477545.4062500.60395931012.433594307.00.81718293051.617188
7.086209.156250793.9691364.288115100395.218753.30438230877.785156154.00.75318198168.09375113606.9843750.4870130.59283477545.4062501.21446931012.433594307.00.79721493051.625000
8.0102165.445312891.6905670.792697100395.218750.69958830877.785156154.00.77011898168.09375113606.9843750.5259740.50814377545.4140621.73317131012.433594307.00.77295493051.625000
9.098064.218750990.5215910.672620100395.218750.70499230877.785156154.00.73790198168.09375113606.9843750.6168830.63192277545.4062500.63680231012.429688307.00.78044793051.632812
10.069636.7109381090.4618080.520920100395.218750.66014330877.785156154.00.78812298168.09375113606.9843750.6038960.66775277545.4140620.69210731012.435547307.00.80460193051.625000
11.075968.3906251190.5707020.788361100395.218750.67751530877.785156154.00.75100498168.09375113606.9843750.5714290.64495177545.4140620.63419331012.429688307.00.83479893051.625000
12.097414.6015621290.4604730.664653100395.218750.77411730877.785156154.00.77111398168.09375113606.9843750.5519480.66449577545.4062500.60231431012.433594307.00.83957593051.625000
13.0104531.1796881390.6839780.515957100395.218750.67213830877.785156154.00.73072698168.09375113606.9843750.6103900.69706877545.4140620.59264531012.429688307.00.83124493051.625000
14.0121984.3437501490.4582800.669487100395.218750.55766330877.785156154.00.83438498168.09375113606.9843750.7337660.71009877545.3984380.54863131012.433594307.00.86845493051.625000
15.088494.0937501591.0141070.591291100395.218750.59672030877.785156154.00.81053998168.09375113606.9843750.6818180.68403977545.4062500.58459231012.433594307.00.86282293051.625000
16.0105940.2890621690.3879160.506099100395.218750.58478230877.785156154.00.79567398168.09375113606.9843750.6558440.72312777545.4062500.56533631012.433594307.00.87228693051.625000
17.093633.1953121790.8100400.608471100395.218750.54927830877.785156154.00.82425598168.09375113606.9843750.7012990.72638477545.4062500.52661731012.429688307.00.86953093051.625000
18.084510.7109381890.4149390.477233100395.218750.51405630877.785156154.00.80314198168.09375113606.9843750.7532470.71661277545.4062500.49933531012.433594307.00.87870993051.625000
19.085320.6093751990.6152470.677246100395.218750.54755430877.785156154.00.88340998168.09375113606.9843750.7272730.77524477545.3984380.47383531012.433594307.00.89966693051.625000
20.098640.5000002090.7761280.769955100395.218750.61104730877.785156154.00.80617698168.09375113606.9843750.6428570.70032677545.3984380.57954731012.433594307.00.90583693051.617188
21.094597.3593752190.5769550.561617100395.218750.55542930877.785156154.00.79646498168.09375113606.9843750.6948050.66123877545.4140620.58617431012.433594307.00.83118293051.617188
22.0101388.9453122290.4917990.701527100395.218750.55938830877.785156154.00.83361898168.09375113606.9843750.7142860.73941477545.4140620.51969631012.433594307.00.92499093051.625000
23.0106463.6484382390.2839810.483018100395.218750.56357430877.785156154.00.83437598168.09375113606.9843750.6883120.80781877545.4062500.44335831012.433594307.00.92182593051.625000
24.073172.2578122490.5016040.426876100395.218750.48304730877.785156154.00.85744198168.09375113606.9843750.7597400.81759077545.3984380.39359131012.433594307.00.92712793051.625000
25.084696.7500002590.5096270.568783100395.218750.45852830877.785156154.00.86793098168.09375113606.9843750.8116880.83387677545.4062500.34248731012.433594307.00.93681793051.617188
26.087992.4765622690.2413370.588086100395.218750.68941130877.785156154.00.84081898168.09375113606.9843750.6948050.84364877545.3984380.32711831012.433594307.00.94900293051.625000
27.087263.2031252790.3126360.401815100395.218750.45452230877.785156154.00.89714298168.09375113606.9843750.7662340.87947977545.3984380.30203731012.433594307.00.95785293051.617188
28.092031.6484382890.1802760.440955100395.218750.54335630877.785156154.00.87768298168.09375113606.9843750.7597400.89576577545.4062500.27711031012.433594307.00.95615293051.625000
29.090158.4609382990.2475290.547728100395.218750.49264230877.785156154.00.88415098168.09375113606.9843750.7987010.87622177545.3984380.28243631012.435547307.00.95429093051.617188
30.099814.9375003090.1055130.428403100395.218750.47947030877.785156154.00.86616498168.09375113606.9843750.7662340.90879577545.3984380.26222231012.433594307.00.96175393051.617188
31.088258.1171883190.1424660.447334100395.218750.48231530877.785156154.00.86235598168.09375113606.9843750.7662340.88599377545.4062500.24958631012.433594307.00.95882293051.617188
32.097447.1953123290.3632830.616281100395.218750.52372530877.785156154.00.88024798168.09375113606.9843750.8116880.91205277545.4062500.22806231012.429688307.00.96835093051.625000
33.0134090.7812503390.1890770.484798100395.218750.45215030877.785156154.00.88044298168.09375113606.9843750.7857140.90228077545.3984380.23571331012.433594307.00.96682493051.617188
34.093824.6718753490.2234610.454525100395.218750.48344230877.785156154.00.86453398168.09375113606.9843750.7857140.91856777545.3984380.21475031012.433594307.00.97652093051.625000
35.0107830.6250003590.0697260.441866100395.218750.48505830877.785156154.00.87205698168.09375113606.9843750.7792210.92833977545.4062500.18781331012.435547307.00.97793793051.625000
36.081456.3046883690.3097590.450383100395.218750.47921730877.785156154.00.87354898168.09375113606.9843750.7727270.92833977545.4062500.19020731012.433594307.00.97982893051.625000
37.0122290.6562503790.0178390.473518100395.218750.50271030877.785156154.00.87554598168.09375113606.9843750.7857140.92833977545.3984380.17791531012.433594307.00.98042493051.625000
38.095919.5546883890.1474170.466035100395.218750.49149130877.785156154.00.87597198168.09375113606.9843750.7727270.92833977545.4062500.16895931012.433594307.00.98260493051.625000
39.081279.8125003990.1278310.462244100395.218750.48589030877.785156154.00.87881298168.09375113606.9843750.7727270.92508177545.3906250.16702831012.433594307.00.98776993051.617188
40.078326.2265624090.0747820.464400100395.218750.49803730877.785156154.00.87879198168.09375113606.9843750.7792210.92833977545.4062500.16786331012.433594307.00.98438193051.625000
41.087650.2656254190.1525320.458993100395.218750.48511430877.785156154.00.87662798168.09375113606.9843750.7727270.92833977545.4062500.16160631012.433594307.00.98813393051.625000
42.081629.1718754290.2574370.458968100395.218750.48586430877.785156154.00.87676598168.09375113606.9843750.7792210.92833977545.3906250.16047431012.433594307.00.98437593051.617188
43.081339.8593754390.1293460.458855100395.218750.48604230877.785156154.00.87676598168.09375113606.9843750.7792210.93159677545.4062500.15991731012.433594307.00.98553693051.625000
\n", + "
" + ], + "text/plain": [ + " train/loss_rec_step step train/loss_pred_step val/loss_pred_step \\\n", + "epoch \n", + "0.0 77397.773438 9 1.069788 0.778202 \n", + "1.0 91063.453125 19 0.843710 0.660874 \n", + "2.0 90795.132812 29 0.949022 0.689792 \n", + "3.0 89330.171875 39 0.601921 0.809051 \n", + "4.0 90714.328125 49 0.709774 0.704353 \n", + "5.0 106039.632812 59 0.651428 0.678959 \n", + "6.0 81858.281250 69 0.569671 0.570009 \n", + "7.0 86209.156250 79 3.969136 4.288115 \n", + "8.0 102165.445312 89 1.690567 0.792697 \n", + "9.0 98064.218750 99 0.521591 0.672620 \n", + "10.0 69636.710938 109 0.461808 0.520920 \n", + "11.0 75968.390625 119 0.570702 0.788361 \n", + "12.0 97414.601562 129 0.460473 0.664653 \n", + "13.0 104531.179688 139 0.683978 0.515957 \n", + "14.0 121984.343750 149 0.458280 0.669487 \n", + "15.0 88494.093750 159 1.014107 0.591291 \n", + "16.0 105940.289062 169 0.387916 0.506099 \n", + "17.0 93633.195312 179 0.810040 0.608471 \n", + "18.0 84510.710938 189 0.414939 0.477233 \n", + "19.0 85320.609375 199 0.615247 0.677246 \n", + "20.0 98640.500000 209 0.776128 0.769955 \n", + "21.0 94597.359375 219 0.576955 0.561617 \n", + "22.0 101388.945312 229 0.491799 0.701527 \n", + "23.0 106463.648438 239 0.283981 0.483018 \n", + "24.0 73172.257812 249 0.501604 0.426876 \n", + "25.0 84696.750000 259 0.509627 0.568783 \n", + "26.0 87992.476562 269 0.241337 0.588086 \n", + "27.0 87263.203125 279 0.312636 0.401815 \n", + "28.0 92031.648438 289 0.180276 0.440955 \n", + "29.0 90158.460938 299 0.247529 0.547728 \n", + "30.0 99814.937500 309 0.105513 0.428403 \n", + "31.0 88258.117188 319 0.142466 0.447334 \n", + "32.0 97447.195312 329 0.363283 0.616281 \n", + "33.0 134090.781250 339 0.189077 0.484798 \n", + "34.0 93824.671875 349 0.223461 0.454525 \n", + "35.0 107830.625000 359 0.069726 0.441866 \n", + "36.0 81456.304688 369 0.309759 0.450383 \n", + "37.0 122290.656250 379 0.017839 0.473518 \n", + "38.0 95919.554688 389 0.147417 0.466035 \n", + "39.0 81279.812500 399 0.127831 0.462244 \n", + "40.0 78326.226562 409 0.074782 0.464400 \n", + "41.0 87650.265625 419 0.152532 0.458993 \n", + "42.0 81629.171875 429 0.257437 0.458968 \n", + "43.0 81339.859375 439 0.129346 0.458855 \n", + "\n", + " val/loss_rec_step val/loss_pred_epoch val/l1_loss val/n val/auroc \\\n", + "epoch \n", + "0.0 100395.21875 1.160508 30877.785156 154.0 0.566243 \n", + "1.0 100395.21875 0.862282 30877.785156 154.0 0.710818 \n", + "2.0 100395.21875 0.690631 30877.785156 154.0 0.607301 \n", + "3.0 100395.21875 0.986673 30877.785156 154.0 0.671147 \n", + "4.0 100395.21875 0.651313 30877.785156 154.0 0.684201 \n", + "5.0 100395.21875 0.741412 30877.785156 154.0 0.740930 \n", + "6.0 100395.21875 0.730938 30877.785156 154.0 0.817584 \n", + "7.0 100395.21875 3.304382 30877.785156 154.0 0.753181 \n", + "8.0 100395.21875 0.699588 30877.785156 154.0 0.770118 \n", + "9.0 100395.21875 0.704992 30877.785156 154.0 0.737901 \n", + "10.0 100395.21875 0.660143 30877.785156 154.0 0.788122 \n", + "11.0 100395.21875 0.677515 30877.785156 154.0 0.751004 \n", + "12.0 100395.21875 0.774117 30877.785156 154.0 0.771113 \n", + "13.0 100395.21875 0.672138 30877.785156 154.0 0.730726 \n", + "14.0 100395.21875 0.557663 30877.785156 154.0 0.834384 \n", + "15.0 100395.21875 0.596720 30877.785156 154.0 0.810539 \n", + "16.0 100395.21875 0.584782 30877.785156 154.0 0.795673 \n", + "17.0 100395.21875 0.549278 30877.785156 154.0 0.824255 \n", + "18.0 100395.21875 0.514056 30877.785156 154.0 0.803141 \n", + "19.0 100395.21875 0.547554 30877.785156 154.0 0.883409 \n", + "20.0 100395.21875 0.611047 30877.785156 154.0 0.806176 \n", + "21.0 100395.21875 0.555429 30877.785156 154.0 0.796464 \n", + "22.0 100395.21875 0.559388 30877.785156 154.0 0.833618 \n", + "23.0 100395.21875 0.563574 30877.785156 154.0 0.834375 \n", + "24.0 100395.21875 0.483047 30877.785156 154.0 0.857441 \n", + "25.0 100395.21875 0.458528 30877.785156 154.0 0.867930 \n", + "26.0 100395.21875 0.689411 30877.785156 154.0 0.840818 \n", + "27.0 100395.21875 0.454522 30877.785156 154.0 0.897142 \n", + "28.0 100395.21875 0.543356 30877.785156 154.0 0.877682 \n", + "29.0 100395.21875 0.492642 30877.785156 154.0 0.884150 \n", + "30.0 100395.21875 0.479470 30877.785156 154.0 0.866164 \n", + "31.0 100395.21875 0.482315 30877.785156 154.0 0.862355 \n", + "32.0 100395.21875 0.523725 30877.785156 154.0 0.880247 \n", + "33.0 100395.21875 0.452150 30877.785156 154.0 0.880442 \n", + "34.0 100395.21875 0.483442 30877.785156 154.0 0.864533 \n", + "35.0 100395.21875 0.485058 30877.785156 154.0 0.872056 \n", + "36.0 100395.21875 0.479217 30877.785156 154.0 0.873548 \n", + "37.0 100395.21875 0.502710 30877.785156 154.0 0.875545 \n", + "38.0 100395.21875 0.491491 30877.785156 154.0 0.875971 \n", + "39.0 100395.21875 0.485890 30877.785156 154.0 0.878812 \n", + "40.0 100395.21875 0.498037 30877.785156 154.0 0.878791 \n", + "41.0 100395.21875 0.485114 30877.785156 154.0 0.876627 \n", + "42.0 100395.21875 0.485864 30877.785156 154.0 0.876765 \n", + "43.0 100395.21875 0.486042 30877.785156 154.0 0.876765 \n", + "\n", + " val/l2_loss val/loss_rec_epoch val/acc train/acc train/l2_loss \\\n", + "epoch \n", + "0.0 98168.09375 113606.984375 0.525974 0.511401 77545.398438 \n", + "1.0 98168.09375 113606.984375 0.519481 0.508143 77545.406250 \n", + "2.0 98168.09375 113606.984375 0.603896 0.615635 77545.398438 \n", + "3.0 98168.09375 113606.984375 0.545455 0.677524 77545.406250 \n", + "4.0 98168.09375 113606.984375 0.616883 0.596091 77545.406250 \n", + "5.0 98168.09375 113606.984375 0.597403 0.628664 77545.398438 \n", + "6.0 98168.09375 113606.984375 0.577922 0.690554 77545.406250 \n", + "7.0 98168.09375 113606.984375 0.487013 0.592834 77545.406250 \n", + "8.0 98168.09375 113606.984375 0.525974 0.508143 77545.414062 \n", + "9.0 98168.09375 113606.984375 0.616883 0.631922 77545.406250 \n", + "10.0 98168.09375 113606.984375 0.603896 0.667752 77545.414062 \n", + "11.0 98168.09375 113606.984375 0.571429 0.644951 77545.414062 \n", + "12.0 98168.09375 113606.984375 0.551948 0.664495 77545.406250 \n", + "13.0 98168.09375 113606.984375 0.610390 0.697068 77545.414062 \n", + "14.0 98168.09375 113606.984375 0.733766 0.710098 77545.398438 \n", + "15.0 98168.09375 113606.984375 0.681818 0.684039 77545.406250 \n", + "16.0 98168.09375 113606.984375 0.655844 0.723127 77545.406250 \n", + "17.0 98168.09375 113606.984375 0.701299 0.726384 77545.406250 \n", + "18.0 98168.09375 113606.984375 0.753247 0.716612 77545.406250 \n", + "19.0 98168.09375 113606.984375 0.727273 0.775244 77545.398438 \n", + "20.0 98168.09375 113606.984375 0.642857 0.700326 77545.398438 \n", + "21.0 98168.09375 113606.984375 0.694805 0.661238 77545.414062 \n", + "22.0 98168.09375 113606.984375 0.714286 0.739414 77545.414062 \n", + "23.0 98168.09375 113606.984375 0.688312 0.807818 77545.406250 \n", + "24.0 98168.09375 113606.984375 0.759740 0.817590 77545.398438 \n", + "25.0 98168.09375 113606.984375 0.811688 0.833876 77545.406250 \n", + "26.0 98168.09375 113606.984375 0.694805 0.843648 77545.398438 \n", + "27.0 98168.09375 113606.984375 0.766234 0.879479 77545.398438 \n", + "28.0 98168.09375 113606.984375 0.759740 0.895765 77545.406250 \n", + "29.0 98168.09375 113606.984375 0.798701 0.876221 77545.398438 \n", + "30.0 98168.09375 113606.984375 0.766234 0.908795 77545.398438 \n", + "31.0 98168.09375 113606.984375 0.766234 0.885993 77545.406250 \n", + "32.0 98168.09375 113606.984375 0.811688 0.912052 77545.406250 \n", + "33.0 98168.09375 113606.984375 0.785714 0.902280 77545.398438 \n", + "34.0 98168.09375 113606.984375 0.785714 0.918567 77545.398438 \n", + "35.0 98168.09375 113606.984375 0.779221 0.928339 77545.406250 \n", + "36.0 98168.09375 113606.984375 0.772727 0.928339 77545.406250 \n", + "37.0 98168.09375 113606.984375 0.785714 0.928339 77545.398438 \n", + "38.0 98168.09375 113606.984375 0.772727 0.928339 77545.406250 \n", + "39.0 98168.09375 113606.984375 0.772727 0.925081 77545.390625 \n", + "40.0 98168.09375 113606.984375 0.779221 0.928339 77545.406250 \n", + "41.0 98168.09375 113606.984375 0.772727 0.928339 77545.406250 \n", + "42.0 98168.09375 113606.984375 0.779221 0.928339 77545.390625 \n", + "43.0 98168.09375 113606.984375 0.779221 0.931596 77545.406250 \n", + "\n", + " train/loss_pred_epoch train/l1_loss train/n train/auroc \\\n", + "epoch \n", + "0.0 1.020661 31012.433594 307.0 0.578966 \n", + "1.0 0.884215 31012.433594 307.0 0.654156 \n", + "2.0 0.723649 31012.433594 307.0 0.680807 \n", + "3.0 0.616691 31012.433594 307.0 0.718683 \n", + "4.0 0.700747 31012.433594 307.0 0.725853 \n", + "5.0 0.638593 31012.433594 307.0 0.765669 \n", + "6.0 0.603959 31012.433594 307.0 0.817182 \n", + "7.0 1.214469 31012.433594 307.0 0.797214 \n", + "8.0 1.733171 31012.433594 307.0 0.772954 \n", + "9.0 0.636802 31012.429688 307.0 0.780447 \n", + "10.0 0.692107 31012.435547 307.0 0.804601 \n", + "11.0 0.634193 31012.429688 307.0 0.834798 \n", + "12.0 0.602314 31012.433594 307.0 0.839575 \n", + "13.0 0.592645 31012.429688 307.0 0.831244 \n", + "14.0 0.548631 31012.433594 307.0 0.868454 \n", + "15.0 0.584592 31012.433594 307.0 0.862822 \n", + "16.0 0.565336 31012.433594 307.0 0.872286 \n", + "17.0 0.526617 31012.429688 307.0 0.869530 \n", + "18.0 0.499335 31012.433594 307.0 0.878709 \n", + "19.0 0.473835 31012.433594 307.0 0.899666 \n", + "20.0 0.579547 31012.433594 307.0 0.905836 \n", + "21.0 0.586174 31012.433594 307.0 0.831182 \n", + "22.0 0.519696 31012.433594 307.0 0.924990 \n", + "23.0 0.443358 31012.433594 307.0 0.921825 \n", + "24.0 0.393591 31012.433594 307.0 0.927127 \n", + "25.0 0.342487 31012.433594 307.0 0.936817 \n", + "26.0 0.327118 31012.433594 307.0 0.949002 \n", + "27.0 0.302037 31012.433594 307.0 0.957852 \n", + "28.0 0.277110 31012.433594 307.0 0.956152 \n", + "29.0 0.282436 31012.435547 307.0 0.954290 \n", + "30.0 0.262222 31012.433594 307.0 0.961753 \n", + "31.0 0.249586 31012.433594 307.0 0.958822 \n", + "32.0 0.228062 31012.429688 307.0 0.968350 \n", + "33.0 0.235713 31012.433594 307.0 0.966824 \n", + "34.0 0.214750 31012.433594 307.0 0.976520 \n", + "35.0 0.187813 31012.435547 307.0 0.977937 \n", + "36.0 0.190207 31012.433594 307.0 0.979828 \n", + "37.0 0.177915 31012.433594 307.0 0.980424 \n", + "38.0 0.168959 31012.433594 307.0 0.982604 \n", + "39.0 0.167028 31012.433594 307.0 0.987769 \n", + "40.0 0.167863 31012.433594 307.0 0.984381 \n", + "41.0 0.161606 31012.433594 307.0 0.988133 \n", + "42.0 0.160474 31012.433594 307.0 0.984375 \n", + "43.0 0.159917 31012.433594 307.0 0.985536 \n", + "\n", + " train/loss_rec_epoch \n", + "epoch \n", + "0.0 93051.617188 \n", + "1.0 93051.625000 \n", + "2.0 93051.632812 \n", + "3.0 93051.625000 \n", + "4.0 93051.625000 \n", + "5.0 93051.625000 \n", + "6.0 93051.617188 \n", + "7.0 93051.625000 \n", + "8.0 93051.625000 \n", + "9.0 93051.632812 \n", + "10.0 93051.625000 \n", + "11.0 93051.625000 \n", + "12.0 93051.625000 \n", + "13.0 93051.625000 \n", + "14.0 93051.625000 \n", + "15.0 93051.625000 \n", + "16.0 93051.625000 \n", + "17.0 93051.625000 \n", + "18.0 93051.625000 \n", + "19.0 93051.625000 \n", + "20.0 93051.617188 \n", + "21.0 93051.617188 \n", + "22.0 93051.625000 \n", + "23.0 93051.625000 \n", + "24.0 93051.625000 \n", + "25.0 93051.617188 \n", + "26.0 93051.625000 \n", + "27.0 93051.617188 \n", + "28.0 93051.625000 \n", + "29.0 93051.617188 \n", + "30.0 93051.617188 \n", + "31.0 93051.617188 \n", + "32.0 93051.625000 \n", + "33.0 93051.617188 \n", + "34.0 93051.625000 \n", + "35.0 93051.625000 \n", + "36.0 93051.625000 \n", + "37.0 93051.625000 \n", + "38.0 93051.625000 \n", + "39.0 93051.617188 \n", + "40.0 93051.625000 \n", + "41.0 93051.625000 \n", + "42.0 93051.617188 \n", + "43.0 93051.625000 " + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_hist, _ = read_metrics_csv(trainer2.logger.experiment.metrics_file_path)\n", + "plot_hist(df_hist, ['loss_pred_epoch', 'auroc'])\n", + "df_hist" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "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", + " \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", + " \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", + "
test/auroc/dataloader_idx_0test/acc/dataloader_idx_0test/loss_pred_epoch/dataloader_idx_0test/loss_rec_epoch/dataloader_idx_0test/l1_loss/dataloader_idx_0test/l2_loss/dataloader_idx_0test/n/dataloader_idx_0test/auroc/dataloader_idx_1test/acc/dataloader_idx_1test/loss_pred_epoch/dataloader_idx_1...test/l1_loss/dataloader_idx_2test/l2_loss/dataloader_idx_2test/n/dataloader_idx_2test/auroc/dataloader_idx_3test/acc/dataloader_idx_3test/loss_pred_epoch/dataloader_idx_3test/loss_rec_epoch/dataloader_idx_3test/l1_loss/dataloader_idx_3test/l2_loss/dataloader_idx_3test/n/dataloader_idx_3
01.01.00.00119130446.63085922865.07421919014.091797307.0NaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
1NaNNaNNaNNaNNaNNaNNaN0.9194980.8441560.729616...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
2NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...22943.24023423928.457031154.0NaNNaNNaNNaNNaNNaNNaN
3NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaN0.9641710.9219510.38506933809.71484422865.66796922376.880859615.0
\n", + "

4 rows × 28 columns

\n", + "
" + ], + "text/plain": [ + " test/auroc/dataloader_idx_0 test/acc/dataloader_idx_0 \\\n", + "0 1.0 1.0 \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "\n", + " test/loss_pred_epoch/dataloader_idx_0 \\\n", + "0 0.001191 \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "\n", + " test/loss_rec_epoch/dataloader_idx_0 test/l1_loss/dataloader_idx_0 \\\n", + "0 30446.630859 22865.074219 \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "\n", + " test/l2_loss/dataloader_idx_0 test/n/dataloader_idx_0 \\\n", + "0 19014.091797 307.0 \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "\n", + " test/auroc/dataloader_idx_1 test/acc/dataloader_idx_1 \\\n", + "0 NaN NaN \n", + "1 0.919498 0.844156 \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "\n", + " test/loss_pred_epoch/dataloader_idx_1 ... test/l1_loss/dataloader_idx_2 \\\n", + "0 NaN ... NaN \n", + "1 0.729616 ... NaN \n", + "2 NaN ... 22943.240234 \n", + "3 NaN ... NaN \n", + "\n", + " test/l2_loss/dataloader_idx_2 test/n/dataloader_idx_2 \\\n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 23928.457031 154.0 \n", + "3 NaN NaN \n", + "\n", + " test/auroc/dataloader_idx_3 test/acc/dataloader_idx_3 \\\n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 0.964171 0.921951 \n", + "\n", + " test/loss_pred_epoch/dataloader_idx_3 \\\n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 0.385069 \n", + "\n", + " test/loss_rec_epoch/dataloader_idx_3 test/l1_loss/dataloader_idx_3 \\\n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 33809.714844 22865.667969 \n", + "\n", + " test/l2_loss/dataloader_idx_3 test/n/dataloader_idx_3 \n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 22376.880859 615.0 \n", + "\n", + "[4 rows x 28 columns]" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rs2r = trainer2.test(net, dataloaders=[dl_train, dl_val, dl_test, dl_ood])\n", + "rs2 = rename_pl_test_results(rs2r, [\"train\", \"val\", \"test\", \"ood\"])\n", + "\n", + "# TODO just pass in dl?\n", + "testval_metrics = calc_metrics(dm, trainer2, net, use_val=True)\n", + "print(pd.DataFrame(rs2).round(3).to_markdown())\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Train end-to-end\n" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Trainer will use only 1 of 2 GPUs because it is running inside an interactive / notebook environment. You may try to set `Trainer(devices=2)` but please note that multi-GPU inside interactive / notebook environments is considered experimental and unstable. Your mileage may vary.\n", + "Using 16bit Automatic Mixed Precision (AMP)\n", + "GPU available: True (cuda), used: True\n", + "TPU available: False, using: 0 TPU cores\n", + "IPU available: False, using: 0 IPUs\n", + "HPU available: False, using: 0 HPUs\n", + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "\n", + " | Name | Type | Params\n", + "-------------------------------------\n", + "0 | ae | AutoEncoder | 82.7 M\n", + "1 | head | Sequential | 4.1 M \n", + "-------------------------------------\n", + "86.8 M Trainable params\n", + "0 Non-trainable params\n", + "86.8 M Total params\n", + "347.287 Total estimated model params size (MB)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "training both ae and probe\n", + "requires_grad: True\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d66bd003cf5a4d9facccc119f87d0f34", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Sanity Checking: | | 0/? [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:492: Your `test_dataloader`'s sampler has shuffling enabled, it is strongly recommended that you turn shuffling off for val/test dataloaders.\n", + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:441: The 'test_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "665e8d8de5f74cab97cdc3ec406e190a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Testing: | | 0/? [00:00┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", + "┃ Test metric DataLoader 0 DataLoader 1 DataLoader 2 ┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", + "│ test/acc 0.9999999403953552 0.8441558480262756 0.8441558480262756 │\n", + "│ test/auroc 0.9999999403953552 0.9194979071617126 0.9344504475593567 │\n", + "│ test/l1_loss 22866.646484375 22790.701171875 22944.76171875 │\n", + "│ test/l2_loss 19016.119140625 27528.8515625 23930.302734375 │\n", + "│ test/loss_pred_epoch 0.001192848663777113 0.7295305132865906 0.8057235479354858 │\n", + "│ test/loss_rec_epoch 30449.4453125 38924.203125 35402.68359375 │\n", + "│ test/n 307.0 154.0 154.0 │\n", + "└───────────────────────────┴───────────────────────────┴───────────────────────────┴───────────────────────────┘\n", + "\n" + ], + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1m Test metric \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 0 \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 1 \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 2 \u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", + "│\u001b[36m \u001b[0m\u001b[36m test/acc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.9999999403953552 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8441558480262756 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8441558480262756 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/auroc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.9999999403953552 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.9194979071617126 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.9344504475593567 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l1_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 22866.646484375 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 22790.701171875 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 22944.76171875 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l2_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 19016.119140625 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 27528.8515625 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 23930.302734375 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_pred_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.001192848663777113 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.7295305132865906 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.8057235479354858 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_rec_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 30449.4453125 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 38924.203125 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 35402.68359375 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/n \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 307.0 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 154.0 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 154.0 \u001b[0m\u001b[35m \u001b[0m│\n", + "└───────────────────────────┴───────────────────────────┴───────────────────────────┴───────────────────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n",
+       "┃        Test metric               DataLoader 3        ┃\n",
+       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
+       "│         test/acc               0.921951174736023     │\n",
+       "│        test/auroc             0.9638615250587463     │\n",
+       "│       test/l1_loss              22867.189453125      │\n",
+       "│       test/l2_loss              22378.306640625      │\n",
+       "│   test/loss_pred_epoch        0.3850327134132385     │\n",
+       "│    test/loss_rec_epoch          33811.90234375       │\n",
+       "│          test/n                      615.0           │\n",
+       "└───────────────────────────┴───────────────────────────┘\n",
+       "
\n" + ], + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1m Test metric \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 3 \u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", + "│\u001b[36m \u001b[0m\u001b[36m test/acc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.921951174736023 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/auroc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.9638615250587463 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l1_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 22867.189453125 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l2_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 22378.306640625 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_pred_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.3850327134132385 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_rec_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 33811.90234375 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/n \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 615.0 \u001b[0m\u001b[35m \u001b[0m│\n", + "└───────────────────────────┴───────────────────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:441: The 'predict_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2c8627e28e914fca84c6131350a06d79", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Predicting: | | 0/? [00:000: \n", - "# tds = SharedDataset(tds, f\"{self.hparams.name}_{name}\") \n", - "# return tds" - ] + "source": [] }, { "cell_type": "code", @@ -246,7 +226,7 @@ " for layer in layers_names:\n", " # Stack the base and adapter representations as a 4th dim\n", " X1 = [ds[f'end_residual_{layer}_base'], ds[f'end_residual_{layer}_adapt']]\n", - " X1 = rearrange(X1, 'versions b l f -> b l f versions')[..., 0]\n", + " X1 = rearrange(X1, 'versions b l f -> b l f versions')[..., 0] # NOTE: here we take only the BASE version!\n", " data.append(X1)\n", " \n", " # concat layers\n", diff --git a/notebooks/11e_sae_aisafteyfoundation.ipynb b/notebooks/11e_sae_aisafteyfoundation.ipynb index 9835796..4d8efc9 100644 --- a/notebooks/11e_sae_aisafteyfoundation.ipynb +++ b/notebooks/11e_sae_aisafteyfoundation.ipynb @@ -4601,6 +4601,1133 @@ }, "metadata": {}, "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "46ebd57551da4320a5654d386c81c253", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Validation: | | 0/? [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqMAAAEzCAYAAAAFEQq2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABCxElEQVR4nO3deVxUVeMG8GdmABEBZRc0FTXxzRRTJAUNl1xKEDR9wy01d7Pc18oyV3AhbVEr01Ar41XTUjOtXNDEPct+apgLKiCbIAIzzsz9/UFOIgPcYYa5F3i+n48fnTN35px7zww8nnPvuQpBEAQQEREREUlAKXUDiIiIiKj6YhglIiIiIskwjBIRERGRZBhGiYiIiEgyDKNEREREJBmGUSIiIiKSDMMoEREREUmGYZSIiIiIJMMwSkRERESSYRglokrt5s2b8PPzQ2ZmptRNsbjQ0FBs375d6mYYlZCQgGeeeUbqZhBRFcAwSkRERESSYRgloirj4sWLGD58OAICAtCtWzesXbsWOp0OAHDp0iVERkYiICAAzz//PKKiogzP7dmzB7169UJAQADCwsKwY8cOUfXNnj0bb7/9NiIjI9G6dWtERkbi8uXLAApHDp9//nlMnDgRAQEB2Lt3L9RqNaKiotC5c2cEBQVh1qxZyM7ONrzfnj170L17dzzzzDOYN28eHjx4IHrfz5w5Y9i/sLAwHDhwwPDc0KFDERUVhdDQUDzzzDMYOXIkUlJSDM/v27cPffr0QZs2bRAeHl7ktXfu3MHrr7+Otm3bIigoCEuWLDEcN0EQ8OGHH6Jr165o06YN3nnnHej1etFtJiICAAhERJVYUlKS0KxZMyEjI0No166dsHbtWkGtVguJiYlC9+7dhXXr1gmCIAgDBw4UPvroI0Gv1wu3bt0SOnXqJPz8889CXl6e0KJFC+HkyZOCIAhCfHy84O/vL2RmZpZZ96xZs4Snn35aOHz4sKBWq4Vly5YJXbp0EdRqtXD8+HGhWbNmQmxsrKBWq4X8/HxhwYIFwsCBA4U7d+4I9+7dE6ZOnSpMmDBBEARBuHz5stCiRQvh4MGDgkajET755BOhWbNmwrZt28psx+3bt4XWrVsLu3btErRarXD8+HEhICBAuHDhgiAIgjBkyBAhMDBQOH/+vJCXlydMmzZN+O9//ysIgiAcO3ZMaNWqlXD48GFBq9UKBw8eFFq1aiWcPn3acNymTJki3Lt3T7hz547wwgsvCBs2bDDs37JlywS1Wi1cvnxZ8Pf3F3766SfTO5GIqjWOjBJRlbBt2zbUqVMHY8eOhZ2dHZo0aYIJEyZg27ZtAIAaNWrgyJEjOHDgAJydnXHw4EF06dLF8Ny2bdtw8uRJBAYG4syZM3BxcRFVb69evdCpUyfY2dlh0qRJyMrKwpkzZwzPR0REwM7ODjVq1EBcXBymTp0KDw8PODo6Yvbs2Thw4AAyMzOxd+9etG/fHiEhIbC1tcWoUaNQt25dUW347rvv4O/vj7CwMKhUKjz77LN44YUXEBcXZ9hm4MCBaNmyJWrWrImZM2fi3LlzSEpKwo4dOxAaGopOnTpBpVIhJCQEvXv3xo4dO3Dr1i2cPn0as2fPhqOjIzw8PLB27Vr06NEDAKBUKjFx4kTY2dnhySefRPPmzXHjxg1RbSYieshG6gYQEVmCRqOBj49PkbL69evj9u3bAICYmBisWrUKS5YsQWpqKjp16oT58+fDy8sLW7Zswccff4yJEyfiwYMHGDBgAKZNmwY7O7sy623YsKHh37a2tnB3d0d6ejo8PDxQs2ZNODk5AQAyMzNRUFCAsWPHQqFQGF5To0YN3Lx5E2lpaUXCp0KhQL169UTt++3bt3Hq1CkEBAQYynQ6HZ599lmj7fT09ISNjQ3S09ORkZGBtm3bFjtup0+fRlpaGmxsbODp6Wl4rkGDBgCApKQk2Nvbw97evsj+P5zCJyISi2GUiKoEHx8f3Lp1q0hZUlISPDw8IAgCLl68iOnTp+Odd97BtWvX8NZbbyEmJgZvvfUWsrOzsXr1auj1epw7dw4TJ06En58f+vXrV2a9qamphn9rNBpDqNTpdEVCp4uLC+zs7PD111/jySefBABotVpcv34dDRs2hJeXV5ERVaDwfE0xvLy80LVrV6xevdpQlpKSUiRMP9rOlJQUaLVa1K1bF97e3rh586bR41a3bl1otVqkp6fD3d0dAHD06FGkpKSgfv36otpGRFQWTtMTUZUQEhKC+/fvY+3atdBoNPj777+xZs0aREREQKFQYNGiRfjoo4+g0Wjg7u4OGxsb1KlTB3l5eRg5ciQOHDgAhUIBT09PKBQK1KlTR1S933//Pc6ePQuNRoOVK1fCy8vL6JJHSqUSffv2xbJly5CZmQmNRoP3338fr7zyCrRaLXr37o1Tp05h37590Gq12LRpE5KSkkS1ITQ0FMeOHcNPP/0EvV6PxMRE/Pe//8WuXbsM23z11Ve4cuUK8vLyEBUVhfbt28Pb2xt9+/bF7t27ceTIEeh0Ohw+fBi7d+9GeHg46tati8DAQCxfvhx5eXm4c+cOli5ditzcXFHtIiISg2GUiKqM9evX49ixYwgKCsKwYcMQGhqKCRMmAABWrlyJ33//HUFBQejatSs8PT0xceJEeHp6IiYmBjExMWjTpg0GDRqEIUOGoGvXrqLqbNeuHaKjo9G+fXtcvHgRn376KVQqldFt58yZg0aNGqFfv37o0KEDfvvtN3z22Wewt7eHr68vVq9ejffffx8BAQE4deoU/P39RbXhiSeewMcff4x169YhMDAQr776Kvr3749hw4YZtmnbti2mTp2KTp06QavVIiYmxlC+dOlSREdHIyAgAFFRUViyZAk6dOhgOG4FBQXo2rUr+vXrh65du+KVV14R1S4iIjEUgiAIUjeCiKgymj17NhwcHDBv3jypm1KqoUOHonPnzhg5cqTUTSEiKoYjo0REREQkGV7ARERkxJ9//onBgweX+Hz//v2t1pb+/fvjypUrRp+zs7NDQkKC1dpCRGRpnKYnIiIiIslwmp6IiIiIJMMwSkRERESSYRglIiIiIskwjBIRERGRZBhGiYiIiEgylXppp5ycfOh0eqvU5eJSC1lZ961SF5mGfSNv7B/5Yt/IF/tG3tg/4qhUSjg71yxzu0odRnU6PbTaig+jCsW/9XEhLHlh38gb+0e+2Dfyxb6RN/aP5XGanoiIiIgkwzBKRERERJJhGCUiIiIiyTCMEhEREZFkGEaJiIiISDKV+mp6qeSrtdi8/xKu3MpBk3rOGNLdDzVr8FASERERmYoJqhw277+EhAup0AtA+t18AMDo0BYSt4qIiIio8mEYLYcrt3Kg/2dtMb1Q+JiIiIjIFCXNtBorB2DRMjnN6MqnJZVIk3rOSL+bD70AKBWFj4mIiEgalg5vpQXCLfsv4WpyLny9HTHYzHpKmmk1Vg7AomVymtFlGC2Hhx+qxz9kRERE1YG1Ru7E1mPp8CYmEKZm3odgZj0lzbSWVG7pMrlgGC2HmjVsZPU/CiIiqn6kDITWGrkTW09FhDdrBMKSZlpLKrd0mVwwjBIREVmQuSHx8WlgOQZCa43cia2nIsKbNQJhSTOtpc3AWrpMDhhGiYioyrHmOYQVFRIfTgPLMRBaa+RObD0VEd5Kek8FgKspufCt++85o+Wtp6SZ1pLKLV0mFwyjREQkKbEhT+7nEFp7yljKQGitkTux9VREeCvxPcNawN3dCenp9yAI5tdDDKNERFSCigiJxsrEhjw5BkJj21pryljKQGitkTtT6qHKy6QweuTIESxfvhxqtRre3t6IioqCp6en4fmMjAy8+uqrRV6TmJiIMWPGYNKkSYayuLg47NmzBxs2bDCz+UREVBpzlqepiJBorMyU4Ci3QGhsW3NDorFpYDkGQiJLER1GMzMzMX36dMTGxsLPzw+xsbGYM2cO1q9fb9jGzc0NO3fuNDyOi4vD119/jbFjxxreY8WKFdi9ezdat25tub0gIqqizB2dNGd5mooIicbKTAmOcjyH8PEys0OikWlgBkKqykSH0fj4ePj5+cHPr/DLFxkZiejoaKSlpcHDw6PY9rdu3cKKFSvw1Vdfwd7eHgCwa9cu1K9fHzNnzsSPP/5okR1QKCzyNqLqsEZdZBr2jbyxfwrlq7XY/OMlJN7KQdN6zhjS459AKaJsy2Nh8uGhfLxsdFgLo9uaExKbPhb8mhoJfk3rOUPxz99itjVWNqSHHxRAsWPxeJlCAQwVuW3NGjYYE1Y8vJlT5mAv/j3Nwe+NvLF/LE90GE1JSYG3t7fhsZ2dHVxcXJCcnGw0jK5atQoDBgyAr6+voWz48OEAgO3bt5vR5H+5uNSyyPuI5ebmZNX6SDz2jbxVxf7JK3iAtdvP4+K1LDRv5IJx/VrBwd7WaHnsj+dx3BASC1Cjhi0AiCq7mpxbJCReTckFBBQrc3d3Mrpti8ZuSD9zC3pBgFKhQIvGbgAgqmxcv1aosf08Ll7PQvOGhfsCoFiZg70tJg1sK2rbkl4/Z0T7YsfYWFlJ5SVtW5lVxe9NVcL+sRzRYVQQBCiM/DdAqVQWK7tz5w7279+PgwcPmtW4smRl3YdOp6/QOoDC//24uTkhI+PfKROSB/aNvFXG/hE7irn5x0uG4JiaeR9q9QOMDmuBT7+7UKw8scjopIALf2f88++yy5rWc0Zq5n3DSKJvXUcAKFaWnn4Pvt6OxcoHhDQ2tKFpPWcMCGkMAFCrHxjOS3y07NHt8nIL8EqPZoZjk5dbAADFykoqF1v2sJwKVcbvTXXC/hFPpVKKGjgUHUZ9fHxw/Phxw2ONRoOsrCz4+PgU23bfvn3o0qULateuLfbty82aHwRBsG59JB77Rt7k2j9izrE0dj6lgOLT34m3ciD88/fj5eZcTDO4u5+hvoePARQrEwQY3dbezgajRJ6X+Ph2cuyz6kSu3xsqxP6xHNFhNDg4GAsXLsTly5fRrFkzxMXFwd/fH66ursW2TUhIQEhIiEUbSkRkaeYsJG7KbfzMuZjGlItheJELEVVGosOoq6srYmJiMGvWLKjVari5uSE6OhoAEB4ejoULF6Jly5YAgGvXrmHQoEEV02IiojKIvQLdnIXETbmNn7lXVxMRVWUKQai8g8xZWfeh1VrnnNHHp7NIHtg38lbR/WMsdNasYYNPv79gGPFUKoBnW3gBgKiyh1P1YpZSqsz43ZEv9o28sX/Es7Gx8DmjRERSEruG5ujQFqKn2t8Z3g5A+UcxiYjIfAyjRFQpmHJ+p9ipdp5jSUQkPYZRIpIdY6OgppzfaeoFQ0REJB2GUSKSlNjpd1OuUudUOxFR5cEwaiElXUhBRKUTO/1uyvmdRERUeTAtWUhJF1IQ0b/MmX5n8CQiqpoYRi2kpAspiOhf5k6/ExFR1cMwaiElXUhBVF3lq7XYsv8SribnwtfbEYNLGAXl9DsRUfXGMGohHMmh6qqk86UfHQVNzbwPAcb/08bgSURUvTGMWgh/oVJ1YO7C88ZGQYmIqHpjGCUi0cxdeJ7/aSMioscxjBKRaKYuPK8AcDUlF751C88ZJSIiehzDKBGJZvLC82Et4O7uhPT0exAEKVtORERyxTBKRKJv2mAseHLqnYiIzMEwSkSib9rA4ElERJbGMEpUzYi9CxJvcUtERNbA3yxEVZjYpZiMnQvKW9wSEZE1MIwSlYPcRg3FLDxf2lJMxtb/nL/xJG9xS0REFY5hlKgczB01FBtmjW33sP7yLjwvdv1P3uKWiIisgWFUxuQ2+kb/Kmmh98eZMmL5MFSWFTIBmLXwvNhb1/IWt0REZA1MNjLGc/bkS+yooSkjlqbc3ciUhecfvo+pSzHxynkiIrIGhlEZEzv6RtYndtTQlBFLU+5uZNLC8wyUREQkYwyjMsZz9uTLWMgzNiVvyojl5v2XTJpS58LzRERUFTCMyhjP2atcSjoPFBA3YmnKlDqDJxERVRUMozLG0a7Kxdg0uyl9yP4mIqLqSCl1A4iqiib1nKFUFP6bp1UQERGJw5FRmeAyTpUfT6sgIiIyHdOOTHAZp8qP0+xERESm4zS9THAZJyIiIqqOGEZlgucbEhERUXXEaXqZ4PmGREREVB0xjMoEzzckIiKi6ojT9EREREQkGY6MVlFcKoqIiIgqA6aTKopLRREREVFlwGn6KopLRREREVFlYNLI6JEjR7B8+XKo1Wp4e3sjKioKnp6ehuczMjLw6quvFnlNYmIixowZg0mTJuGPP/7A/Pnzcf/+fdSqVQtRUVFo3LixZfaEimhSzxnpd/OhF7hUFBEREcmX6DCamZmJ6dOnIzY2Fn5+foiNjcWcOXOwfv16wzZubm7YuXOn4XFcXBy+/vprjB07FhqNBhMnTsTChQvRsWNH/PTTT5g4cSJ2794NhUJh2b0iLhVVTjzXloiIyLpET9PHx8fDz88Pfn6FoSYyMhIJCQlIS0szuv2tW7ewYsUKLF++HPb29vj999+hUqnQsWNHAEC3bt2Qn5+P8+fPW2A36HEPl4paOrYDRoe2YKAS6eG5tney8pFwIRWb91+SuklERERVmuiEkpKSAm9vb8NjOzs7uLi4IDk5GR4eHsW2X7VqFQYMGABfX1+jrwcALy8v3L59G/7+/uVtP6wxqPqwDg7gyo+l+8bYubbs9/Ljd0e+2Dfyxb6RN/aP5YkOo4IgGJ1OVyqLD67euXMH+/fvx8GDB8v1erFcXGqV+7Xl4ebmZNX6jMkreIC128/j4rUsNG/kgnH9WgFAsTIHe1uJW2pdluqbFo3dkH7mFvSCAKVCgRaN3eDgaF/tj6+55PDdIePYN/LFvpE39o/liA6jPj4+OH78uOGxRqNBVlYWfHx8im27b98+dOnSBbVr1y7y+tTU1CLb3blzp9hoqSmysu5Dp9OX+/ViKRSFH7qMjHsQhAqvrlSffncBx/9Zsik18z7U6gcAUKxsdFj1WMbJnL7JV2ux+cdLSLyVg6b1nDGkhx8GhDSGWv3AUDYgpDFWfXW62h5fc8npu0NFsW/ki30jb+wf8VQqpaiBQ9FhNDg4GAsXLsTly5fRrFkzxMXFwd/fH66ursW2TUhIQEhISJGyVq1aQa1W49ixYwgKCsLBgwehUCjQooV5v9St+UEQBOvWZ0ziY9PIif8s2fR4mdTttLby9M2mH4uuxSqgcC3WUY+tx2rsmFe342suOXx3yDj2jXyxb+SN/WM5osOoq6srYmJiMGvWLKjVari5uSE6OhoAEB4ejoULF6Jly5YAgGvXrmHQoEFFK7KxwZo1azB//nwsWrQINWvWxAcffACVSmXB3an6SlqyScwyTiVdKV5dryAXuxYrl8kiIiKqOCYljqCgIOzYsaNY+aPLOQHA999/b/T1Tz31FLZu3WpKlfSY0pZsKmsZp5LuylRd79YkNmRymSwiIqKKU/WHv6qYh0s2PU5MeCxpJLC63q1JbMgs6ZgTERGR+RhGq5GSRgKNlVeHqXuGTCIiIulVrXRBpSppJNBYeXWduiciIiLrYhitQHIbXSxpJNBYeXWduiciIiLrYhitQJV5dJFXkBMREZE1MIxWoMo8umhs6l5uI71ERERU+TFJVKDKfGGQsan7T7+/UGlHeomIiEie5JeCqpCqdmGQsZFeuYVrubWHiIiISsff0hWoql0YZGykV27hWm7tISIiotIxjFpZZb4wyNhI7/yNJ0WFa2uNWFbmsE9ERFQdMYxaWWW+taSxkV6x4dpaI5aVOewTERFVRwyjVlbV7vojNlybO2IpdmS1Mod9IiKi6ohhlMxiLFwbC47mjliKHVkV2x5e1ERERCQP/I1MFmcsOJo7YmnOyCovaiIiIpIvhlGyOGPB0dzTE8wZWeVFTURERPLFMEoWVxEXEZV0R6gt+y/hanIufL0dMbiE6Xde1ERERCRfDKNkcRVxEVFZd4RKzbwPAcan33lRExERkXwxjJLFmTslL/aCI7HT71VtBQMiIqKqhGGUJGUseIq94IjT70RERJUfwyhJyljwFDviOaS7HxQArqbkwrdu4TmjREREVLkwjJKkjAVPsSOeNWvYYHRYC7i7OyE9/R4EwYoNJyIiIotgGCVJGQuevOCIiIio+mAYJUkZC5684IiIiKj6YBglSTF4EhERVW8Mo0RERJWQIAgQeLK81SkUgE6ng16v57UKAJRKpdnvwTBKRERUiej1ety7dxf5+bkAmIakkJamhF6vl7oZsqBS2cDFxRM2Nrblfg+GUSIiokokMzMVSqUSbm51oVKpACikblK1Y2OjhFbLMAoIyM3NQVbWHXh41Cv3uzCMEhERVRKCoIdWq4GHR/1/gihJQalUwgKz01WCo6Mz8vJyoNfryz1lz0NJRERUSTw8R1Gh4GgoyYX5n0WGUSIiIiKSDMMoEREREUmGYZSIiIgkc+bMKbz8ckSRsmHDInHt2lWEhDwrTaMsbOnSBVi/fp3UzTDYs+c7TJo0QepmGPACJiIiomokX63F5v2Xit35Ti4SE/9CvXpPoEaNGlI3haxEPp8+IiIiqnCb919CwoVU6AUg/W4+AFj0Tnjvvfc2GjRoiOHDRwEADh36BVu2fIF+/QZg+/Y4aLVa3L2bhd69+2DkyLHFXn/o0M947rnOxco3bdqAffv2QqVSwc3NHVOmzMATTzTApUsXsXJlFB48eABAQGhoBPr1G4Dk5NtYtOhd5OXlARDQvn0wxowpfTRwz57vsG/fHqhUNkhLS0WtWo6YO3ceGjRohEWL3kV2djaSk2/B3781pk+fiy1bvsBPP/0IQRDg4uKKyZNnoEGDhsjISMfixe8hNTUZbm7u0Ov18PDwLPPY3bhxDe+/vwLZ2Xeh1T5Az54vYtCgV5CcfBvjxo1Ahw4dcenS/0Gj0WD8+NfRsWNIqcdGp9Nh3boPcfjwIdjY2KBRo0aYM2ceAODu3SzMnj0VycnJePBAgxkz5uKZZ9qW2caKwGl6IiKiauTKrRzo/7kqXy8UPrak8PB+2Lv3e8Pj3bt3omfPF7F9exyWLFmOzz/fjI8/Xo8vvliPu3fvFnv9sWPxCArqVKRs797v8csvB7B27ef44ouv0KVLN8yaNQU6nQ6xsevRq1dvfP75Zixbtgpnz56GVqvF//63FU899TQ+/3wzPvroM9y8mYTs7OL1Pe6PP85j4sRJ2LTpGzz3XBe89948w3P37+ciNnYrZs9+C/v27cGFC39g3bqN2LDhS/Tt2x9z584AAMTELEPjxk2weXMc3n57AW7cuFZmvVqtFnPnzsTIkWOxfv0mrFu3EUeOHMTPPx8AAGRkZODpp1thw4YvMXfuu3jvvXnIysoq9djs3Lkdv/12Dhs2bMHmzd+gdu062LHjfwCA27dvYezYifjii68QFtYXn366psw2VhSOjBIREVUjTeo5I/1uPvQCoFQUPrYkf/9nYGtrh3PnzqB+/Qa4cOF3vPfeUnTv3gu//hqPmzeTcO3aVQiCgIKC/CKvvXXrJpycnODs7Iz793MN5b/+ehQvvhgGR0dHAEBYWAQ+/DAGSUk30LlzN6xYEYXTp0+ibdt2mDJlBmxsbBAc3AlvvjkT165dRdu2ARg3biJq165TZvsDAgLRuHFTAEBExEv4+ONVhhDbqlVrw7Ja8fGHcfHinxg9epjhtTk52cjJycaJE8exdu3nAAB3d3d06tS5zHqTkm7g5s0bWLZssaEsPz8Pf/11Cf/5z1NwcKiF0NBwAECLFk/jiSca4LffzpR6bBISjqFHj16oWbMmAGDGjLkACkeA/fyaw9e3MQDAz685du7cVmYbK4pJYfTIkSNYvnw51Go1vL29ERUVBU/PosPOarUay5Ytw8mTJ1FQUICIiAiMHz8eAHDixAlERUVBo9GgVq1amDZtGtq1a2e5vSEiIqJSDenuBwBFzhm1tPDwftiz5zs0aNAQ3br1QE5ONsaNexW9e/fBU0+1QGhoOA4e/AnCYzd3P3ToFzz3XJdi72fs1pt6vQCdTofu3XshICAQJ0+ewJkzJ7F+/Tp8/PGnaNMmAHFxu3D69AmcOXMKY8YMw4IFUWVORatUj0ajwvYplYU3GHj0PFa9XoeXXx6El18eDKDwfvUZGelwcnIu8loAsLEpO27p9XrY29tj48YvDWVZWVmwt7fH3btZxW5yIAgClEpVqcemsN5/1wHNycn+57SFx/cTxfrCmkRP02dmZmL69OmIjo7GDz/8gC5dumDOnDnFtluxYgVSU1Oxbds2w59ff/0Vubm5eO211zB58mR89913WLRoEaZMmYKMjAyL7hARERGVrGYNG4wObYGlYztgdGiLCrl4qVev3khI+BV7936P8PCXcPHi/8HBwQEjRoxGhw4dcfz4MQiCUCxIHTly0Oj5ou3bB2HPnu+Qm1s4Wrpr1w44OTmhUSNfTJ/+Bn799Sh69OiF6dPnwNHREbdv38by5UvwzTdfIiSkKyZPngFf3ya4fv1qmW0/c+YkUlKSAQA7dvwPrVq1hpOTk5E2BWP37l3IySk8zSEu7itMmfIaAKBDh2Ds2rUDAJCdfRdHjx4ps96GDRvByal2kdeNGTMcR48eBgDcu5eDw4cPAig8lSA5+TZat25T6rFp1649DhzYB7W6AACwdu2HiIv7usy2WJvoT2B8fDz8/Pzg51f4P6jIyEhER0cjLS0NHh4ehu2+/fZbbN68GTY2NnB0dMTGjRvh6OiIq1evokaNGujUqfA8kCZNmsDLywuHDx9G3759LbxbREREJBUnJycEBrbHjRvX0aRJU9SvXx97936PgQP7wcHBAb6+TdCgQUMkJd2AnZ0dACA9PR2CIMDd3aPY+/Xu3Qfp6WkYP/5Vw8VCy5evgkqlwujRE7B8+RJs3folVColgoM7ITCwPRo2bITFi+fjlVdeho2NDRo3booXXggts+3u7p6IilqItLQ0eHp6Yt68hUa3Cw0NR3p6GiZMGAWlUgFn59pYvHg5FAoFpk6diaVLF2LQoJfg6uqGJk2allmvjY0Nli5dgdWrV2Dbtq3QaDQICwvH88/3RHLybSiVShw5chAbNnwChUKBRYui4ezsXOqx6dOnL9LS7mDUqFcAAE8+6Yc33piGn3/eX2Z7rEkhiByX/eSTT3DlyhVERUUZyjp16oSPPvoIrVq1AlB4cm1QUBDeffdd7NmzB9nZ2ejTpw9GjRqF3NxcdOvWDdHR0QgJCcGFCxcwaNAgTJgwAWPHFr+aToysrPvQ6YoPT1tSvlqLzT9ewtXkXPh6O2JID3ktgVHdKRSAm5sTMjLuQcIZBioB+0e+2DfyVVrf6PV6pKYmwdPziXLfB5xKVng1/V6sWvVxqdvZ2Cih1VZs/nhUcvJtREb2xaFDCVarUyy9Xo87d5Lg5VX8M6lSKeHiUqvM9xCdqgRBMHov3Ecr1mq1AIArV65g48aNyM7OxrBhw+Dp6Yk+ffrg448/xvvvv48VK1bA398fAQEBsLW1FduEYsTsoLlWfnkax/9ZAiM1Mw81athi6iBplj6gkrm5FZ9CIflg/8gX+0a+jPWNTqdDWpoSNjZKhtFyuH79Gt56a7bR5+zt7REe3g8KRWHYLIuYbR735puzcOPGdaPPvf76FAQGGl/kX6VSlrvOiqbXF2ZBNzfHYue1iiU6jPr4+OD48eOGxxqNBllZWfDx8TGUubi4wNbWFn379oVKpYKrqys6d+6Ms2fPIjQ0FA4ODti0aZNh+7CwMDRq1KhcDQesMzJ64e+MR5bAEHDh7wykp9+r0DpJPI7uyBv7R77YN/JV1sioXq+HVqsHs6jp6tVrgA0bvix1m169Qssc9SzvyOj8+UtKfb6k9/T0rItDhxKsOhor1sPPZEZGbrlHRkV/lIODg/Hnn3/i8uXLAIC4uDj4+/vD1dXVsI2dnR26du2K7du3AwDy8vJw9OhR+Pv7Q6FQYNy4cTh16hQAYP/+/cjOzkZQUJDYJhglCBX7p0k9Zyj/GRB+uARGRdfJP6b9scbngH/YP1XxD/tGvn9K6xsiOTLnsyp6ZNTV1RUxMTGYNWsW1Go13NzcEB0dDQAIDw/HwoUL0bJlSyxYsACLFy/Giy++CK1WixdeeAHh4eFQKBRYsWIFFi9eDLVaDWdnZ3z66aewt7c3eYetaUh3PygAXE3JhW9dRwyugCUwiIiIiKor0RcwyVFW1n2rDFkrFIC7uxPS0zmdJTfsG3lj/8gX+0a+SuubhxeL8AImaVn7AiY5K+0zaWNj4Wl6IiIiIiJLYxglIiIiIskwjBIREZFFTZ36OtLS7pj0mqVLF+DXX+NFbbtkyXs4e/Y0+vcPw2+/nStHC+Vl3749mDhxjNTNMEhOvo2QEOPLTFUEhlEiIiKyqBMnfoWpl6TMnv02OnToWOZ2Op0OFy78jlatWpezdSQ3vJUQERFRNSJo8lFwdBN0qYlQeTWFffBQKOxqWuz9589/C0Dh6Oi9e9nw92+Dv/9OxMCBQ9G6dRusWLEUeXl5SE9Pg49PPbz33lLUqVMHEyeOQVhYBHr2fBEdOwZg9OjxOH78KNLS0hAR8RKGDBkOAPjtt7No0aJlsQXW4+MP4/PPP4FOp4WtrR1GjRqH9u2DkJOTg4UL30FaWioUCgX8/P6DGTPmQqvVIjp6Ef766xJUKhv4+NTD3LnvwMHBocR9S06+jXHjRiAoqBMuXvwTGo0G48e/jo4dQ7Bnz3fYtWuH4QZA69ZtwIkTv2LDhs+g1T6ASqXCq6+ORYcOwdBqtfjwwxgcOxaPOnVc4ONTT9SxvX8/Fx98EIPLly9Bp9PiP/9pgTfemAoHh1ro3z8MHTuG4I8/ziM7+y569+6D4cNHlXpsAOCHH3Zjy5YvoFQqUbOmA2bOnIuaNQuPwfvvL8P58+eQnZ2NgQOHoH//SPEfBBMwjBIREVUjBUc3QZt4HBD00N5LRwGAml0sN0X8zjsLsX//D1i58gNMmDAKTzzRAO+9V7jY+7p1H6FLl+cRFhYBvV6PqVMn/nPP+iHF3sfW1g5r1nyOxMS/MHLkEERE9IejoyMOHz6I557rUmTbGzeuYcmS+fjoo8/QqJEvEhP/whtvjMMnn2zE8eNHYW9vjw0bvoROp8OyZYuRlHQDSUk3cP36NXzxxdcAgI8/Xo2//roEf/9nSt2/jIwMtGrVCrNmvYULF/7AlCmvYevWbwEA1679jW++2Qln59q4eTMJH320Ch98sA4uLq6GILtu3Rc4evQwLl++hE2bvoFSqcTMmZNFHdsPPohBgwaNMHv22xAEAR9+GIM1az7EtGmzABSG1U8+2YicnByMHv0KmjVrjvr165d4bDQaNVatWoHPPotFvXr18cMPu7F27UeYMmUGdDodmjd/CpMnz8DFi/+HceNGICwsAjVqWH5JToZRIiKiakSXmggI/yxLJOihS71SofU9Gu5Gjx6P06dP4MsvN+HWrSRcv36txOn2Tp1CAABNmz4JQRCQm3sPjo6OOHXqBMaPf73ItqdPn0Lr1m3QqJGv4TWtWvnj5MkEtG0biNjYDZg0aQLatg3Af/87CA0bNoKjoyNycrIxduwItGv3LEJCuqJFi6fL3B8Hh1oIC4uAVqtHixZP44knGuC3384AABo1agxn59oAgBMnjiMjIwNTpkw0vFalssGVK3/hxIlf0a1bD9SoUQMAEBoajh07/ldm3fHxh1Gnznn8+ONeAIBW+wB16rgYnu/fPxJKpRJ16tRBSEhXJCQcQ2pq4xKPjVpdgLZtA1CvXn0AQK9evdGrV28kJ9+GQqFAjx4vAAD8/JpDq9UiJycHHh4Mo0RERGQGlVdTaO+lFwZShRIqryYVWt+jI2nz57+F/Px8PP98T7RrF4iCgvwSzy19GNQAQKFQQBAEXLz4J3x9Gxd5Dihc6/Jxer0AnU4LX9/GiIvbiTNnTuHs2dOYMmUCJk6cgu7de2HLlv/h/PlzOHPmFN59dy4iIl7C4MHDSt2fx08PEAQBSqWq2L7q9Tr4+7fG0qUrDWVpaXfg4uKKXbu2A/h3v21sxMUxvV6PefMWoFmz5gCAvLz7ePDggdG2PWxXacemsF6FoVyr1eL69WtwcHCAUqk0rBuqUCgM71kReAETERFRNWIfPBQ2TdtD4ewFm6btYR881OJ1qFQq6HS6YuUJCcfwyiuvokePXnB0dMKpUyeNhqWSHDr0C557rnOx8oCAQJw5cxrXrl0FACQm/oVz584gIOBZbNq0EStXRqNDh46YMGESAgM7IDHxL/z44w+YOXMK/P2fwahR49CrV29cvnyxzDbcu5eDQ4d+AQD88cd5JCffRuvWbYy06VmcPXsaiYl/AQD+/PMPREb2RXp6Ojp06Ih9+/aioKAAWq0WP/ywR9T+t28fhG+++Qo6nQ46nQ4LF76LTz752PD8nj27AABZWVk4ePAnBAd3KvXYtGnTDufOnUFKSgoA4JdfDmDRondFtcWSODJKRERUjSjsalr0HFFjQkK64o03xiMrK7NI+bhxr2P+/Lfg5OQEW1tbPPNMW9y8eUP0+x47Fo8hQ4qPXDZs2Ahz587De++9Ba1WC6VShTfffAeNGvnC1dUNixe/iyFDBsDOrga8vLzw2muT4eDggFOnEjB06H9Rs6YDHB0dMXPmm2W2QalU4tChg/jss3VQKBRYtCgazs7OxbZr1MgXc+e+i8WL34VOpwcgYP78Jahbty769OmL27dv4ZVXXkbt2rXRtGkz3LuXU2bdkydPx+rVKzFs2EDo9Tr85z9P4bXXJhueT09Px6uvDkF+fh4GDRqKgIBAACjx2ADAlCkzMWfOVAgC4OjoiHffXVRmOyyNtwMVgbfNky/2jbyxf+SLfSNfvB2ofCUn30ZkZF8cPXpSdrcD7d8/DG+/vQD+/q2tWq8lbgfKkVEiIiKif0yYMAp5eXlGn3vnnYUVWveXX8bixx9/MPpct249MHTo8AqtXyocGRWBIwjyxb6RN/aPfLFv5Isjo/JnY6OU3cioVCwxMspPMhERERFJhmGUiIio0uFwNsmF+Z9FhlEiIqJKQqlUQqFQQqPRSN0UIgD4ZwkvhWEt0vLgBUxERESViJNTHWRnpwNwh52dHR5dtJysQ683vtB+dSMIAnJyslCzpiPDKBERUXXh4OAEAMjOzoAgFF9YniqeUqlkGP2HjY0dnJzqmPcelmkKERERWYuDgxMcHJwYiCSgUABubo7IyMit9itRKBSAQmH+GZ8Mo0RERJUUl3eyPoWi8HanSqWy2odRS+GnmIiIiIgkwzBKRERERJJhGCUiIiIiyTCMEhEREZFkGEaJiIiISDIMo0REREQkGYZRIiIiIpIMwygRERERSYZhlIiIiIgkwzBKRERERJJhGCUiIiIiyTCMEhEREZFkGEaJiIiISDI2UjdA7gRNPvKPbsKN9L8B98awDx4KhV1NqZtFREREVCUwjJah4OgmaBOPA4IeuHsHBQBqdhkjdbOIiIiIqgRO05dBl5pYGEQBQNBDl3pF2gYRERERVSEMo2VQeTUFFP8cJoUSKq8m0jaIiIiIqAoxaZr+yJEjWL58OdRqNby9vREVFQVPT88i26jVaixbtgwnT55EQUEBIiIiMH78eABAYmIi3n77beTl5UEQBEyaNAndunWz3N5UAPvgoSgAgEfOGSUiIiIiyxAdRjMzMzF9+nTExsbCz88PsbGxmDNnDtavX19kuxUrViA1NRXbtm0zhNHWrVujQ4cOmD9/PkJDQzF48GBcunQJAwYMwIkTJ2Bvb2/xHbMUhV1NOHQdA3d3J6Sn34MgSN0iIiIioqpDdBiNj4+Hn58f/Pz8AACRkZGIjo5GWloaPDw8DNt9++232Lx5M2xsbODo6IiNGzfC0dERAKDT6XDv3j0AQF5enkVCqEJh9luIrsMadZFp2Dfyxv6RL/aNfLFv5I39Y3miw2hKSgq8vb0Nj+3s7ODi4oLk5GRDGM3IyEB2djZOnz6NBQsWIDs7G3369MGoUaMAAPPmzcPw4cOxZcsWZGZmYtGiRWYFUheXWuV+bXm4uTlZtT4Sj30jb+wf+WLfyBf7Rt7YP5YjOowKggCFkf8GKJX/XgOl1WoBAFeuXMHGjRuRnZ2NYcOGwdPTEz179sTkyZMxf/589OzZE5cvX8aIESPQpEkTtGzZslyNz8q6D51OX67XmkKhKPzQZWRwml5u2Dfyxv6RL/aNfLFv5I39I55KpRQ1cCg6jPr4+OD48eOGxxqNBllZWfDx8TGUubi4wNbWFn379oVKpYKrqys6d+6Ms2fPwtfXF9nZ2ejZsycAoFmzZggMDMSJEyfKHUYBWPWDIAjWrY/EY9/IG/tHvtg38sW+kTf2j+WIXtopODgYf/75Jy5fvgwAiIuLg7+/P1xdXQ3b2NnZoWvXrti+fTuAwvNCjx49Cn9/fzRq1AgajQbHjh0DAKSlpeHs2bPw9/e35P4QERERUSWiEATxuf7YsWNYtmwZ1Go13NzcsHTpUtSrVw/h4eFYuHAhWrZsiezsbCxevBi///47tFotXnjhBUyePBkKhQInT55EdHQ08vPzoVAoMGzYMPTv37/cjc/Kug+t1jrT9LyaXp7YN/LG/pEv9o18sW/kjf0jno2NuGl6k8Ko3DCMEvtG3tg/8sW+kS/2jbyxf8QTG0Z5ByYiIiIikgzDKBERERFJhmGUiIiIiCTDMEpEREREkmEYJSIiIiLJMIwSERERkWQYRomIiIhIMgyjRERERCQZhlEiIiIikgzDKBERERFJhmGUiIiIiCTDMEpEREREkmEYJSIiIiLJMIwSERERkWQYRomIiIhIMgyjRERERCQZhlEiIiIikgzDKBERERFJhmGUiIiIiCTDMEpEREREkmEYJSIiIiLJMIwSERERkWQYRomIiIhIMgyjRERERCQZhlEiIiIikgzDKBERERFJhmGUiIiIiCTDMEpEREREkmEYJSIiIiLJMIwSERERkWQYRomIiIhIMgyjRERERCQZhlEiIiIikgzDKBERERFJhmGUiIiIiCTDMEpEREREkrExZeMjR45g+fLlUKvV8Pb2RlRUFDw9PYtso1arsWzZMpw8eRIFBQWIiIjA+PHj8X//93+YPXu2YTtBEHDp0iUsWrQI/fv3t8zeUJUgaPJRcHQTdKmJUHk1hX3wUCjsakrdLCIiIqoAosNoZmYmpk+fjtjYWPj5+SE2NhZz5szB+vXri2y3YsUKpKamYtu2bYYw2rp1a3To0AE7d+40bPf+++/Dx8cH/fr1s9zeUJVQcHQTtInHAUEP7b10FACo2WWM1M0iIiKiCiA6jMbHx8PPzw9+fn4AgMjISERHRyMtLQ0eHh6G7b799lts3rwZNjY2cHR0xMaNG+Ho6Fjkvc6fP4///e9/2LVrF5RKnilARelSEwFBX/hA0EOXesXoaCkA5B/dhBvpfwPujTmCSkREVAmJDqMpKSnw9vY2PLazs4OLiwuSk5MNYTQjIwPZ2dk4ffo0FixYgOzsbPTp0wejRo0q8l5RUVGYOHEiXF1dzd4BhcLstxBdx8O/BU0+8uP/DUY1OzIElZexY6nyagrtvfTCQKpQQuXVxOhoKQBDGe7eKRxB7Ti02PsBYH9J5PHvDskH+0a+2Dfyxv6xPNFhVBAEKIwc+UdHNrVaLQDgypUr2LhxI7KzszFs2DB4enqiT58+AApHRZOSkixynqiLSy2z38MUbm5OAIA7uzYUCUaCvS08+rxh1bZUNnp1HtL3fYaCm5dgX98P7j1HQVnDweixrB8+Hun7bItse3P9jCKjpUj/+99/P1ImnPq62PsBEN1fJbWTzPPwu0Pyw76RL/aNvLF/LEd0GPXx8cHx48cNjzUaDbKysuDj42Moc3Fxga2tLfr27QuVSgVXV1d07twZZ8+eNYTRPXv2IDw8HDY2Jl07ZVRW1n3odHqz36csCkXhhy4j4x4EAbh//f+KhKC86xeRnn6vwttRWRgb7cyP/3dkM/fuHRQUPIBD1zFGj2XmPR2UQSPwMAJm3tMB7o2Bu3cMo6Vwb1z45GNlxt5PgGC0v0xpJ5XP498dkg/2jXyxb+SN/SOeSqUUNXAoOhEGBwdj4cKFuHz5Mpo1a4a4uDj4+/sXmWq3s7ND165dsX37drRo0QJ5eXk4evQoXnnlFcM2CQkJmDFjhom7UzJrfhAEofDP49PISq8m/EA+4tFAp72XjnyUcB6oCcfSPngoCgDoUq9A5dXEcM5oAVA4SvrPOaMFRzcVez8ARusQ2069mlf3m+vhd4fkh30jX+wbeWP/WI7oMOrq6oqYmBjMmjULarUabm5uiI6OBgCEh4dj4cKFaNmyJRYsWIDFixfjxRdfhFarxQsvvIDw8HDD+1y7dg316tWz/J5YUUnBqDoydmGRsUBn7DxQQPyxVNjVNHpFvUPXMXB3dyoc6RRKD62Pl4ltJ6/uJyIiqjgKQai8uT4r6z60WutM0z8aeOhf+b988u9FRAolbJq2B4BiZQ9HLR8NhJYYXTSnb4y13Vg7729/B0LOnX/rdPaCY2SU2W2vDvjdkS/2jXyxb+SN/SOejY2Fp+mpeilpKSUxo6C1+r1bbCSypJFNKRkbRTXWTmOjpVyYn4iIyDIYRsmospZSelhmLKjJMXgaI7adxkIrp+6JiIgsg2GURJ/3iceuSi9pFLSqMRZaTVmY39gIqthtzSkztx6O9BIRkTUwjJLRUb6SLjiqrKOgllaehfkfHUEVu605ZebW8+/5swytRERUcRhGLURu5xCaMkon9rxPwPhV6dWRsan7+9vfETWaDBgfWTW+rTll5tUjNsgaC60PR2Ufv10rwFFZIiIqimHUQsSeQ1hSaDUnzBp7rSmjdKac91kdR0GNEXuhE1B8NNnUbc0pM6cesUG2pM/+o+UPb9cKWHZU1liZtU6DKKluIiIyDcOohRj/xV2cmF/cZY04iXlP8SNiXDfVUkxZ49SUbc0pM6eex28gYFpotc6orLEya50GUVLdUgZhU+ou76i1KXUznBORGAyjFlLSCNTjTPnFLTagmrLIvLGy6nrep6WZMppsyrbmlJlTj9ggW1JotcaorLSnQRivW8ogXJ66TR21NqVuc0a4jZVJPerNCwKJKgbDqIWIHV0s6Re0sXKxAdXYa00ZESMyRmyQLemz9rAcj4++Gdm2vKOyJZVZ6zQIY2VSBmG51W3pYC71qLc1LggEio9aV+YQbko9VH0xjFqIOWtWllRu7BeyuYvMcwSULK2kz5rCrmax27UClh2VLanMWqdBGCuTMgjLrW7Lh2P5BW6xrzdn1Loyh3CxZaVdCCm3EG7JU1xMrbuq/geAYbQClXQOldjpVLEBldPsVNWYexqDtU6DMFYmZRA2te7yjFqbUre5I9yVIXCLfX1lPvXEGnWbcj0FII8QbolTXMpbt6XqkQuG0Qpk7l16xAZUIpIPKYOwKXWXd9TalLorIphXprBfVU49sUbdFXEhZGUI4dLWLR8MoxVI7BX2puAoKBFVFhURzCtL2Dc3mD8+al1ZQ7jYsoq4ENLcsupQt1wwjFYgsVfYExFR1WbuqHVlDeFiy0y5ngKQPoRb8hQXKfdbLhSC8PCjXvlkZd2HVquv8HoUChT7wSDGv+eMFr2wiCynvH1D1sH+kS/2jXyxb+SN/SOejY0SLi61yt7OCm2ptjilTkRERFQ6pdQNICIiIqLqi2GUiIiIiCTDMEpEREREkmEYJSIiIiLJMIwSERERkWQYRomIiIhIMpV6aSeVyrpZ2tr1kXjsG3lj/8gX+0a+2Dfyxv4pm9hjVKkXvSciIiKiyo2xnoiIiIgkwzBKRERERJJhGCUiIiIiyTCMEhEREZFkGEaJiIiISDIMo0REREQkGYZRIiIiIpIMwygRERERSYZhlIiIiIgkwzBKRERERJJhGCUiIiIiyTCMluHIkSMIDw9Hr169MGLECNy5c0fqJlVrX331FcLCwtCnTx+8/PLLOH/+PABg/fr16NWrF7p374758+fjwYMHEre0+vrtt9/w9NNPIyUlBQCwc+dO9O7dGz179sTkyZORm5srcQurp7/++gtDhw5FREQE+vXrh3PnzgFg/8jBgQMHEBYWhvDwcAwePBhXrlwBwJ9rUnv//ffx5ptvGh6X9l1hX5lJoBJlZGQIgYGBwsWLFwVBEIQvvvhCePXVVyVuVfV1+vRpoXPnzkJGRoYgCILw888/C8HBwcLBgweFXr16CTk5OYJWqxXeeOMNYd26dRK3tnpKT08XwsPDhWbNmgnJycnC5cuXhQ4dOggpKSmCIAjCkiVLhLffflviVlY/+fn5QseOHYV9+/YJgiAIv/zyi9C5c2f2jwzk5+cLLVu2FP766y9BEAQhNjZWGDx4MH+uSSgpKUmYMGGC0KpVK2Hu3LmCIAilflfYV+bjyGgp4uPj4efnBz8/PwBAZGQkEhISkJaWJnHLqqfatWtjwYIFcHV1BQC0atUKGRkZ2L9/P3r37g0nJyeoVCoMHDgQO3bskLi11Y9Wq8XUqVMxY8YMQ9mBAwcQEhICLy8vAMDgwYPx3XffQa/XS9XMaik+Ph4eHh7o0aMHACAkJARr1qxh/8iATqeDQqFAdnY2ACAvLw/29vb8uSahrVu3IigoCCNGjDCUlfZdYV+Zj2G0FCkpKfD29jY8trOzg4uLC5KTkyVsVfXVpEkTdOzYEQCg1+uxePFidO7cGcnJyUX6qW7duuwjCURHR+PZZ59FcHCwocxY3+Tl5eHu3bsStLD6unr1Kjw9PfHWW2+hX79+GDZsGDQaDftHBmrVqoX58+dj2LBheO655/D5559jxowZ/LkmoWnTpmHw4MFQqVSGstK+K+wr8zGMlkIQBCgUimLlSiUPm5Ryc3MxceJE3Lp1C1FRUQBQrJ+M9RtVnO+//x43btzA+PHjiz1nrC/YP9al1Wpx9OhRREREYPv27Rg5ciTGjBkDrVbL/pHYpUuXsHr1auzatQuHDx/GW2+9hdGjR0Ov1/PnmsyU9l1hX5mHqaoUPj4+SE1NNTzWaDTIysqCj4+PhK2q3q5evYr+/fvD0dERX3zxBZydnYv1U2pqKvvIyrZt24YbN24gIiIC4eHhAICRI0fC09OzWN/UqlULtWvXlqqp1ZKXlxcaNWqEgIAAAIXT9DY2Nka/O+wf64qPj0fLli3RuHFjAEBYWBh0Oh10Oh1/rslIad8V/g4yH8NoKYKDg/Hnn3/i8uXLAIC4uDj4+/sbzlkk67p9+zYGDx6MAQMGIDo6GjVq1AAAdO/eHbt370ZOTg70ej2+/vprw7lxZB0bNmzAnj17sHPnTuzcuRNA4dWlPXv2xKFDhww/qLds2YLnn3+eswtW9txzzyE5OdlwBf3p06eh0Wjw/PPPs38k1qJFC5w+fdqw+sTJkyeh1WoxfPhw/lyTkW7dupX4XeHvIPPZSN0AOXN1dUVMTAxmzZoFtVoNNzc3REdHS92samv9+vXIycnBrl27sGvXLkP5J598gpdeegkDBw6EVqtFmzZtjE4Xk/U9+eSTmDlzJkaNGoUHDx7A19cXS5culbpZ1Y67uzvWrVuHxYsXIy8vDyqVCh988AGaN2/O/pFY+/bt8dprr2HEiBGwtbWFg4MD1qxZgzZt2uD69ev8uSYTpf0se+6553DlyhX2lRkUgiAIUjeCiIiIiKonzsUQERERkWQYRomIiIhIMgyjRERERCQZhlEiIiIikgzDKBERERFJhmGUiIiIiCTDMEpEVMncvHkTfn5+yMzMlLopRERmYxglIiIiIskwjBIRWUBiYiJGjBiBwMBA9OzZE19//TUAYPbs2Xj77bcRGRmJ1q1bIzIy0nCLYQBISEjAyy+/jLZt26JXr17YunWr4bnc3FzMnTsXgYGBePbZZzFr1izk5eUZnt+6dSt69OiB1q1bY9KkSUWeIyKqLBhGiYjMdP/+fYwYMQJBQUE4evQoVq1ahTVr1uDAgQMAgG+//RavvfYaTpw4gYCAAIwbNw4ajQZXrlzBqFGjMHDgQCQkJCAqKgoxMTHYvXs3AGD+/Pm4efMm9u7diwMHDuD27dtYuXKlod6///4b3377Lfbt24czZ85g27Ztkuw/EZE5eG96IiIzHTp0CPb29hg9ejQAoHnz5hg8eDC++eYbuLq6olevXujUqRMAYNKkSdiyZQvOnDmDhIQEtG3bFhEREQAAf39/DB06FNu2bUP37t3xww8/IDY2Fm5ubgCAZcuWoaCgwFDv+PHj4eDgAAcHBwQGBuLGjRvW3XEiIgtgGCUiMtOtW7dw+/ZtBAQEGMr0ej3q168PV1dXNGzY0FBua2sLd3d3pKenIyMjA/Xq1SvyXvXr18d3332H7OxsaDQa+Pj4GJ6rW7cugMILmACgTp06Rd5Xp9NVxO4REVUohlEiIjN5eXmhefPmRabJMzIyoNVqERMTg9TUVEO5RqNBWloa6tatC29vbxw/frzIeyUlJcHDwwOurq6wtbVFSkoKvLy8AAAXLlxAQkICevToYZ0dIyKyAp4zSkRkps6dOyMlJQVbt26FVqtFSkoKRowYgU8//RQA8P333+Ps2bPQaDRYuXIlvLy88MwzzyA0NBTnzp3Dt99+C61Wi99++w2bN29GREQEVCoVwsLCsHr1aty9exc5OTlYvnw5UlJSJN5bIiLLYhglIjKTs7Mz1q9fjz179iAoKAj9+vVD27ZtMXPmTABAu3btEB0djfbt2+PixYv49NNPoVKp8MQTT2DdunXYsmULAgMDMW3aNLz22mt46aWXAABvvvkm6tWrh9DQUPTo0QNPPPEEpk2bJuWuEhFZnEIQBEHqRhARVVWzZ8+Gg4MD5s2bJ3VTiIhkiSOjRERERCQZhlEiIiIikgyn6YmIiIhIMhwZJSIiIiLJMIwSERERkWQYRomIiIhIMgyjRERERCQZhlEiIiIikgzDKBERERFJhmGUiIiIiCTDMEpEREREkmEYJSIiIiLJ/D/TsddN2fDQxgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + "
train/loss_pred_steptrain/loss_rec_stepstepval/loss_rec_stepval/loss_pred_stepval/l2_lossval/accval/l1_lossval/aurocval/nval/loss_pred_epochval/loss_rec_epochtrain/acctrain/loss_rec_epochtrain/ntrain/loss_pred_epochtrain/auroctrain/l1_losstrain/l2_loss
epoch
0.00.708293204.4393469196.9480290.659755192.3655850.5129870.158780.513825154.00.689889192.4449770.615635194.700027307.00.6811930.50.0194.700027
1.00.741724204.43934619196.9480290.646291192.3655850.5129870.158780.514907154.00.712395192.4449770.615635194.700027307.00.6697180.50.0194.700027
2.00.738455204.43934629196.9480290.647512192.3655850.5129870.158780.504380154.00.707463192.4449770.615635194.700027307.00.6676050.50.0194.700027
3.00.723859204.43934639196.9480290.651963192.3655850.5129870.158780.497591154.00.697718192.4449770.615635194.700027307.00.6661060.50.0194.700027
4.00.721844204.43934649196.9480290.652370192.3655850.5129870.158780.497591154.00.697114192.4449770.615635194.700027307.00.6672180.50.0194.700027
............................................................
105.00.729453204.4393461059196.9480290.649301192.3655850.5129870.158780.488909154.00.711961192.4449770.615635194.700027307.00.6663740.50.0194.700027
106.00.729465204.4393461069196.9480290.649292192.3655850.5129870.158780.483943154.00.711981192.4449770.615635194.700027307.00.6663650.50.0194.700027
107.00.729477204.4393461079196.9480290.649284192.3655850.5129870.158780.483943154.00.712000192.4449770.615635194.700027307.00.6663570.50.0194.700027
108.00.729488204.4393461089196.9480290.649276192.3655850.5129870.158780.488909154.00.712017192.4449770.615635194.700027307.00.6663480.50.0194.700027
109.00.729498204.4393461099196.9480290.649268192.3655850.5129870.158780.484580154.00.712035192.4449770.615635194.700027307.00.6663480.50.0194.700027
\n", + "

110 rows × 19 columns

\n", + "
" + ], + "text/plain": [ + " train/loss_pred_step train/loss_rec_step step val/loss_rec_step \\\n", + "epoch \n", + "0.0 0.708293 204.439346 9 196.948029 \n", + "1.0 0.741724 204.439346 19 196.948029 \n", + "2.0 0.738455 204.439346 29 196.948029 \n", + "3.0 0.723859 204.439346 39 196.948029 \n", + "4.0 0.721844 204.439346 49 196.948029 \n", + "... ... ... ... ... \n", + "105.0 0.729453 204.439346 1059 196.948029 \n", + "106.0 0.729465 204.439346 1069 196.948029 \n", + "107.0 0.729477 204.439346 1079 196.948029 \n", + "108.0 0.729488 204.439346 1089 196.948029 \n", + "109.0 0.729498 204.439346 1099 196.948029 \n", + "\n", + " val/loss_pred_step val/l2_loss val/acc val/l1_loss val/auroc \\\n", + "epoch \n", + "0.0 0.659755 192.365585 0.512987 0.15878 0.513825 \n", + "1.0 0.646291 192.365585 0.512987 0.15878 0.514907 \n", + "2.0 0.647512 192.365585 0.512987 0.15878 0.504380 \n", + "3.0 0.651963 192.365585 0.512987 0.15878 0.497591 \n", + "4.0 0.652370 192.365585 0.512987 0.15878 0.497591 \n", + "... ... ... ... ... ... \n", + "105.0 0.649301 192.365585 0.512987 0.15878 0.488909 \n", + "106.0 0.649292 192.365585 0.512987 0.15878 0.483943 \n", + "107.0 0.649284 192.365585 0.512987 0.15878 0.483943 \n", + "108.0 0.649276 192.365585 0.512987 0.15878 0.488909 \n", + "109.0 0.649268 192.365585 0.512987 0.15878 0.484580 \n", + "\n", + " val/n val/loss_pred_epoch val/loss_rec_epoch train/acc \\\n", + "epoch \n", + "0.0 154.0 0.689889 192.444977 0.615635 \n", + "1.0 154.0 0.712395 192.444977 0.615635 \n", + "2.0 154.0 0.707463 192.444977 0.615635 \n", + "3.0 154.0 0.697718 192.444977 0.615635 \n", + "4.0 154.0 0.697114 192.444977 0.615635 \n", + "... ... ... ... ... \n", + "105.0 154.0 0.711961 192.444977 0.615635 \n", + "106.0 154.0 0.711981 192.444977 0.615635 \n", + "107.0 154.0 0.712000 192.444977 0.615635 \n", + "108.0 154.0 0.712017 192.444977 0.615635 \n", + "109.0 154.0 0.712035 192.444977 0.615635 \n", + "\n", + " train/loss_rec_epoch train/n train/loss_pred_epoch train/auroc \\\n", + "epoch \n", + "0.0 194.700027 307.0 0.681193 0.5 \n", + "1.0 194.700027 307.0 0.669718 0.5 \n", + "2.0 194.700027 307.0 0.667605 0.5 \n", + "3.0 194.700027 307.0 0.666106 0.5 \n", + "4.0 194.700027 307.0 0.667218 0.5 \n", + "... ... ... ... ... \n", + "105.0 194.700027 307.0 0.666374 0.5 \n", + "106.0 194.700027 307.0 0.666365 0.5 \n", + "107.0 194.700027 307.0 0.666357 0.5 \n", + "108.0 194.700027 307.0 0.666348 0.5 \n", + "109.0 194.700027 307.0 0.666348 0.5 \n", + "\n", + " train/l1_loss train/l2_loss \n", + "epoch \n", + "0.0 0.0 194.700027 \n", + "1.0 0.0 194.700027 \n", + "2.0 0.0 194.700027 \n", + "3.0 0.0 194.700027 \n", + "4.0 0.0 194.700027 \n", + "... ... ... \n", + "105.0 0.0 194.700027 \n", + "106.0 0.0 194.700027 \n", + "107.0 0.0 194.700027 \n", + "108.0 0.0 194.700027 \n", + "109.0 0.0 194.700027 \n", + "\n", + "[110 rows x 19 columns]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "df_hist, _ = read_metrics_csv(trainer2.logger.experiment.metrics_file_path)\n", "plot_hist(df_hist, ['loss_pred_epoch', 'auroc'])\n", @@ -4638,19 +6176,364 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:441: The 'test_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "212025e129d04b33991445197eaefc9c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Testing: | | 0/? [00:00┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", + "┃ Test metric DataLoader 0 DataLoader 1 DataLoader 2 ┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", + "│ test/acc 0.6156351566314697 0.5129870176315308 0.5064935088157654 │\n", + "│ test/auroc 0.5 0.4845799505710602 0.5090078115463257 │\n", + "│ test/l1_loss 0.0 0.15877953171730042 0.1496708244085312 │\n", + "│ test/l2_loss 194.7000274658203 192.36558532714844 195.24403381347656 │\n", + "│ test/loss_pred_epoch 0.6662455201148987 0.7120347023010254 0.7154642343521118 │\n", + "│ test/loss_rec_epoch 194.7000274658203 192.44497680664062 195.31884765625 │\n", + "│ test/n 307.0 154.0 154.0 │\n", + "└───────────────────────────┴───────────────────────────┴───────────────────────────┴───────────────────────────┘\n", + "\n" + ], + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1m Test metric \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 0 \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 1 \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 2 \u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", + "│\u001b[36m \u001b[0m\u001b[36m test/acc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.6156351566314697 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.5129870176315308 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.5064935088157654 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/auroc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.5 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.4845799505710602 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.5090078115463257 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l1_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.0 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.15877953171730042 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.1496708244085312 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l2_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 194.7000274658203 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 192.36558532714844 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 195.24403381347656 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_pred_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.6662455201148987 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.7120347023010254 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.7154642343521118 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_rec_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 194.7000274658203 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 192.44497680664062 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 195.31884765625 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/n \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 307.0 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 154.0 \u001b[0m\u001b[35m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 154.0 \u001b[0m\u001b[35m \u001b[0m│\n", + "└───────────────────────────┴───────────────────────────┴───────────────────────────┴───────────────────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n",
+       "┃        Test metric               DataLoader 3        ┃\n",
+       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
+       "│         test/acc               0.562601625919342     │\n",
+       "│        test/auroc             0.5010772943496704     │\n",
+       "│       test/l1_loss            0.07723796367645264    │\n",
+       "│       test/l2_loss            194.25169372558594     │\n",
+       "│   test/loss_pred_epoch        0.6900360584259033     │\n",
+       "│    test/loss_rec_epoch        194.29031372070312     │\n",
+       "│          test/n                      615.0           │\n",
+       "└───────────────────────────┴───────────────────────────┘\n",
+       "
\n" + ], + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1m Test metric \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 3 \u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n", + "│\u001b[36m \u001b[0m\u001b[36m test/acc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.562601625919342 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/auroc \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.5010772943496704 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l1_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.07723796367645264 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/l2_loss \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 194.25169372558594 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_pred_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 0.6900360584259033 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/loss_rec_epoch \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 194.29031372070312 \u001b[0m\u001b[35m \u001b[0m│\n", + "│\u001b[36m \u001b[0m\u001b[36m test/n \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 615.0 \u001b[0m\u001b[35m \u001b[0m│\n", + "└───────────────────────────┴───────────────────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "| | train | val | test | ood |\n", + "|:----------------|--------:|--------:|--------:|--------:|\n", + "| auroc | 0.5 | 0.485 | 0.509 | 0.501 |\n", + "| acc | 0.616 | 0.513 | 0.506 | 0.563 |\n", + "| loss_pred_epoch | 0.666 | 0.712 | 0.715 | 0.69 |\n", + "| loss_rec_epoch | 194.7 | 192.445 | 195.319 | 194.29 |\n", + "| l1_loss | 0 | 0.159 | 0.15 | 0.077 |\n", + "| l2_loss | 194.7 | 192.366 | 195.244 | 194.252 |\n", + "| n | 307 | 154 | 154 | 615 |\n" + ] + } + ], "source": [ - "rs3r = trainer2.test(net, dataloaders=[dl_train, dl_val, dl_test, dl_ood])\n", + "rs3r = trainer2.test(net, dataloaders=[dl_train, dl_val, dl_test, dl_ood], verbose=False)\n", "rs3 = rename_pl_test_results(rs3r, [\"train\", \"val\", \"test\", \"ood\"])" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 43, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:441: The 'predict_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "197af593b664436dafb9c4603db645df", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Predicting: | | 0/? [00:00\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", + "
accacc_lie_lieacc_lie_truthdf_testdf_confusion
test0.5064940.6250000.384615binary_ans label_true label_instructed ...llm gave did didn't\n", + "instructed t...
val0.5129870.6666670.750000binary_ans label_true label_instructed ...llm gave did didn't\n", + "instructed t...
ood0.5626020.7000000.566667binary_ans label_true label_instructed ...llm gave did didn't\n", + "instructed t...
\n", + "" + ], + "text/plain": [ + " acc acc_lie_lie acc_lie_truth \\\n", + "test 0.506494 0.625000 0.384615 \n", + "val 0.512987 0.666667 0.750000 \n", + "ood 0.562602 0.700000 0.566667 \n", + "\n", + " df_test \\\n", + "test binary_ans label_true label_instructed ... \n", + "val binary_ans label_true label_instructed ... \n", + "ood binary_ans label_true label_instructed ... \n", + "\n", + " df_confusion \n", + "test llm gave did didn't\n", + "instructed t... \n", + "val llm gave did didn't\n", + "instructed t... \n", + "ood llm gave did didn't\n", + "instructed t... " + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "a = calc_metrics(dm, net, trainer2, 'test')\n", "b = calc_metrics(dm, net,trainer2, 'val')\n", @@ -4670,9 +6553,226 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 44, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Trainer will use only 1 of 2 GPUs because it is running inside an interactive / notebook environment. You may try to set `Trainer(devices=2)` but please note that multi-GPU inside interactive / notebook environments is considered experimental and unstable. Your mileage may vary.\n", + "Using 16bit Automatic Mixed Precision (AMP)\n", + "GPU available: True (cuda), used: True\n", + "TPU available: False, using: 0 TPU cores\n", + "IPU available: False, using: 0 IPUs\n", + "HPU available: False, using: 0 HPUs\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "training both ae and probe\n", + "requires_grad: True\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "\n", + " | Name | Type | Params\n", + "-------------------------------------------\n", + "0 | ae | SparseAutoencoder | 165 M \n", + "1 | head | Sequential | 16.3 M\n", + "-------------------------------------------\n", + "181 M Trainable params\n", + "0 Non-trainable params\n", + "181 M Total params\n", + "726.576 Total estimated model params size (MB)\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "197b6c979d6943ac946c625e625b60fe", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Sanity Checking: | | 0/? [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:441: The 'test_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "00ae4dd5fbda4d54b33b8af9159746b6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Testing: | | 0/? [00:00 13\u001b[0m c \u001b[38;5;241m=\u001b[39m \u001b[43mcalc_metrics\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdm_ood\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnet\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtrainer1\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mall\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 14\u001b[0m pd\u001b[38;5;241m.\u001b[39mDataFrame([a, b, c], index\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtest\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mval\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mood\u001b[39m\u001b[38;5;124m'\u001b[39m])\n", + "Cell \u001b[0;32mIn[35], line 26\u001b[0m, in \u001b[0;36mcalc_metrics\u001b[0;34m(dm, net, trainer, split, verbose)\u001b[0m\n\u001b[1;32m 24\u001b[0m trainer \u001b[38;5;241m=\u001b[39m pl\u001b[38;5;241m.\u001b[39mTrainer(logger\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m, enable_progress_bar\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m, enable_model_summary\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[1;32m 25\u001b[0m rt \u001b[38;5;241m=\u001b[39m trainer\u001b[38;5;241m.\u001b[39mpredict(net, dataloaders\u001b[38;5;241m=\u001b[39mdl_test)\n\u001b[0;32m---> 26\u001b[0m y_test_pred \u001b[38;5;241m=\u001b[39m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconcatenate\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrt\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 28\u001b[0m \u001b[38;5;66;03m# get original df\u001b[39;00m\n\u001b[1;32m 29\u001b[0m splits \u001b[38;5;241m=\u001b[39m dm\u001b[38;5;241m.\u001b[39msplits[split]\n", + "\u001b[0;31mTypeError\u001b[0m: dispatcher for __array_function__ did not return an iterable" + ] + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click here for more info. View Jupyter log for further details." + ] + } + ], "source": [ "# look at hist\n", "df_hist, _ = read_metrics_csv(trainer3.logger.experiment.metrics_file_path)\n", diff --git a/notebooks/11f_sae2 deep.ipynb b/notebooks/11f_sae2 deep.ipynb new file mode 100644 index 0000000..caed192 --- /dev/null +++ b/notebooks/11f_sae2 deep.ipynb @@ -0,0 +1,6621 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Trying a sparse 1 layer autoencoder, then a probe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import numpy as np\n", + "import pandas as pd\n", + "from matplotlib import pyplot as plt\n", + "from tqdm.auto import tqdm\n", + "\n", + "\n", + "\n", + "from typing import Optional, List, Dict, Union\n", + "from jaxtyping import Float\n", + "from torch import Tensor\n", + "\n", + "import torch\n", + "import torch.nn as nn\n", + "import torch.nn.functional as F\n", + "\n", + "from torch import Tensor\n", + "from torch import optim\n", + "from torch.utils.data import random_split, DataLoader, TensorDataset\n", + "\n", + "from pathlib import Path\n", + "from einops import rearrange\n", + "\n", + "import transformers\n", + "from transformers import (\n", + " AutoTokenizer,\n", + " AutoModelForCausalLM,\n", + " BitsAndBytesConfig,\n", + " AutoConfig,\n", + ")\n", + "from peft import (\n", + " get_peft_config,\n", + " get_peft_model,\n", + " LoraConfig,\n", + " TaskType,\n", + " LoftQConfig,\n", + " IA3Config,\n", + ")\n", + "from pathlib import Path\n", + "import datasets\n", + "from datasets import Dataset\n", + "\n", + "from loguru import logger\n", + "\n", + "logger.add(os.sys.stderr, format=\"{time} {level} {message}\", level=\"INFO\")\n", + "\n", + "# load my code\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "\n", + "import lightning.pytorch as pl\n", + "\n", + "from src.config import ExtractConfig\n", + "from src.llms.load import load_model\n", + "from src.helpers.torch_helpers import clear_mem\n", + "from src.llms.phi.model_phi import PhiForCausalLMWHS\n", + "from src.eval.ds import filter_ds_to_known\n", + "from src.datasets.act_dm import ActivationDataModule\n", + "\n", + "# plt.style.use(\"ggplot\")\n", + "# plt.style.use(\"seaborn-v0_8\")\n", + "import seaborn as sns\n", + "sns.set_theme('paper')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 365, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import warnings\n", + "logging.getLogger(\"pytorch_lightning\").setLevel(logging.WARNING)\n", + "\n", + "\n", + "warnings.filterwarnings(\"ignore\", \".*does not have many workers.*\")\n", + "warnings.filterwarnings(\n", + " \"ignore\", \".*sampler has shuffling enabled, it is strongly recommended that.*\"\n", + ")\n", + "# warnings.filterwarnings(\"ignore\", \".*has been removed as a dependency of.*\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "os.environ['TQDM_MININTERVAL'] = '5'\n", + "os.environ['TQDM_DISABLE'] = '1'\n", + "\n", + "verbose=False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Paramsnet\n" + ] + }, + { + "cell_type": "code", + "execution_count": 333, + "metadata": {}, + "outputs": [], + "source": [ + "# params\n", + "# params\n", + "batch_size = 32\n", + "lr = 2e-3\n", + "wd = 0 # 1e-5\n", + "\n", + "MAX_ROWS = 2000\n", + "\n", + "SKIP=5 # skip initial N layers\n", + "STRIDE=4 # skip every N layers\n", + "DECIMATE=1 # discard N features for speed\n", + "\n", + "device = \"cuda:0\"\n", + "max_epochs = 144\n", + "\n", + "l1_coeff = 150 # 0.5 # neel uses 3e-4 ! https://github.dev/neelnanda-io/1L-Sparse-Autoencoder/blob/bcae01328a2f41d24bd4a9160828f2fc22737f75/utils.py#L106, but them they sum l1 where mean l2\n", + " # x_feats=x_feats. other use 1e-1\n", + "# in ai saftey foundation. They use l1_coefficient=Parameter(max=0.03, min=0.008),\n", + "\n", + "\n", + "BASE_FOLDER = Path(\"/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/notebooks/lightning_logs/version_24/\")\n", + "layers_names = (\n", + " 'fc1', 'Wqkv',\n", + " 'fc2', 'out_proj')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load hidden state from a previously loaded adapter\n", + "# the columns with _base are from the base model, and adapt from adapter\n", + "# FROM TRAINING TRUTH\n", + "f1_val = next(iter(BASE_FOLDER.glob('hidden_states/.ds/ds_valtest_*')))\n", + "f1_ood = next(iter(BASE_FOLDER.glob('hidden_states/.ds/ds_OOD_*')))\n", + "f1_val, f1_ood" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "input_columns = ['binary_ans_base', 'binary_ans_adapt' ] + [f'end_residual_{layer}_base' for layer in layers_names] + [f'end_residual_{layer}_adapt' for layer in layers_names]\n", + "\n", + "def ds2xy_batched(ds):\n", + " data = []\n", + " for layer in layers_names:\n", + " # Stack the base and adapter representations as a 4th dim\n", + " X1 = [ds[f'end_residual_{layer}_base'], ds[f'end_residual_{layer}_adapt']]\n", + " X1 = rearrange(X1, 'versions b l f -> b l f versions')[..., 0]\n", + " data.append(X1)\n", + " \n", + " # concat layers\n", + " # x = rearrange(data, 'b parts l f v -> b l (parts f) v')\n", + " X = torch.concat(data, dim=2)[:, SKIP::STRIDE, ::DECIMATE]\n", + "\n", + " y = ds['binary_ans_base']-ds['binary_ans_adapt']\n", + " return dict(X=X, y=y)\n", + "\n", + "\n", + "\n", + "def prepare_ds(ds):\n", + " \"\"\"\n", + " prepare a dataset for training\n", + "\n", + " this should front load much of the computation\n", + " it should restrict it to the needed rows X and y\n", + " \n", + " \"\"\"\n", + " ds = (ds\n", + " .with_format(\"torch\")\n", + " .select_columns(input_columns)\n", + " .map(ds2xy_batched, batched=True, batch_size=128,\n", + " remove_columns=input_columns)\n", + " )\n", + " return ds\n", + "\n", + "def load_file_to_dm(f, stage):\n", + " ds1 = Dataset.from_file(str(f1_val), in_memory=True).with_format(\"torch\")\n", + " ds1 = filter_ds_to_known(ds1, verbose=True, true_col='truth')\n", + " ds = prepare_ds(ds1)\n", + "\n", + " # limit size\n", + " MAX_SAMPLES = min(len(ds), MAX_ROWS*2)\n", + " ds = ds.select(range(0, MAX_SAMPLES))\n", + "\n", + " dm = ActivationDataModule(ds, f.stem, batch_size=batch_size, num_workers=0)\n", + " dm.setup(stage)\n", + " dm.dm_orig = ds1\n", + " return dm\n", + "\n", + "\n", + "dm = load_file_to_dm(f1_val, 'train')\n", + "dm_ood = load_file_to_dm(f1_ood, 'all')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dm_ood.datasets" + ] + }, + { + "cell_type": "code", + "execution_count": 260, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "dl_train = dm.train_dataloader()\n", + "dl_val = dm.val_dataloader()\n", + "dl_test = dm.test_dataloader()\n", + "dl_ood = dm_ood.all_dataloader()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Experiment with dataloading speeds:\n", + "- does it help to save the Xy dataset to disc, then load, while keeping in mem?. no not faster at all\n", + "- does it help to use num_workers > 0? yes 3x faster\n", + "- the shared dataset wrapper is 10x faster, and less mem" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Get importance matrix from adapter" + ] + }, + { + "cell_type": "code", + "execution_count": 261, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wqkv torch.Size([32, 7680])\n", + "out_proj torch.Size([32, 2560])\n", + "fc1 torch.Size([32, 10240])\n", + "fc2 torch.Size([32, 2560])\n", + "keeping top 3.87% of features\n" + ] + }, + { + "data": { + "image/png": "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2r9/v2bPnq01a9aov79/tJeWkp588kmtWrUqcclZkkKh0KD3cG5uri5cuKCzZ8+OwgpT15Wy/eSTT3THHXeoqqpKTU1NuvHGG/X000+P4ipT0/Tp07VgwQJJUjwe19atW3X33Xdf8b3Lv73X5mrZStL8+fP1yiuvqLGxUaFQSNu2bRvFlQ4dBSdJbNuWy+W6bL/bTcTJ8Cd/8if6t3/7N02dOlUul0sPPfSQTp48qQ8++GC0l2aUK72Hr7QP12bhwoXavn27srKylJaWpkceeURvvfWWLly4MNpLS0nnzp3TI488opMnT6qqqkrS5e9T3rfDc2m2paWlev7553XDDTcoIyNDa9asUXt7+2gvc0j47pskXq9X4XA48bivr0+RSERer3cUV2WOd955R21tbYP22battDQ+J58sl76Hw+GwJkyYoEmTJo3iqszQ0dGho0ePJh7bti232837dxhOnDihZcuWaeLEiXr99df1la985YrvXf7tvXZXyralpUW/+tWvEs9JpX93KThJcuedd+rdd9/Ve++9J0lqbGzU7bffnrifiZHp6+vT888/r+7ubknSv//7v2v69On6+te/PsorM8eiRYvU0dGR+EbxxhtvyOfzcRUyCXp6erR161adO3dOkrRz5075fD6lp6eP8spSy0cffaRVq1bpvvvuU3V1tcaPHy9JKigo0IEDB9Tb26t4PK5gMKjCwsJRXm1quVq2H3zwgX70ox+pr69PlmWptrZWfr9/lFc7NKlRw1LA5MmT9dJLL+mf/umf9Nlnnyk7O1vV1dWjvSxjfPvb39bDDz+s1atXq7+/X16vV//6r//KZegkuuWWW7Ru3To99NBDisViuvnmm1PmXvtYV1paqg8//FD33Xef4vG4Zs2apR/84AejvayUU1tbq97eXu3fv1/79+9P7N+5c6fKysoUCARkWZbmzp2rtWvXjuJKU8/Vsn3llVd0+vRpLV26VJZlad68eXrsscdGb6HXwGXbtj3aiwAAAEgmrj0DAADjUHAAAIBxKDgAAMA4FBwAAGAcCg4AADAOBQcAABiHggMAAIxDwQEAAMah4AAAAONQcAAAgHEoOAAAwDj/H8Z16HfBwA6pAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from src.probes.importance_matrix import get_importance_matrix\n", + "\n", + "\n", + "f = f\"{BASE_FOLDER}/checkpoint_last/adapter_model.safetensors\"\n", + "importance_matrix = get_importance_matrix(f, layers=layers_names)[SKIP::STRIDE, ::DECIMATE]\n", + "\n", + "\n", + "# importance_matrix = importance_matrix ** 3 # square to make it positive\n", + "importance_matrix = (importance_matrix-1).abs()**2\n", + "\n", + "\n", + "# importance_matrix = importance_matrix / (0.1*importance_matrix.std())\n", + "# importance_matrix = importance_matrix + 1\n", + "\n", + "# square to make it positive\n", + "# importance_matrix = importance_matrix.clamp(0, None) \n", + "# importance_matrix -= importance_matrix.mean() - 1\n", + "\n", + "s = importance_matrix.std()\n", + "importance_matrix = (importance_matrix>s*3)*1.0\n", + "print(f\"keeping top {importance_matrix.mean():2.2%} of features\")\n", + "importance_matrix = importance_matrix / importance_matrix.mean()\n", + "\n", + "plt.hist(importance_matrix.flatten(), bins=155)\n", + "\n", + "importance_matrix.mean()\n", + "\n", + "importance_matrix= None\n" + ] + }, + { + "cell_type": "code", + "execution_count": 262, + "metadata": {}, + "outputs": [], + "source": [ + "# ((importance_matrix>0)*1.0).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 263, + "metadata": {}, + "outputs": [], + "source": [ + "# ds_test2 = dm.datasets['test']\n", + "# shape1 = ds_test2[0][0].shape\n", + "# shape2= importance_matrix.shape\n", + "# np.testing.assert_equal(shape1, shape2, err_msg=\"shape mismatch between ds and importance matrix\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Model" + ] + }, + { + "cell_type": "code", + "execution_count": 299, + "metadata": {}, + "outputs": [], + "source": [ + "# from sparse_autoencoder.autoencoder.model import SparseAutoencoderConfig, SparseAutoencoder\n", + "from src.vae.sae2 import AutoEncoder, AutoEncoderConfig\n", + "from src.vae.conv_inception import LinBnDrop, PLBase, recursive_requires_grad, accuracy, auroc" + ] + }, + { + "cell_type": "code", + "execution_count": 300, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "class PLAE(PLBase):\n", + " def __init__(\n", + " self,\n", + " c_in,\n", + " steps_per_epoch,\n", + " max_epochs,\n", + " # depth=0,\n", + " lr=4e-3,\n", + " weight_decay=1e-9,\n", + " # hs=64,\n", + " n_latent=32,\n", + " l1_coeff=1,\n", + " dropout=0,\n", + " depth=1,\n", + " importance_matrix=None,\n", + " **kwargs,\n", + " ):\n", + " super().__init__(steps_per_epoch=steps_per_epoch, max_epochs=max_epochs, lr=lr, weight_decay=weight_decay)\n", + " self.save_hyperparameters()\n", + " self.importance_matrix = importance_matrix\n", + " expansion_factor = 2\n", + "\n", + " n_layers, n_channels = c_in\n", + " self.ae_cfg = AutoEncoderConfig(\n", + " n_instances=n_layers,\n", + " n_input_ae=n_channels,\n", + " n_hidden_ae=n_latent,\n", + " tied_weights=False,\n", + " l1_coeff=l1_coeff,\n", + " depth=depth,\n", + " )\n", + "\n", + " self.ae = AutoEncoder(\n", + " self.ae_cfg,\n", + " importance_matrix=importance_matrix,\n", + " )\n", + " \n", + " n = n_latent * n_layers\n", + " self.head = nn.Sequential(\n", + " LinBnDrop(n, n, bn=False),\n", + " LinBnDrop(n, n // 4, dropout=dropout, bn=False),\n", + " LinBnDrop(n // 4, n // 12, bn=False),\n", + " nn.Linear(n // 12, 1),\n", + " # nn.Tanh(),\n", + " )\n", + " self._ae_mode = True\n", + "\n", + " def ae_mode(self, mode=0):\n", + " \"\"\"\n", + " mode 0, train the ae\n", + " mode 1, train only the prob\n", + " mode 2, train both\n", + " \"\"\"\n", + " if mode==0:\n", + " print('training ae')\n", + " elif mode==1:\n", + " print('training probe')\n", + " elif mode==2:\n", + " print('training both ae and probe')\n", + " self._ae_mode = mode\n", + " recursive_requires_grad(self.ae, mode in [0, 2])\n", + "\n", + " def forward(self, x):\n", + " if x.ndim == 4:\n", + " x = x.squeeze(3)\n", + " \n", + " # x = rearrange(x, \"b l h -> b h l\")\n", + " # if not self._ae_mode:\n", + " # with torch.no_grad():\n", + " # l1_loss, l2_loss, loss, latent, h_rec = self.ae(x)\n", + " # else:\n", + " # l1_loss, l2_loss, loss, latent, h_rec = self.ae(x)\n", + "\n", + " # latent, h_rec = self.ae(x)\n", + " l1_loss, l2_loss, loss, latent, h_rec = self.ae(x)\n", + " # l1_loss, l2_loss, loss = self.ae.losses(latent, h_rec)\n", + " # h_err = h_rec - x\n", + " # if self.importance_matrix is not None:\n", + " # importance_matrix = self.importance_matrix[None, : ].to(h_err.device)\n", + " # h_err = h_err * importance_matrix\n", + " # # for some reasin in the https://github.dev/ai-safety-foundation/sparse_autoencoder repo\n", + " # # they do sum over latent, mean over features, which is confusing because then l1_coeff will vary with different model sizes\n", + " # l2_loss = h_err.pow(2).mean(2).mean(1) # shape [batch_size n_instances features]\n", + " # l1_loss = latent.abs().sum(2).mean(1) # shape [batch_size n_instances n_latent]\n", + " # loss = (self.hparams.l1_coeff * l1_loss + l2_loss).mean(0) # scalar\n", + "\n", + "\n", + " latent2 = rearrange(latent, \"b l h -> b (l h)\")\n", + " pred = self.head(latent2).squeeze(1)\n", + " return dict(\n", + " pred=pred,\n", + " l1_loss=l1_loss,\n", + " l2_loss=l2_loss,\n", + " loss=loss,\n", + " latent=latent,\n", + " h_rec=h_rec,\n", + " )\n", + " \n", + " # def on_after_backward(self):\n", + " # self.ae.post_backwards_hook()\n", + "\n", + "\n", + " def _step(self, batch, batch_idx, stage=\"train\"):\n", + " device = next(self.parameters()).device\n", + " if stage == \"train\":\n", + " self.ae.normalize_decoder()\n", + " x, y = batch # batch['X'], batch['y']\n", + " x = x.to(device)\n", + " y = y.to(device)\n", + " x0 = x#[..., 0]\n", + " # x1 = x[..., 1]\n", + " info0 = self(x0)\n", + " # info1 = self(x1)\n", + " # ypred1 = info1[\"pred\"]\n", + " logits = info0[\"pred\"]\n", + " y_probs = F.sigmoid(logits)\n", + " y_cls = y_probs > 0.5\n", + "\n", + " if stage == \"pred\":\n", + " return (y_probs).float()\n", + " \n", + " pred_loss = F.binary_cross_entropy_with_logits(logits, (y>0.).float())\n", + "\n", + " # pred_loss = F.smooth_l1_loss(ypred0, y)\n", + " rec_loss = info0[\"loss\"] \n", + " l1_loss = info0[\"l1_loss\"].mean()\n", + " l2_loss = info0[\"l2_loss\"].mean()\n", + "\n", + " self.log(\n", + " f\"{stage}/auroc\",\n", + " auroc(y_probs, y > 0, \"binary\"),\n", + " on_epoch=True,\n", + " on_step=False,\n", + " )\n", + " self.log(\n", + " f\"{stage}/acc\",\n", + " accuracy(y_cls, y > 0, \"binary\"),\n", + " on_epoch=True,\n", + " on_step=False,\n", + " )\n", + " self.log(\n", + " f\"{stage}/loss_pred\",\n", + " float(pred_loss),\n", + " on_epoch=True,\n", + " on_step=True,\n", + " prog_bar=True,\n", + " )\n", + " self.log(\n", + " f\"{stage}/loss_rec\",\n", + " float(rec_loss),\n", + " on_epoch=True,\n", + " on_step=True,\n", + " prog_bar=True,\n", + " )\n", + " self.log(f\"{stage}/l1_loss\", l1_loss, on_epoch=True, on_step=False)\n", + " self.log(f\"{stage}/l2_loss\", l2_loss, on_epoch=True, on_step=False)\n", + " self.log(\n", + " f\"{stage}/n\",\n", + " float(len(y)),\n", + " on_epoch=True,\n", + " on_step=False,\n", + " reduce_fx=torch.sum,\n", + " )\n", + " if self._ae_mode == 0:\n", + " assert torch.isfinite(rec_loss), \"rec_loss is not finite\"\n", + " return rec_loss\n", + " elif self._ae_mode == 1:\n", + " assert torch.isfinite(pred_loss), \"pred_loss is not finite\"\n", + " return pred_loss\n", + " elif self._ae_mode == 2:\n", + " # , train/loss_pred_epoch=0.0195, train/loss_rec_epoch=169.0\n", + " assert torch.isfinite(pred_loss), \"pred_loss is not finite\"\n", + " assert torch.isfinite(rec_loss), \"rec_loss is not finite\"\n", + " return pred_loss * 50000 + rec_loss" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Train" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 334, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 5\n", + "torch.Size([32, 7, 23040]) x\n" + ] + } + ], + "source": [ + "\n", + "\n", + "print(len(dl_train), len(dl_val))\n", + "b = next(iter(dl_train))\n", + "x, y = b # b['X'], b['y']\n", + "print(x.shape, \"x\")\n", + "if x.ndim == 3:\n", + " x = x.unsqueeze(-1)\n", + "c_in = x.shape[1:-1]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 335, + "metadata": {}, + "outputs": [], + "source": [ + "# # TEST\n", + "# for b in tqdm(dl_train):\n", + "# pass" + ] + }, + { + "cell_type": "code", + "execution_count": 336, + "metadata": {}, + "outputs": [], + "source": [ + "# %%time\n", + "# # oh no, this is very slow\n", + "# g = iter(dl_train)\n", + "# b = next(g)\n", + "# b = next(g)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 337, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PLAE(\n", + " (ae): AutoEncoder(\n", + " (norm): Affines(\n", + " (affines): ModuleList(\n", + " (0-6): 7 x AffineInstanceNorm1d(23040, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n", + " )\n", + " )\n", + " (encoder): Sequential(\n", + " (0): NormedLinears(\n", + " (linears): ModuleList(\n", + " (0-6): 7 x NormedLinear(in_features=23040, out_features=20, bias=True)\n", + " )\n", + " (act): ReLU()\n", + " )\n", + " (1): NormedLinears(\n", + " (linears): ModuleList(\n", + " (0-6): 7 x NormedLinear(in_features=20, out_features=20, bias=True)\n", + " )\n", + " (act): ReLU()\n", + " )\n", + " )\n", + " (decoder): Sequential(\n", + " (0): NormedLinears(\n", + " (linears): ModuleList(\n", + " (0-6): 7 x NormedLinear(in_features=20, out_features=20, bias=True)\n", + " )\n", + " (act): ReLU()\n", + " )\n", + " (1): NormedLinears(\n", + " (linears): ModuleList(\n", + " (0-6): 7 x NormedLinear(in_features=20, out_features=23040, bias=True)\n", + " )\n", + " )\n", + " )\n", + " )\n", + " (head): Sequential(\n", + " (0): LinBnDrop(\n", + " (lin): Linear(in_features=140, out_features=140, bias=True)\n", + " (act): ReLU()\n", + " )\n", + " (1): LinBnDrop(\n", + " (lin): Linear(in_features=140, out_features=35, bias=True)\n", + " (act): ReLU()\n", + " )\n", + " (2): LinBnDrop(\n", + " (lin): Linear(in_features=35, out_features=11, bias=True)\n", + " (act): ReLU()\n", + " )\n", + " (3): Linear(in_features=11, out_features=1, bias=True)\n", + " )\n", + ")\n" + ] + } + ], + "source": [ + "\n", + "net = PLAE(\n", + " c_in=c_in,\n", + " steps_per_epoch=len(dl_train),\n", + " max_epochs=max_epochs,\n", + " lr=lr,\n", + " depth=2,\n", + " weight_decay=wd,\n", + " # hs=64,\n", + " dropout=0,\n", + " n_latent=20, # there will be layers * n_latent latent features\n", + " l1_coeff=l1_coeff, \n", + " importance_matrix=importance_matrix,\n", + ")\n", + "print(net)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 338, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "torch.Size([7, 23040])\n" + ] + }, + { + "data": { + "text/plain": [ + "({'pred': tensor(0.2533),\n", + " 'l1_loss': tensor(1.8751),\n", + " 'l2_loss': tensor(1383.5873),\n", + " 'loss': tensor(1664.8456),\n", + " 'latent': tensor(0.0920),\n", + " 'h_rec': tensor(0.3927)},\n", + " {'pred': torch.Size([32]),\n", + " 'l1_loss': torch.Size([32]),\n", + " 'l2_loss': torch.Size([32]),\n", + " 'loss': torch.Size([]),\n", + " 'latent': torch.Size([32, 7, 20]),\n", + " 'h_rec': torch.Size([32, 7, 23040])})" + ] + }, + "execution_count": 338, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(c_in)\n", + "x1= x[..., 0]\n", + "with torch.no_grad():\n", + " y = net(x1)\n", + "{k: v.abs().mean() for k, v in y.items()}, {k: v.shape for k, v in y.items()}" + ] + }, + { + "cell_type": "code", + "execution_count": 339, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "====================================================================================================\n", + "Layer (type:depth-idx) Output Shape Param #\n", + "====================================================================================================\n", + "PLAE [32, 7, 23040] --\n", + "├─AutoEncoder: 1-1 [32] --\n", + "│ └─Affines: 2-1 [32, 7, 23040] --\n", + "│ │ └─ModuleList: 3-1 -- --\n", + "│ └─Sequential: 2-4 -- (recursive)\n", + "│ │ └─NormedLinears: 3-2 [32, 7, 20] 3,225,740\n", + "│ └─Sequential: 2-5 -- (recursive)\n", + "│ │ └─NormedLinears: 3-5 -- (recursive)\n", + "│ └─Sequential: 2-4 -- (recursive)\n", + "│ │ └─NormedLinears: 3-4 [32, 7, 20] 2,940\n", + "│ └─Sequential: 2-5 -- (recursive)\n", + "│ │ └─NormedLinears: 3-5 -- (recursive)\n", + "│ │ └─NormedLinears: 3-6 [32, 7, 20] 2,940\n", + "│ │ └─NormedLinears: 3-7 [32, 7, 23040] 3,386,880\n", + "├─Sequential: 1-2 [32, 1] --\n", + "│ └─LinBnDrop: 2-6 [32, 140] --\n", + "│ │ └─Linear: 3-8 [32, 140] 19,740\n", + "│ │ └─ReLU: 3-9 [32, 140] --\n", + "│ └─LinBnDrop: 2-7 [32, 35] --\n", + "│ │ └─Linear: 3-10 [32, 35] 4,935\n", + "│ │ └─ReLU: 3-11 [32, 35] --\n", + "│ └─LinBnDrop: 2-8 [32, 11] --\n", + "│ │ └─Linear: 3-12 [32, 11] 396\n", + "│ │ └─ReLU: 3-13 [32, 11] --\n", + "│ └─Linear: 2-9 [32, 1] 12\n", + "====================================================================================================\n", + "Total params: 6,643,583\n", + "Trainable params: 6,643,583\n", + "Non-trainable params: 0\n", + "Total mult-adds (Units.MEGABYTES): 212.59\n", + "====================================================================================================\n", + "Input size (MB): 20.64\n", + "Forward/backward pass size (MB): 41.44\n", + "Params size (MB): 26.57\n", + "Estimated Total Size (MB): 88.66\n", + "====================================================================================================" + ] + }, + "execution_count": 339, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from torchinfo import summary\n", + "\n", + "summary(net, input_data=x1, depth=3) # input_size=(batch_size, 1, 28, 28))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### helpers" + ] + }, + { + "cell_type": "code", + "execution_count": 340, + "metadata": {}, + "outputs": [], + "source": [ + "from src.eval.ds import ds2df\n", + "\n", + "def get_acc_subset(df, query, verbose=True):\n", + " assert (df['y'].mean()<0).any(), 'y should be [-1, 1]'\n", + " assert (df['y'].mean()>-1).all(), 'y should be [-1, 1]'\n", + " assert (df['y'].mean()<1).all(), 'y should be [-1, 1]'\n", + " assert (df['probe_pred'].mean()>0).all(), 'pred should be [0,1]'\n", + " assert (df['probe_pred'].mean()<1).all(), 'pred should be [0,1]'\n", + "\n", + " if query:\n", + " df = df.query(query)\n", + " # df[\"probe_cls\"] = df[\"probe_pred\"] > 0.5\n", + " acc = ((df[\"probe_pred\"]>0.5) == (df[\"y\"]>0)).mean()\n", + " if verbose:\n", + " print(f\"acc={acc:2.2%},\\tn={len(df)},\\t[{query}] \")\n", + " return acc\n", + "\n", + "\n", + "def calc_metrics(dm, net, trainer=None, split=\"test\", verbose=True):\n", + "\n", + " # predict\n", + " dl_test = dm.create_dataloader(split)\n", + " if trainer is None:\n", + " trainer = pl.Trainer(logger=False, enable_progress_bar=False, enable_model_summary=False)\n", + " rt = trainer.predict(net, dataloaders=dl_test)\n", + " y_test_pred = np.concatenate(rt)\n", + "\n", + " # get original df\n", + " splits = dm.splits[split]\n", + " df = ds2df(dm.dm_orig).rename(columns=lambda s:s.replace('_base',''))\n", + " df['y'] = dm.ds['y']\n", + " df_test = df.iloc[splits[0] : splits[1]].copy()\n", + " df_test[\"probe_pred\"] = y_test_pred\n", + "\n", + " if verbose:\n", + " print(f\"probe results on subsets of the data for {split}\")\n", + " acc = get_acc_subset(df_test, \"\", verbose=verbose)\n", + " get_acc_subset(\n", + " df_test, \"instructed_to_lie==True\", verbose=verbose\n", + " ) # it was ph told to lie\n", + " get_acc_subset(\n", + " df_test, \"instructed_to_lie==False\", verbose=verbose\n", + " ) # it was told not to lie\n", + " get_acc_subset(\n", + " df_test, \"ans==label_true\", verbose=verbose\n", + " ) # the llm gave the true ans\n", + " get_acc_subset(\n", + " df_test, \"ans==label_instructed\", verbose=verbose\n", + " ) # the llm gave the desired ans\n", + " acc_lie_lie = get_acc_subset(\n", + " df_test, \"instructed_to_lie==True & ans==label_instructed\", verbose=verbose\n", + " ) # it was told to lie, and it did lie\n", + " acc_lie_truth = get_acc_subset(\n", + " df_test, \"instructed_to_lie==True & ans!=label_instructed\", verbose=verbose\n", + " )\n", + "\n", + " a = get_acc_subset(\n", + " df_test, \"instructed_to_lie==False & ans==label_instructed\", verbose=False\n", + " )\n", + " b = get_acc_subset(\n", + " df_test, \"instructed_to_lie==False & ans!=label_instructed\", verbose=False\n", + " )\n", + " c = get_acc_subset(\n", + " df_test, \"instructed_to_lie==True & ans==label_instructed\", verbose=False\n", + " )\n", + " d = get_acc_subset(\n", + " df_test, \"instructed_to_lie==True & ans!=label_instructed\", verbose=False\n", + " )\n", + " \n", + "\n", + " df_confusion = pd.DataFrame(\n", + " [[a, b], [c, d]],\n", + " index=[\"tell a truth\", \"tell a lie\"],\n", + " columns=[\"did\", \"didn't\"],\n", + " )\n", + " df_confusion.index.name = \"instructed to\"\n", + " df_confusion.columns.name = \"llm gave\"\n", + "\n", + "\n", + " if verbose:\n", + " print(f\"⭐PRIMARY METRIC⭐ acc={acc:2.2%} from probe on {split}\")\n", + " print(f\"⭐SECONDARY METRIC⭐ acc_lie_lie={acc_lie_lie:2.2%} from probe on {split}\")\n", + " \n", + " print(\"\\n\\nprobe accuracy for quadrants:\")\n", + " print(df_confusion.round(2).to_markdown())\n", + " print('\\n\\n')\n", + "\n", + "\n", + " return dict(acc=acc, acc_lie_lie=acc_lie_lie, acc_lie_truth=acc_lie_truth, df_test=df_test, df_confusion=df_confusion)\n", + "\n", + "\n", + "# r = testval_metrics = calc_metrics(dm, trainer3, net, use_val=True)\n", + "# r['df_test']" + ] + }, + { + "cell_type": "code", + "execution_count": 341, + "metadata": {}, + "outputs": [], + "source": [ + "# visualize latent space\n", + "from matplotlib import cm\n", + "\n", + "\n", + "def plot_latent(latent):\n", + "\n", + " # plot image of latent space\n", + " vmax = latent.abs().max()\n", + " for i in range(4):\n", + " plt.subplot(2, 2, i + 1)\n", + " vmax = latent[i].abs().max()\n", + " plt.imshow(\n", + " latent[i],\n", + " cmap=cm.coolwarm,\n", + " interpolation=\"none\",\n", + " aspect=\"auto\",\n", + " vmin=-vmax,\n", + " vmax=vmax,\n", + " )\n", + " plt.ylabel(\"layer\")\n", + " plt.xlabel(\"neuron\")\n", + " if i < 2:\n", + " plt.xlabel(\"\")\n", + " plt.xticks([])\n", + " if i % 2 == 1:\n", + " plt.ylabel(\"\")\n", + " plt.yticks([])\n", + " plt.grid(False)\n", + " plt.colorbar()\n", + " # plt.colorbar()\n", + " plt.subplots_adjust(wspace=0.05, hspace=0.05)\n", + " plt.show()\n", + "\n", + " # histogram\n", + " latentf = rearrange(latent, \"b n l -> (b n) l\").flatten()\n", + " vmax = (latentf.abs().mean() + 5 * latentf.abs().std()).item()\n", + " plt.hist(latentf, bins=55, range=[-vmax, vmax], histtype=\"step\")\n", + " plt.title(\"latents by layer\")\n", + " plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 342, + "metadata": {}, + "outputs": [], + "source": [ + "from src.helpers.lightning import read_metrics_csv, plot_hist, rename_pl_test_results\n", + "from lightning.pytorch.callbacks import LearningRateMonitor" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Train autoencoder" + ] + }, + { + "cell_type": "code", + "execution_count": 343, + "metadata": {}, + "outputs": [], + "source": [ + "torch.set_float32_matmul_precision('medium')" + ] + }, + { + "cell_type": "code", + "execution_count": 344, + "metadata": {}, + "outputs": [], + "source": [ + "# with torch.no_grad():\n", + "# o = net.predict_step(b)\n", + "# l1_loss, l2_loss, loss, acts, h_reconstructed = net.ae(b[0])\n", + "# # l1_loss, l2_loss, loss, latent, h_rec = self.ae(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 345, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "GPU available: True (cuda), used: True\n", + "TPU available: False, using: 0 TPU cores\n", + "IPU available: False, using: 0 IPUs\n", + "HPU available: False, using: 0 HPUs\n", + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "\n", + " | Name | Type | Params\n", + "-------------------------------------\n", + "0 | ae | AutoEncoder | 6.6 M \n", + "1 | head | Sequential | 25.1 K\n", + "-------------------------------------\n", + "6.6 M Trainable params\n", + "0 Non-trainable params\n", + "6.6 M Total params\n", + "26.574 Total estimated model params size (MB)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "training ae\n", + "requires_grad: True\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e2e186baf7c34d5da1c3154f5b8a5b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Sanity Checking: | | 0/? [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + "
train/loss_rec_stepsteptrain/loss_pred_stepval/loss_rec_stepval/loss_pred_stepval/loss_pred_epochval/l1_lossval/l2_lossval/accval/loss_rec_epochval/nval/auroctrain/loss_rec_epochtrain/l1_losstrain/loss_pred_epochtrain/acctrain/auroctrain/l2_losstrain/n
epoch
0.04880.89306690.7080815397.3632810.6626080.6975163.4565064899.3471680.5129875417.823242154.00.5538743177.1250001.7775910.6718820.6156350.4919452910.486328307.0
1.06807.446777190.7077077341.7973630.6623320.6975752.6204156964.2807620.5129877357.343262154.00.5422636441.5781252.2823200.6716120.6156350.5267166099.230469307.0
2.05667.951660290.7066885944.6386720.6611720.6975773.9131025370.7050780.5129875957.670410154.00.6255906694.4438483.4905930.6712060.6156350.5532916170.854004307.0
3.03650.510010390.7077513513.0278320.6601870.6974205.5481242723.0471190.5129873555.265869154.00.6363884768.5766605.0737380.6707760.6156350.5729514007.516357307.0
4.02098.996094490.7094062044.9504390.6598290.6977685.8985641206.4401860.5129872091.224609154.00.5963842946.3237306.0386940.6706780.6156350.5271912040.519531307.0
............................................................
139.065.81530013990.70805978.0334010.6619060.6980840.31485341.2075580.51298788.435425154.00.50881875.2291490.3263350.6716160.6156350.57314026.278976307.0
140.065.80789914090.70805978.0376050.6619060.6980840.31480341.2173770.51298788.437828154.00.50937075.2187270.3262730.6716160.6156350.57354426.277805307.0
141.065.80314614190.70806078.0396880.6619070.6980840.31477441.2258610.51298788.441956154.00.50937075.2116700.3262120.6716160.6156350.57354426.279909307.0
142.065.80126214290.70806078.0407490.6619070.6980840.31476541.2294430.51298788.444168154.00.50937075.2081990.3261810.6716160.6156350.57354426.281097307.0
143.065.80066714390.70806078.0410390.6619070.6980840.31476441.2300800.51298788.444641154.00.50937075.2070620.3261720.6716160.6156350.57354426.281235307.0
\n", + "

144 rows × 19 columns

\n", + "
" + ], + "text/plain": [ + " train/loss_rec_step step train/loss_pred_step val/loss_rec_step \\\n", + "epoch \n", + "0.0 4880.893066 9 0.708081 5397.363281 \n", + "1.0 6807.446777 19 0.707707 7341.797363 \n", + "2.0 5667.951660 29 0.706688 5944.638672 \n", + "3.0 3650.510010 39 0.707751 3513.027832 \n", + "4.0 2098.996094 49 0.709406 2044.950439 \n", + "... ... ... ... ... \n", + "139.0 65.815300 1399 0.708059 78.033401 \n", + "140.0 65.807899 1409 0.708059 78.037605 \n", + "141.0 65.803146 1419 0.708060 78.039688 \n", + "142.0 65.801262 1429 0.708060 78.040749 \n", + "143.0 65.800667 1439 0.708060 78.041039 \n", + "\n", + " val/loss_pred_step val/loss_pred_epoch val/l1_loss val/l2_loss \\\n", + "epoch \n", + "0.0 0.662608 0.697516 3.456506 4899.347168 \n", + "1.0 0.662332 0.697575 2.620415 6964.280762 \n", + "2.0 0.661172 0.697577 3.913102 5370.705078 \n", + "3.0 0.660187 0.697420 5.548124 2723.047119 \n", + "4.0 0.659829 0.697768 5.898564 1206.440186 \n", + "... ... ... ... ... \n", + "139.0 0.661906 0.698084 0.314853 41.207558 \n", + "140.0 0.661906 0.698084 0.314803 41.217377 \n", + "141.0 0.661907 0.698084 0.314774 41.225861 \n", + "142.0 0.661907 0.698084 0.314765 41.229443 \n", + "143.0 0.661907 0.698084 0.314764 41.230080 \n", + "\n", + " val/acc val/loss_rec_epoch val/n val/auroc train/loss_rec_epoch \\\n", + "epoch \n", + "0.0 0.512987 5417.823242 154.0 0.553874 3177.125000 \n", + "1.0 0.512987 7357.343262 154.0 0.542263 6441.578125 \n", + "2.0 0.512987 5957.670410 154.0 0.625590 6694.443848 \n", + "3.0 0.512987 3555.265869 154.0 0.636388 4768.576660 \n", + "4.0 0.512987 2091.224609 154.0 0.596384 2946.323730 \n", + "... ... ... ... ... ... \n", + "139.0 0.512987 88.435425 154.0 0.508818 75.229149 \n", + "140.0 0.512987 88.437828 154.0 0.509370 75.218727 \n", + "141.0 0.512987 88.441956 154.0 0.509370 75.211670 \n", + "142.0 0.512987 88.444168 154.0 0.509370 75.208199 \n", + "143.0 0.512987 88.444641 154.0 0.509370 75.207062 \n", + "\n", + " train/l1_loss train/loss_pred_epoch train/acc train/auroc \\\n", + "epoch \n", + "0.0 1.777591 0.671882 0.615635 0.491945 \n", + "1.0 2.282320 0.671612 0.615635 0.526716 \n", + "2.0 3.490593 0.671206 0.615635 0.553291 \n", + "3.0 5.073738 0.670776 0.615635 0.572951 \n", + "4.0 6.038694 0.670678 0.615635 0.527191 \n", + "... ... ... ... ... \n", + "139.0 0.326335 0.671616 0.615635 0.573140 \n", + "140.0 0.326273 0.671616 0.615635 0.573544 \n", + "141.0 0.326212 0.671616 0.615635 0.573544 \n", + "142.0 0.326181 0.671616 0.615635 0.573544 \n", + "143.0 0.326172 0.671616 0.615635 0.573544 \n", + "\n", + " train/l2_loss train/n \n", + "epoch \n", + "0.0 2910.486328 307.0 \n", + "1.0 6099.230469 307.0 \n", + "2.0 6170.854004 307.0 \n", + "3.0 4007.516357 307.0 \n", + "4.0 2040.519531 307.0 \n", + "... ... ... \n", + "139.0 26.278976 307.0 \n", + "140.0 26.277805 307.0 \n", + "141.0 26.279909 307.0 \n", + "142.0 26.281097 307.0 \n", + "143.0 26.281235 307.0 \n", + "\n", + "[144 rows x 19 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "net.ae_mode(0)\n", + "trainer1 = pl.Trainer(\n", + " # precision=\"16-mixed\",\n", + " # gradient_clip_val=20,\n", + " accelerator=\"auto\",\n", + " devices=\"1\",\n", + " max_epochs=max_epochs,# * VAE_EPOCH_MULT,\n", + " log_every_n_steps=1,\n", + "progress_bar_refresh_rate=1 if verbose else 0,\n", + " enable_progress_bar=verbose, enable_model_summary=verbose\n", + ")\n", + "\n", + "# LOAD_CHECKPONT = Path('/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/notebooks/lightning_logs/version_52/1_ae.ckpt')\n", + "LOAD_CHECKPONT = None\n", + "if LOAD_CHECKPONT:\n", + " PLAE.load_from_checkpoint(LOAD_CHECKPONT)\n", + "else:\n", + " trainer1.fit(model=net, train_dataloaders=dl_train, \n", + " val_dataloaders=dl_val\n", + " );\n", + "\n", + " df_hist, df_hist_step = read_metrics_csv(trainer1.logger.experiment.metrics_file_path)\n", + " plot_hist(df_hist, ['l2_loss', 'l1_loss', 'loss_rec'], logy=True)\n", + " # plt.show()\n", + " # plot_hist(df_hist_step, ['loss_rec_step'], logy=True)\n", + "\n", + " display(df_hist)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 346, + "metadata": {}, + "outputs": [], + "source": [ + "# plot_hist(df_hist, ['l2_loss', 'l1_loss', 'loss_rec'], logy=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 347, + "metadata": {}, + "outputs": [], + "source": [ + "df_hist, df_hist_step = read_metrics_csv(trainer1.logger.experiment.metrics_file_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 348, + "metadata": {}, + "outputs": [], + "source": [ + "# DEBUG: Check the LR\n", + "# df_hist['lr-AdamW'].plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 349, + "metadata": {}, + "outputs": [], + "source": [ + "# df_hist[['train/l2_loss','train/l1_loss']]" + ] + }, + { + "cell_type": "code", + "execution_count": 350, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "l1 coeff should be approx 0.6689817605139219 but is 150\n" + ] + } + ], + "source": [ + "ratio = df_hist['train/l2_loss']/df_hist['train/l1_loss']\n", + "ratio = ratio[np.isfinite(ratio)]\n", + "print(f\"l1 coeff should be approx {ratio.mean()/l1_coeff} but is {l1_coeff}\")\n", + "\n", + "\n", + "# print(f\"% of latent is empty {((latent>0)*1.0).mean()}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 351, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:441: The 'test_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ed85ba6798a6433f9dee2dc7b3fe168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Testing: | | 0/? [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "latent = y[\"latent\"].cpu() # .reshape(64, 24, 12) # [Batch, Latent, Layer]\n", + "plot_latent(latent)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 353, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(torch.Size([32, 7, 20]), tensor(0.2048), tensor(0.1486), tensor(0.2016), 112)" + ] + }, + "execution_count": 353, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "latent.shape, latent.diff(dim=1).std(), latent.std(), latent.diff(dim=2).std(), 16*7" + ] + }, + { + "cell_type": "code", + "execution_count": 354, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor(0.4578)" + ] + }, + "execution_count": 354, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "((latent>0)*1.0).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 367, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'verbose' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[367], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mverbose\u001b[49m\n", + "\u001b[0;31mNameError\u001b[0m: name 'verbose' is not defined" + ] + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Train probe" + ] + }, + { + "cell_type": "code", + "execution_count": 355, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Trainer will use only 1 of 2 GPUs because it is running inside an interactive / notebook environment. You may try to set `Trainer(devices=2)` but please note that multi-GPU inside interactive / notebook environments is considered experimental and unstable. Your mileage may vary.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "GPU available: True (cuda), used: True\n", + "TPU available: False, using: 0 TPU cores\n", + "IPU available: False, using: 0 IPUs\n", + "HPU available: False, using: 0 HPUs\n", + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n", + "\n", + " | Name | Type | Params\n", + "-------------------------------------\n", + "0 | ae | AutoEncoder | 6.6 M \n", + "1 | head | Sequential | 25.1 K\n", + "-------------------------------------\n", + "25.1 K Trainable params\n", + "6.6 M Non-trainable params\n", + "6.6 M Total params\n", + "26.574 Total estimated model params size (MB)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "training probe\n", + "requires_grad: False\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "eed0eea289e146558500945c0dd22df5", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Sanity Checking: | | 0/? [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbQAAADmCAYAAAC9BXAOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6G0lEQVR4nO3deVxU9f7H8deZQQQEFGQRd9OkMsWFyDXNXChBzLQ0NDXN0ryZ+1JaLqmoRYuVS95KszKvmlqaZbdFNE0l9VY/11xQQVZBZHNmzu8PYgIZYNhnjp/n49HjEWfOzHw/Zwbefr/ne85XUVVVRQghhLBzuupugBBCCFERJNCEEEJoggSaEEIITZBAE0IIoQkSaEIIITRBAk0IIYQmSKAJIYTQBAk0IYQQmiCBJoQQQhMk0IQmXbp0CX9/f5KTk6u7KRUuJCSELVu2VHczLDp48CDt2rWr7maI25QEmhBCCE2QQBOad+LECUaOHElgYCAPPfQQK1euxGg0AnDy5EmGDBlCYGAgvXr1IiIiwvzYzp07CQ4OJjAwkNDQULZu3WrV+82cOZM5c+YwZMgQ2rZty5AhQzh16hSQ24Pp1asXEyZMIDAwkF27dpGdnU1ERAQ9evSgc+fOzJgxg9TUVPPr7dy5k969e9OuXTvmzp3LzZs3ra49OjraXF9oaCh79uwxPzZ8+HAiIiIICQmhXbt2jB49mri4OPPju3fvpn///rRv356wsLACz42Pj+df//oXHTp0oHPnzixevNh83FRVZcWKFfTs2ZP27dvzyiuvYDKZrG6zEGWmCqFBMTExasuWLdWkpCT1vvvuU1euXKlmZ2erZ86cUXv37q2uWrVKVVVVHTp0qPruu++qJpNJvXz5stqtWzf1v//9r5qRkaG2atVKPXTokKqqqhoVFaUGBASoycnJJb73jBkz1HvvvVf9+eef1ezsbHXZsmXqgw8+qGZnZ6sHDhxQW7Zsqa5bt07Nzs5WMzMz1QULFqhDhw5V4+Pj1evXr6uTJ09Wx48fr6qqqp46dUpt1aqV+uOPP6o5OTnq6tWr1ZYtW6qbN28usR1XrlxR27Ztq27fvl01GAzqgQMH1MDAQPWPP/5QVVVVhw0bpgYFBanHjx9XMzIy1ClTpqiPP/64qqqqun//frVNmzbqzz//rBoMBvXHH39U27Rpox45csR83CZNmqRev35djY+PVx9++GH1ww8/NNe3bNkyNTs7Wz116pQaEBCgfv/996X/EIUoJemhCU3bvHkzderU4dlnn8XR0ZHmzZszfvx4Nm/eDEDNmjXZu3cve/bswd3dnR9//JEHH3zQ/NjmzZs5dOgQQUFBREdH4+HhYdX7BgcH061bNxwdHZk4cSIpKSlER0ebHx8wYACOjo7UrFmTTZs2MXnyZLy9vXF1dWXmzJns2bOH5ORkdu3aRceOHenevTs1atRgzJgx1KtXz6o27Nixg4CAAEJDQ9Hr9dx///08/PDDbNq0ybzP0KFDad26Nc7OzkyfPp2jR48SExPD1q1bCQkJoVu3buj1erp3706/fv3YunUrly9f5siRI8ycORNXV1e8vb1ZuXIlffr0AUCn0zFhwgQcHR258847ueuuu7h48aJVbRaiPByquwFCVKacnBzq169fYFvDhg25cuUKAJGRkbz11lssXryYq1ev0q1bN+bNm4evry8bNmzgvffeY8KECdy8eZPBgwczZcoUHB0dS3zfJk2amP+/Ro0aeHl5kZiYiLe3N87Ozri5uQGQnJxMVlYWzz77LIqimJ9Ts2ZNLl26REJCQoEAUxSFBg0aWFX7lStXOHz4MIGBgeZtRqOR+++/32I7fXx8cHBwIDExkaSkJDp06FDouB05coSEhAQcHBzw8fExP9a4cWMAYmJicHJywsnJqUD9ecORQlQmCTShafXr1+fy5csFtsXExODt7Y2qqpw4cYKpU6fyyiuvcP78eV5++WUiIyN5+eWXSU1N5e2338ZkMnH06FEmTJiAv78/AwcOLPF9r169av7/nJwcczAZjcYCweXh4YGjoyOff/45d955JwAGg4ELFy7QpEkTfH19C/TsIPf8lTV8fX3p2bMnb7/9tnlbXFxcgUDO3864uDgMBgP16tXDz8+PS5cuWTxu9erVw2AwkJiYiJeXFwD79u0jLi6Ohg0bWtU2ISqDDDkKTevevTs3btxg5cqV5OTk8Ndff/H+++8zYMAAFEXhtdde49133yUnJwcvLy8cHByoU6cOGRkZjB49mj179qAoCj4+PiiKQp06dax636+++orffvuNnJwc3njjDXx9fS1OZ9fpdDz66KMsW7aM5ORkcnJyePPNN3nqqacwGAz069ePw4cPs3v3bgwGA+vXrycmJsaqNoSEhLB//36+//57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eTMXL15kwIAB5i/86NGj8fHxKVRDrVq1qF27dnU1tVi+vr40bdqUwMBAIHfI0cHBweJnYat1REVF0bp1a+644w4AQkNDMRqNGI1Gu/k+5Vfcsben35Fjx47x2GOPERgYyIoVK3B0dASgQYMGhWrI39uxFVu3buXw4cOEhYUxduxYjEYjYWFhXLx4sdo/B00GWpcuXfjzzz85deoUAJs2bSIgIMB8bspWXblyhfDwcAYPHszSpUupWbMmAL179+brr78mLS0Nk8nE559/bj63Y2s+/PBDdu7cybZt29i2bRuQO+upb9++/PTTT+Yv+4YNG+jVq5dN/gsU4IEHHiA2NtY8s/HIkSPk5OTQq1cvu6mjVatWHDlyxDzL9NChQxgMBkaOHGk336f8HnrooSKPvb38jvzxxx88/fTTzJw5k6lTpxb43vTu3ZstW7aQk5NDVlYWmzdvtskavvnmG3bs2MG2bdtYvXo1er2ebdu20bhx42r/HByq7J2qkKenJ5GRkcyYMYPs7Gzq1q3L0qVLq7tZJVq7di1paWls376d7du3m7evXr2axx57jKFDh2IwGGjfvr3FIT1bdueddzJ9+nTGjBnDzZs3adasGUuWLKnuZhXJy8uLVatWsWjRIjIyMtDr9bzzzjvcdddddlNHx44def755xk1ahQ1atTAxcWF999/n/bt23PhwgW7+z4V9x164IEHOHv2rM3X9M4772AymVi9ejWrV682b9+2bRuPP/44ly5d4tFHH+XmzZv06tWLxx57rBpbW3rV/TkoqmojFzoIIYQQ5WB74yRCCCFEGUigCSGE0AQJNCGEEJoggSaEEEITJNCEEEJoggSaEEIITZBAE0IjLl26hL+/P8nJydXdFCGqhQSaEEIITZBAE6ISnTlzhlGjRhEUFETfvn35/PPPAZg5cyZz5sxhyJAhtG3bliFDhphv1QZw8OBBnnjiCTp06EBwcDAbN240P5aens7s2bMJCgri/vvvZ8aMGWRkZJgf37hxI3369KFt27ZMnDixwGNCaJkEmhCV5MaNG4waNYrOnTuzb98+3nrrLfOaagBffvklzz//PL/++iuBgYE899xz5OTkcPbsWcaMGcPQoUM5ePAgERERREZG8vXXXwMwb948Ll26xK5du9izZw9XrlzhjTfeML/vX3/9xZdffsnu3buJjo5m8+bN1VK/EFVNk/dyFMIW/PTTTzg5OfHMM88AcNdddxEeHs4XX3yBp6cnwcHBdOvWDYCJEyeyYcMGoqOjOXjwIB06dGDAgAEABAQEMHz4cDZv3kzv3r355ptvWLduHXXr1gVg2bJlZGVlmd933LhxuLi44OLiQlBQEBcvXqzawoWoJhJoQlSSy5cvc+XKFfMSNJC7cGvDhg3x9PSkSZMm5u01atTAy8uLxMREkpKSaNCgQYHXatiwITt27CA1NZWcnJwCS3LkLQp56dIlAOrUqVPgdY1GY2WUJ4TNkUATopL4+vpy1113FRjyS0pKwmAwEBkZWWjNvoSEBOrVq4efnx8HDhwo8FoxMTF4e3vj6elJjRo1iIuLw9fXF8hdkuTgwYM2udSIEFVJzqEJUUl69OhBXFwcGzduxGAwEBcXx6hRo1izZg2Qu7r3b7/9Rk5ODm+88Qa+vr60a9eOkJAQjh49ypdffonBYODYsWN88sknDBgwAL1eT2hoKG+//TbXrl0jLS2N5cuXm9c8E+J2JoEmRCVxd3dn7dq17Ny5k86dOzNw4EA6dOjA9OnTAbjvvvtYunQpHTt25MSJE6xZswa9Xk+jRo1YtWoVGzZsICgoiClTpvD888+b18Z66aWXaNCgASEhIfTp04dGjRoxZcqU6ixVCJsg66EJUQ1mzpyJi4sLc+fOre6mCKEZ0kMTQgihCRJoQgghNEGGHIUQQmiC9NCEEEJoggSaEEIITZBAE0IIoQkSaEIIITRBAk0IIYQmSKAJIYTQBAk0IYQQmiCBJoQQQhMk0IQQQmjC/wNJz1GaZ78PNwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + "
train/loss_rec_stepsteptrain/loss_pred_stepval/loss_rec_stepval/loss_pred_stepval/loss_pred_epochval/l1_lossval/l2_lossval/accval/loss_rec_epochval/nval/auroctrain/loss_rec_epochtrain/l1_losstrain/loss_pred_epochtrain/acctrain/auroctrain/l2_losstrain/n
epoch
0.065.80066790.70825578.0410460.6616770.6981950.31476441.2300830.51298788.444649154.00.51532175.2069630.3261710.6715730.6156350.57463526.281242307.0
1.065.800667190.70841778.0410460.6614960.6982830.31476441.2300830.51298788.444649154.00.51843875.2069630.3261710.6714440.6156350.58195526.281242307.0
2.065.800667290.70858978.0410460.6613000.6983780.31476441.2300830.51298788.444649154.00.51382375.2069630.3261710.6713270.6156350.58182526.281242307.0
3.065.800667390.70878078.0410460.6610740.6984820.31476441.2300830.51298788.444649154.00.50422775.2069630.3261710.6711980.6156350.57992726.281242307.0
4.065.800667490.70900178.0410460.6608020.6986000.31476441.2300830.51298788.444649154.00.51366175.2069630.3261710.6710490.6156350.58072726.281242307.0
............................................................
139.065.80066713990.33346278.0410460.6177321.1502240.31476441.2300830.57142988.444649154.00.57941275.2069630.3261710.4187350.8078180.86737226.281242307.0
140.065.80066714090.33343978.0410460.6177381.1502750.31476441.2300830.57142988.444649154.00.57941275.2069630.3261710.4187140.8078180.86737226.281242307.0
141.065.80066714190.33342578.0410460.6177401.1503040.31476441.2300830.57142988.444649154.00.57941275.2069630.3261710.4186980.8078180.86737226.281242307.0
142.065.80066714290.33341878.0410460.6177411.1503180.31476441.2300830.57142988.444649154.00.57941275.2069630.3261710.4186900.8078180.86737226.281242307.0
143.065.80066714390.33341578.0410460.6177411.1503210.31476441.2300830.57142988.444649154.00.57941275.2069630.3261710.4186860.8078180.86737226.281242307.0
\n", + "

144 rows × 19 columns

\n", + "
" + ], + "text/plain": [ + " train/loss_rec_step step train/loss_pred_step val/loss_rec_step \\\n", + "epoch \n", + "0.0 65.800667 9 0.708255 78.041046 \n", + "1.0 65.800667 19 0.708417 78.041046 \n", + "2.0 65.800667 29 0.708589 78.041046 \n", + "3.0 65.800667 39 0.708780 78.041046 \n", + "4.0 65.800667 49 0.709001 78.041046 \n", + "... ... ... ... ... \n", + "139.0 65.800667 1399 0.333462 78.041046 \n", + "140.0 65.800667 1409 0.333439 78.041046 \n", + "141.0 65.800667 1419 0.333425 78.041046 \n", + "142.0 65.800667 1429 0.333418 78.041046 \n", + "143.0 65.800667 1439 0.333415 78.041046 \n", + "\n", + " val/loss_pred_step val/loss_pred_epoch val/l1_loss val/l2_loss \\\n", + "epoch \n", + "0.0 0.661677 0.698195 0.314764 41.230083 \n", + "1.0 0.661496 0.698283 0.314764 41.230083 \n", + "2.0 0.661300 0.698378 0.314764 41.230083 \n", + "3.0 0.661074 0.698482 0.314764 41.230083 \n", + "4.0 0.660802 0.698600 0.314764 41.230083 \n", + "... ... ... ... ... \n", + "139.0 0.617732 1.150224 0.314764 41.230083 \n", + "140.0 0.617738 1.150275 0.314764 41.230083 \n", + "141.0 0.617740 1.150304 0.314764 41.230083 \n", + "142.0 0.617741 1.150318 0.314764 41.230083 \n", + "143.0 0.617741 1.150321 0.314764 41.230083 \n", + "\n", + " val/acc val/loss_rec_epoch val/n val/auroc train/loss_rec_epoch \\\n", + "epoch \n", + "0.0 0.512987 88.444649 154.0 0.515321 75.206963 \n", + "1.0 0.512987 88.444649 154.0 0.518438 75.206963 \n", + "2.0 0.512987 88.444649 154.0 0.513823 75.206963 \n", + "3.0 0.512987 88.444649 154.0 0.504227 75.206963 \n", + "4.0 0.512987 88.444649 154.0 0.513661 75.206963 \n", + "... ... ... ... ... ... \n", + "139.0 0.571429 88.444649 154.0 0.579412 75.206963 \n", + "140.0 0.571429 88.444649 154.0 0.579412 75.206963 \n", + "141.0 0.571429 88.444649 154.0 0.579412 75.206963 \n", + "142.0 0.571429 88.444649 154.0 0.579412 75.206963 \n", + "143.0 0.571429 88.444649 154.0 0.579412 75.206963 \n", + "\n", + " train/l1_loss train/loss_pred_epoch train/acc train/auroc \\\n", + "epoch \n", + "0.0 0.326171 0.671573 0.615635 0.574635 \n", + "1.0 0.326171 0.671444 0.615635 0.581955 \n", + "2.0 0.326171 0.671327 0.615635 0.581825 \n", + "3.0 0.326171 0.671198 0.615635 0.579927 \n", + "4.0 0.326171 0.671049 0.615635 0.580727 \n", + "... ... ... ... ... \n", + "139.0 0.326171 0.418735 0.807818 0.867372 \n", + "140.0 0.326171 0.418714 0.807818 0.867372 \n", + "141.0 0.326171 0.418698 0.807818 0.867372 \n", + "142.0 0.326171 0.418690 0.807818 0.867372 \n", + "143.0 0.326171 0.418686 0.807818 0.867372 \n", + "\n", + " train/l2_loss train/n \n", + "epoch \n", + "0.0 26.281242 307.0 \n", + "1.0 26.281242 307.0 \n", + "2.0 26.281242 307.0 \n", + "3.0 26.281242 307.0 \n", + "4.0 26.281242 307.0 \n", + "... ... ... \n", + "139.0 26.281242 307.0 \n", + "140.0 26.281242 307.0 \n", + "141.0 26.281242 307.0 \n", + "142.0 26.281242 307.0 \n", + "143.0 26.281242 307.0 \n", + "\n", + "[144 rows x 19 columns]" + ] + }, + "execution_count": 356, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_hist, _ = read_metrics_csv(trainer2.logger.experiment.metrics_file_path)\n", + "plot_hist(df_hist, ['loss_pred_epoch', 'auroc'])\n", + "df_hist" + ] + }, + { + "cell_type": "code", + "execution_count": 357, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/media/wassname/SGIronWolf/projects5/elk/sgd_probes_are_lie_detectors/.venv/lib/python3.11/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:441: The 'test_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "24a5f28d852247d6a7ad35ce211f1ebe", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Testing: | | 0/? [00:00\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", + "
accacc_lie_lieacc_lie_truth
test0.5194810.6250000.384615
val0.5714290.3333330.500000
ood0.6357720.7000000.583333
\n", + "" + ], + "text/plain": [ + " acc acc_lie_lie acc_lie_truth\n", + "test 0.519481 0.625000 0.384615\n", + "val 0.571429 0.333333 0.500000\n", + "ood 0.635772 0.700000 0.583333" + ] + }, + "execution_count": 366, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = calc_metrics(dm, net, split='test', verbose=False)\n", + "b = calc_metrics(dm, net, split='val', verbose=False)\n", + "c = calc_metrics(dm_ood, net, split='all', verbose=False)\n", + "df_metrics = pd.DataFrame([a, b, c], index=['test', 'val', 'ood']).iloc[:, :3]\n", + "print(df_metrics.round(2).to_markdown())\n", + "df_metrics\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Train end-to-end\n" + ] + }, + { + "cell_type": "code", + "execution_count": 359, + "metadata": {}, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "division by zero", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[359], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;241;43m1\u001b[39;49m\u001b[38;5;241;43m/\u001b[39;49m\u001b[38;5;241;43m0\u001b[39;49m\n", + "\u001b[0;31mZeroDivisionError\u001b[0m: division by zero" + ] + } + ], + "source": [ + "1/0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "net.ae_mode(2)\n", + "trainer3 = pl.Trainer(\n", + " precision=\"16-mixed\",\n", + " gradient_clip_val=20,\n", + " max_epochs=max_epochs,\n", + " log_every_n_steps=3,\n", + " # enable_progress_bar=False, enable_model_summary=False\n", + ")\n", + "trainer3.fit(model=net, train_dataloaders=dl_train, val_dataloaders=dl_val)\n", + "1\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# ds2df(dm.dm_orig)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# look at hist\n", + "df_hist, _ = read_metrics_csv(trainer3.logger.experiment.metrics_file_path)\n", + "plot_hist(df_hist, ['loss_pred', 'acc'])\n", + "\n", + "rs3r = trainer3.test(net, dataloaders=[dl_train, dl_val, dl_test, dl_ood], verbose=False)\n", + "rs3 = rename_pl_test_results(rs3r, [\"train\", \"val\", \"test\", \"ood\"])\n", + "\n", + "# predict\n", + "a = calc_metrics(dm, net, trainer1, 'test')\n", + "b = calc_metrics(dm, net,trainer1, 'val')\n", + "pd.DataFrame([a, b], index=['test', 'val'])\n", + "\n", + "c = calc_metrics(dm_ood, net, trainer1, 'all')\n", + "pd.DataFrame([a, b, c], index=['test', 'val', 'ood'])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "a = calc_metrics(dm, net, trainer1, 'test')\n", + "b = calc_metrics(dm, net,trainer1, 'val')\n", + "c = calc_metrics(dm_ood, net, trainer1, 'all')\n", + "df_metrics = pd.DataFrame([a, b, c], index=['test', 'val', 'ood']).iloc[:, :3]\n", + "print(df_metrics.round(3).to_markdown())\n", + "df_metrics\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0rc1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/11f_sae2.ipynb b/notebooks/11f_sae2.ipynb index 537c29b..57822b4 100644 --- a/notebooks/11f_sae2.ipynb +++ b/notebooks/11f_sae2.ipynb @@ -884,6 +884,161 @@ "summary(net, input_data=x1, depth=4) # input_size=(batch_size, 1, 28, 28))\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### helpers" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [], + "source": [ + "from src.eval.ds import ds2df\n", + "\n", + "def get_acc_subset(df, query, verbose=True):\n", + " assert (df['y'].mean()<0).any(), 'y should be [-1, 1]'\n", + " assert (df['y'].mean()>-1).all(), 'y should be [-1, 1]'\n", + " assert (df['y'].mean()<1).all(), 'y should be [-1, 1]'\n", + " assert (df['probe_pred'].mean()>0).all(), 'pred should be [0,1]'\n", + " assert (df['probe_pred'].mean()<1).all(), 'pred should be [0,1]'\n", + "\n", + " if query:\n", + " df = df.query(query)\n", + " # df[\"probe_cls\"] = df[\"probe_pred\"] > 0.5\n", + " acc = ((df[\"probe_pred\"]>0.5) == (df[\"y\"]>0)).mean()\n", + " if verbose:\n", + " print(f\"acc={acc:2.2%},\\tn={len(df)},\\t[{query}] \")\n", + " return acc\n", + "\n", + "\n", + "def calc_metrics(dm, net, trainer=None, split=\"test\", verbose=True):\n", + "\n", + " # predict\n", + " dl_test = dm.create_dataloader(split)\n", + " if trainer is None:\n", + " trainer = pl.Trainer(logger=False, enable_progress_bar=False, enable_model_summary=False)\n", + " rt = trainer.predict(net, dataloaders=dl_test)\n", + " y_test_pred = np.concatenate(rt)\n", + "\n", + " # get original df\n", + " splits = dm.splits[split]\n", + " df = ds2df(dm.dm_orig).rename(columns=lambda s:s.replace('_base',''))\n", + " df['y'] = dm.ds['y']\n", + " df_test = df.iloc[splits[0] : splits[1]].copy()\n", + " df_test[\"probe_pred\"] = y_test_pred\n", + "\n", + " if verbose:\n", + " print(f\"probe results on subsets of the data for {split}\")\n", + " acc = get_acc_subset(df_test, \"\", verbose=verbose)\n", + " get_acc_subset(\n", + " df_test, \"instructed_to_lie==True\", verbose=verbose\n", + " ) # it was ph told to lie\n", + " get_acc_subset(\n", + " df_test, \"instructed_to_lie==False\", verbose=verbose\n", + " ) # it was told not to lie\n", + " get_acc_subset(\n", + " df_test, \"ans==label_true\", verbose=verbose\n", + " ) # the llm gave the true ans\n", + " get_acc_subset(\n", + " df_test, \"ans==label_instructed\", verbose=verbose\n", + " ) # the llm gave the desired ans\n", + " acc_lie_lie = get_acc_subset(\n", + " df_test, \"instructed_to_lie==True & ans==label_instructed\", verbose=verbose\n", + " ) # it was told to lie, and it did lie\n", + " acc_lie_truth = get_acc_subset(\n", + " df_test, \"instructed_to_lie==True & ans!=label_instructed\", verbose=verbose\n", + " )\n", + "\n", + " a = get_acc_subset(\n", + " df_test, \"instructed_to_lie==False & ans==label_instructed\", verbose=False\n", + " )\n", + " b = get_acc_subset(\n", + " df_test, \"instructed_to_lie==False & ans!=label_instructed\", verbose=False\n", + " )\n", + " c = get_acc_subset(\n", + " df_test, \"instructed_to_lie==True & ans==label_instructed\", verbose=False\n", + " )\n", + " d = get_acc_subset(\n", + " df_test, \"instructed_to_lie==True & ans!=label_instructed\", verbose=False\n", + " )\n", + " \n", + "\n", + " df_confusion = pd.DataFrame(\n", + " [[a, b], [c, d]],\n", + " index=[\"tell a truth\", \"tell a lie\"],\n", + " columns=[\"did\", \"didn't\"],\n", + " )\n", + " df_confusion.index.name = \"instructed to\"\n", + " df_confusion.columns.name = \"llm gave\"\n", + "\n", + "\n", + " if verbose:\n", + " print(f\"⭐PRIMARY METRIC⭐ acc={acc:2.2%} from probe on {split}\")\n", + " print(f\"⭐SECONDARY METRIC⭐ acc_lie_lie={acc_lie_lie:2.2%} from probe on {split}\")\n", + " \n", + " print(\"\\n\\nprobe accuracy for quadrants:\")\n", + " print(df_confusion.round(2).to_markdown())\n", + " print('\\n\\n')\n", + "\n", + "\n", + " return dict(acc=acc, acc_lie_lie=acc_lie_lie, acc_lie_truth=acc_lie_truth, df_test=df_test, df_confusion=df_confusion)\n", + "\n", + "\n", + "# r = testval_metrics = calc_metrics(dm, trainer3, net, use_val=True)\n", + "# r['df_test']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# visualize latent space\n", + "from matplotlib import cm\n", + "\n", + "\n", + "def plot_latent(latent):\n", + "\n", + " # plot image of latent space\n", + " vmax = latent.abs().max()\n", + " for i in range(4):\n", + " plt.subplot(2, 2, i + 1)\n", + " vmax = latent[i].abs().max()\n", + " plt.imshow(\n", + " latent[i],\n", + " cmap=cm.coolwarm,\n", + " interpolation=\"none\",\n", + " aspect=\"auto\",\n", + " vmin=-vmax,\n", + " vmax=vmax,\n", + " )\n", + " plt.xlabel(\"layer\")\n", + " plt.ylabel(\"neuron\")\n", + " if i < 2:\n", + " plt.xlabel(\"\")\n", + " plt.xticks([])\n", + " if i % 2 == 1:\n", + " plt.ylabel(\"\")\n", + " plt.yticks([])\n", + " plt.grid(False)\n", + " plt.colorbar()\n", + " # plt.colorbar()\n", + " plt.subplots_adjust(wspace=0.05, hspace=0.05)\n", + " plt.show()\n", + "\n", + " # histogram\n", + " latentf = rearrange(latent, \"b n l -> (b n) l\").flatten()\n", + " vmax = (latentf.abs().mean() + 5 * latentf.abs().std()).item()\n", + " plt.hist(latentf, bins=55, range=[-vmax, vmax], histtype=\"step\")\n", + " plt.title(\"latents by layer\")\n", + " plt.show()\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -3584,18 +3739,6 @@ "rs3 = rename_pl_test_results(rs3r, [\"train\", \"val\", \"test\", \"ood\"])" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "5/10 [00:04<00:04, 1.10it/s, v_num=295, val/loss_pred=0.0849, val/loss_rec=9.58e+5, train/loss_pred=0.350, train/loss_rec=9.8e+5]\n" - ] - }, { "cell_type": "code", "execution_count": 94, @@ -3623,45 +3766,6 @@ } ], "source": [ - "# visualize latent space\n", - "from matplotlib import cm\n", - "\n", - "\n", - "def plot_latent(latent):\n", - "\n", - " # plot image of latent space\n", - " vmax = latent.abs().max()\n", - " for i in range(4):\n", - " plt.subplot(2, 2, i + 1)\n", - " vmax = latent[i].abs().max()\n", - " plt.imshow(\n", - " latent[i],\n", - " cmap=cm.coolwarm,\n", - " interpolation=\"none\",\n", - " aspect=\"auto\",\n", - " vmin=-vmax,\n", - " vmax=vmax,\n", - " )\n", - " plt.xlabel(\"layer\")\n", - " plt.ylabel(\"neuron\")\n", - " if i < 2:\n", - " plt.xlabel(\"\")\n", - " plt.xticks([])\n", - " if i % 2 == 1:\n", - " plt.ylabel(\"\")\n", - " plt.yticks([])\n", - " plt.grid(False)\n", - " plt.colorbar()\n", - " # plt.colorbar()\n", - " plt.subplots_adjust(wspace=0.05, hspace=0.05)\n", - " plt.show()\n", - "\n", - " # histogram\n", - " latentf = rearrange(latent, \"b n l -> (b n) l\").flatten()\n", - " vmax = (latentf.abs().mean() + 5 * latentf.abs().std()).item()\n", - " plt.hist(latentf, bins=55, range=[-vmax, vmax], histtype=\"step\")\n", - " plt.title(\"latents by layer\")\n", - " plt.show()\n", "\n", "\n", "latent = y[\"latent\"].cpu() # .reshape(64, 24, 12) # [Batch, Latent, Layer]\n", @@ -3695,114 +3799,6 @@ "outputs": [], "source": [] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# helpers" - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "metadata": {}, - "outputs": [], - "source": [ - "from src.eval.ds import ds2df\n", - "\n", - "def get_acc_subset(df, query, verbose=True):\n", - " assert (df['y'].mean()<0).any(), 'y should be [-1, 1]'\n", - " assert (df['y'].mean()>-1).all(), 'y should be [-1, 1]'\n", - " assert (df['y'].mean()<1).all(), 'y should be [-1, 1]'\n", - " assert (df['probe_pred'].mean()>0).all(), 'pred should be [0,1]'\n", - " assert (df['probe_pred'].mean()<1).all(), 'pred should be [0,1]'\n", - "\n", - " if query:\n", - " df = df.query(query)\n", - " # df[\"probe_cls\"] = df[\"probe_pred\"] > 0.5\n", - " acc = ((df[\"probe_pred\"]>0.5) == (df[\"y\"]>0)).mean()\n", - " if verbose:\n", - " print(f\"acc={acc:2.2%},\\tn={len(df)},\\t[{query}] \")\n", - " return acc\n", - "\n", - "\n", - "def calc_metrics(dm, net, trainer=None, split=\"test\", verbose=True):\n", - "\n", - " # predict\n", - " dl_test = dm.create_dataloader(split)\n", - " if trainer is None:\n", - " trainer = pl.Trainer(logger=False, enable_progress_bar=False, enable_model_summary=False)\n", - " rt = trainer.predict(net, dataloaders=dl_test)\n", - " y_test_pred = np.concatenate(rt)\n", - "\n", - " # get original df\n", - " splits = dm.splits[split]\n", - " df = ds2df(dm.dm_orig).rename(columns=lambda s:s.replace('_base',''))\n", - " df['y'] = dm.ds['y']\n", - " df_test = df.iloc[splits[0] : splits[1]].copy()\n", - " df_test[\"probe_pred\"] = y_test_pred\n", - "\n", - " if verbose:\n", - " print(f\"probe results on subsets of the data for {split}\")\n", - " acc = get_acc_subset(df_test, \"\", verbose=verbose)\n", - " get_acc_subset(\n", - " df_test, \"instructed_to_lie==True\", verbose=verbose\n", - " ) # it was ph told to lie\n", - " get_acc_subset(\n", - " df_test, \"instructed_to_lie==False\", verbose=verbose\n", - " ) # it was told not to lie\n", - " get_acc_subset(\n", - " df_test, \"ans==label_true\", verbose=verbose\n", - " ) # the llm gave the true ans\n", - " get_acc_subset(\n", - " df_test, \"ans==label_instructed\", verbose=verbose\n", - " ) # the llm gave the desired ans\n", - " acc_lie_lie = get_acc_subset(\n", - " df_test, \"instructed_to_lie==True & ans==label_instructed\", verbose=verbose\n", - " ) # it was told to lie, and it did lie\n", - " acc_lie_truth = get_acc_subset(\n", - " df_test, \"instructed_to_lie==True & ans!=label_instructed\", verbose=verbose\n", - " )\n", - "\n", - " a = get_acc_subset(\n", - " df_test, \"instructed_to_lie==False & ans==label_instructed\", verbose=False\n", - " )\n", - " b = get_acc_subset(\n", - " df_test, \"instructed_to_lie==False & ans!=label_instructed\", verbose=False\n", - " )\n", - " c = get_acc_subset(\n", - " df_test, \"instructed_to_lie==True & ans==label_instructed\", verbose=False\n", - " )\n", - " d = get_acc_subset(\n", - " df_test, \"instructed_to_lie==True & ans!=label_instructed\", verbose=False\n", - " )\n", - " \n", - "\n", - " df_confusion = pd.DataFrame(\n", - " [[a, b], [c, d]],\n", - " index=[\"tell a truth\", \"tell a lie\"],\n", - " columns=[\"did\", \"didn't\"],\n", - " )\n", - " df_confusion.index.name = \"instructed to\"\n", - " df_confusion.columns.name = \"llm gave\"\n", - "\n", - "\n", - " if verbose:\n", - " print(f\"⭐PRIMARY METRIC⭐ acc={acc:2.2%} from probe on {split}\")\n", - " print(f\"⭐SECONDARY METRIC⭐ acc_lie_lie={acc_lie_lie:2.2%} from probe on {split}\")\n", - " \n", - " print(\"\\n\\nprobe accuracy for quadrants:\")\n", - " print(df_confusion.round(2).to_markdown())\n", - " print('\\n\\n')\n", - "\n", - "\n", - " return dict(acc=acc, acc_lie_lie=acc_lie_lie, acc_lie_truth=acc_lie_truth, df_test=df_test, df_confusion=df_confusion)\n", - "\n", - "\n", - "# r = testval_metrics = calc_metrics(dm, trainer3, net, use_val=True)\n", - "# r['df_test']" - ] - }, { "cell_type": "code", "execution_count": null, @@ -6036,14 +6032,14 @@ }, { "cell_type": "code", - "execution_count": 102, + "execution_count": 110, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqMAAAEzCAYAAAAFEQq2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA4C0lEQVR4nO3de1xUdeL/8ffMAIqKxkURTPOWVK6X1MpVy8zrqoRfjRVX/Rneso22b2mpZbuZlEGWtblL5drFsmzZLMvUbpsmmlbeKvuaYVmi3MELitDMnN8f5ASKwhyRM+jr+Xj4ePiZOWfO57wZ4M05Z2ZshmEYAgAAACxgt3oCAAAAuHhRRgEAAGAZyigAAAAsQxkFAACAZSijAAAAsAxlFAAAAJahjAIAAMAylFEAAABYhjIKAAAAy1BGAQAAYBnKKAAAACxDGQWAGrJ27VqNGjVK1113nbp37667775bxcXFmjVrlh5++GHPcl9//bWioqIkSRkZGerUqZMeeugh9ejRQy+++KJcLpf++c9/6qabbtI111yj+Ph47dmzx7P+9u3bNXr0aF199dUaMGCAVqxYUev7CgA1xc/qCQDAhSAzM1P33XeflixZomuuuUYZGRkaM2aMVq1aVeW6paWlCgwM1GeffaaSkhItWrRIq1ev1r/+9S9deuml+te//qWJEydq9erVcrlcmjp1qhISEvTqq69q165duvXWWxUVFaWOHTvWwp4CQM2ijAJADQgNDdV7772nli1b6vDhw8rLy1NwcLCys7OrtX5MTIz8/f3l7++vt956S3fffbfatm0rSfrzn/+st956S+vXr5fT6VRISIgmTJggSeratatee+01XXrppedt3wDgfKKMAkAN8Pf314oVK5Samqp69erpiiuu0IkTJ2QYRrXWb9asmef/eXl5atGiRYX7W7RooczMTElSZGRkhfuuuuqqc5w9AFiHMgoANWDNmjV6++239Z///EfNmzeXJMXFxUmS7Ha7fvnlF8+yhw4dOutjRUZGKiMjQz169JAkGYah/fv3KywsTA6HQ1lZWRWWf+2119ShQwfP8gBQl/ACJgCoAYcPH5bdbldAQICcTqdSU1O1c+dO/fLLL2rdurXS0tJUWFiow4cP6+WXXz7rY40cOVIpKSn64YcfVFpaqpSUFBUVFenGG29U3759VVBQoNdff10ul0s7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AAAsQxkFAACAZSijAAAAsAxlFAAAAJahjAIAAMAylFEAAABYhjIKAAAAy1BGAQAAYBnKKAAAACxDGQUAAIBlKKMAAACwDGUUAAAAlqGMAgAAwDKUUQAAAFiGMgoAAADLUEYBAABgGcooAAAALEMZBQAAgGX8vF1hw4YNWrBggUpKShQREaGkpCQ1a9bMc39+fr4mTpxYYZ309HRNnTpVd911lxYtWqTly5crNDRUkhQYGKjly5ef424AAACgLvKqjBYUFGjGjBlaunSpoqKitHTpUs2ePVtLlizxLBMaGqqVK1d6xqmpqVq+fLluu+02SdLWrVs1b9489evXr4Z2AQAAAHWVV6fp09LSFBUVpaioKElSXFyctmzZotzc3EqXP3DggJ544gktWLBA9evXl8vl0o4dO5SamqqYmBhNmjRJu3fvPve9AAAAQJ3k1ZHRrKwsRUREeMYBAQEKDg5WZmammjZtetryTz/9tGJjY9WmTRtJUl5enrp166Y777xTV155pVavXq3JkydrzZo1CgoKMrUDNpup1Uxtoza2daEhO3PIzTyyM4/szCM788jOvAslO6/KqGEYslWyx3b76QdYc3Jy9OGHH2rdunWe28LDwyuc0h86dKhSUlK0bds29e3b15upSJKCgxt6vc65CA01V5hBdmaRm3lkZx7ZmUd25pGdeXU9O6/KaGRkpDZv3uwZl5aWqrCwUJGRkact+/7776tfv35q0qSJ57b09HRt375dsbGxntsMw5C/v7+Zuauw8JhcLrepdb1hs5V9ofPzj8owzvvmLihkZw65mUd25pGdeWRnHtmZ5+vZORz2ah049KqM9u7dW4mJidqzZ486dOig1NRUdenSRSEhIactu2XLltOOdvr7+2v+/Pnq2rWrLr/8cn388ccqKipS9+7dvZlGBbUZvmHU7vYuJGRnDrmZR3bmkZ15ZGce2ZlX17PzqoyGhIRo4cKFmjlzpkpKShQaGqrk5GRJUkxMjBITE9WpUydJ0r59+/SnP/2pwvqXXXaZHn30UU2fPl0ul0tBQUF69tlnVa9evRraHQAAANQlNsOou126sPCYnM7aOU0fFhakvDzfPAzuy8jOHHIzj+zMIzvzyM48sjPP17Pz86veaXo+gQkAAACWoYwCAADAMpRRAAAAWIYyCgAAAMtQRgEAAGAZyigAAAAsQxkFAACA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2872PCPH31SWXefOnXX11VdLkkpKSvT4449r6NChkspybd68uWdZsquYnSTNnj1bEyZMUIcOHSrcXlefd5TRszAMQzab7bTb7XZiO5OioiIlJCTowIEDSkpKkqTTMqws04vZqlWr9PPPP+v2228/7b7KsiK/3zidTm3cuFEjRozQihUrNGnSJE2dOlVOp5PsqvDdd9/p73//u9555x19+umnmjNnjqZMmSK32833rBfO9jwjx6rl5ORowoQJCgoK0n333Sep8t+9/N79zXPPPaewsDDFxMRUen9dfN7x1T2LyMhIZWdne8alpaUqLCxUZGSkhbPyXT/++KNuueUWNWrUSC+//LIaN258WobZ2dnkd4o333xTP//8s0aMGOH54TJp0iQ1a9bstOwaNmyoJk2aWDVVnxMeHq7WrVurR48ekspO0/v5+VX6vCO7itLS0tSpUye1bdtWkhQdHS2XyyWXy8X3bDWd7XnGz76q7dy5U6NGjVKPHj20aNEiBQQESJJatGhxWnblj/Zd7N566y19+eWXiomJ0dSpU+VyuRQTE6Off/65zj7vKKNn0bt3b3377bfas2ePJCk1NVVdunTxXBeJ3xw8eFBjx45VbGyskpOTVa9ePUnSwIED9d577+nIkSNyu91avny55/o+lHnxxRe1evVqrVy5UitXrpRU9mrIwYMHa/369Z4fLMuWLdOAAQM4QlDODTfcoMzMTM8r6Ldu3arS0lINGDCA7KrQsWNHbd261fPODV988YWcTqduvfVWvmerqX///md8nvGz7+x27dqliRMnatasWZoxY0aF782BAwdqxYoVKi0t1YkTJ/Tmm2+SXTlr167Vu+++q5UrV+r555+Xw+HQypUr1apVqzr7vPOzegK+LCQkRAsXLtTMmTNVUlKi0NBQJScnWz0tn7RkyRIdOXJE77zzjt555x3P7c8//7xGjRqlMWPGyOl0qlu3bpWejsbpLr/8ct13332aPHmyfvnlF7Vp00aPPfaY1dPyKWFhYXruuef06KOP6vjx43I4HHrmmWd0xRVXkF0VevbsqTvuuEPx8fHy9/dXgwYNlJKSom7duumnn37ie7YazvY9esMNN2jv3r3keAbPPPOM3G63nn/+eT3//POe21euXKk//vGPysjI0P/8z//ol19+0YABAzRq1CgLZ1t31NXnnc0wLvI37wIAAIBlOGcFAAAAy1BGAQAAYBnKKAAAACxDGQUAAIBlKKMAAACwDGUUAAAAlqGMAkAdk5GRoaioKBUUFFg9FQA4Z5RRAAAAWIYyCgA1ID09XfHx8br22ms1ePBgLV++XJI0a9YsPfjgg4qLi1PXrl0VFxfn+YhhSdqyZYtGjx6t7t27a8iQIXrjjTc89xUVFen+++/Xtddeq+uuu04zZ87U8ePHPfe/8cYbGjRokLp27aq77rqrwn0AUFdQRgHgHB07dkzx8fHq1auXNm7cqKefflopKSn66KOPJElvv/227rjjDn3++efq0aOHpk2bptLSUu3du1eTJ0/WmDFjtGXLFiUlJWnhwoV67733JElz585VRkaG1qxZo48++kgHDx7Uk08+6dnuDz/8oLffflvvv/++tm3bpjfffNOS/QeAc8Fn0wPAOVq/fr3q16+vKVOmSJKuuOIKjR07Vv/+978VEhKiIUOG6Prrr5ck3XXXXVq2bJm2bdumLVu2qHv37hoxYoQkqUuXLho/frzefPNNDRw4UGvXrtXSpUsVGhoqSXr88cd14sQJz3Zvv/12NWjQQA0aNNC1116rn3/+uXZ3HABqAGUUAM7RgQMHdPDgQfXo0cNzm9vt1qWXXqqQkBBddtllntv9/f0VFhamvLw85efnq0WLFhUe69JLL9W7776rw4cPq7S0VJGRkZ77mjdvLqnsBUySdMkll1R4XJfLdT52DwDOK8ooAJyj8PBwXXHFFRVOk+fn58vpdGrhwoXKzs723F5aWqrc3Fw1b95cERER2rx5c4XH2r9/v5o2baqQkBD5+/srKytL4eHhkqRdu3Zpy5YtGjRoUO3sGADUAq4ZBYBzdOONNyorK0tvvPGGnE6nsrKyFB8fr8WLF0uSVq1ape3bt6u0tFRPPvmkwsPDdfXVV2v48OHasWOH3n77bTmdTu3cuVOvvvqqRowYIYfDoejoaP3973/XoUOHdOTIES1YsEBZWVkW7y0A1CzKKACco8aNG2vJkiVavXq1evXqpZEjR6p79+667777JEnXXHONkpOT1bNnT+3evVuLFy+Ww+FQy5Yt9dxzz2nZsmW69tprNX36dN1xxx0aNWqUJOmBBx5QixYtNHz4cA0aNEgtW7bU9OnTrdxVAKhxNsMwDKsnAQAXqlmzZqlBgwb661//avVUAMAncWQUAAAAlqGMAgAAwDKcpgcAAIBlODIKAAAAy1BGAQAAYBnKKAAAACxDGQUAAIBlKKMAAACwDGUUAAAAlqGMAgAAwDKUUQAAAFiGMgoAAADL/H8AcqR23m6LuAAAAABJRU5ErkJggg==", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -6051,9 +6047,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAApwAAAEzCAYAAACc6dMDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFpElEQVR4nO3dd3hTZf8G8Psk3bSF7sVexReljLI3Miq0lG2RJYKIiCJ7KChLaEGqgMqQFy2iAgKyQfFlIwhUHPhjtCq0pbuhpXSkSc7vj2rook1OkyZt7s91cV09yUnON3fT9svznPNEEEVRBBERERGRkchMXQARERER1WxsOImIiIjIqNhwEhEREZFRseEkIiIiIqNiw0lERERERsWGk4iIiIiMig0nERERERkVG04iIiIiMio2nERERERkVGw4icjsxcfHw9/fHxkZGaYuxeCCg4Oxb98+U5dRpsuXL6NNmzamLoOIagA2nERERERkVGw4iahauXnzJl588UUEBgbi2WefxaZNm6BWqwEAt27dQlhYGAIDA9G3b1+Eh4dr7zt69CiCgoIQGBiIkJAQ7N+/X6fjLViwAIsXL0ZYWBhat26NsLAw3L59G0DhCGDfvn0xffp0BAYG4tixY8jPz0d4eDh69eqFLl26YP78+cjMzNQ+39GjR9GvXz+0adMGS5YsQUFBgc6vPTo6Wvv6QkJCcPLkSe1948aNQ3h4OIKDg9GmTRtMmjQJSUlJ2vtPnDiBwYMHo23btggNDS322JSUFLz++uto164dunTpglWrVmlzE0URGzduRJ8+fdC2bVu888470Gg0OtdMRAQAEImIzFxcXJzYvHlzMT09XWzfvr24adMmMT8/X4yJiRH79esnbt68WRRFURw9erT40UcfiRqNRkxISBC7d+8u/u9//xNzcnLEli1bileuXBFFURTPnz8vBgQEiBkZGRUee/78+eLTTz8tnj17VszPzxfXrFkj9u7dW8zPzxcvXbokNm/eXIyKihLz8/PF3Nxccfny5eLo0aPFlJQU8eHDh+KsWbPEadOmiaIoirdv3xZbtmwpnj59WlQqleKWLVvE5s2bi3v37q2wjvv374utW7cWDx48KKpUKvHSpUtiYGCgeOPGDVEURXHs2LFihw4dxF9//VXMyckRZ8+eLY4aNUoURVG8ePGi2KpVK/Hs2bOiSqUST58+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pGN20jE76ZiddOaenVwu02lwUK+G09fXF5cuXdJuK5VKKBSKUs2kSqXCsmXLcPHiRe35npVRlQGLYtUeryZhdtIxO2mYm3TMTjpmJx2zk666Z1f20OQTdO3aFX/88Qdu374NANizZw8CAgLg6upabL958+YhJiYGe/furXSzSURERETVm14jnK6uroiMjMT8+fORn58PNzc3REREAABCQ0OxYsUKCIKAI0eOoH79+hg/frz2sWFhYRg9erRhqyciIiIis6f3OpxdunTB/v37S91+4MAB7de3bt2qXFVEREREVGPoNaVORERERKQvNpxEREREZFRsOImIiIjIqNhwEhEREZFRseEkIiIiIqNiw0lERERERsWGk4iIiIiMig0nERERERkVG04iIiIiMio2nERERERkVGw4iYiIiMio2HASERERkVGx4SQiIiIio7IydQE1gajMRd6FHVAnx0Du1RR2XcdBsLE3dVlEREREZoENpwHkXdgBVcwlQNRA9TANeQDse08xdVlEREREZoFT6gagTo4BRE3hhqiBOjnWtAURERERmRE2nAYg92oKCP9EKcgg92pi2oKIiIiIzAin1A3Arus45AFQJ8dC7tUEtu1HIPfUFp7TSURERAQ2nAYh2NgXO2cz99QWntNJRERE9A9OqRsBz+kkIiIieowNpxHwnE4iIiKixzilbgQVndNp234E8q98w3M8iYiIyCKw4TSCis7pVCfdgZidznM8iYiIyCLoNaV+7tw5hIaGIigoCBMnTkRKSkqpfRQKBaZOnYqBAwdiwIABOHnypMGKra5KntMpZmcU21b9FY3sr+ch99QWiMpc0xVKREREZASCKIqiLjtmZGTgueeeQ1RUFPz9/REVFYUzZ85g27ZtxfZ78803Ub9+fcyaNQvx8fF4/vnn8c0338DHx0dSgQrFI6hUGkmP1YcgAO7uTkhLewjdEtFd0RFOCDIIjm7aEc7iRcggbxQIQW71xOl3c91G2p+Ae+NKPZ/MvSEEQYA69S+zem3mkJ2lZlNeFsi4W+n3XHXflvq+MMTPq7ltV9XPSHXIzlx/X5giO3PNoqqyq4pT9qysZHBxqVXhfjo3nAcPHsQ333yDqKgoAIBSqUTbtm1x6tQpeHh4AABUKhXatWuHY8eOwdfXFwAwf/58NGnSBFOmSJsyVigeQa2umobTzc0J6emG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", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -6090,15 +6086,17 @@ " val/l2_loss\n", " val/l1_loss\n", " val/n\n", - " val/loss_rec_epoch\n", - " val/loss_pred_epoch\n", - " train/loss_rec_epoch\n", - " train/acc\n", - " train/n\n", - " train/auroc\n", - " train/l2_loss\n", - " train/l1_loss\n", - " train/loss_pred_epoch\n", + " ...\n", + " test/loss_pred_epoch/dataloader_idx_1\n", + " test/loss_pred_epoch/dataloader_idx_3\n", + " test/n/dataloader_idx_2\n", + " test/auroc/dataloader_idx_0\n", + " test/l1_loss/dataloader_idx_3\n", + " test/n/dataloader_idx_0\n", + " test/loss_rec_epoch/dataloader_idx_0\n", + " test/loss_pred_epoch/dataloader_idx_2\n", + " test/auroc/dataloader_idx_1\n", + " test/n/dataloader_idx_3\n", " \n", " \n", " epoch\n", @@ -6121,6 +6119,8 @@ " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -6136,15 +6136,17 @@ " 3012817.00\n", " 13851.958008\n", " 154.0\n", - " 3019743.00\n", - " 0.611525\n", - " 820181.3125\n", - " 0.628664\n", + " ...\n", + " 1.310034\n", + " 0.637557\n", + " 154.0\n", + " 1.0\n", + " 14217.738281\n", " 307.0\n", - " 0.666835\n", - " 812656.1875\n", - " 15050.151367\n", - " 6.528779e-01\n", + " 1155878.375\n", + " 1.236051\n", + " 0.896026\n", + " 615.0\n", " \n", " \n", " 1.0\n", @@ -6158,15 +6160,17 @@ " 3012809.00\n", " 13851.958008\n", " 154.0\n", - " 3019734.75\n", - " 0.439190\n", - " 820181.1875\n", - " 0.928339\n", + " ...\n", + " 1.310034\n", + " 0.637557\n", + " 154.0\n", + " 1.0\n", + " 14217.738281\n", " 307.0\n", - " 0.993292\n", - " 812656.1875\n", - " 15050.151367\n", - " 2.467093e-01\n", + " 1155878.375\n", + " 1.236051\n", + " 0.896026\n", + " 615.0\n", " \n", " \n", " 2.0\n", @@ -6180,15 +6184,17 @@ " 3012816.25\n", " 13851.958008\n", " 154.0\n", - " 3019742.25\n", - " 0.763715\n", - " 820181.1875\n", - " 0.882736\n", + " ...\n", + " 1.310034\n", + " 0.637557\n", + " 154.0\n", + " 1.0\n", + " 14217.738281\n", " 307.0\n", - " 1.000000\n", - " 812656.1875\n", - " 15050.151367\n", - " 2.333713e-01\n", + " 1155878.375\n", + " 1.236051\n", + " 0.896026\n", + " 615.0\n", " \n", " \n", " 3.0\n", @@ -6202,15 +6208,17 @@ " 3012817.25\n", " 13851.958008\n", " 154.0\n", - " 3019743.00\n", - " 0.698299\n", - " 820181.1875\n", - " 0.869707\n", + " ...\n", + " 1.310034\n", + " 0.637557\n", + " 154.0\n", + " 1.0\n", + " 14217.738281\n", " 307.0\n", - " 1.000000\n", - " 812656.1875\n", - " 15050.151367\n", - " 2.579266e-01\n", + " 1155878.375\n", + " 1.236051\n", + " 0.896026\n", + " 615.0\n", " \n", " \n", " 4.0\n", @@ -6224,15 +6232,17 @@ " 3012817.25\n", " 13851.958008\n", " 154.0\n", - " 3019743.00\n", - " 0.431546\n", - " 820181.1875\n", - " 0.983713\n", + " ...\n", + " 1.310034\n", + " 0.637557\n", + " 154.0\n", + " 1.0\n", + " 14217.738281\n", " 307.0\n", - " 1.000000\n", - " 812656.1875\n", - " 15050.151367\n", - " 7.176732e-02\n", + " 1155878.375\n", + " 1.236051\n", + " 0.896026\n", + " 615.0\n", " \n", " \n", " ...\n", @@ -6255,28 +6265,8 @@ " ...\n", " ...\n", " ...\n", - " \n", - " \n", - " 139.0\n", - " 1399\n", - " 503501.21875\n", - " 0.000000\n", - " 1.903582\n", - " 2828646.50\n", - " 0.896026\n", - " 0.805195\n", - " 3012817.25\n", - " 13851.958008\n", - " 154.0\n", - " 3019743.00\n", - " 1.310021\n", - " 820181.1875\n", - " 1.000000\n", - " 307.0\n", - " 1.000000\n", - " 812656.1875\n", - " 15050.151367\n", - " 1.825028e-08\n", + " ...\n", + " ...\n", " \n", " \n", " 140.0\n", @@ -6290,15 +6280,17 @@ " 3012817.25\n", " 13851.958008\n", " 154.0\n", - " 3019743.00\n", - " 1.310019\n", - " 820181.1875\n", - " 1.000000\n", + " ...\n", + " 1.310034\n", + " 0.637557\n", + " 154.0\n", + " 1.0\n", + " 14217.738281\n", " 307.0\n", - " 1.000000\n", - " 812656.1875\n", - " 15050.151367\n", - " 1.825028e-08\n", + " 1155878.375\n", + " 1.236051\n", + " 0.896026\n", + " 615.0\n", " \n", " \n", " 141.0\n", @@ -6312,15 +6304,17 @@ " 3012817.25\n", " 13851.958008\n", " 154.0\n", - " 3019743.00\n", - " 1.310033\n", - " 820181.1875\n", - " 1.000000\n", + " ...\n", + " 1.310034\n", + " 0.637557\n", + " 154.0\n", + " 1.0\n", + " 14217.738281\n", " 307.0\n", - " 1.000000\n", - " 812656.1875\n", - " 15050.151367\n", - " 1.825028e-08\n", + " 1155878.375\n", + " 1.236051\n", + " 0.896026\n", + " 615.0\n", " \n", " \n", " 142.0\n", @@ -6334,19 +6328,21 @@ " 3012817.25\n", " 13851.958008\n", " 154.0\n", - " 3019743.00\n", + " ...\n", " 1.310034\n", - " 820181.1875\n", - " 1.000000\n", + " 0.637557\n", + " 154.0\n", + " 1.0\n", + " 14217.738281\n", " 307.0\n", - " 1.000000\n", - " 812656.1875\n", - " 15050.151367\n", - " 1.786198e-08\n", + " 1155878.375\n", + " 1.236051\n", + " 0.896026\n", + " 615.0\n", " \n", " \n", " 143.0\n", - " 1439\n", + " 19\n", " 503501.21875\n", " 0.000000\n", " 1.903596\n", @@ -6356,19 +6352,45 @@ " 3012817.25\n", " 13851.958008\n", " 154.0\n", - " 3019743.00\n", + " ...\n", " 1.310034\n", - " 820181.1875\n", - " 1.000000\n", + " 0.637557\n", + " 154.0\n", + " 1.0\n", + " 14217.738281\n", " 307.0\n", - " 1.000000\n", - " 812656.1875\n", - " 15050.151367\n", - " 1.786198e-08\n", + " 1155878.375\n", + " 1.236051\n", + " 0.896026\n", + " 615.0\n", + " \n", + " \n", + " 144.0\n", + " 1440\n", + " 503501.21875\n", + " 0.000000\n", + " 1.903596\n", + " 2828646.50\n", + " 0.896026\n", + " 0.805195\n", + " 3012817.25\n", + " 13851.958008\n", + " 154.0\n", + " ...\n", + " 1.310034\n", + " 0.637557\n", + " 154.0\n", + " 1.0\n", + " 14217.738281\n", + " 307.0\n", + " 1155878.375\n", + " 1.236051\n", + " 0.896026\n", + " 615.0\n", " \n", " \n", "\n", - "

144 rows × 19 columns

\n", + "

145 rows × 55 columns

\n", "" ], "text/plain": [ @@ -6380,11 +6402,11 @@ "3.0 39 503501.21875 0.313528 0.762115 \n", "4.0 49 503501.21875 0.021419 0.486138 \n", "... ... ... ... ... \n", - "139.0 1399 503501.21875 0.000000 1.903582 \n", "140.0 1409 503501.21875 0.000000 1.903575 \n", "141.0 1419 503501.21875 0.000000 1.903596 \n", "142.0 1429 503501.21875 0.000000 1.903595 \n", - "143.0 1439 503501.21875 0.000000 1.903596 \n", + "143.0 19 503501.21875 0.000000 1.903596 \n", + "144.0 1440 503501.21875 0.000000 1.903596 \n", "\n", " val/loss_rec_step val/auroc val/acc val/l2_loss val/l1_loss \\\n", "epoch \n", @@ -6394,58 +6416,100 @@ "3.0 2828646.50 0.891895 0.675325 3012817.25 13851.958008 \n", "4.0 2828646.50 0.896082 0.818182 3012817.25 13851.958008 \n", "... ... ... ... ... ... \n", - "139.0 2828646.50 0.896026 0.805195 3012817.25 13851.958008 \n", "140.0 2828646.50 0.896026 0.805195 3012817.25 13851.958008 \n", "141.0 2828646.50 0.896026 0.805195 3012817.25 13851.958008 \n", "142.0 2828646.50 0.896026 0.805195 3012817.25 13851.958008 \n", "143.0 2828646.50 0.896026 0.805195 3012817.25 13851.958008 \n", + "144.0 2828646.50 0.896026 0.805195 3012817.25 13851.958008 \n", "\n", - " val/n val/loss_rec_epoch val/loss_pred_epoch train/loss_rec_epoch \\\n", - "epoch \n", - "0.0 154.0 3019743.00 0.611525 820181.3125 \n", - "1.0 154.0 3019734.75 0.439190 820181.1875 \n", - "2.0 154.0 3019742.25 0.763715 820181.1875 \n", - "3.0 154.0 3019743.00 0.698299 820181.1875 \n", - "4.0 154.0 3019743.00 0.431546 820181.1875 \n", - "... ... ... ... ... \n", - "139.0 154.0 3019743.00 1.310021 820181.1875 \n", - "140.0 154.0 3019743.00 1.310019 820181.1875 \n", - "141.0 154.0 3019743.00 1.310033 820181.1875 \n", - "142.0 154.0 3019743.00 1.310034 820181.1875 \n", - "143.0 154.0 3019743.00 1.310034 820181.1875 \n", + " val/n ... test/loss_pred_epoch/dataloader_idx_1 \\\n", + "epoch ... \n", + "0.0 154.0 ... 1.310034 \n", + "1.0 154.0 ... 1.310034 \n", + "2.0 154.0 ... 1.310034 \n", + "3.0 154.0 ... 1.310034 \n", + "4.0 154.0 ... 1.310034 \n", + "... ... ... ... \n", + "140.0 154.0 ... 1.310034 \n", + "141.0 154.0 ... 1.310034 \n", + "142.0 154.0 ... 1.310034 \n", + "143.0 154.0 ... 1.310034 \n", + "144.0 154.0 ... 1.310034 \n", "\n", - " train/acc train/n train/auroc train/l2_loss train/l1_loss \\\n", + " test/loss_pred_epoch/dataloader_idx_3 test/n/dataloader_idx_2 \\\n", + "epoch \n", + "0.0 0.637557 154.0 \n", + "1.0 0.637557 154.0 \n", + "2.0 0.637557 154.0 \n", + "3.0 0.637557 154.0 \n", + "4.0 0.637557 154.0 \n", + "... ... ... \n", + "140.0 0.637557 154.0 \n", + "141.0 0.637557 154.0 \n", + "142.0 0.637557 154.0 \n", + "143.0 0.637557 154.0 \n", + "144.0 0.637557 154.0 \n", + "\n", + " test/auroc/dataloader_idx_0 test/l1_loss/dataloader_idx_3 \\\n", + "epoch \n", + "0.0 1.0 14217.738281 \n", + "1.0 1.0 14217.738281 \n", + "2.0 1.0 14217.738281 \n", + "3.0 1.0 14217.738281 \n", + "4.0 1.0 14217.738281 \n", + "... ... ... \n", + "140.0 1.0 14217.738281 \n", + "141.0 1.0 14217.738281 \n", + "142.0 1.0 14217.738281 \n", + "143.0 1.0 14217.738281 \n", + "144.0 1.0 14217.738281 \n", + "\n", + " test/n/dataloader_idx_0 test/loss_rec_epoch/dataloader_idx_0 \\\n", "epoch \n", - "0.0 0.628664 307.0 0.666835 812656.1875 15050.151367 \n", - "1.0 0.928339 307.0 0.993292 812656.1875 15050.151367 \n", - "2.0 0.882736 307.0 1.000000 812656.1875 15050.151367 \n", - "3.0 0.869707 307.0 1.000000 812656.1875 15050.151367 \n", - "4.0 0.983713 307.0 1.000000 812656.1875 15050.151367 \n", - "... ... ... ... ... ... \n", - "139.0 1.000000 307.0 1.000000 812656.1875 15050.151367 \n", - "140.0 1.000000 307.0 1.000000 812656.1875 15050.151367 \n", - "141.0 1.000000 307.0 1.000000 812656.1875 15050.151367 \n", - "142.0 1.000000 307.0 1.000000 812656.1875 15050.151367 \n", - "143.0 1.000000 307.0 1.000000 812656.1875 15050.151367 \n", + "0.0 307.0 1155878.375 \n", + "1.0 307.0 1155878.375 \n", + "2.0 307.0 1155878.375 \n", + "3.0 307.0 1155878.375 \n", + "4.0 307.0 1155878.375 \n", + "... ... ... \n", + "140.0 307.0 1155878.375 \n", + "141.0 307.0 1155878.375 \n", + "142.0 307.0 1155878.375 \n", + "143.0 307.0 1155878.375 \n", + "144.0 307.0 1155878.375 \n", "\n", - " train/loss_pred_epoch \n", - "epoch \n", - "0.0 6.528779e-01 \n", - "1.0 2.467093e-01 \n", - "2.0 2.333713e-01 \n", - "3.0 2.579266e-01 \n", - "4.0 7.176732e-02 \n", - "... ... \n", - "139.0 1.825028e-08 \n", - "140.0 1.825028e-08 \n", - "141.0 1.825028e-08 \n", - "142.0 1.786198e-08 \n", - "143.0 1.786198e-08 \n", + " test/loss_pred_epoch/dataloader_idx_2 test/auroc/dataloader_idx_1 \\\n", + "epoch \n", + "0.0 1.236051 0.896026 \n", + "1.0 1.236051 0.896026 \n", + "2.0 1.236051 0.896026 \n", + "3.0 1.236051 0.896026 \n", + "4.0 1.236051 0.896026 \n", + "... ... ... \n", + "140.0 1.236051 0.896026 \n", + "141.0 1.236051 0.896026 \n", + "142.0 1.236051 0.896026 \n", + "143.0 1.236051 0.896026 \n", + "144.0 1.236051 0.896026 \n", "\n", - "[144 rows x 19 columns]" + " test/n/dataloader_idx_3 \n", + "epoch \n", + "0.0 615.0 \n", + "1.0 615.0 \n", + "2.0 615.0 \n", + "3.0 615.0 \n", + "4.0 615.0 \n", + "... ... \n", + "140.0 615.0 \n", + "141.0 615.0 \n", + "142.0 615.0 \n", + "143.0 615.0 \n", + "144.0 615.0 \n", + "\n", + "[145 rows x 55 columns]" ] }, - "execution_count": 102, + "execution_count": 110, "metadata": {}, "output_type": "execute_result" } @@ -6506,7 +6570,7 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 111, "metadata": {}, "outputs": [ { @@ -6520,7 +6584,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7f75ff8cd05b41699ba499de6f4c498c", + "model_id": "48220a0be9ce439b83fdeab5af3fbc66", "version_major": 2, "version_minor": 0 }, @@ -6543,22 +6607,22 @@ "output_type": "stream", "text": [ "probe results on subsets of the data for test\n", - "acc=82.47%,\tn=154,\t[] \n", - "acc=79.41%,\tn=34,\t[instructed_to_lie==True] \n", - "acc=83.33%,\tn=120,\t[instructed_to_lie==False] \n", - "acc=86.21%,\tn=116,\t[ans==label_true] \n", - "acc=86.73%,\tn=98,\t[ans==label_instructed] \n", + "acc=87.01%,\tn=154,\t[] \n", + "acc=85.29%,\tn=34,\t[instructed_to_lie==True] \n", + "acc=87.50%,\tn=120,\t[instructed_to_lie==False] \n", + "acc=91.38%,\tn=116,\t[ans==label_true] \n", + "acc=90.82%,\tn=98,\t[ans==label_instructed] \n", "acc=75.00%,\tn=8,\t[instructed_to_lie==True & ans==label_instructed] \n", - "acc=80.77%,\tn=26,\t[instructed_to_lie==True & ans!=label_instructed] \n", - "⭐PRIMARY METRIC⭐ acc=82.47% from probe on test\n", + "acc=88.46%,\tn=26,\t[instructed_to_lie==True & ans!=label_instructed] \n", + "⭐PRIMARY METRIC⭐ acc=87.01% from probe on test\n", "⭐SECONDARY METRIC⭐ acc_lie_lie=75.00% from probe on test\n", "\n", "\n", "probe accuracy for quadrants:\n", "| instructed to | did | didn't |\n", "|:----------------|------:|---------:|\n", - "| tell a truth | 0.88 | 0.7 |\n", - "| tell a lie | 0.75 | 0.81 |\n", + "| tell a truth | 0.92 | 0.73 |\n", + "| tell a lie | 0.75 | 0.88 |\n", "\n", "\n", "\n" @@ -6574,7 +6638,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "4f0dd3c7a98145598b2c481c780c4067", + "model_id": "79a80ff7f49a4c34b782b3ee831f6ed4", "version_major": 2, "version_minor": 0 }, @@ -6597,21 +6661,21 @@ "output_type": "stream", "text": [ "probe results on subsets of the data for val\n", - "acc=80.52%,\tn=154,\t[] \n", + "acc=85.06%,\tn=154,\t[] \n", "acc=81.82%,\tn=11,\t[instructed_to_lie==True] \n", - "acc=80.42%,\tn=143,\t[instructed_to_lie==False] \n", - "acc=83.04%,\tn=112,\t[ans==label_true] \n", - "acc=82.24%,\tn=107,\t[ans==label_instructed] \n", + "acc=85.31%,\tn=143,\t[instructed_to_lie==False] \n", + "acc=88.39%,\tn=112,\t[ans==label_true] \n", + "acc=87.85%,\tn=107,\t[ans==label_instructed] \n", "acc=66.67%,\tn=3,\t[instructed_to_lie==True & ans==label_instructed] \n", "acc=87.50%,\tn=8,\t[instructed_to_lie==True & ans!=label_instructed] \n", - "⭐PRIMARY METRIC⭐ acc=80.52% from probe on val\n", + "⭐PRIMARY METRIC⭐ acc=85.06% from probe on val\n", "⭐SECONDARY METRIC⭐ acc_lie_lie=66.67% from probe on val\n", "\n", "\n", "probe accuracy for quadrants:\n", "| instructed to | did | didn't |\n", "|:----------------|------:|---------:|\n", - "| tell a truth | 0.83 | 0.74 |\n", + "| tell a truth | 0.88 | 0.77 |\n", "| tell a lie | 0.67 | 0.88 |\n", "\n", "\n", @@ -6628,7 +6692,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "17edf04160e54e3c9679b47b1680dde8", + "model_id": "e627f12413d5410c97001dd69b8ea24a", "version_major": 2, "version_minor": 0 }, @@ -6644,25 +6708,264 @@ "output_type": "stream", "text": [ "probe results on subsets of the data for all\n", - "acc=90.73%,\tn=615,\t[] \n", - "acc=88.75%,\tn=80,\t[instructed_to_lie==True] \n", - "acc=91.03%,\tn=535,\t[instructed_to_lie==False] \n", - "acc=92.36%,\tn=458,\t[ans==label_true] \n", - "acc=92.34%,\tn=418,\t[ans==label_instructed] \n", + "acc=93.01%,\tn=615,\t[] \n", + "acc=91.25%,\tn=80,\t[instructed_to_lie==True] \n", + "acc=93.27%,\tn=535,\t[instructed_to_lie==False] \n", + "acc=94.98%,\tn=458,\t[ans==label_true] \n", + "acc=94.74%,\tn=418,\t[ans==label_instructed] \n", "acc=85.00%,\tn=20,\t[instructed_to_lie==True & ans==label_instructed] \n", - "acc=90.00%,\tn=60,\t[instructed_to_lie==True & ans!=label_instructed] \n", - "⭐PRIMARY METRIC⭐ acc=90.73% from probe on all\n", + "acc=93.33%,\tn=60,\t[instructed_to_lie==True & ans!=label_instructed] \n", + "⭐PRIMARY METRIC⭐ acc=93.01% from probe on all\n", "⭐SECONDARY METRIC⭐ acc_lie_lie=85.00% from probe on all\n", "\n", "\n", "probe accuracy for quadrants:\n", "| instructed to | did | didn't |\n", "|:----------------|------:|---------:|\n", - "| tell a truth | 0.93 | 0.86 |\n", - "| tell a lie | 0.85 | 0.9 |\n", + "| tell a truth | 0.95 | 0.88 |\n", + "| tell a lie | 0.85 | 0.93 |\n", "\n", "\n", - "\n" + "\n", + "| | acc | acc_lie_lie | acc_lie_truth | df_test | df_confusion |\n", + "|:-----|------:|--------------:|----------------:|:--------------------------------------------------------------------------------|:----------------------------------|\n", + "| test | 0.87 | 0.75 | 0.88 | binary_ans label_true label_instructed instructed_to_lie \\ | llm gave did didn't |\n", + "| | | | | 461 0.654785 False True True | instructed to |\n", + "| | | | | 462 0.338055 False True True | tell a truth 0.922222 0.733333 |\n", + "| | | | | 463 0.355723 False True True | tell a lie 0.750000 0.884615 |\n", + "| | | | | 464 0.596347 False True True | |\n", + "| | | | | 465 0.002889 False False False | |\n", + "| | | | | .. ... ... ... ... | |\n", + "| | | | | 610 0.921921 True True False | |\n", + "| | | | | 611 0.626090 True True False | |\n", + "| | | | | 612 0.993610 True True False | |\n", + "| | | | | 613 0.845626 True True False | |\n", + "| | | | | 614 0.542875 True True False | |\n", + "| | | | | | |\n", + "| | | | | sys_instr_name example_i ds_string template_name \\ | |\n", + "| | | | | 461 false_none 194 glue:qnli imply | |\n", + "| | | | | 462 false_none 194 super_glue:rte MNLI crowdsource | |\n", + "| | | | | 463 false_none 194 sst2 tweet_opinion_question | |\n", + "| | | | | 464 false_none 194 hans does this imply | |\n", + "| | | | | 465 truth 462 amazon_polarity burns_2 | |\n", + "| | | | | .. ... ... ... ... | |\n", + "| | | | | 610 truth 431 amazon_polarity negative_or_positive_tone | |\n", + "| | | | | 611 truth 431 glue:qnli want to know | |\n", + "| | | | | 612 truth 431 super_glue:rte does it follow that | |\n", + "| | | | | 613 truth 431 sst2 last_night_film | |\n", + "| | | | | 614 truth 431 hans GPT-3 style | |\n", + "| | | | | | |\n", + "| | | | | correct_truth_telling correct_instruction_following ... \\ | |\n", + "| | | | | 461 0.345215 0.654785 ... | |\n", + "| | | | | 462 0.661945 0.338055 ... | |\n", + "| | | | | 463 0.644276 0.355723 ... | |\n", + "| | | | | 464 0.403653 0.596347 ... | |\n", + "| | | | | 465 0.997111 0.997111 ... | |\n", + "| | | | | .. ... ... ... | |\n", + "| | | | | 610 0.921921 0.921921 ... | |\n", + "| | | | | 611 0.626090 0.626090 ... | |\n", + "| | | | | 612 0.993610 0.993610 ... | |\n", + "| | | | | 613 0.845626 0.845626 ... | |\n", + "| | | | | 614 0.542875 0.542875 ... | |\n", + "| | | | | | |\n", + "| | | | | ds_string_adapt template_name_adapt correct_truth_telling_adapt \\ | |\n", + "| | | | | 461 glue:qnli imply 0.383615 | |\n", + "| | | | | 462 super_glue:rte MNLI crowdsource 0.526228 | |\n", + "| | | | | 463 sst2 tweet_opinion_question 0.282140 | |\n", + "| | | | | 464 hans does this imply 0.424853 | |\n", + "| | | | | 465 amazon_polarity burns_2 0.933984 | |\n", + "| | | | | .. ... ... ... | |\n", + "| | | | | 610 amazon_polarity negative_or_positive_tone 0.844201 | |\n", + "| | | | | 611 glue:qnli want to know 0.550683 | |\n", + "| | | | | 612 super_glue:rte does it follow that 0.797307 | |\n", + "| | | | | 613 sst2 last_night_film 0.814067 | |\n", + "| | | | | 614 hans GPT-3 style 0.551196 | |\n", + "| | | | | | |\n", + "| | | | | correct_instruction_following_adapt choice_probs_adapt ans_adapt \\ | |\n", + "| | | | | 461 0.616385 0.977856 True | |\n", + "| | | | | 462 0.473772 0.990104 False | |\n", + "| | | | | 463 0.717860 0.979622 True | |\n", + "| | | | | 464 0.575147 0.990826 True | |\n", + "| | | | | 465 0.933984 0.993765 False | |\n", + "| | | | | .. ... ... ... | |\n", + "| | | | | 610 0.844201 0.982026 True | |\n", + "| | | | | 611 0.550683 0.985061 True | |\n", + "| | | | | 612 0.797307 0.985769 True | |\n", + "| | | | | 613 0.814067 0.944394 True | |\n", + "| | | | | 614 0.551196 0.993850 True | |\n", + "| | | | | | |\n", + "| | | | | choice_probs ans y probe_pred | |\n", + "| | | | | 461 0.893372 True 0.038400 9.997894e-01 | |\n", + "| | | | | 462 0.987813 False -0.135717 1.956372e-14 | |\n", + "| | | | | 463 0.929694 False -0.362137 2.190966e-10 | |\n", + "| | | | | 464 0.975007 True 0.021200 4.359301e-05 | |\n", + "| | | | | 465 0.994542 False -0.063127 9.148795e-13 | |\n", + "| | | | | .. ... ... ... ... | |\n", + "| | | | | 610 0.961587 True 0.077720 9.969251e-01 | |\n", + "| | | | | 611 0.936493 True 0.075407 9.987630e-01 | |\n", + "| | | | | 612 0.990059 True 0.196303 1.000000e+00 | |\n", + "| | | | | 613 0.517079 True 0.031559 2.200461e-05 | |\n", + "| | | | | 614 0.935706 True -0.008321 8.509140e-06 | |\n", + "| | | | | | |\n", + "| | | | | [154 rows x 26 columns] | |\n", + "| val | 0.85 | 0.67 | 0.88 | binary_ans label_true label_instructed instructed_to_lie \\ | llm gave did didn't |\n", + "| | | | | 307 0.980879 True True False | instructed to |\n", + "| | | | | 308 0.934405 True True False | tell a truth 0.884615 0.769231 |\n", + "| | | | | 309 0.672233 True True False | tell a lie 0.666667 0.875000 |\n", + "| | | | | 310 0.921924 True False True | |\n", + "| | | | | 311 0.622359 True False True | |\n", + "| | | | | .. ... ... ... ... | |\n", + "| | | | | 456 0.600029 True True False | |\n", + "| | | | | 457 0.377445 True True False | |\n", + "| | | | | 458 0.585072 True True False | |\n", + "| | | | | 459 0.411182 True True False | |\n", + "| | | | | 460 0.001410 False True True | |\n", + "| | | | | | |\n", + "| | | | | sys_instr_name example_i ds_string template_name \\ | |\n", + "| | | | | 307 truth 271 super_glue:rte GPT-3 style | |\n", + "| | | | | 308 truth 271 sst2 review_sentiment_question | |\n", + "| | | | | 309 truth 271 hans guaranteed true | |\n", + "| | | | | 310 false_none 375 amazon_polarity negative_or_positive_tone | |\n", + "| | | | | 311 false_none 375 glue:qnli based only on | |\n", + "| | | | | .. ... ... ... ... | |\n", + "| | | | | 456 truth 99 glue:qnli have all you need | |\n", + "| | | | | 457 truth 99 super_glue:rte justified in saying | |\n", + "| | | | | 458 truth 99 sst2 review_a2 | |\n", + "| | | | | 459 truth 99 hans GPT-3 style | |\n", + "| | | | | 460 false_none 194 amazon_polarity Is_this_review | |\n", + "| | | | | | |\n", + "| | | | | correct_truth_telling correct_instruction_following ... \\ | |\n", + "| | | | | 307 0.980879 0.980879 ... | |\n", + "| | | | | 308 0.934405 0.934405 ... | |\n", + "| | | | | 309 0.672233 0.672233 ... | |\n", + "| | | | | 310 0.921924 0.078076 ... | |\n", + "| | | | | 311 0.622359 0.377641 ... | |\n", + "| | | | | .. ... ... ... | |\n", + "| | | | | 456 0.600029 0.600029 ... | |\n", + "| | | | | 457 0.377445 0.377445 ... | |\n", + "| | | | | 458 0.585072 0.585072 ... | |\n", + "| | | | | 459 0.411182 0.411182 ... | |\n", + "| | | | | 460 0.998590 0.001410 ... | |\n", + "| | | | | | |\n", + "| | | | | ds_string_adapt template_name_adapt correct_truth_telling_adapt \\ | |\n", + "| | | | | 307 super_glue:rte GPT-3 style 0.798775 | |\n", + "| | | | | 308 sst2 review_sentiment_question 0.761666 | |\n", + "| | | | | 309 hans guaranteed true 0.560085 | |\n", + "| | | | | 310 amazon_polarity negative_or_positive_tone 0.698620 | |\n", + "| | | | | 311 glue:qnli based only on 0.632153 | |\n", + "| | | | | .. ... ... ... | |\n", + "| | | | | 456 glue:qnli have all you need 0.509754 | |\n", + "| | | | | 457 super_glue:rte justified in saying 0.486940 | |\n", + "| | | | | 458 sst2 review_a2 0.630561 | |\n", + "| | | | | 459 hans GPT-3 style 0.560320 | |\n", + "| | | | | 460 amazon_polarity Is_this_review 0.963937 | |\n", + "| | | | | | |\n", + "| | | | | correct_instruction_following_adapt choice_probs_adapt ans_adapt \\ | |\n", + "| | | | | 307 0.798775 0.994027 True | |\n", + "| | | | | 308 0.761666 0.981128 True | |\n", + "| | | | | 309 0.560085 0.991267 True | |\n", + "| | | | | 310 0.301380 0.968183 True | |\n", + "| | | | | 311 0.367847 0.979070 True | |\n", + "| | | | | .. ... ... ... | |\n", + "| | | | | 456 0.509754 0.979699 True | |\n", + "| | | | | 457 0.486940 0.978004 False | |\n", + "| | | | | 458 0.630561 0.966589 True | |\n", + "| | | | | 459 0.560320 0.995933 True | |\n", + "| | | | | 460 0.036063 0.980602 False | |\n", + "| | | | | | |\n", + "| | | | | choice_probs ans y probe_pred | |\n", + "| | | | | 307 0.998328 True 0.182104 9.999888e-01 | |\n", + "| | | | | 308 0.868298 True 0.172740 9.999944e-01 | |\n", + "| | | | | 309 0.949367 True 0.112148 9.999731e-01 | |\n", + "| | | | | 310 0.945791 True 0.223304 9.999999e-01 | |\n", + "| | | | | 311 0.579483 True -0.009794 1.414637e-02 | |\n", + "| | | | | .. ... ... ... ... | |\n", + "| | | | | 456 0.897626 True 0.090275 9.999504e-01 | |\n", + "| | | | | 457 0.950485 False -0.109495 2.371114e-04 | |\n", + "| | | | | 458 0.683739 True -0.045489 1.632376e-03 | |\n", + "| | | | | 459 0.974562 False -0.149139 2.384905e-08 | |\n", + "| | | | | 460 0.994890 False -0.034654 7.422872e-15 | |\n", + "| | | | | | |\n", + "| | | | | [154 rows x 26 columns] | |\n", + "| ood | 0.93 | 0.85 | 0.93 | binary_ans label_true label_instructed instructed_to_lie \\ | llm gave did didn't |\n", + "| | | | | 0 0.017443 False False False | instructed to |\n", + "| | | | | 1 0.414883 False False False | tell a truth 0.952261 0.875912 |\n", + "| | | | | 2 0.933427 False False False | tell a lie 0.850000 0.933333 |\n", + "| | | | | 3 0.105183 False False False | |\n", + "| | | | | 4 0.433881 False False False | |\n", + "| | | | | .. ... ... ... ... | |\n", + "| | | | | 610 0.921921 True True False | |\n", + "| | | | | 611 0.626090 True True False | |\n", + "| | | | | 612 0.993610 True True False | |\n", + "| | | | | 613 0.845626 True True False | |\n", + "| | | | | 614 0.542875 True True False | |\n", + "| | | | | | |\n", + "| | | | | sys_instr_name example_i ds_string template_name \\ | |\n", + "| | | | | 0 truth 546 amazon_polarity User_recommend_this_product | |\n", + "| | | | | 1 truth 546 glue:qnli based only on | |\n", + "| | | | | 2 truth 546 super_glue:rte guaranteed true | |\n", + "| | | | | 3 truth 546 sst2 overall_feeling | |\n", + "| | | | | 4 truth 546 hans should assume | |\n", + "| | | | | .. ... ... ... ... | |\n", + "| | | | | 610 truth 431 amazon_polarity negative_or_positive_tone | |\n", + "| | | | | 611 truth 431 glue:qnli want to know | |\n", + "| | | | | 612 truth 431 super_glue:rte does it follow that | |\n", + "| | | | | 613 truth 431 sst2 last_night_film | |\n", + "| | | | | 614 truth 431 hans GPT-3 style | |\n", + "| | | | | | |\n", + "| | | | | correct_truth_telling correct_instruction_following ... \\ | |\n", + "| | | | | 0 0.982557 0.982557 ... | |\n", + "| | | | | 1 0.585117 0.585117 ... | |\n", + "| | | | | 2 0.066573 0.066573 ... | |\n", + "| | | | | 3 0.894817 0.894817 ... | |\n", + "| | | | | 4 0.566119 0.566119 ... | |\n", + "| | | | | .. ... ... ... | |\n", + "| | | | | 610 0.921921 0.921921 ... | |\n", + "| | | | | 611 0.626090 0.626090 ... | |\n", + "| | | | | 612 0.993610 0.993610 ... | |\n", + "| | | | | 613 0.845626 0.845626 ... | |\n", + "| | | | | 614 0.542875 0.542875 ... | |\n", + "| | | | | | |\n", + "| | | | | ds_string_adapt template_name_adapt \\ | |\n", + "| | | | | 0 amazon_polarity User_recommend_this_product | |\n", + "| | | | | 1 glue:qnli based only on | |\n", + "| | | | | 2 super_glue:rte guaranteed true | |\n", + "| | | | | 3 sst2 overall_feeling | |\n", + "| | | | | 4 hans should assume | |\n", + "| | | | | .. ... ... | |\n", + "| | | | | 610 amazon_polarity negative_or_positive_tone | |\n", + "| | | | | 611 glue:qnli want to know | |\n", + "| | | | | 612 super_glue:rte does it follow that | |\n", + "| | | | | 613 sst2 last_night_film | |\n", + "| | | | | 614 hans GPT-3 style | |\n", + "| | | | | | |\n", + "| | | | | correct_truth_telling_adapt correct_instruction_following_adapt \\ | |\n", + "| | | | | 0 0.805755 0.805755 | |\n", + "| | | | | 1 0.474860 0.474860 | |\n", + "| | | | | 2 0.175603 0.175603 | |\n", + "| | | | | 3 0.541549 0.541549 | |\n", + "| | | | | 4 0.381852 0.381852 | |\n", + "| | | | | .. ... ... | |\n", + "| | | | | 610 0.844201 0.844201 | |\n", + "| | | | | 611 0.550683 0.550683 | |\n", + "| | | | | 612 0.797307 0.797307 | |\n", + "| | | | | 613 0.814067 0.814067 | |\n", + "| | | | | 614 0.551196 0.551196 | |\n", + "| | | | | | |\n", + "| | | | | choice_probs_adapt ans_adapt choice_probs ans y probe_pred | |\n", + "| | | | | 0 0.985953 False 0.961788 False -0.176802 7.445790e-07 | |\n", + "| | | | | 1 0.987850 True 0.831588 False -0.110257 1.392456e-24 | |\n", + "| | | | | 2 0.991501 True 0.972588 True 0.109030 1.000000e+00 | |\n", + "| | | | | 3 0.969580 False 0.728778 False -0.353268 1.600497e-15 | |\n", + "| | | | | 4 0.991540 True 0.976097 False -0.184267 2.424069e-09 | |\n", + "| | | | | .. ... ... ... ... ... ... | |\n", + "| | | | | 610 0.982026 True 0.961587 True 0.077720 9.969251e-01 | |\n", + "| | | | | 611 0.985061 True 0.936493 True 0.075407 9.987630e-01 | |\n", + "| | | | | 612 0.985769 True 0.990059 True 0.196303 1.000000e+00 | |\n", + "| | | | | 613 0.944394 True 0.517079 True 0.031559 2.200463e-05 | |\n", + "| | | | | 614 0.993850 True 0.935706 True -0.008321 8.509140e-06 | |\n", + "| | | | | | |\n", + "| | | | | [615 rows x 26 columns] | |\n" ] }, { @@ -6696,27 +6999,27 @@ " \n", " \n", " test\n", - " 0.824675\n", + " 0.870130\n", " 0.750000\n", - " 0.807692\n", + " 0.884615\n", " binary_ans label_true label_instructed ...\n", " llm gave did didn't\n", "instructed t...\n", " \n", " \n", " val\n", - " 0.805195\n", + " 0.850649\n", " 0.666667\n", " 0.875000\n", " binary_ans label_true label_instructed ...\n", - " llm gave did didn't\n", - "instructed to...\n", + " llm gave did didn't\n", + "instructed t...\n", " \n", " \n", " ood\n", - " 0.907317\n", + " 0.930081\n", " 0.850000\n", - " 0.900000\n", + " 0.933333\n", " binary_ans label_true label_instructed ...\n", " llm gave did didn't\n", "instructed t...\n", @@ -6727,9 +7030,9 @@ ], "text/plain": [ " acc acc_lie_lie acc_lie_truth \\\n", - "test 0.824675 0.750000 0.807692 \n", - "val 0.805195 0.666667 0.875000 \n", - "ood 0.907317 0.850000 0.900000 \n", + "test 0.870130 0.750000 0.884615 \n", + "val 0.850649 0.666667 0.875000 \n", + "ood 0.930081 0.850000 0.933333 \n", "\n", " df_test \\\n", "test binary_ans label_true label_instructed ... \n", @@ -6739,22 +7042,32 @@ " df_confusion \n", "test llm gave did didn't\n", "instructed t... \n", - "val llm gave did didn't\n", - "instructed to... \n", + "val llm gave did didn't\n", + "instructed t... \n", "ood llm gave did didn't\n", "instructed t... " ] }, - "execution_count": 104, + "execution_count": 111, "metadata": {}, "output_type": "execute_result" + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click here for more info. View Jupyter log for further details." + ] } ], "source": [ "a = calc_metrics(dm, net, trainer2, 'test')\n", "b = calc_metrics(dm, net,trainer2, 'val')\n", "c = calc_metrics(dm_ood, net, trainer1, 'all')\n", - "pd.DataFrame([a, b, c], index=['test', 'val', 'ood'])\n", + "df_metrics = pd.DataFrame([a, b, c], index=['test', 'val', 'ood'])\n", + "print(df_metrics.round(2).to_markdown())\n", + "df_metrics\n", "\n" ] }, @@ -6765,6 +7078,15 @@ "### Train end-to-end\n" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "1/0" + ] + }, { "cell_type": "code", "execution_count": 105, diff --git a/src/helpers/lightning.py b/src/helpers/lightning.py index e5ba318..205f416 100644 --- a/src/helpers/lightning.py +++ b/src/helpers/lightning.py @@ -53,7 +53,7 @@ def plot_hist(df_hist, allowlist=None, logy=False): for suffix in suffixes: if allowlist and suffix not in allowlist: continue - plt.figure(figsize=(8, 3)) + plt.figure(figsize=(5, 2)) df_hist[[c for c in df_hist.columns if c.endswith(suffix) and '/' in c]].plot(title=suffix, style='.', logy=logy, ax=plt.gca()) plt.title(suffix) plt.show() diff --git a/src/probes/importance_matrix.py b/src/probes/importance_matrix.py index 2164482..194a57d 100644 --- a/src/probes/importance_matrix.py +++ b/src/probes/importance_matrix.py @@ -36,8 +36,8 @@ def get_importance_matrix(saved_adaptop_file, layers=['fc1', 'Wqkv']): importance_matrix = importance_matrix + 1 # square to make it positive - importance_matrix = importance_matrix.clamp(0, None) - importance_matrix -= importance_matrix.mean() - 1 + # importance_matrix = importance_matrix.clamp(0, None) + # importance_matrix -= importance_matrix.mean() - 1 return importance_matrix diff --git a/src/vae/sae2.py b/src/vae/sae2.py index 7bb0168..5b82ab4 100644 --- a/src/vae/sae2.py +++ b/src/vae/sae2.py @@ -44,16 +44,20 @@ class NormedLinear(nn.Linear): F.normalize(self.weight, dim=self.norm_dim, out=self.weight) class NormedLinears(nn.Module): - def __init__(self, n_instances: int, n_input_ae: int, n_output: int, weight_norm_dim=None): + def __init__(self, n_instances: int, n_input_ae: int, n_output: int, weight_norm_dim=None, act: Callable = nn.ReLU()): super().__init__() self.linears = nn.ModuleList(NormedLinear(n_input_ae, n_output, norm_dim=weight_norm_dim) for _ in range(n_instances)) + self.act = act def weight_norm(self) -> None: for m in self.linears: m.weight_norm() def forward(self, x: Tensor) -> Tensor: - return t.stack([m(x[:, i]) for i, m in enumerate(self.linears)], dim=1) + x = t.stack([m(x[:, i]) for i, m in enumerate(self.linears)], dim=1) + if self.act is not None: + x = self.act(x) + return x class AffineInstanceNorm1d(nn.BatchNorm1d): @@ -93,36 +97,52 @@ class AutoEncoder(nn.Module): # instead of a tied bias, we use a batch norm type module to track and adjust for the training mean and std. We also have an inverse function to undo the normalization. self.norm = Affines(cfg.n_instances, cfg.n_input_ae) - self.encoder = [] - for i in range(cfg.depth): - self.encoder.append(NormedLinears(cfg.n_instances, cfg.n_input_ae, cfg.n_hidden_ae)) - self.encoder.append(nn.ReLU()) + self.encoder = [ + NormedLinears(cfg.n_instances, cfg.n_input_ae, cfg.n_hidden_ae) + ] + for i in range(1, cfg.depth): + self.encoder.append(NormedLinears(cfg.n_instances, cfg.n_hidden_ae, cfg.n_hidden_ae)) self.encoder = nn.Sequential(*self.encoder) self.decoder = [] - for i in range(cfg.depth): - self.decoder.append(NormedLinears(cfg.n_instances, cfg.n_hidden_ae, cfg.n_input_ae, weight_norm_dim=0)) - if i None: