File size: 225,781 Bytes
83586b8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 |
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "982e76f5",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:35:43.605195Z",
"iopub.status.busy": "2024-03-22T12:35:43.604819Z",
"iopub.status.idle": "2024-03-22T12:35:43.644853Z",
"shell.execute_reply": "2024-03-22T12:35:43.644072Z"
},
"papermill": {
"duration": 0.055356,
"end_time": "2024-03-22T12:35:43.646922",
"exception": false,
"start_time": "2024-03-22T12:35:43.591566",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"import joblib\n",
"\n",
"#joblib.parallel_backend(\"threading\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "675f0b41",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:35:43.674064Z",
"iopub.status.busy": "2024-03-22T12:35:43.673215Z",
"iopub.status.idle": "2024-03-22T12:35:43.680255Z",
"shell.execute_reply": "2024-03-22T12:35:43.679294Z"
},
"papermill": {
"duration": 0.023112,
"end_time": "2024-03-22T12:35:43.682214",
"exception": false,
"start_time": "2024-03-22T12:35:43.659102",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"'\\n%cd /kaggle/working\\n#!git clone https://github.com/R-N/ml-utility-loss --depth=1 --single-branch --branch=main\\n%cd ml-utility-loss\\n!git pull\\n#!pip install .\\n!pip install . --no-deps --force-reinstall --upgrade\\n#'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"\"\"\n",
"%cd /kaggle/working\n",
"#!git clone https://github.com/R-N/ml-utility-loss --depth=1 --single-branch --branch=main\n",
"%cd ml-utility-loss\n",
"!git pull\n",
"#!pip install .\n",
"!pip install . --no-deps --force-reinstall --upgrade\n",
"#\"\"\""
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "5ae30f5c",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:35:43.706766Z",
"iopub.status.busy": "2024-03-22T12:35:43.706033Z",
"iopub.status.idle": "2024-03-22T12:35:43.710392Z",
"shell.execute_reply": "2024-03-22T12:35:43.709503Z"
},
"papermill": {
"duration": 0.018857,
"end_time": "2024-03-22T12:35:43.712298",
"exception": false,
"start_time": "2024-03-22T12:35:43.693441",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"plt.rcParams['figure.figsize'] = [3,3]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "9f42c810",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:35:43.736920Z",
"iopub.status.busy": "2024-03-22T12:35:43.736376Z",
"iopub.status.idle": "2024-03-22T12:35:43.740389Z",
"shell.execute_reply": "2024-03-22T12:35:43.739499Z"
},
"executionInfo": {
"elapsed": 678,
"status": "ok",
"timestamp": 1696841022168,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "ns5hFcVL2yvs",
"papermill": {
"duration": 0.018587,
"end_time": "2024-03-22T12:35:43.742294",
"exception": false,
"start_time": "2024-03-22T12:35:43.723707",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"datasets = [\n",
" \"insurance\",\n",
" \"treatment\",\n",
" \"contraceptive\"\n",
"]\n",
"\n",
"study_dir = \"./\""
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "85d0c8ce",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:35:43.765878Z",
"iopub.status.busy": "2024-03-22T12:35:43.765618Z",
"iopub.status.idle": "2024-03-22T12:35:43.771408Z",
"shell.execute_reply": "2024-03-22T12:35:43.770490Z"
},
"papermill": {
"duration": 0.019878,
"end_time": "2024-03-22T12:35:43.773220",
"exception": false,
"start_time": "2024-03-22T12:35:43.753342",
"status": "completed"
},
"tags": [
"parameters"
]
},
"outputs": [],
"source": [
"#Parameters\n",
"import os\n",
"\n",
"path_prefix = \"../../../../\"\n",
"\n",
"dataset_dir = os.path.join(path_prefix, \"ml-utility-loss/datasets\")\n",
"dataset_name = \"treatment\"\n",
"model_name=\"ml_utility_2\"\n",
"models = [\"tvae\", \"realtabformer\", \"lct_gan\", \"tab_ddpm_concat\"]\n",
"single_model = \"lct_gan\"\n",
"random_seed = 42\n",
"gp = True\n",
"gp_multiply = True\n",
"folder = \"eval\"\n",
"debug = False\n",
"path = None\n",
"param_index = 0\n",
"allow_same_prediction = True\n",
"log_wandb = False"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "dab922fa",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:35:43.800275Z",
"iopub.status.busy": "2024-03-22T12:35:43.799948Z",
"iopub.status.idle": "2024-03-22T12:35:43.805639Z",
"shell.execute_reply": "2024-03-22T12:35:43.804690Z"
},
"papermill": {
"duration": 0.022128,
"end_time": "2024-03-22T12:35:43.807576",
"exception": false,
"start_time": "2024-03-22T12:35:43.785448",
"status": "completed"
},
"tags": [
"injected-parameters"
]
},
"outputs": [],
"source": [
"# Parameters\n",
"dataset = \"contraceptive\"\n",
"dataset_name = \"contraceptive\"\n",
"single_model = \"realtabformer\"\n",
"gp = False\n",
"gp_multiply = False\n",
"random_seed = 42\n",
"debug = False\n",
"folder = \"eval\"\n",
"path_prefix = \"../../../../\"\n",
"path = \"eval/contraceptive/realtabformer/42\"\n",
"param_index = 0\n",
"allow_same_prediction = True\n",
"log_wandb = False\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bd7c02d6",
"metadata": {
"papermill": {
"duration": 0.011418,
"end_time": "2024-03-22T12:35:43.830446",
"exception": false,
"start_time": "2024-03-22T12:35:43.819028",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 7,
"id": "5f45b1d0",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:35:43.854762Z",
"iopub.status.busy": "2024-03-22T12:35:43.854452Z",
"iopub.status.idle": "2024-03-22T12:35:43.864057Z",
"shell.execute_reply": "2024-03-22T12:35:43.863192Z"
},
"executionInfo": {
"elapsed": 7,
"status": "ok",
"timestamp": 1696841022169,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "UdvXYv3c3LXy",
"papermill": {
"duration": 0.024153,
"end_time": "2024-03-22T12:35:43.866019",
"exception": false,
"start_time": "2024-03-22T12:35:43.841866",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/kaggle/working\n",
"/kaggle/working/eval/contraceptive/realtabformer/42\n"
]
}
],
"source": [
"from pathlib import Path\n",
"import os\n",
"\n",
"%cd /kaggle/working/\n",
"\n",
"if path is None:\n",
" path = os.path.join(folder, dataset_name, single_model, random_seed)\n",
"Path(path).mkdir(parents=True, exist_ok=True)\n",
"\n",
"%cd {path}"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "f85bf540",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:35:43.890548Z",
"iopub.status.busy": "2024-03-22T12:35:43.890224Z",
"iopub.status.idle": "2024-03-22T12:35:45.938938Z",
"shell.execute_reply": "2024-03-22T12:35:45.937941Z"
},
"papermill": {
"duration": 2.063269,
"end_time": "2024-03-22T12:35:45.941053",
"exception": false,
"start_time": "2024-03-22T12:35:43.877784",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Set seed to <function seed at 0x7b059a9eb370>\n"
]
}
],
"source": [
"from ml_utility_loss.util import seed\n",
"if single_model:\n",
" model_name=f\"{model_name}_{single_model}\"\n",
"if random_seed is not None:\n",
" seed(random_seed)\n",
" print(\"Set seed to\", seed)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "8489feae",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:35:45.967664Z",
"iopub.status.busy": "2024-03-22T12:35:45.967217Z",
"iopub.status.idle": "2024-03-22T12:35:45.979942Z",
"shell.execute_reply": "2024-03-22T12:35:45.979099Z"
},
"papermill": {
"duration": 0.028225,
"end_time": "2024-03-22T12:35:45.981873",
"exception": false,
"start_time": "2024-03-22T12:35:45.953648",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import json\n",
"import os\n",
"\n",
"df = pd.read_csv(os.path.join(dataset_dir, f\"{dataset_name}.csv\"))\n",
"with open(os.path.join(dataset_dir, f\"{dataset_name}.json\")) as f:\n",
" info = json.load(f)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "debcc684",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:35:46.006585Z",
"iopub.status.busy": "2024-03-22T12:35:46.006026Z",
"iopub.status.idle": "2024-03-22T12:35:46.015973Z",
"shell.execute_reply": "2024-03-22T12:35:46.015048Z"
},
"executionInfo": {
"elapsed": 6,
"status": "ok",
"timestamp": 1696841022169,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "Vrl2QkoV3o_8",
"papermill": {
"duration": 0.024645,
"end_time": "2024-03-22T12:35:46.018227",
"exception": false,
"start_time": "2024-03-22T12:35:45.993582",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"task = info[\"task\"]\n",
"target = info[\"target\"]\n",
"cat_features = info[\"cat_features\"]\n",
"mixed_features = info[\"mixed_features\"]\n",
"longtail_features = info[\"longtail_features\"]\n",
"integer_features = info[\"integer_features\"]\n",
"\n",
"test = df.sample(frac=0.2, random_state=42)\n",
"train = df[~df.index.isin(test.index)]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "7538184a",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:35:46.045285Z",
"iopub.status.busy": "2024-03-22T12:35:46.044964Z",
"iopub.status.idle": "2024-03-22T12:35:46.557585Z",
"shell.execute_reply": "2024-03-22T12:35:46.556639Z"
},
"executionInfo": {
"elapsed": 6,
"status": "ok",
"timestamp": 1696841022169,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "TilUuFk9vqMb",
"papermill": {
"duration": 0.528712,
"end_time": "2024-03-22T12:35:46.559974",
"exception": false,
"start_time": "2024-03-22T12:35:46.031262",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"import ml_utility_loss.synthesizers.tab_ddpm.params as TAB_DDPM_PARAMS\n",
"import ml_utility_loss.synthesizers.lct_gan.params as LCT_GAN_PARAMS\n",
"import ml_utility_loss.synthesizers.realtabformer.params as RTF_PARAMS\n",
"from ml_utility_loss.synthesizers.realtabformer.params.default import GPT2_PARAMS, REALTABFORMER_PARAMS\n",
"from ml_utility_loss.util import filter_dict_2, filter_dict\n",
"\n",
"tab_ddpm_params = getattr(TAB_DDPM_PARAMS, dataset_name).BEST\n",
"lct_gan_params = getattr(LCT_GAN_PARAMS, dataset_name).BEST\n",
"lct_ae_params = filter_dict_2(lct_gan_params, LCT_GAN_PARAMS.default.AE_PARAMS)\n",
"rtf_params = getattr(RTF_PARAMS, dataset_name).BEST\n",
"rtf_params = filter_dict(rtf_params, REALTABFORMER_PARAMS)\n",
"\n",
"lct_ae_embedding_size=lct_gan_params[\"embedding_size\"]\n",
"tab_ddpm_normalization=\"quantile\"\n",
"tab_ddpm_cat_encoding=tab_ddpm_params[\"cat_encoding\"]\n",
"#tab_ddpm_cat_encoding=\"one-hot\"\n",
"tab_ddpm_y_policy=\"default\"\n",
"tab_ddpm_is_y_cond=True"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "cca61838",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:35:46.587265Z",
"iopub.status.busy": "2024-03-22T12:35:46.586890Z",
"iopub.status.idle": "2024-03-22T12:36:00.550837Z",
"shell.execute_reply": "2024-03-22T12:36:00.549914Z"
},
"executionInfo": {
"elapsed": 3113,
"status": "ok",
"timestamp": 1696841025277,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "7Abt8nStvr9Z",
"papermill": {
"duration": 13.980286,
"end_time": "2024-03-22T12:36:00.553228",
"exception": false,
"start_time": "2024-03-22T12:35:46.572942",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2024-03-22 12:35:51.446205: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n",
"2024-03-22 12:35:51.446341: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n",
"2024-03-22 12:35:51.596074: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n"
]
}
],
"source": [
"from ml_utility_loss.loss_learning.estimator.pipeline import load_lct_ae\n",
"\n",
"lct_ae = load_lct_ae(\n",
" dataset_name=dataset_name,\n",
" model_dir=os.path.join(path_prefix, \"ml-utility-loss/models\"),\n",
" model_name=\"lct_ae\",\n",
" df_name=\"df\",\n",
")\n",
"lct_ae = None"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "6f83b7b6",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:36:00.581350Z",
"iopub.status.busy": "2024-03-22T12:36:00.580701Z",
"iopub.status.idle": "2024-03-22T12:36:00.587040Z",
"shell.execute_reply": "2024-03-22T12:36:00.586192Z"
},
"papermill": {
"duration": 0.022543,
"end_time": "2024-03-22T12:36:00.589119",
"exception": false,
"start_time": "2024-03-22T12:36:00.566576",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"from ml_utility_loss.loss_learning.estimator.pipeline import load_rtf_embed\n",
"\n",
"rtf_embed = load_rtf_embed(\n",
" dataset_name=dataset_name,\n",
" model_dir=os.path.join(path_prefix, \"ml-utility-loss/models\"),\n",
" model_name=\"realtabformer\",\n",
" df_name=\"df\",\n",
" ckpt_type=\"best-disc-model\"\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "0026de74",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:36:00.613610Z",
"iopub.status.busy": "2024-03-22T12:36:00.612976Z",
"iopub.status.idle": "2024-03-22T12:36:09.140045Z",
"shell.execute_reply": "2024-03-22T12:36:09.138949Z"
},
"executionInfo": {
"elapsed": 20137,
"status": "ok",
"timestamp": 1696841045408,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "tbaguWxAvtPi",
"papermill": {
"duration": 8.542098,
"end_time": "2024-03-22T12:36:09.142632",
"exception": false,
"start_time": "2024-03-22T12:36:00.600534",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:274: ConvergenceWarning: Initialization 1 did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.\n",
" warnings.warn(\n",
"/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:119: ConvergenceWarning: Number of distinct clusters (4) found smaller than n_clusters (10). Possibly due to duplicate points in X.\n",
" .fit(X)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:119: ConvergenceWarning: Number of distinct clusters (4) found smaller than n_clusters (10). Possibly due to duplicate points in X.\n",
" .fit(X)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:274: ConvergenceWarning: Initialization 1 did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.\n",
" warnings.warn(\n",
"/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:119: ConvergenceWarning: Number of distinct clusters (4) found smaller than n_clusters (10). Possibly due to duplicate points in X.\n",
" .fit(X)\n"
]
}
],
"source": [
"from ml_utility_loss.loss_learning.estimator.preprocessing import DataPreprocessor\n",
"\n",
"preprocessor = DataPreprocessor(\n",
" task,\n",
" target=target,\n",
" cat_features=cat_features,\n",
" mixed_features=mixed_features,\n",
" longtail_features=longtail_features,\n",
" integer_features=integer_features,\n",
" lct_ae_embedding_size=lct_ae_embedding_size,\n",
" lct_ae_params=lct_ae_params,\n",
" lct_ae=lct_ae,\n",
" tab_ddpm_normalization=tab_ddpm_normalization,\n",
" tab_ddpm_cat_encoding=tab_ddpm_cat_encoding,\n",
" tab_ddpm_y_policy=tab_ddpm_y_policy,\n",
" tab_ddpm_is_y_cond=tab_ddpm_is_y_cond,\n",
" realtabformer_embedding=rtf_embed,\n",
" realtabformer_params=rtf_params,\n",
")\n",
"preprocessor.fit(df)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "a9c9b110",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"execution": {
"iopub.execute_input": "2024-03-22T12:36:09.171331Z",
"iopub.status.busy": "2024-03-22T12:36:09.170391Z",
"iopub.status.idle": "2024-03-22T12:36:09.178157Z",
"shell.execute_reply": "2024-03-22T12:36:09.177162Z"
},
"executionInfo": {
"elapsed": 13,
"status": "ok",
"timestamp": 1696841045411,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "OxUH_GBEv2qK",
"outputId": "76464c90-3baf-4bdc-a955-6f4fddc16b9c",
"papermill": {
"duration": 0.024242,
"end_time": "2024-03-22T12:36:09.180261",
"exception": false,
"start_time": "2024-03-22T12:36:09.156019",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{'tvae': 46,\n",
" 'realtabformer': (24, 72, Embedding(72, 672), True),\n",
" 'lct_gan': 40,\n",
" 'tab_ddpm_concat': 10}"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"preprocessor.adapter_sizes"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "3cb9ed90",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:36:09.206025Z",
"iopub.status.busy": "2024-03-22T12:36:09.205673Z",
"iopub.status.idle": "2024-03-22T12:36:09.210792Z",
"shell.execute_reply": "2024-03-22T12:36:09.209904Z"
},
"papermill": {
"duration": 0.020501,
"end_time": "2024-03-22T12:36:09.212728",
"exception": false,
"start_time": "2024-03-22T12:36:09.192227",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"from ml_utility_loss.loss_learning.estimator.pipeline import load_dataset_3_factory\n",
"\n",
"datasetsn = load_dataset_3_factory(\n",
" dataset_dir=os.path.join(path_prefix, \"ml-utility-loss/\"),\n",
" dataset_name=dataset_name,\n",
" preprocessor=preprocessor,\n",
" cache_dir=path_prefix,\n",
")\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "ad1eb833",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:36:09.237797Z",
"iopub.status.busy": "2024-03-22T12:36:09.237481Z",
"iopub.status.idle": "2024-03-22T12:44:37.517411Z",
"shell.execute_reply": "2024-03-22T12:44:37.516303Z"
},
"papermill": {
"duration": 508.308484,
"end_time": "2024-03-22T12:44:37.533155",
"exception": false,
"start_time": "2024-03-22T12:36:09.224671",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Caching in ../../../../contraceptive/_cache_aug_test/realtabformer/all inf False\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"../../../../ml-utility-loss/aug_test/contraceptive [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]\n",
"Caching in ../../../../contraceptive/_cache_bs_test/realtabformer/all inf False\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"../../../../ml-utility-loss/bs_test/contraceptive [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]\n",
"Caching in ../../../../contraceptive/_cache_synth_test/realtabformer/all inf False\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"../../../../ml-utility-loss/synthetics/contraceptive [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]\n",
"1050\n"
]
}
],
"source": [
"from ml_utility_loss.loss_learning.estimator.pipeline import load_dataset_4\n",
"\n",
"test_set = load_dataset_4(\n",
" dataset_dir=os.path.join(path_prefix, \"ml-utility-loss/\"),\n",
" dataset_name=dataset_name,\n",
" preprocessor=preprocessor,\n",
" model=single_model,\n",
" cache_dir=path_prefix,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "14ff8b40",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:44:37.561052Z",
"iopub.status.busy": "2024-03-22T12:44:37.560681Z",
"iopub.status.idle": "2024-03-22T12:44:38.165582Z",
"shell.execute_reply": "2024-03-22T12:44:38.164523Z"
},
"executionInfo": {
"elapsed": 588,
"status": "ok",
"timestamp": 1696841049215,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "NgahtU1q9uLO",
"papermill": {
"duration": 0.621448,
"end_time": "2024-03-22T12:44:38.167853",
"exception": false,
"start_time": "2024-03-22T12:44:37.546405",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{'Body': 'twin_encoder',\n",
" 'loss_balancer_meta': True,\n",
" 'loss_balancer_log': False,\n",
" 'loss_balancer_lbtw': False,\n",
" 'pma_skip_small': False,\n",
" 'isab_skip_small': False,\n",
" 'layer_norm': False,\n",
" 'pma_layer_norm': False,\n",
" 'attn_residual': True,\n",
" 'tf_n_layers_dec': False,\n",
" 'tf_isab_rank': 0,\n",
" 'tf_layer_norm': False,\n",
" 'tf_pma_start': -1,\n",
" 'head_n_seeds': 0,\n",
" 'tf_pma_low': 16,\n",
" 'dropout': 0,\n",
" 'combine_mode': 'diff_left',\n",
" 'tf_isab_mode': 'separate',\n",
" 'grad_loss_fn': <function torch.nn.functional.l1_loss(input: torch.Tensor, target: torch.Tensor, size_average: Optional[bool] = None, reduce: Optional[bool] = None, reduction: str = 'mean') -> torch.Tensor>,\n",
" 'single_model': True,\n",
" 'bias': True,\n",
" 'bias_final': True,\n",
" 'pma_ffn_mode': 'none',\n",
" 'patience': 10,\n",
" 'inds_init_mode': 'fixnorm',\n",
" 'grad_clip': 0.73,\n",
" 'gradient_penalty_mode': {'gradient_penalty': False,\n",
" 'calc_grad_m': False,\n",
" 'avg_non_role_model_m': False,\n",
" 'inverse_avg_non_role_model_m': False},\n",
" 'synth_data': 2,\n",
" 'bias_lr_mul': 1.0,\n",
" 'bias_weight_decay': 0.05,\n",
" 'head_activation': torch.nn.modules.activation.Softsign,\n",
" 'loss_balancer_beta': 0.67,\n",
" 'loss_balancer_r': 0.943,\n",
" 'tf_activation': torch.nn.modules.activation.Tanh,\n",
" 'dataset_size': 2048,\n",
" 'batch_size': 4,\n",
" 'epochs': 100,\n",
" 'lr_mul': 0.09,\n",
" 'n_warmup_steps': 100,\n",
" 'Optim': functools.partial(<class 'torch.optim.adamw.AdamW'>, amsgrad=True),\n",
" 'fixed_role_model': 'realtabformer',\n",
" 'd_model': 256,\n",
" 'attn_activation': torch.nn.modules.activation.PReLU,\n",
" 'tf_d_inner': 512,\n",
" 'tf_n_layers_enc': 3,\n",
" 'tf_n_head': 32,\n",
" 'tf_activation_final': ml_utility_loss.activations.LeakyHardtanh,\n",
" 'ada_d_hid': 1024,\n",
" 'ada_n_layers': 9,\n",
" 'ada_activation': torch.nn.modules.activation.Softsign,\n",
" 'ada_activation_final': ml_utility_loss.activations.LeakyHardsigmoid,\n",
" 'head_d_hid': 256,\n",
" 'head_n_layers': 9,\n",
" 'head_n_head': 32,\n",
" 'head_activation_final': ml_utility_loss.activations.LeakyHardsigmoid,\n",
" 'models': ['realtabformer'],\n",
" 'max_seconds': 3600,\n",
" 'tf_lora': False,\n",
" 'tf_num_inds': 128,\n",
" 'ada_n_seeds': 0,\n",
" 'gradient_penalty_kwargs': {'mag_loss': True,\n",
" 'mse_mag': False,\n",
" 'mag_corr': False,\n",
" 'seq_mag': False,\n",
" 'cos_loss': False,\n",
" 'mag_corr_kwargs': {'only_sign': False},\n",
" 'cos_loss_kwargs': {'only_sign': True, 'cos_matrix': False},\n",
" 'mse_mag_kwargs': {'target': 0.65, 'multiply': True, 'forgive_over': True}}}"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import ml_utility_loss.loss_learning.estimator.params2 as PARAMS\n",
"from ml_utility_loss.tuning import map_parameters\n",
"from ml_utility_loss.loss_learning.estimator.params.default import update_param_space, update_param_space_2\n",
"import wandb\n",
"\n",
"#\"\"\"\n",
"param_space = {\n",
" **getattr(PARAMS, dataset_name).PARAM_SPACE,\n",
"}\n",
"params = {\n",
" **getattr(PARAMS, dataset_name).BESTS[param_index],\n",
"}\n",
"if gp:\n",
" params[\"gradient_penalty_mode\"] = \"ALL\"\n",
" params[\"mse_mag\"] = True\n",
" if gp_multiply:\n",
" params[\"mse_mag_multiply\"] = True\n",
" #params[\"mse_mag_target\"] = 1.0\n",
" else:\n",
" params[\"mse_mag_multiply\"] = False\n",
" #params[\"mse_mag_target\"] = 0.1\n",
"else:\n",
" params[\"gradient_penalty_mode\"] = \"NONE\"\n",
" params[\"mse_mag\"] = False\n",
"params[\"single_model\"] = False\n",
"if models:\n",
" params[\"models\"] = models\n",
"if single_model:\n",
" params[\"fixed_role_model\"] = single_model\n",
" params[\"single_model\"] = True\n",
" params[\"models\"] = [single_model]\n",
"if params[\"fixed_role_model\"] == \"realtabformer\" and dataset_name == \"treatment\":\n",
" params[\"batch_size\"] = 2\n",
"params[\"max_seconds\"] = 3600\n",
"params[\"patience\"] = 10\n",
"params[\"epochs\"] = 100\n",
"if debug:\n",
" params[\"epochs\"] = 2\n",
"with open(\"params.json\", \"w\") as f:\n",
" json.dump(params, f)\n",
"params = map_parameters(params, param_space=param_space)\n",
"params"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "a48bd9e9",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:44:38.197028Z",
"iopub.status.busy": "2024-03-22T12:44:38.196103Z",
"iopub.status.idle": "2024-03-22T12:55:26.894260Z",
"shell.execute_reply": "2024-03-22T12:55:26.893195Z"
},
"papermill": {
"duration": 648.727448,
"end_time": "2024-03-22T12:55:26.908814",
"exception": false,
"start_time": "2024-03-22T12:44:38.181366",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Caching in ../../../../contraceptive/_cache_aug_train/realtabformer/all inf False\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"split df ratio is 0\n",
"../../../../ml-utility-loss/aug_train/contraceptive [400, 0]\n",
"Caching in ../../../../contraceptive/_cache_aug_val/realtabformer/all inf False\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"split df ratio is 1\n",
"../../../../ml-utility-loss/aug_val/contraceptive [0, 200]\n",
"Caching in ../../../../contraceptive/_cache_bs_train/realtabformer/all inf False\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"split df ratio is 0\n",
"../../../../ml-utility-loss/bs_train/contraceptive [100, 0]\n",
"Caching in ../../../../contraceptive/_cache_bs_val/realtabformer/all inf False\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"split df ratio is 1\n",
"../../../../ml-utility-loss/bs_val/contraceptive [0, 50]\n",
"Caching in ../../../../contraceptive/_cache_synth/realtabformer/all inf False\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Splitting without random!\n",
"Split with reverse index!\n",
"../../../../ml-utility-loss/synthetics/contraceptive [400, 200]\n",
"[900, 450]\n",
"[900, 450]\n"
]
}
],
"source": [
"train_set, val_set = datasetsn(model=params[\"fixed_role_model\"], synth_data=params[\"synth_data\"])"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "2fcb1418",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"execution": {
"iopub.execute_input": "2024-03-22T12:55:26.938038Z",
"iopub.status.busy": "2024-03-22T12:55:26.937496Z",
"iopub.status.idle": "2024-03-22T12:55:27.377636Z",
"shell.execute_reply": "2024-03-22T12:55:27.376636Z"
},
"executionInfo": {
"elapsed": 396850,
"status": "error",
"timestamp": 1696841446059,
"user": {
"displayName": "Rizqi Nur",
"userId": "09644007964068789560"
},
"user_tz": -420
},
"id": "_bt1MQc5kpSk",
"outputId": "01c1d3e5-ac64-461d-835a-b76f4a66e6d6",
"papermill": {
"duration": 0.4571,
"end_time": "2024-03-22T12:55:27.379821",
"exception": false,
"start_time": "2024-03-22T12:55:26.922721",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Creating model of type <class 'ml_utility_loss.loss_learning.estimator.model.models.TwinEncoder'>\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[*] Embedding True True\n",
"['realtabformer'] 1\n"
]
}
],
"source": [
"from ml_utility_loss.loss_learning.estimator.model.pipeline import remove_non_model_params\n",
"from ml_utility_loss.loss_learning.estimator.pipeline import create_model\n",
"from ml_utility_loss.util import filter_dict, clear_memory\n",
"\n",
"clear_memory()\n",
"\n",
"params2 = remove_non_model_params(params)\n",
"adapters = filter_dict(preprocessor.adapter_sizes, params[\"models\"])\n",
"\n",
"model = create_model(\n",
" adapters=adapters,\n",
" #Body=\"twin_encoder\",\n",
" **params2,\n",
")\n",
"#cf.apply_weight_standardization(model, n_last_layers_ignore=0)\n",
"print(model.models, len(model.adapters))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "938f94fc",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:55:27.409753Z",
"iopub.status.busy": "2024-03-22T12:55:27.409425Z",
"iopub.status.idle": "2024-03-22T12:55:27.413860Z",
"shell.execute_reply": "2024-03-22T12:55:27.412935Z"
},
"papermill": {
"duration": 0.021547,
"end_time": "2024-03-22T12:55:27.415899",
"exception": false,
"start_time": "2024-03-22T12:55:27.394352",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"study_name=f\"{model_name}_{dataset_name}\""
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "12fb613e",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:55:27.443636Z",
"iopub.status.busy": "2024-03-22T12:55:27.443384Z",
"iopub.status.idle": "2024-03-22T12:55:27.450566Z",
"shell.execute_reply": "2024-03-22T12:55:27.449690Z"
},
"papermill": {
"duration": 0.023232,
"end_time": "2024-03-22T12:55:27.452543",
"exception": false,
"start_time": "2024-03-22T12:55:27.429311",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"12536352"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def count_parameters(model):\n",
" return sum(p.numel() for p in model.parameters() if p.requires_grad)\n",
"\n",
"count_parameters(model)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "bd386e57",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:55:27.480763Z",
"iopub.status.busy": "2024-03-22T12:55:27.480493Z",
"iopub.status.idle": "2024-03-22T12:55:27.568738Z",
"shell.execute_reply": "2024-03-22T12:55:27.567842Z"
},
"papermill": {
"duration": 0.10513,
"end_time": "2024-03-22T12:55:27.570916",
"exception": false,
"start_time": "2024-03-22T12:55:27.465786",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"========================================================================================================================\n",
"Layer (type:depth-idx) Output Shape Param #\n",
"========================================================================================================================\n",
"MLUtilitySingle [2, 1179, 16128] --\n",
"├─Adapter: 1-1 [2, 1179, 16128] --\n",
"│ └─Embedding: 2-1 [2, 1179, 24, 672] (48,384)\n",
"│ └─TensorInductionPoint: 2-2 [24, 1] 24\n",
"│ └─Sequential: 2-3 [2, 1179, 256] --\n",
"│ │ └─FeedForward: 3-1 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-1 [2, 1179, 1024] 689,152\n",
"│ │ │ └─Softsign: 4-2 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-2 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-3 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-4 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-3 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-5 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-6 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-4 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-7 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-8 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-5 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-9 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-10 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-6 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-11 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-12 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-7 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-13 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-14 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-8 [2, 1179, 1024] --\n",
"│ │ │ └─Linear: 4-15 [2, 1179, 1024] 1,049,600\n",
"│ │ │ └─Softsign: 4-16 [2, 1179, 1024] --\n",
"│ │ └─FeedForward: 3-9 [2, 1179, 256] --\n",
"│ │ │ └─Linear: 4-17 [2, 1179, 256] 262,400\n",
"│ │ │ └─LeakyHardsigmoid: 4-18 [2, 1179, 256] --\n",
"├─Adapter: 1-2 [2, 294, 16128] (recursive)\n",
"│ └─Embedding: 2-4 [2, 294, 24, 672] (recursive)\n",
"│ └─TensorInductionPoint: 2-5 [24, 1] (recursive)\n",
"│ └─Sequential: 2-6 [2, 294, 256] (recursive)\n",
"│ │ └─FeedForward: 3-10 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-19 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-20 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-11 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-21 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-22 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-12 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-23 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-24 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-13 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-25 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-26 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-14 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-27 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-28 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-15 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-29 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-30 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-16 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-31 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-32 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-17 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Linear: 4-33 [2, 294, 1024] (recursive)\n",
"│ │ │ └─Softsign: 4-34 [2, 294, 1024] --\n",
"│ │ └─FeedForward: 3-18 [2, 294, 256] (recursive)\n",
"│ │ │ └─Linear: 4-35 [2, 294, 256] (recursive)\n",
"│ │ │ └─LeakyHardsigmoid: 4-36 [2, 294, 256] --\n",
"├─TwinEncoder: 1-3 [2, 4096] --\n",
"│ └─Encoder: 2-7 [2, 16, 256] --\n",
"│ │ └─ModuleList: 3-20 -- (recursive)\n",
"│ │ │ └─EncoderLayer: 4-37 [2, 1179, 256] --\n",
"│ │ │ │ └─SimpleInducedSetAttention: 5-1 [2, 1179, 256] --\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-1 [2, 128, 256] 32,768\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-2 [2, 128, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-1 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-2 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-3 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-4 [2, 32, 128, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-1 [2, 32, 128, 1179] --\n",
"│ │ │ │ │ │ └─Linear: 7-5 [2, 128, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-6 [2, 128, 256] 1\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-3 [2, 1179, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-7 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-8 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-9 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-10 [2, 32, 1179, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-2 [2, 32, 1179, 128] --\n",
"│ │ │ │ │ │ └─Linear: 7-11 [2, 1179, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-12 [2, 1179, 256] 1\n",
"│ │ │ │ └─DoubleFeedForward: 5-2 [2, 1179, 256] --\n",
"│ │ │ │ │ └─Linear: 6-4 [2, 1179, 512] 131,584\n",
"│ │ │ │ │ └─Tanh: 6-5 [2, 1179, 512] --\n",
"│ │ │ │ │ └─Linear: 6-6 [2, 1179, 256] 131,328\n",
"│ │ │ └─EncoderLayer: 4-38 [2, 1179, 256] --\n",
"│ │ │ │ └─SimpleInducedSetAttention: 5-3 [2, 1179, 256] --\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-7 [2, 128, 256] 32,768\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-8 [2, 128, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-13 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-14 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-15 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-16 [2, 32, 128, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-3 [2, 32, 128, 1179] --\n",
"│ │ │ │ │ │ └─Linear: 7-17 [2, 128, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-18 [2, 128, 256] 1\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-9 [2, 1179, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-19 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-20 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-21 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-22 [2, 32, 1179, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-4 [2, 32, 1179, 128] --\n",
"│ │ │ │ │ │ └─Linear: 7-23 [2, 1179, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-24 [2, 1179, 256] 1\n",
"│ │ │ │ └─DoubleFeedForward: 5-4 [2, 1179, 256] --\n",
"│ │ │ │ │ └─Linear: 6-10 [2, 1179, 512] 131,584\n",
"│ │ │ │ │ └─Tanh: 6-11 [2, 1179, 512] --\n",
"│ │ │ │ │ └─Linear: 6-12 [2, 1179, 256] 131,328\n",
"│ │ │ └─EncoderLayer: 4-39 [2, 16, 256] --\n",
"│ │ │ │ └─SimpleInducedSetAttention: 5-5 [2, 1179, 256] --\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-13 [2, 128, 256] 32,768\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-14 [2, 128, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-25 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-26 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-27 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-28 [2, 32, 128, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-5 [2, 32, 128, 1179] --\n",
"│ │ │ │ │ │ └─Linear: 7-29 [2, 128, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-30 [2, 128, 256] 1\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-15 [2, 1179, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-31 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-32 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-33 [2, 128, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-34 [2, 32, 1179, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-6 [2, 32, 1179, 128] --\n",
"│ │ │ │ │ │ └─Linear: 7-35 [2, 1179, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-36 [2, 1179, 256] 1\n",
"│ │ │ │ └─DoubleFeedForward: 5-6 [2, 1179, 256] --\n",
"│ │ │ │ │ └─Linear: 6-16 [2, 1179, 512] 131,584\n",
"│ │ │ │ │ └─LeakyHardtanh: 6-17 [2, 1179, 512] --\n",
"│ │ │ │ │ └─Linear: 6-18 [2, 1179, 256] 131,328\n",
"│ │ │ │ └─PoolingByMultiheadAttention: 5-7 [2, 16, 256] --\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-19 [2, 16, 256] 4,096\n",
"│ │ │ │ │ └─SimpleMultiHeadAttention: 6-20 [2, 16, 256] --\n",
"│ │ │ │ │ │ └─Linear: 7-37 [2, 16, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-38 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─Linear: 7-39 [2, 1179, 256] 65,536\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-40 [2, 32, 16, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-7 [2, 32, 16, 1179] --\n",
"│ │ │ │ │ │ └─Linear: 7-41 [2, 16, 256] 65,792\n",
"│ │ │ │ │ │ └─PReLU: 7-42 [2, 16, 256] 1\n",
"│ └─Encoder: 2-8 [2, 16, 256] (recursive)\n",
"│ │ └─ModuleList: 3-20 -- (recursive)\n",
"│ │ │ └─EncoderLayer: 4-40 [2, 294, 256] (recursive)\n",
"│ │ │ │ └─SimpleInducedSetAttention: 5-8 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-21 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-22 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-43 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-44 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-45 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-46 [2, 32, 128, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-8 [2, 32, 128, 294] --\n",
"│ │ │ │ │ │ └─Linear: 7-47 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-48 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-23 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-49 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-50 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-51 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-52 [2, 32, 294, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-9 [2, 32, 294, 128] --\n",
"│ │ │ │ │ │ └─Linear: 7-53 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-54 [2, 294, 256] (recursive)\n",
"│ │ │ │ └─DoubleFeedForward: 5-9 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ └─Linear: 6-24 [2, 294, 512] (recursive)\n",
"│ │ │ │ │ └─Tanh: 6-25 [2, 294, 512] --\n",
"│ │ │ │ │ └─Linear: 6-26 [2, 294, 256] (recursive)\n",
"│ │ │ └─EncoderLayer: 4-41 [2, 294, 256] (recursive)\n",
"│ │ │ │ └─SimpleInducedSetAttention: 5-10 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-27 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-28 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-55 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-56 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-57 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-58 [2, 32, 128, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-10 [2, 32, 128, 294] --\n",
"│ │ │ │ │ │ └─Linear: 7-59 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-60 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-29 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-61 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-62 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-63 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-64 [2, 32, 294, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-11 [2, 32, 294, 128] --\n",
"│ │ │ │ │ │ └─Linear: 7-65 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-66 [2, 294, 256] (recursive)\n",
"│ │ │ │ └─DoubleFeedForward: 5-11 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ └─Linear: 6-30 [2, 294, 512] (recursive)\n",
"│ │ │ │ │ └─Tanh: 6-31 [2, 294, 512] --\n",
"│ │ │ │ │ └─Linear: 6-32 [2, 294, 256] (recursive)\n",
"│ │ │ └─EncoderLayer: 4-42 [2, 16, 256] (recursive)\n",
"│ │ │ │ └─SimpleInducedSetAttention: 5-12 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-33 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-34 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-67 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-68 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-69 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-70 [2, 32, 128, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-12 [2, 32, 128, 294] --\n",
"│ │ │ │ │ │ └─Linear: 7-71 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-72 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ └─MultiHeadAttention: 6-35 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-73 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-74 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-75 [2, 128, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-76 [2, 32, 294, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-13 [2, 32, 294, 128] --\n",
"│ │ │ │ │ │ └─Linear: 7-77 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-78 [2, 294, 256] (recursive)\n",
"│ │ │ │ └─DoubleFeedForward: 5-13 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ └─Linear: 6-36 [2, 294, 512] (recursive)\n",
"│ │ │ │ │ └─LeakyHardtanh: 6-37 [2, 294, 512] --\n",
"│ │ │ │ │ └─Linear: 6-38 [2, 294, 256] (recursive)\n",
"│ │ │ │ └─PoolingByMultiheadAttention: 5-14 [2, 16, 256] (recursive)\n",
"│ │ │ │ │ └─TensorInductionPoint: 6-39 [2, 16, 256] (recursive)\n",
"│ │ │ │ │ └─SimpleMultiHeadAttention: 6-40 [2, 16, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-79 [2, 16, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-80 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─Linear: 7-81 [2, 294, 256] (recursive)\n",
"│ │ │ │ │ │ └─ScaledDotProductAttention: 7-82 [2, 32, 16, 8] --\n",
"│ │ │ │ │ │ │ └─Softmax: 8-14 [2, 32, 16, 294] --\n",
"│ │ │ │ │ │ └─Linear: 7-83 [2, 16, 256] (recursive)\n",
"│ │ │ │ │ │ └─PReLU: 7-84 [2, 16, 256] (recursive)\n",
"├─Head: 1-4 [2] --\n",
"│ └─Sequential: 2-9 [2, 1] --\n",
"│ │ └─FeedForward: 3-21 [2, 256] --\n",
"│ │ │ └─Linear: 4-43 [2, 256] 1,048,832\n",
"│ │ │ └─Softsign: 4-44 [2, 256] --\n",
"│ │ └─FeedForward: 3-22 [2, 256] --\n",
"│ │ │ └─Linear: 4-45 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-46 [2, 256] --\n",
"│ │ └─FeedForward: 3-23 [2, 256] --\n",
"│ │ │ └─Linear: 4-47 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-48 [2, 256] --\n",
"│ │ └─FeedForward: 3-24 [2, 256] --\n",
"│ │ │ └─Linear: 4-49 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-50 [2, 256] --\n",
"│ │ └─FeedForward: 3-25 [2, 256] --\n",
"│ │ │ └─Linear: 4-51 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-52 [2, 256] --\n",
"│ │ └─FeedForward: 3-26 [2, 256] --\n",
"│ │ │ └─Linear: 4-53 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-54 [2, 256] --\n",
"│ │ └─FeedForward: 3-27 [2, 256] --\n",
"│ │ │ └─Linear: 4-55 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-56 [2, 256] --\n",
"│ │ └─FeedForward: 3-28 [2, 256] --\n",
"│ │ │ └─Linear: 4-57 [2, 256] 65,792\n",
"│ │ │ └─Softsign: 4-58 [2, 256] --\n",
"│ │ └─FeedForward: 3-29 [2, 1] --\n",
"│ │ │ └─Linear: 4-59 [2, 1] 257\n",
"│ │ │ └─LeakyHardsigmoid: 4-60 [2, 1] --\n",
"========================================================================================================================\n",
"Total params: 12,584,736\n",
"Trainable params: 12,536,352\n",
"Non-trainable params: 48,384\n",
"Total mult-adds (M): 46.91\n",
"========================================================================================================================\n",
"Input size (MB): 0.28\n",
"Forward/backward pass size (MB): 755.51\n",
"Params size (MB): 50.34\n",
"Estimated Total Size (MB): 806.13\n",
"========================================================================================================================"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from torchinfo import summary\n",
"\n",
"role_model = params[\"fixed_role_model\"]\n",
"s = train_set[0][role_model]\n",
"summary(model[role_model], input_size=((2, *s[0].shape), (2, *s[1].shape)), depth=9) # 8 max"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "0f42c4d1",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T12:55:27.602224Z",
"iopub.status.busy": "2024-03-22T12:55:27.601876Z",
"iopub.status.idle": "2024-03-22T14:00:22.928909Z",
"shell.execute_reply": "2024-03-22T14:00:22.927881Z"
},
"papermill": {
"duration": 3895.361184,
"end_time": "2024-03-22T14:00:22.946984",
"exception": false,
"start_time": "2024-03-22T12:55:27.585800",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3 datasets [900, 450, 1050]\n",
"Creating model of type <class 'ml_utility_loss.loss_learning.estimator.model.models.TwinEncoder'>\n",
"[*] Embedding True True\n",
"g_loss_mul 0.1\n",
"Epoch 0\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.015436244466497252, 'avg_role_model_std_loss': 0.6971071543745386, 'avg_role_model_mean_pred_loss': 0.0005885604529329952, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.015436244466497252, 'n_size': 900, 'n_batch': 225, 'duration': 233.85006093978882, 'duration_batch': 1.0393336041768393, 'duration_size': 0.2598334010442098, 'avg_pred_std': 0.1107698762230575}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.014223382426425814, 'avg_role_model_std_loss': 0.39072058395795967, 'avg_role_model_mean_pred_loss': 0.0007193372912492969, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.014223382426425814, 'n_size': 450, 'n_batch': 113, 'duration': 101.00125312805176, 'duration_batch': 0.8938163993632899, 'duration_size': 0.22444722917344834, 'avg_pred_std': 0.1077716978992113}\n",
"Epoch 1\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.006033640582399029, 'avg_role_model_std_loss': 0.4650218232954108, 'avg_role_model_mean_pred_loss': 0.00013023597284128328, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.006033640582399029, 'n_size': 900, 'n_batch': 225, 'duration': 229.77366161346436, 'duration_batch': 1.0212162738376194, 'duration_size': 0.25530406845940484, 'avg_pred_std': 0.09818139906144804}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.0075027576179450585, 'avg_role_model_std_loss': 0.3676717987151777, 'avg_role_model_mean_pred_loss': 0.00021706114066001486, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0075027576179450585, 'n_size': 450, 'n_batch': 113, 'duration': 105.09904932975769, 'duration_batch': 0.9300800825642274, 'duration_size': 0.2335534429550171, 'avg_pred_std': 0.09515106879932954}\n",
"Epoch 2\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.004512168372780757, 'avg_role_model_std_loss': 0.38041619546195704, 'avg_role_model_mean_pred_loss': 8.644590021956824e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.004512168372780757, 'n_size': 900, 'n_batch': 225, 'duration': 229.63529801368713, 'duration_batch': 1.020601324505276, 'duration_size': 0.255150331126319, 'avg_pred_std': 0.10015762750473288}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.0042034335448018585, 'avg_role_model_std_loss': 1.679159187696908, 'avg_role_model_mean_pred_loss': 0.00013376625657448635, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0042034335448018585, 'n_size': 450, 'n_batch': 113, 'duration': 100.8151388168335, 'duration_batch': 0.8921693700604734, 'duration_size': 0.22403364181518554, 'avg_pred_std': 0.06495650028253584}\n",
"Epoch 3\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.0035539452421491863, 'avg_role_model_std_loss': 0.47440502540713714, 'avg_role_model_mean_pred_loss': 2.18277604056823e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0035539452421491863, 'n_size': 900, 'n_batch': 225, 'duration': 229.67535948753357, 'duration_batch': 1.0207793755001493, 'duration_size': 0.2551948438750373, 'avg_pred_std': 0.10116369463089439}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.0038588620393743946, 'avg_role_model_std_loss': 3.2039021881799323, 'avg_role_model_mean_pred_loss': 5.9090333590049076e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0038588620393743946, 'n_size': 450, 'n_batch': 113, 'duration': 102.2182068824768, 'duration_batch': 0.904585901614839, 'duration_size': 0.22715157084994847, 'avg_pred_std': 0.04514441881030056}\n",
"Epoch 4\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.00319372646672289, 'avg_role_model_std_loss': 0.37545427183122226, 'avg_role_model_mean_pred_loss': 1.550665479323714e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.00319372646672289, 'n_size': 900, 'n_batch': 225, 'duration': 230.0189757347107, 'duration_batch': 1.0223065588209364, 'duration_size': 0.2555766397052341, 'avg_pred_std': 0.10247180342260334}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.0040023055252256905, 'avg_role_model_std_loss': 3.8167529671252023, 'avg_role_model_mean_pred_loss': 7.529611734713794e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0040023055252256905, 'n_size': 450, 'n_batch': 113, 'duration': 101.59934687614441, 'duration_batch': 0.8991092643906585, 'duration_size': 0.22577632639143203, 'avg_pred_std': 0.04470131049484872}\n",
"Epoch 5\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.0029433389956506693, 'avg_role_model_std_loss': 0.4368025242733054, 'avg_role_model_mean_pred_loss': 1.580498963409443e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0029433389956506693, 'n_size': 900, 'n_batch': 225, 'duration': 229.80718541145325, 'duration_batch': 1.0213652684953478, 'duration_size': 0.25534131712383695, 'avg_pred_std': 0.1031194214626319}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.0028074885386094035, 'avg_role_model_std_loss': 2.145103556606243, 'avg_role_model_mean_pred_loss': 1.1650951160528297e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0028074885386094035, 'n_size': 450, 'n_batch': 113, 'duration': 101.39577078819275, 'duration_batch': 0.8973077060902013, 'duration_size': 0.22532393508487278, 'avg_pred_std': 0.05228710767763576}\n",
"Epoch 6\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.0026049669001885277, 'avg_role_model_std_loss': 0.44792478884607234, 'avg_role_model_mean_pred_loss': 1.0308605452903701e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0026049669001885277, 'n_size': 900, 'n_batch': 225, 'duration': 230.53775358200073, 'duration_batch': 1.0246122381422256, 'duration_size': 0.2561530595355564, 'avg_pred_std': 0.10098279579128656}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.002687264719667534, 'avg_role_model_std_loss': 4.189337836805609, 'avg_role_model_mean_pred_loss': 1.241189197620803e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.002687264719667534, 'n_size': 450, 'n_batch': 113, 'duration': 100.64273428916931, 'duration_batch': 0.8906436662758346, 'duration_size': 0.22365052064259847, 'avg_pred_std': 0.042642332664979375}\n",
"Epoch 7\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.002563537800257715, 'avg_role_model_std_loss': 0.34648435719401377, 'avg_role_model_mean_pred_loss': 9.35702638039536e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.002563537800257715, 'n_size': 900, 'n_batch': 225, 'duration': 227.69733333587646, 'duration_batch': 1.011988148159451, 'duration_size': 0.25299703703986276, 'avg_pred_std': 0.10545726788747642}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.0028965300656919784, 'avg_role_model_std_loss': 3.1744629383202634, 'avg_role_model_mean_pred_loss': 1.6787577942173726e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0028965300656919784, 'n_size': 450, 'n_batch': 113, 'duration': 100.22019076347351, 'duration_batch': 0.8869043430395885, 'duration_size': 0.22271153502994112, 'avg_pred_std': 0.05538224283527517}\n",
"Epoch 8\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.002383246352579186, 'avg_role_model_std_loss': 0.3083862728209352, 'avg_role_model_mean_pred_loss': 9.936972519990587e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.002383246352579186, 'n_size': 900, 'n_batch': 225, 'duration': 227.7537636756897, 'duration_batch': 1.012238949669732, 'duration_size': 0.253059737417433, 'avg_pred_std': 0.10515566083292166}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.0030194523966767723, 'avg_role_model_std_loss': 3.0041199968275354, 'avg_role_model_mean_pred_loss': 1.1394547741565071e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0030194523966767723, 'n_size': 450, 'n_batch': 113, 'duration': 100.15035581588745, 'duration_batch': 0.8862863346538713, 'duration_size': 0.22255634625752768, 'avg_pred_std': 0.04854994764514432}\n",
"Epoch 9\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.0021668040852819105, 'avg_role_model_std_loss': 0.2028817977175666, 'avg_role_model_mean_pred_loss': 7.674208641294594e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0021668040852819105, 'n_size': 900, 'n_batch': 225, 'duration': 226.46019649505615, 'duration_batch': 1.0064897622002495, 'duration_size': 0.2516224405500624, 'avg_pred_std': 0.10634001894543568}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.0023035917821754184, 'avg_role_model_std_loss': 3.5878168070930125, 'avg_role_model_mean_pred_loss': 7.551760705609701e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0023035917821754184, 'n_size': 450, 'n_batch': 113, 'duration': 100.57623744010925, 'duration_batch': 0.8900551985850377, 'duration_size': 0.22350274986690946, 'avg_pred_std': 0.05207151871749439}\n",
"Epoch 10\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train loss {'avg_role_model_loss': 0.0022073838575144894, 'avg_role_model_std_loss': 0.18685059259163805, 'avg_role_model_mean_pred_loss': 1.00230588112276e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0022073838575144894, 'n_size': 900, 'n_batch': 225, 'duration': 227.7475564479828, 'duration_batch': 1.0122113619910347, 'duration_size': 0.25305284049775867, 'avg_pred_std': 0.10737030942820841}\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Val loss {'avg_role_model_loss': 0.0024145089968806133, 'avg_role_model_std_loss': 2.368802141273148, 'avg_role_model_mean_pred_loss': 1.0890554641507788e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.0024145089968806133, 'n_size': 450, 'n_batch': 113, 'duration': 99.10306596755981, 'duration_batch': 0.8770182828987594, 'duration_size': 0.22022903548346626, 'avg_pred_std': 0.04590538341193501}\n",
"Time out: 3648.574878692627/3600\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Eval loss {'role_model': 'realtabformer', 'n_size': 1050, 'n_batch': 263, 'role_model_metrics': {'avg_loss': 0.002682760669579563, 'avg_g_mag_loss': 0.008364482207499076, 'avg_g_cos_loss': 0.010354253430961675, 'pred_duration': 8.742810010910034, 'grad_duration': 8.114531993865967, 'total_duration': 16.857342004776, 'pred_std': 0.09103205054998398, 'std_loss': 0.0308249332010746, 'mean_pred_loss': 2.5912582714227028e-05, 'pred_rmse': 0.05179537460207939, 'pred_mae': 0.037153515964746475, 'pred_mape': 0.1209072470664978, 'grad_rmse': 0.3796982765197754, 'grad_mae': 0.21929873526096344, 'grad_mape': 5.288557529449463}, 'non_role_model_metrics': {'avg_loss': 0, 'avg_g_mag_loss': 0, 'avg_g_cos_loss': 0, 'avg_pred_duration': 0, 'avg_grad_duration': 0, 'avg_total_duration': 0, 'avg_pred_std': 0, 'avg_std_loss': 0, 'avg_mean_pred_loss': 0}, 'avg_metrics': {'avg_loss': 0.002682760669579563, 'avg_g_mag_loss': 0.008364482207499076, 'avg_g_cos_loss': 0.010354253430961675, 'avg_pred_duration': 8.742810010910034, 'avg_grad_duration': 8.114531993865967, 'avg_total_duration': 16.857342004776, 'avg_pred_std': 0.09103205054998398, 'avg_std_loss': 0.0308249332010746, 'avg_mean_pred_loss': 2.5912582714227028e-05}, 'min_metrics': {'avg_loss': 0.002682760669579563, 'avg_g_mag_loss': 0.008364482207499076, 'avg_g_cos_loss': 0.010354253430961675, 'pred_duration': 8.742810010910034, 'grad_duration': 8.114531993865967, 'total_duration': 16.857342004776, 'pred_std': 0.09103205054998398, 'std_loss': 0.0308249332010746, 'mean_pred_loss': 2.5912582714227028e-05, 'pred_rmse': 0.05179537460207939, 'pred_mae': 0.037153515964746475, 'pred_mape': 0.1209072470664978, 'grad_rmse': 0.3796982765197754, 'grad_mae': 0.21929873526096344, 'grad_mape': 5.288557529449463}, 'model_metrics': {'realtabformer': {'avg_loss': 0.002682760669579563, 'avg_g_mag_loss': 0.008364482207499076, 'avg_g_cos_loss': 0.010354253430961675, 'pred_duration': 8.742810010910034, 'grad_duration': 8.114531993865967, 'total_duration': 16.857342004776, 'pred_std': 0.09103205054998398, 'std_loss': 0.0308249332010746, 'mean_pred_loss': 2.5912582714227028e-05, 'pred_rmse': 0.05179537460207939, 'pred_mae': 0.037153515964746475, 'pred_mape': 0.1209072470664978, 'grad_rmse': 0.3796982765197754, 'grad_mae': 0.21929873526096344, 'grad_mape': 5.288557529449463}}}\n"
]
}
],
"source": [
"import torch\n",
"from ml_utility_loss.loss_learning.estimator.pipeline import train, train_2\n",
"from ml_utility_loss.loss_learning.estimator.process_simple import train_epoch, eval as _eval\n",
"from ml_utility_loss.params import GradientPenaltyMode\n",
"from ml_utility_loss.util import clear_memory\n",
"import time\n",
"#torch.autograd.set_detect_anomaly(True)\n",
"\n",
"del model\n",
"clear_memory()\n",
"\n",
"#opt = params[\"Optim\"](model.parameters())\n",
"loss = train_2(\n",
" [train_set, val_set, test_set],\n",
" preprocessor=preprocessor,\n",
" #whole_model=model,\n",
" #optim=opt,\n",
" log_dir=\"logs\",\n",
" checkpoint_dir=\"checkpoints\",\n",
" verbose=True,\n",
" allow_same_prediction=allow_same_prediction,\n",
" wandb=wandb if log_wandb else None,\n",
" study_name=study_name,\n",
" **params\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "9b514a07",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T14:00:22.983471Z",
"iopub.status.busy": "2024-03-22T14:00:22.983097Z",
"iopub.status.idle": "2024-03-22T14:00:22.987681Z",
"shell.execute_reply": "2024-03-22T14:00:22.986775Z"
},
"papermill": {
"duration": 0.02542,
"end_time": "2024-03-22T14:00:22.989686",
"exception": false,
"start_time": "2024-03-22T14:00:22.964266",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"model = loss[\"whole_model\"]\n",
"opt = loss[\"optim\"]"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "331a49e1",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T14:00:23.023599Z",
"iopub.status.busy": "2024-03-22T14:00:23.023288Z",
"iopub.status.idle": "2024-03-22T14:00:23.126595Z",
"shell.execute_reply": "2024-03-22T14:00:23.125728Z"
},
"papermill": {
"duration": 0.122795,
"end_time": "2024-03-22T14:00:23.129060",
"exception": false,
"start_time": "2024-03-22T14:00:23.006265",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"import torch\n",
"from copy import deepcopy\n",
"\n",
"torch.save(deepcopy(model.state_dict()), \"model.pt\")\n",
"#torch.save(deepcopy(opt.state_dict()), \"optim.pt\")"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "123b4b17",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T14:00:23.165615Z",
"iopub.status.busy": "2024-03-22T14:00:23.165292Z",
"iopub.status.idle": "2024-03-22T14:00:23.485004Z",
"shell.execute_reply": "2024-03-22T14:00:23.484004Z"
},
"papermill": {
"duration": 0.34071,
"end_time": "2024-03-22T14:00:23.487074",
"exception": false,
"start_time": "2024-03-22T14:00:23.146364",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: >"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 300x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"history = loss[\"history\"]\n",
"history.to_csv(\"history.csv\")\n",
"history[[\"avg_loss_train\", \"avg_loss_test\"]].plot()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "2586ba0a",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T14:00:23.524381Z",
"iopub.status.busy": "2024-03-22T14:00:23.523671Z",
"iopub.status.idle": "2024-03-22T14:04:32.132930Z",
"shell.execute_reply": "2024-03-22T14:04:32.132048Z"
},
"papermill": {
"duration": 248.630794,
"end_time": "2024-03-22T14:04:32.135514",
"exception": false,
"start_time": "2024-03-22T14:00:23.504720",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"\n",
"from ml_utility_loss.loss_learning.estimator.pipeline import eval\n",
"#eval_loss = loss[\"eval_loss\"]\n",
"\n",
"batch_size = params[\"batch_size_low\"] if \"batch_size_low\" in params else params[\"batch_size\"]\n",
"\n",
"eval_loss = eval(\n",
" test_set, model,\n",
" batch_size=batch_size,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "187137f6",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T14:04:32.172721Z",
"iopub.status.busy": "2024-03-22T14:04:32.172390Z",
"iopub.status.idle": "2024-03-22T14:04:32.193148Z",
"shell.execute_reply": "2024-03-22T14:04:32.192186Z"
},
"papermill": {
"duration": 0.041408,
"end_time": "2024-03-22T14:04:32.195213",
"exception": false,
"start_time": "2024-03-22T14:04:32.153805",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>avg_g_cos_loss</th>\n",
" <th>avg_g_mag_loss</th>\n",
" <th>avg_loss</th>\n",
" <th>grad_duration</th>\n",
" <th>grad_mae</th>\n",
" <th>grad_mape</th>\n",
" <th>grad_rmse</th>\n",
" <th>mean_pred_loss</th>\n",
" <th>pred_duration</th>\n",
" <th>pred_mae</th>\n",
" <th>pred_mape</th>\n",
" <th>pred_rmse</th>\n",
" <th>pred_std</th>\n",
" <th>std_loss</th>\n",
" <th>total_duration</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>realtabformer</th>\n",
" <td>0.013763</td>\n",
" <td>0.006845</td>\n",
" <td>0.002683</td>\n",
" <td>8.117687</td>\n",
" <td>0.219299</td>\n",
" <td>5.28856</td>\n",
" <td>0.379699</td>\n",
" <td>0.000026</td>\n",
" <td>8.684867</td>\n",
" <td>0.037153</td>\n",
" <td>0.120907</td>\n",
" <td>0.051795</td>\n",
" <td>0.091032</td>\n",
" <td>0.030825</td>\n",
" <td>16.802554</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" avg_g_cos_loss avg_g_mag_loss avg_loss grad_duration \\\n",
"realtabformer 0.013763 0.006845 0.002683 8.117687 \n",
"\n",
" grad_mae grad_mape grad_rmse mean_pred_loss pred_duration \\\n",
"realtabformer 0.219299 5.28856 0.379699 0.000026 8.684867 \n",
"\n",
" pred_mae pred_mape pred_rmse pred_std std_loss \\\n",
"realtabformer 0.037153 0.120907 0.051795 0.091032 0.030825 \n",
"\n",
" total_duration \n",
"realtabformer 16.802554 "
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"\n",
"metrics = pd.DataFrame(eval_loss[\"model_metrics\"]).T\n",
"metrics.to_csv(\"eval.csv\")\n",
"metrics"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "123d305b",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T14:04:32.230875Z",
"iopub.status.busy": "2024-03-22T14:04:32.230010Z",
"iopub.status.idle": "2024-03-22T14:04:32.737553Z",
"shell.execute_reply": "2024-03-22T14:04:32.736522Z"
},
"papermill": {
"duration": 0.527728,
"end_time": "2024-03-22T14:04:32.739757",
"exception": false,
"start_time": "2024-03-22T14:04:32.212029",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"from ml_utility_loss.util import clear_memory\n",
"clear_memory()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "a3eecc2a",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T14:04:32.777689Z",
"iopub.status.busy": "2024-03-22T14:04:32.777370Z",
"iopub.status.idle": "2024-03-22T14:09:14.837137Z",
"shell.execute_reply": "2024-03-22T14:09:14.836205Z"
},
"papermill": {
"duration": 282.081664,
"end_time": "2024-03-22T14:09:14.839804",
"exception": false,
"start_time": "2024-03-22T14:04:32.758140",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Caching in ../../../../contraceptive/_cache_aug_test/realtabformer/all inf False\n",
"Caching in ../../../../contraceptive/_cache_bs_test/realtabformer/all inf False\n",
"Caching in ../../../../contraceptive/_cache_synth_test/realtabformer/all inf False\n"
]
}
],
"source": [
"#\"\"\"\n",
"from ml_utility_loss.loss_learning.estimator.process import pred, pred_2\n",
"from ml_utility_loss.util import stack_samples\n",
"\n",
"#samples = test_set[list(range(len(test_set)))]\n",
"#y = {m: pred(model[m], s) for m, s in samples.items()}\n",
"y = pred_2(model, test_set, batch_size=batch_size)\n",
"#\"\"\""
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "6ab51db8",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T14:09:14.877034Z",
"iopub.status.busy": "2024-03-22T14:09:14.876694Z",
"iopub.status.idle": "2024-03-22T14:09:14.903623Z",
"shell.execute_reply": "2024-03-22T14:09:14.902858Z"
},
"papermill": {
"duration": 0.04813,
"end_time": "2024-03-22T14:09:14.905644",
"exception": false,
"start_time": "2024-03-22T14:09:14.857514",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"import os\n",
"import pandas as pd\n",
"from ml_utility_loss.util import transpose_dict\n",
"\n",
"os.makedirs(\"pred\", exist_ok=True)\n",
"y2 = transpose_dict(y)\n",
"for k, v in y2.items():\n",
" df = pd.DataFrame(v)\n",
" df.to_csv(f\"pred/{k}.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "d81a30f1",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T14:09:14.939512Z",
"iopub.status.busy": "2024-03-22T14:09:14.939241Z",
"iopub.status.idle": "2024-03-22T14:09:14.944671Z",
"shell.execute_reply": "2024-03-22T14:09:14.943801Z"
},
"papermill": {
"duration": 0.024708,
"end_time": "2024-03-22T14:09:14.946665",
"exception": false,
"start_time": "2024-03-22T14:09:14.921957",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'realtabformer': 0.3827591784511294}\n"
]
}
],
"source": [
"print({k: sum(v[\"pred\"])/len(v[\"pred\"]) for k, v in y.items()})"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "3b3ff322",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T14:09:14.983564Z",
"iopub.status.busy": "2024-03-22T14:09:14.983242Z",
"iopub.status.idle": "2024-03-22T14:09:15.352971Z",
"shell.execute_reply": "2024-03-22T14:09:15.352073Z"
},
"papermill": {
"duration": 0.390816,
"end_time": "2024-03-22T14:09:15.355058",
"exception": false,
"start_time": "2024-03-22T14:09:14.964242",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAASIAAAE8CAYAAABkYrxdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHCElEQVR4nO3deXhTVf4/8PfNnrZZ2tKVpgul7LIvsgkqKogKOqKoM7Qi4iiM4zA8P2WeGdxGi46ijAujo7bgxox+cRtHBFTAUXZEQZC1LaWUtnRLm6RZz++Pm6RNm7RJmuS26ef1PHna3JzcnJs0n579cIwxBkIIEZBI6AwQQggFIkKI4CgQEUIER4GIECI4CkSEEMFRICKECI4CESFEcBSICCGCo0BECBEcBSLi02OPPQaO40J6zuLiYnAchwMHDviV/m9/+xsGDBgAsViM0aNHhzQvpOegQEQC8vTTT+Pjjz+OyGtt3boV/+///T9MnToVRUVFePrppyPyuiTyJEJngPQuTz/9NG699VbMnz8/7K/19ddfQyQS4c0334RMJgv76xHhUIkoShgMBqGzEHLV1dVQKpUhC0KMMZhMppCcqzuMRqPQWehxKBD1Qq62m2PHjuHOO+9EfHw8pk2bBgB45513MG7cOCiVSiQkJGDhwoUoLy/3eP63336LBQsWIDMzE3K5HDqdDn/4wx+6/JJyHAeDwYANGzaA4zhwHIeCggIAQFlZGR544AEMHjwYSqUSiYmJWLBgAUpLS72ey2g04r777kNiYiLUajUWLVqE+vp6j9cqKiqCwWBwv1ZxcTEAwGaz4cknn0Rubi7kcjmys7Pxpz/9CWaz2eM1srOzccMNN+DLL7/E+PHjoVQq8dprr2HHjh3gOA7//ve/8fjjj6N///5QqVS49dZb0djYCLPZjIceegjJycmIi4vD3Xff3eHc/r7XM2fOxIgRI3Dw4EFcccUViImJwZ/+9KdO3+e+iKpmvdiCBQuQl5eHp59+GowxPPXUU/jLX/6C2267DUuWLEFNTQ1eeuklXHHFFfjhhx+g1WoBAB988AGMRiPuv/9+JCYmYt++fXjppZdw/vx5fPDBBz5f7+2338aSJUswceJELF26FACQm5sLANi/fz++//57LFy4EBkZGSgtLcX69esxc+ZMHDt2DDExMR7nWr58ObRaLR577DGcOHEC69evR1lZmTtIvP3223j99dexb98+vPHGGwCAKVOmAACWLFmCDRs24NZbb8Uf//hH7N27F4WFhTh+/Dg++ugjj9c5ceIE7rjjDtx333249957MXjwYPdjhYWFUCqVeOSRR3D69Gm89NJLkEqlEIlEqK+vx2OPPYY9e/aguLgYOTk5WL16tfu5/r7XAFBbW4s5c+Zg4cKF+PWvf42UlJQAP+k+gJFe59FHH2UA2B133OE+VlpaysRiMXvqqac80h45coRJJBKP40ajscM5CwsLGcdxrKysrMPrtBUbG8vy8/M7PN/bOXfv3s0AsI0bN7qPFRUVMQBs3LhxzGKxuI8/++yzDAD75JNP3Mfy8/NZbGysxzkPHz7MALAlS5Z4HF+5ciUDwL7++mv3saysLAaAbdmyxSPtN998wwCwESNGeOThjjvuYBzHsTlz5niknzx5MsvKynLfD+S9njFjBgPA/vGPf3R4f0grqpr1Yr/97W/dv2/evBkOhwO33XYbLl265L6lpqYiLy8P33zzjTutUql0/24wGHDp0iVMmTIFjDH88MMPQeWl7TmtVitqa2sxcOBAaLVaHDp0qEP6pUuXQiqVuu/ff//9kEgk+O9//9vp67geX7FihcfxP/7xjwCAzz//3ON4Tk4OrrvuOq/nWrRokUceJk2aBMYYFi9e7JFu0qRJKC8vh81mAxDYew0Acrkcd999d6fX1ddR1awXy8nJcf9+6tQpMMaQl5fnNW3bL9y5c+ewevVqfPrppx7tMgDQ2NgYVF5MJhMKCwtRVFSEiooKsDYLf3o7Z/t8xsXFIS0tzWebkktZWRlEIhEGDhzocTw1NRVarRZlZWUex9u+R+1lZmZ63NdoNAAAnU7X4bjD4UBjYyMSExMDeq8BoH///tTr1wUKRL1Y21KIw+EAx3H44osvIBaLO6SNi4sDANjtdlxzzTWoq6vDww8/jCFDhiA2NhYVFRUoKCiAw+EIKi+/+93vUFRUhIceegiTJ0+GRqMBx3FYuHBh0OfsjL8DLdu+R+15e586O+4Krv6+1/7kgfAoEEWJ3NxcMMaQk5ODQYMG+Ux35MgRnDx5Ehs2bMCiRYvcx7dt2+bX6/gKAB9++CHy8/Px/PPPu4+1tLSgoaHBa/pTp07hyiuvdN9vbm5GZWUlrr/++k5fPysrCw6HA6dOncLQoUPdx6uqqtDQ0ICsrCy/rqM7/H2vif+ojShK3HLLLRCLxXj88cc9qkUA/5+8trYWQOt/+7ZpGGNYt26dX68TGxvrNbiIxeIOr/vSSy/Bbrd7Pc/rr78Oq9Xqvr9+/XrYbDbMmTOn09d3BaoXX3zR4/jatWsBAHPnzu3qErrN3/ea+I9KRFEiNzcXf/3rX7Fq1SqUlpZi/vz5UKlUKCkpwUcffYSlS5di5cqVGDJkCHJzc7Fy5UpUVFRArVbj//7v/zq0Ffkybtw4bN++HWvXrkV6ejpycnIwadIk3HDDDXj77beh0WgwbNgw7N69G9u3b0diYqLX81gsFlx99dW47bbbcOLECbz66quYNm0abrrppk5ff9SoUcjPz8frr7+OhoYGzJgxA/v27cOGDRswf/58j1JWuPj7XhP/USCKIo888ggGDRqEF154AY8//jgAvuH12muvdX/BpVIpPvvsMzz44IMoLCyEQqHAzTffjOXLl2PUqFFdvsbatWuxdOlS/PnPf4bJZEJ+fj4mTZqEdevWQSwW491330VLSwumTp2K7du3++yxevnll/Huu+9i9erVsFqtuOOOO/D3v//dr7afN954AwMGDEBxcTE++ugjpKamYtWqVXj00UcDeLe6x5/3mviPY+3LloQQEmHURkQIERwFIkKI4CgQEUIER4GIECI4CkSEEMFRICKECK5XjyNyOBy4cOECVCpVyBd5J4R0H2MMTU1NSE9Ph0jku9zTqwPRhQsXOsyUJoT0POXl5cjIyPD5eK8ORCqVCgB/kWq1WuDcEELa0+v10Ol07u+qL706ELmqY2q1mgIRIT1YV00n1FhNCBEcBSJCiOAoEBFCBNer24j8wRiDzWbzuUAX8U0sFkMikdDQCBJ2UR2ILBYLKisraWfNboiJiUFaWhot/k7CKmoDkcPhQElJCcRiMdLT0yGTyeg/ewAYY7BYLKipqUFJSQny8vI6HZBGSHcIGoiys7M7bP8CAA888ABeeeWVbp3bYrHA4XBAp9N12GWU+EepVEIqlaKsrAwWiwUKhULoLJEoJWgg2r9/v0fbzdGjR3HNNddgwYIFIXsN+i/ePdH0/pltdsgl3rcKIsISNBAlJSV53F+zZg1yc3MxY8YMgXJEolVtsxnv7zuH4ekaTM/rB32LDQmx1O7VU/SYNiKLxYJ33nkHK1as8NmWYzabYTab3ff1en2kskd6ufJ6E6x2hlPVTThS0Qi5RISlVwygdsMeoseUuz/++GM0NDSgoKDAZ5rCwkJoNBr3jSa8dl92dnaHPcKi0YUGEwBgRH8NOABGix2NJmvnTyIR02MC0Ztvvok5c+YgPT3dZ5pVq1ahsbHRfSsvL49gDklvVtPEl6TTNUokxPFVskvNFiGzRNroEVWzsrIybN++HZs3b+40nVwuh1wuj1Cueg+LxULjfDphszvQYORLP/1UciTEyFCtN6PeSIGop+gRJaKioiIkJydHZLtgALDYHD5vNrvD77RWP9IGY+bMmVi+fDmWL18OjUaDfv364S9/+Yt7e+Ps7Gw8+eSTWLRoEdRqNZYuXQoA+N///ofp06dDqVRCp9PhwQcfhMFgcJ+3uroaN954I5RKJXJycvDuu+8Glb/eps5ggYMxKKRixMrEiHc2UtcbKBD1FIKXiBwOB4qKipCfnw+JJDLZeeWb0z4fy+kXi/lj+rvvv77rDKx273tQZsQrsWB8azvVW9+VwGTxnEryh2sGBZXHDRs24J577sG+fftw4MABLF26FJmZmbj33nsBAM899xxWr17t3t30zJkzmD17Nv7617/irbfeQk1NjTuYFRUVAQAKCgpw4cIFfPPNN5BKpXjwwQdRXV0dVP56kzpnyScxlh/UGh/jDERUIuoxBA9E27dvx7lz57B48WKhs9Kj6HQ6vPDCC+A4DoMHD8aRI0fwwgsvuAPRVVddhT/+8Y/u9EuWLMFdd92Fhx56CACQl5eHv//975gxYwbWr1+Pc+fO4YsvvsC+ffswYcIEAHy73NChQyN+bZEmE4uQEa9EqoYfkKmNkQIANVb3IIIHomuvvRaR3vV62ZUDfT4matebu/SKXJ9p2/f8Lp6a051sebj88ss9upYnT56M559/3j0AdPz48R7pf/zxR/z0008e1S3GmHuqy8mTJyGRSDBu3Dj340OGDIFWqw1ZnnuqAUlxGJAU576vUUoxor8GaoUEjDHqwu8BBA9EQpBJ/G8aC1fa7oqNjfW439zcjPvuuw8PPvhgh7SZmZk4efJkpLLW4ymkYlwzLEXobJA2+mQg6g327t3rcX/Pnj3Iy8uDWOx9isLYsWNx7NgxDBzovbQ3ZMgQ2Gw2HDx40F01O3HiBBoaGkKa757I7mAQty/qkh6lR/SakY7OnTuHFStW4MSJE3j//ffx0ksv4fe//73P9A8//DC+//57LF++HIcPH8apU6fwySefYPny5QCAwYMHY/bs2bjvvvuwd+9eHDx4EEuWLIFSqYzUJQnC4WB49ZvT+OeuszBabO7jFpsDdQYLDGZbJ88mkUKBqIdatGgRTCYTJk6ciGXLluH3v/+9u5vem5EjR2Lnzp04efIkpk+fjjFjxmD16tUeA0SLioqQnp6OGTNm4JZbbsHSpUuRnJwcicsRTLPFBpuDwWixQ9FmwuvXv1Rhw/elOF5J04R6Aqqa9VBSqRQvvvgi1q9f3+Gx0tJSr8+ZMGECtm7d6vOcqamp+M9//uNx7De/+U238tnT6Z09YyqFBKI21bNYOf+nb7DQyp09AZWISFRrdla9VArP/7kxMr50ZLJQ1awnoEBEoprRWeJxlYBclFKJx+NEWFQ164F27NghdBaihmuku1Lm2dvoKhFRIOoZqEREopqrVyxG6j0QtZ+SQ4RBgYhEtYRYGXQJMUiM81ydQNmmRBTpkf2kI6qakag2PjsB47MTOhyPkUkwSqeBUiqBgwFiGu8oKApEpE8SizhcNYSmefQUVDUjUYuf9EvVrt6ASkQkalnsDqzfcQZKqRj3TMuBROz5f7fFaofJYodCKu7Qq0Yii0pEJGqZLHYwBtgcrEMQAoCtx6pQ/H0pTlU3CZA70hYFIhK1XNM3lFLvpR2Fc9mWFmtwS/qS0KFARKKWa/pGjI9ql8IZoFqsNJZIaH0rEDEG2CyRvwUwTmXjxo1ITEz02EgSAObPnx/1E1RDzTVqOkbuvSmUAlHPIXhjdUVFBR5++GF88cUXMBqNGDhwIIqKijoshRoSdivw7fOhP29Xpv8RkPi33c+CBQvw4IMP4tNPP8WCBQsA8LtvfP75553OrCcduQORr6qZlP8/bA5ytxUSOoKWiOrr6zF16lRIpVJ88cUXOHbsGJ5//nnEx8cLmS1BKZVK3Hnnne6dNwDgnXfeQWZmJmbOnClcxnoh1/QNqpr1fIKWiJ555hnodDqPL11OTugWoO9ALOVLJ5EmlgaU/N5778WECRNQUVGB/v37o7i4GAUFBbTIe4A0MVJkJsS4d3ZtT+5qrKYSkeAEDUSffvoprrvuOixYsAA7d+5E//798cADD7i3zGnPbDZ7tJ3o9QGursdxfleRhDRmzBiMGjUKGzduxLXXXouff/4Zn3/+udDZ6nXGZsZjbKbv0rVWKcNonRZqpeAtFH2eoFWzs2fPYv369cjLy8OXX36J+++/Hw8++CA2bNjgNX1hYSE0Go37ptPpvKaLBkuWLEFxcTGKioowa9asqL5WoWhipLhySDLGZXWci0Yii2MCTj2WyWQYP348vv/+e/exBx98EPv378fu3bs7pPdWItLpdGhsbIRarfZI29LSgpKSEuTk5EChUITvIsKksbER6enpsNls2LhxI26//XZB8tGb30eHg3ksD0siT6/XQ6PReP2OtiVoiSgtLQ3Dhg3zODZ06FCcO3fOa3q5XA61Wu1xi1YajQa/+tWvEBcXh/nz5wudnV7H7mD4+9en8I+dZzptjDZZ7Kg3WGCzUzuRkAQNRFOnTsWJEyc8jp08eRJZWVkC5ahnqaiowF133QW5XC50Vnodo8UGxgCz1eFulPZmw+5SFH9figbaflpQgrbS/eEPf8CUKVPw9NNP47bbbsO+ffvw+uuv4/XXXxcyW4Krr6/Hjh07sGPHDrz66qtCZ6dXatt131lvo0Iigslipy58gQkaiCZMmICPPvoIq1atwhNPPIGcnBy8+OKLuOuuu4TMluDGjBmD+vp6PPPMMxg8eLDQ2emVDD7Wqm6PH0tkpflmAhO83/KGG27ADTfcIHQ2ehRf+5YR/7l2dY2Vdx6IZBLX6GoqEQmpb801I32Ge/cOaef/a+XO3V8tNKhRUFEfiGhh9O7pre+fsYvpHS5yCc036wmiNhBJpfy0CqPRKHBOejfX++d6P3sLjZKf3tF+9472XFUzKhEJS/A2onARi8XQarWorq4GAMTExNBcrQAwxmA0GlFdXQ2tVguxuHctpTpKp8UonbbLdP3jlbA7GNK1yvBnivgUtYEIAFJTUwHAHYxI4LRarft9jEa5SXHITYoTOht9XlQHIo7jkJaWhuTkZFitNGAtUFKptNeVhFxoekfvEtWByEUsFvfaLxQJHGMML39zGjKJCL+5PAuxPlZoBPiAZbLaYWcMakXvageLJlHbWE36rharA3YHc28V1JmKBhNe33UWHx2qiFDuiDcUiEjUcQ1mlEtFEHdRPZNTr1mPQIGIRB3XGKJYWdctD64BjTSyWlgUiEjUMfo5zwxoHUdktTPYaXtqwVAgIlHH2MV+Zm3J2iwRQtUz4VAgIlHHFEDVTCziaHR1D0CBiEQdtXN6R784/xaUk4lpBr7Q+sQ4ItK3jOivwYj+Gr/TD0lTwWZn7oZrEnkUiEifNz0vSegs9HlUNSNRx0G9X70OlYhI1Fm/8wxEHIe7Ls/0a9qG3cFgttkh4rguR2KT8KBARKKKxeZw9351tntHW9/8Uo0jFY2YnJuIywckhjN7xAdBq2aPPfYYOI7zuA0ZMkTILJFeztV1LxFx7t6wrlD3vfAELxENHz4c27dvd9+XSATPEunFjFbnYEa5xO+F8Gi5WOEJ/q2XSCRRvfAWiSx/16pui0pEwhO81+zUqVNIT0/HgAEDcNddd/ncbhoAzGYz9Hq9x42QtozmwAOReycPOw1oFIqggWjSpEkoLi7Gli1bsH79epSUlGD69Oloamrymr6wsBAajcZ90+l0Ec4x6ela55n5X9inEpHwONaD9otpaGhAVlYW1q5di3vuuafD42azGWaz2X1fr9dDp9OhsbERarU6klklPdSxC3r8clGPAUlxGO3H4vkAUF5nxIcHz6NfnAy/mZwd1vz1NXq9HhqNpsvvqOBtRG1ptVoMGjQIp0+f9vq4XC6HXO7f/CHSNw1LV2NYemD/lOLkEgxNU9FSsQISvI2orebmZpw5cwZpaWlCZ4X0IfGxMswekYYpA/sJnZU+S9BAtHLlSuzcuROlpaX4/vvvcfPNN0MsFuOOO+4QMlukF6PpHb2ToFWz8+fP44477kBtbS2SkpIwbdo07NmzB0lJNAmRBOf1b8+CMWDhBB3iYzvf5bUtm90Bi90BhURM2xAJQNBAtGnTJiFfnkQZh3PnDoBfON9fjDG8uuMM7A6GJdNzoKK2oojrUW1EhHSH0coHIY4DFAGsLcRxtEqj0CgQkajRdq3qQKtXrnlpFjsFIiH0qO57QrrD5N69o5M/6xY9cG43YG4CUkcCSYMA0KBGoVEgIlHDPc/M15pC5mbgh7f5YAQAl04BQ28AUi9zByKa+CoMqpqRqNHlNkKnvuSDkDIeSBnuPLYVMDfRjq8CoxIRiRpxcimyEmOQrFZ0fLDpIlBzkm/JHnELENMPMNUB+krg/H7IxEMBUIlIKBSISNQYnKrC4FSV9wfP7eF/Jg8D4pL537OmAUc+AC4cRv+skeA4FeJjqOteCBSISPSzmoBLJ/nfdZNajyfmAnIVYG7CSGUtRmYOFiZ/hNqISPTwuXd99XHAYQfikgBVSutxjgNShvG/V/0c/gwSnygQkajxxrdn8eqO06gzWDwfqD7G/0y5rOOTkpxrpNeXwG6z0W6vAqFARKKCw8Fgstphtjo8d++wtgCNFfzvzjFDHlRpgFSJmvomFH3xHT7/qTIyGSYeKBCRqGC02sEYX9tSth1HVF8CMAcQk8h327fHcUBCDsQiDtqWcuq+FwgFIhIVfE7vqD3D/0wc4PvJ8dkQiziozBdpiodAggpEZ8+eDXU+COkW16L5HtM7GAPqnH+rCbm+n6zOgFjEIc5SA6vVGsZcEl+CCkQDBw7ElVdeiXfeeQctLS2hzhMhATM4S0SxbUdVG2sBiwEQSQBNJxstxCRAJIuBiNkhNlaHOafEm6AC0aFDhzBy5EisWLECqampuO+++7Bv375Q540Qv5nc+5m1KRE1lvM/1emAuJMhcxwHcXwGAEBhqEQP2k+izwgqEI0ePRrr1q3DhQsX8NZbb6GyshLTpk3DiBEjsHbtWtTU1IQ6n4R0Kk4hQXa/GCSr22yu0OAMRJqMLp8v1vJpVJYqmuYhgG41VkskEtxyyy344IMP8Mwzz+D06dNYuXIldDodFi1ahMpK6golkTEkVY2bx2RgbGabnrHG8/xPbdf734k16UiIlSFH0RymHJLOdCsQHThwAA888ADS0tKwdu1arFy5EmfOnMG2bdtw4cIFzJs3L1T5JCQwLY38jeMAdf8uk3NxKRicosIwrQMKUIN1pAUViNauXYvLLrsMU6ZMwYULF7Bx40aUlZXhr3/9K3JycjB9+nQUFxfj0KFDfp9zzZo14DgODz30UDBZIn1ch+kdrtJQXAog8WMvPFkMoHDuh2agButIC2rS6/r167F48WIUFBT43IMsOTkZb775pl/n279/P1577TWMHDkymOwQgn9+exYOxnDHhEx+9w79Bf4BP9qH3OJS4DA1gukvQqzNDE9GiVdBlYi2bduGhx9+uEMQYozh3LlzAACZTIb8/Pwuz9Xc3Iy77roL//znPxEf72XkKyFdsDt37zBbHa27dzRX8T9VqX6fZ1elCHtL6nDxQlkYckk6E1Qgys3NxaVLlzocr6urQ05OTkDnWrZsGebOnYtZs2Z1mdZsNkOv13vcCHGNqhZxHD+9gzF+ITQAiPM/EFmV/H56XFNVyPNIOhdU1czXOIvm5mYoFF5Wx/Nh06ZNOHToEPbv3+9X+sLCQjz++ON+n5/0De61qmVicBwHGOsAu5UfyBiT6Pd5WCy/YBoz1vLLhoj835KIdE9AgWjFihUA+H2gVq9ejZiYGPdjdrsde/fuxejRo/06V3l5OX7/+99j27ZtfgevVatWufMAAHq9Hjpd112zJLo1m52jquXOP2d3aSgJEPlf6BcpNbBzUjjsNsDUAMT6H8RI9wQUiH744QcAfInoyJEjkMlat/SVyWQYNWoUVq5c6de5Dh48iOrqaowdO9Z9zG63Y9euXXj55ZdhNpshFnv+R5LL5ZDL/egBIX2KwR2InH8vrvahAKplACCTSNAi1cDuaAaMlygQRVBAgeibb74BANx9991Yt24d1Gp10C989dVX48iRIx7H7r77bgwZMgQPP/xwhyBEiC/NLXwgUimcf87uhuoUH8/wTiYRoU6aALujCTBcApJo6dhICaqNqKioqNsvrFKpMGLECI9jsbGxSExM7HCckM5oYqT89A6Vol1DdeCByCSNh91aypeISMT4HYhuueUWFBcXQ61W45Zbbuk07ebNm7udMUL8NTxdg+HpGv5OSyO/WD4nApyNz/6Kj5EiMSUdsTVH+BIRiRi/A5FGo+F7JJy/h8OOHTvCcl7ShzQ7R0XHJnY+496LrMRYZI0bBuzZxfe8ORwBNXaT4Pn9SbWtjoWiakZIqFjtDkjFzoARxPghD3INH8DsNqClAYhJCEkeSeeCCvcmkwlGo9F9v6ysDC+++CK2bt0asowR4g+r3YGXvz6NV3ec5nfgCGJEtQeRCA6ls7eMqmcRE1QgmjdvHjZu3AgAaGhowMSJE/H8889j3rx5WL9+fUgzSEhnXD1mDgeDTCxqUyIKrH0IABqNVrz89Sl8WeKcfW+sDVU2SReCXqFx+vTpAIAPP/wQqampKCsrw8aNG/H3v/89pBkkpDOuwYxxcgk4qxEwN/EPBNhjBgBSCQernaFZpOZnD5jqQ5lV0omgApHRaIRKxe8xvnXrVtxyyy0QiUS4/PLLUVZGEwZJ5LjXqpZLWqtlMQn+Lf3RjszZzmSSaGBnDDDVhSyfpHNBL57/8ccfo7y8HF9++SWuvfZaAEB1dXW3BjkSEihX1SxOLgFck1WDKA0BgEQsgljEoUWi4dc3MlIgipSgAtHq1auxcuVKZGdnY9KkSZg8eTIAvnQ0ZsyYkGaQkM64q2YKCdAc3EDGtuQSEVqkaj4QWQyAzRyKbJIuBDWy+tZbb8W0adNQWVmJUaNGuY9fffXVuPnmm0OWOUK64jHhtTa4qR1tySQiGEVyWDklACtfKlJ7X/yPhE5QgQgAUlNTkZrq2UU6ceLEbmeIkECkqBWw2Rn6KdDauBzsGCLwgQgALDItYK/hz0mBKOyCCkQGgwFr1qzBV199herqajgcntuv0E6wJFImZCdgQjaABn5lUCjU/PrTQUrXKhEnl0BsTwT0NdRgHSFBBaIlS5Zg586d+M1vfoO0tDT31A9CBNPNhmqXKwc7xx+VpQL6X6jBOkKCCkRffPEFPv/8c0ydOjXU+SHEb3YHg93B+OpUCBqqPSid66dTiSgiggpE8fHxSEigOThEWJWNJnxw4DxS1ArcKerm1I52mDIeHMCXiBjj90cjYRNU9/2TTz6J1atXe8w3IyTS9Ca+x0wusgMG53SMbpaI9pXU4eWvT2HXef7csJn5ZUVIWAVVInr++edx5swZpKSkIDs7G1Kp1OPxQDZWJCRYTS38nLB+nB5gDr6RWq7q1jk5DrDaGcwOMd/w3aLnq2fdaAAnXQsqEM2fPz/E2SAkcHrnqOp4h7MdJy6l21Uo1zQPs80BKBP4QGSsC2yjRhKwoALRo48+Gup8EBIwV4lIY28TiLrJPY7I5gDi4oH6UmqwjoCgl59raGjAG2+8gVWrVqGujv+gDh06hIqKipBljpDONLkWzbc624dC0FDtDkR2R+uiaDQLP+yCCkQ//fQTBg0ahGeeeQbPPfccGhoaAPBrVa9atcrv86xfvx4jR46EWq2GWq3G5MmT8cUXXwSTJdLHMMbQ1GIFx+xQWkLTUA20Vs0sNkebLnwKROEWVCBasWIFCgoKcOrUKY/NEa+//nrs2rXL7/NkZGRgzZo1OHjwIA4cOICrrroK8+bNw88//xxMtkgfYncwDElVY5DKDLmIARJZa+DoBrnUSyBydeGTsAmqjWj//v147bXXOhzv378/Ll686Pd5brzxRo/7Tz31FNavX489e/Zg+PDhwWSN9BESsQizhqUAlVXALxw/vywEY32UUjH6a5WIkYsBhZY/p93Kz8SXx3U/48SroAKRXC6HXq/vcPzkyZNISkoKKiN2ux0ffPABDAaDe1mR9sxmM8zm1mUZvOWB9DGupWG7MeO+LZVCitsmtNnGXK7mtygy1VMgCqOgqmY33XQTnnjiCVitfK8Fx3E4d+4cHn74YfzqV78K6FxHjhxBXFwc5HI5fvvb3+Kjjz7CsGHDvKYtLCyERqNx32jf+77LaLE5F8vv5q4dXaGpHhERVCB6/vnn0dzcjKSkJJhMJsyYMQMDBw6ESqXCU089FdC5Bg8ejMOHD2Pv3r24//77kZ+fj2PHjnlNu2rVKjQ2Nrpv5eXlwWSfRIHvTtfi1a9P4Xx5KX9AFaalOqjnLCKCqpppNBps27YN3333HX788Uc0Nzdj7NixmDVrVsDnkslkGDhwIABg3Lhx2L9/P9atW+e1DUoul0MuD3wtYhJ9GowWKK0NkIscgFga0v3H3tlThkaTFbeN1yGJes4iIuBA5HA4UFxcjM2bN6O0tBQcxyEnJwepqalgjHV7SRCHw+HRDkSIN40mK2Ktl6BQiPjxQyGclGqzO2CxOfixRG17zkjYBBSIGGO46aab8N///hejRo3CZZddBsYYjh8/joKCAmzevBkff/yx3+dbtWoV5syZg8zMTDQ1NeG9997Djh078OWXXwZ6HaQPsdodaGqxIdFSA0WcOOTtQzKJGIDV2YXfpmpGs/DDJqBAVFxcjF27duGrr77ClVde6fHY119/jfnz52Pjxo1YtGiRX+errq7GokWLUFlZCY1Gg5EjR+LLL7/ENddcE0i2SB+jNzmndtjqIBFzIesxc3GNrjbb7IBCQ134ERBQIHr//ffxpz/9qUMQAoCrrroKjzzyCN59912/A9Gbb74ZyMsTAgBoMFkB5kAC6sEhNuQN1R7zzcSSNl34dRSIwiSgXrOffvoJs2fP9vn4nDlz8OOPP3Y7U4R0psFohdLWiBiRM1AoQ7tIn8c0D4B6ziIgoEBUV1eHlBTfxeCUlBTU19OHRcIrKU6O0VoTtDFSfn6ZKOi5217JJe0CEfWchV1AVTO73Q6JxPdTxGIxbDZbtzNFSGcyE2OQmdgCmBWAOj3k54+PlaG/Vslv2ghQz1kEBNxrVlBQ4HMsD3W7k4jRO5ebUYd+wbLROi1G67StB5RUNQu3gAJRfn5+l2n8bagmJBg2uwN1+iYkNlVDzAHQ9A//i7atmlEXflgEFIiKiorClQ9C/FJnsOCz/x3C6No6jBuc3e01qv2i1Lbpwm+OzGv2MaFt5SMkzGoNFqjMVVBIxYA6PKWh8joj/rnrLP59wDmXUSTmxxMBVD0LEwpEpEuNJit2nqzB7jO1/CA/AdUZLIizVEMpC18g4jig2WyD0dym44V6zsIqqEmvpO9osdrxwYFy9/rQ5XVG3DouAyKRMO0ktc1mxJuroYwRh619yGPdahdlAoAS6jkLEyoRkU4dLKtHU4sNMTIxZBIRKhpMOHy+QbD8mOovQuJogVKhCN320u3IxWIAbcYRAVQiCjMKRKRTIo6DSiHB1UNTMD2vHwDgQGkdrG1LCxFidzCwhnMAAHm/LL7tJgxc61Zb7Qx2h3OtagpEYUVVM9KpybmJuHwAP47Gwfgtmc02B6qbzOivVUY0L3UGC1SmCkhEHBRJOWF7Ham49f+zxebg26NiaBZ+OFEgIl1yrTEl5oD5Y/pDrZC621EiSSnlMErVCCgU4OKzw/Y6YhEHqZiD1c5aA5HHLHzqwg81CkTEpyp9C/rFySFu0zDdL064FTLjLLWIixMBkvjwrVHtlKJWwNF2CyFXF76pgW+wpkAUUhSIiFfNZhve23sOMokIS68Y4FFdAfjpPiarHTGyCP4J1ZfyP7WZIZ/o2t6C8V42ZlAm8IHIVA/EZ4X19fsaCkTEk7kZOLUVxspzyKxPQEvG1A5BqLbZjM+PVMJmZ7h7ana3lwf2B2MMF0uOQmu1QxGfDUFaaKjBOmwoEJFWdivw4/uA4RIMjQakN52HutkOsAEejbNqpRRNLTZYbA5caGyJSKO1Xq9H6ZmTEHEM46flIjz9ZV2grYXChrrvSavyvYDhEiCLxWnNZDg4MVLMZUC15/ZOUrEIuUn8SoW/VEZmk8v6878AYOBUKRDHdH9r6a5880s1/rnrLI5WNLYepAXSwoYCEeHZLMD5/QAANvBqnJQMRoV6DGJkYuDsDsDhObVjWJoaAHCyqrl1rE0YGS4cBwBIkweF/bUAflR1s9mGFmub624/C5+EjKCBqLCwEBMmTIBKpUJycjLmz5+PEydOCJmlvqvmOGBtAZTxaIzLhcXmQJV2FBSxGqBFD1T97JE8I16JOLkELVY7Si4Zwps3awvsNacAAHEZ3ncBDjVZ+1UaAWcXvgiw2wBzU0Ty0VcIGoh27tyJZcuWYc+ePdi2bRusViuuvfZaGAxh/sMmHVU5q19pI3HJwO+SkaCKgUg3gT9ecdAjuUjEYXAq34X9y8XwVs+sVcdhNJlhkmqRnBaZ3iq52LWTR5tARLPww0bQxuotW7Z43C8uLkZycjIOHjyIK664QqBc9UEWA9BQxv+ePBSJDjmm5fXj125O7geUfgs0XQSaq4G4ZPfThqSpcLCsHmdrDGix2vmlOcKgqewwGACDdgjUSmlYXqO91i2F2k1lUcbzQYi68EOqR/WaNTbyDYMJCd53ZTCbzR7L0er1kWkojXp1Z/k2D1UKoIxHPIAJsW0+g8SBQM0JoPInIK91W/FklQLjs+Ohi49x73wRcoZaGKvOAuAg7X9ZRIYKAD5m4APUcxYmPaax2uFw4KGHHsLUqVMxYsQIr2kKCwuh0WjcN53Oy6AzEjjXQMF4H/O30kbxP6uOAg7PL+b0vCRk94sN37Ig5/cjVaNAzpCRGDEgcp+3XMKX7szWdusvUc9ZWPSYQLRs2TIcPXoUmzZt8plm1apVaGxsdN/Ky8sjmMMoxRhQV8L/njAAdgfD6epm1DabwVw9Q/E5gFQJWE1AQ2knpwpxT5K5Cag6AolIhNRhVyAjPia05+9ErFyMxDhZx6ogDWoMix5RNVu+fDn+85//YNeuXcjI8L0rg1wu97mDCAmSoYZvIxJLAXV/NJqs+OzHC5BJRHhgZi6fRiQCkoYAF34Aqn8BEgZ4nMJkseNAWR2q9Gb8amz/0FWfSv/H91Bp+vPTOiIoIz4GiyZnd3yAFtIPC0FLRIwxLF++HB999BG+/vpr5OSEb2kH4kOjs1SpyQDEEtQbLQAAbYzUM6AkD+F/XjrRYUyRnTH8dL4R5XVG/Hi+ESHRWAFU/oiyWgMOSsag2SLsErVu1IUfFoIGomXLluGdd97Be++9B5VKhYsXL+LixYswmUxCZqtv0V/gfzrXf25wBqL4GJlnOk0mIIvhxxq52pSc4uQSTB3IL5q262QNyuuM3cuT1QQc/xQ2ux0/23XYVSX3XD9aSB5d+NRgHSqCBqL169ejsbERM2fORFpamvv2r3/9S8hs9S2Nro0K+R1T651jiLQx7dpGXNUzgO9Ba2dUhgZ5KXGwOxg++qEC35+5hEaTNfD8WIzAT/8GTA2osSpwWjsFCbEyJKkiXyV/b+85vL7rDPQt7a4jlg+6MNRGPE/RStA2opA3bpLAWAytja7OElG9rxIRwAeiikPO6tl1Hku1chyH2cNTAVzEqapm7D1bh71n63DDyDTkpfADH5vNNhgtNiTGeq5x5FZ3FjixBWhpBJMo8C13BexWOYanqyPWbd+WwWyDwWxHi8UOtaJNYI5JBHAKMF6KeJ6iVY9orCYCcZWGYvsBUgUAoMHI//f3Gog0OkAWywew+lIgMdfjYYlYhLmXpeFUSjMOn2tAZWML4mNbz3PiYhN2nayBQirGiP5qjNJp+S94czVw5hs+EAGAMh6nk69BxRk7ZBIRRvTXhPzS/aGQitBsBkztu/DdJSIKRKFCgagvc+8fz5eGzDY7mp1tMR2qZkBr9aziID8jv10gAviS0aAUFQalqGCxOSBpU/KxOxjkUhFarHYcKK3Hj2cvYgr3IwazUsTKxHwJK30s9GmT8PXBagDA+Kz4sI3Y7orrdVus7QY1xibxP6lEFDIUiPoyVyBy7g8m4jjMHZmGphar7y9/yjA+ENWcAPKuAyReSk5O7de1npiTgPFZ8SipNeD4iRNQnf4UZrsBPwGQpA7FuJk3QxSbgAO/VMFosaOfSo5xWeFf8sMX13vQoUQUk8h321uMfOlQFitA7qILBaK+yuEAmir5350lIqlYhEEpXazFrO7P7wVvagBqTwEpwwN6WZGIQ67kEnId36A5VYIyUzJ2yy5Hmi4PIue0kim5/VBvsOKa4SmQhGvqiB+U7hJRu0AklrauX+1cv4l0DwWivsp4iR8LI5E5G1/9xHF88Cn9jl8aJMBABGMdcPT/ALsVcWl5GD78ZvS3eDZEK6Ri/Gqc74GtkeKzRAQAMf2cC+lfosmvIdBjpniQCHONH4pLdY8OLrlkwNmaZpi6GjyY7Aw+dSV81cRfdhtw7GN+ETZNBjDiVkAihzZGBq23xnGBqZUSJMbJ3CUjD7HO4E1d+CFBJaK+quki/1Od5j60+0wtqvQtuHFUOgYmx/l+bmwi/zx9JV8q0k307zXPfA00VfHz1obNA8Q9+89vZIYWIzO03h+McfacUYN1SFCJqK9ytQ+p+EDEGGszhsiPNX9cM/IrDnaYke9V9fHWxdWG3ggo1IHmuGdxd+HXCJuPKEGBqC+y21q/QCp+o0KjxQ6LzQGOAzT+LD6WMoIfe2RqAOrOdJ7WWAec+C//e9Zkr93+vY6rRGQx8jfSLRSI+iJDDT9xVaoEFFoArSOq1Qqpfz1VYmlrqajse9+LybdvF8ruPStvNptteHtPGd78X0nHByWy1jlnVD3rNgpEfVGTs6FaleZuqHaNqPY6kNGXjAl8O4/+AnDplPc0p7d5tguFeYfWUJKJRbjUZIbeZPVcRN/FVT1rpupZd/WevwoSOq6GalXr/vHu9qHYAHqv5Cogw9lQfXobPzO/rYpDwIXDfLDrhe1CMokIUjEfqI0WL7P/Xet3G6ojmKvoRIGoL2rXUA0A9Z3NMetM5mR+gGOLvrUKxhjfMH1qK58m54pe2y4UI+N79gzehjTEpfA/m6simKPo1LP7T0no2a2tkzXblIim5CZiUEocUtWKwM4nkfFVrsPv8eOK9v4DkCgAo3N8Tf+xfLDqpWLlYjSarDB5LRG5AlEN33PYi6qdPQ29c31NcxVfYpHHeVSV+sXJMSRVHdzAQnU6MPJ2vvHWYuCDkEgC5F4J5F3bq5dTdZeIzF5KRMp4vtHeYWsNvCQoVCLqa/Qdq2UhodUBE5cCjef4njKtjm+g7uViZPyoaoO3EhHH8e1EjRV8gI9LinDuogeViPoad/tQa7XsUrMZP5yrR0VDN5foFUv4hfWTBkVFEAL4XsR+cTL39kIdxDnfR2on6hYqEfU17h6z1hJReZ0RO07UYGByHPproyOAhMq4rASMy/K+4SeA1p6zZuo56w4qEfUlFmNrW0abQNTpqoykc217zmjp46AJGoh27dqFG2+8Eenp6eA4Dh9//LGQ2Yl+rhn3MYn8jhxObbcQIgGKTeK3F7KagJYQbaXUBwkaiAwGA0aNGoVXXnlFyGz0Hfrz/E/niowu7jFEgQxm7CMMZhve3l2KN749632zB7GktXrmCvQkYIK2Ec2ZMwdz5swRMgt9S6PnGtUAYLU70NTiqppRiag9mUSES818idFsc3hfQlfdn297a7rAL6VLAtarGqvNZjPMZrP7vl6vFzA3vYzD3jrHTNO6+mG90QLG+NUIvS4A1sdJxSIoZWKYLHbofa3lrU4DKkAlom7oVY3VhYWF0Gg07ptOpxM6S71HcxU/vkeq8Fgattb53z4xVibI3mG9gUrB/79ubvGx26yrhNlU1WE7buKfXhWIVq1ahcbGRvetvLxc6Cz1Hg3O90qd4THSeWByHO6YmIlpef0EyljPp3JurtjkKxAp4/kA77DReKIg9aqqmVwuh1we+a2Ho4Jrv/p2C71LxSKkagKcX9bHuEpEPgMRx/Glotoz/Mh15/bdxH+9qkREgmS38VMvACA+W9Cs9EZqdyCydpLIGXxcPZMkIIKWiJqbm3H69Gn3/ZKSEhw+fBgJCQnIzMwUMGdRRn+eD0ay2NZdSgFYbA58d/oSEmJlGJmhoTYiHzRKGRLjZIiVd/J1cbUTNZTzAxvpvQyIoIHowIEDuPLKK933V6xYAQDIz89HcXGxQLmKQu5qWbbHF6TeaMHh8gbEyMQYpdMKkbNeYWByXOe7mgB8T6RIDJibAFM9ENPJtBDSgaCBaObMmd4HiZHQci3jmpDjebiZHwqRGEftbt0mlvLVs4ZyoKGMAlGAqI0o2hlq+YXQOBGQONDjoeomPhD1i6MR1f5gjHX+j1Pr7AioL4tMhqIIBaJod+kk/zM+q8PSHNV6fo3plEBXZeyDthytxKs7zqDkUic727p6JBvKaAJsgCgQRTPGgKqj/O9Jgz0ecjgYapwlIgpEXbM7+MZ917w8r1Tp/Nwzi5E2XgwQBaJo1lTJV8tEEiBpqMdDdUYLrHYGmUREc8z84HqP6g0W34nEktbqWe1p3+lIBxSIotmFw/zPpMH8yN82XFM7klVy6rb3g2stb9eSKT652uF87fNGvOpVI6tJAMxNrdWy9NEdHh6cqkJWYgxM3rbJIR0kOJdIaeisagYA/fKAk1/yE2DNzfwmBaRLVCKKVuV7+QmYmgxA431ysEIqpjWI/ORaNK7ZbOs8eMtV/Gx8AKilUpG/KBBFI2Mdv8sqAGRNoVG+IaCQiqFR8sHI1cjvU2Ie/7PmZJhzFT0oEEUbxoCTW/jSUMIA/tbO2Zpm/PtAOX463xD5/PVi2f1iMCApFmJxF4E92dkxUF/CV5FJl6iNKNqUfc8PqBNLgLxrvJaGymqNqKg30UDGAF01JMW/hDEJ/HK8jRVA1c9A5uXhzVgUoBJRNKk6BpR+y/+ed53XaQaMMZx1DsrLSoyNZO76ltTL+J8Xj9DgRj9QIIoWNSeB45/xf/T9xwJpI70nazZDb7JCKuaQmRDjNQ3pXKPJihZrF72NSUP5+WeGS3wVjXSKAlE0qDgI/LwZYA4gdQS/37wPZ6r50pAuIQZSMX38gfrsxwt4638lOFPT3HlCqQJIG8X/Xr4v/Bnr5egvsTdjDDjzNXByK/972khg8FyfvWSMMRyr5DccyEtWRTKnUcM1nuhcrbHrxBkT+M+iroQW1u8CBaLeymYGfv4IOLeXv59zBTD4ekDk+yMtrzNBb7JCJhEhL4UG2gUjpx/frnb2kgFWu6PzxEotkDKc//30dmor6gQFot7IWAcc2gjUnOAX4xp6I5A9tcvxQrFyMXKT4zA0TUXVsiClaRRQKSSw2Bwoq+1kJr5Lzgy+B7OxonWkO+mA/hp7m0ungIPFfCOoPA4YfSffLuSHxDg5bhqVjpmDksObxyjGcRyGpKoBAD+ca+j6CQo1kDWV//3UVv6fCOmAAlFvYbMAJ7YARz7kq2WaDGBcgcdmib7YHZ4LeolENNK6O0bpNBBxHM7Xm3C+3o+2It3lgFbHf4ZH/w+w+FGS6mN6RCB65ZVXkJ2dDYVCgUmTJmHfPuplcGMMqP4FOPAmcOEH/ljGBL4kJO+6wZkxhm3HqvCfnyphsXXRpkH8olJIMaI/Xyo6dsGP3YZFImDoTXwJ1nAJOPwelYzaETwQ/etf/8KKFSvw6KOP4tChQxg1ahSuu+46VFdXC501Ydlt/KjcQxv4RmlTAx94Ri0E8mbxbUNdaDbb8NlPlTheqcfZGgOqm1rCn+8+YurAfrhmWAquGebnaGuFGhh1J7+TiuEScLCI79a3dzGbv4/gmMCr10+aNAkTJkzAyy+/DABwOBzQ6XT43e9+h0ceeaTT5+r1emg0GjQ2NkKtVkciu6HHGGC3AFYjv/tDcw2//U9dSesfqVgC6CbxRXxJ59MyapvNqG4y41ydEaeqmmC1M4hFHK4dnuJu2yChV2ew4KfzDchKjEVCrAwqucR7FbhFDxz7mG+8BvjPMzGPr7rFJgEKLSCN6bT3szfx9zsq6Fwzi8WCgwcPYtWqVe5jIpEIs2bNwu7duzukN5vNMJtbZz7r9X4UiwH+S33mK+/dpx7HmO9jXaR1MIZD5+p8PM0BbYwMeUmtUyoOltXBwQCRwwqOeY7SVSkk/DgfeRyQPgbvnkuAoVwOdq7c49SMAakaOW4e09pOtGl/uUcVLFWjwFVDkmk52DDbX1qHYxf0Hg3YUjEHmUQEsUiEBeMzoFZIAYUaBxOuR2XNfqTUH4LMWg2Uepb+B6eooFDIAbEcFXorLjS2AODAOI7/CQ7gAIDD8HQ14pz7rV1oaEG5s81KzHEYnx0f3ou+7Da+pBcCggaiS5cuwW63IyXFs3ibkpKCX375pUP6wsJCPP7444G/kM3MlzTCiTFYjb5nWttFFsDa+l/OZjbC0SZYOTgxzBIVTNJ4NMX3R964SYAqFeA4NJaehtnHlAKz1bPdJz5GBhHHB6BBKSqkaRS0AmMEDErh2+suNrag0WSF3cFgtTNY7XYAnp+dwcJwSpSLUwkDoDJfhLblPFSWKsitesjtBjgY46vmdhscJiNsBpPvF242A1bn17jZBEcTH4g4EQc0+9giO1RY6Noce9Xs+1WrVrk3YQT4EpFO533RLw9aHd+2ArQZa9Pmy+nxRQ3kOOfxqG5gi/Nhz7QcALlUBMS2lkqyh7TwhSmxFEwaA04sc59aJhYBbRYsWzBOBwYGzvl6rtNzACTtxgPdOYl2yBVCTr9Y92BHh4PBbHPAYnPAbLfD7mCIkba26Y3M0CCnX6yzMK0DMKH1RA47JHEcACtgs0BjNEPUYnGWvFlrqdwZBKQqGeD8G4gz25Bp4oMPxwHQhLkULAvdpGlBA1G/fv0gFotRVVXlcbyqqgqpqakd0svlcsjlQWwGKIvtsLlgqHEAMgIopQYysDlJRRsg9iYiEQelTAylTAyg48YE2hiZew3srqhVgL9/Vmr4n7anEbRFTCaTYdy4cfjqq6/cxxwOB7766itMnjxZwJwRQiJJ8KrZihUrkJ+fj/Hjx2PixIl48cUXYTAYcPfddwudNUJIhAgeiG6//XbU1NRg9erVuHjxIkaPHo0tW7Z0aMAmhEQvwccRdUdUjCMiJIr5+x2NjlFThJBejQIRIURwFIgIIYITvLG6O1zNW35P9SCERJTru9lVU3SvDkRNTfyUCr9GVxNCBNPU1ASNRuPz8V7da+ZwOHDhwgWoVKoeOZ/KNQWlvLw8Knv1ovn6ovnagMhdH2MMTU1NSE9Ph6iTFQV6dYlIJBIhI6PrFQqFplaro/KP2SWary+arw2IzPV1VhJyocZqQojgKBARQgRHgSiM5HI5Hn300eBWDOgFovn6ovnagJ53fb26sZoQEh2oREQIERwFIkKI4CgQEUIER4GIECI4CkQBCnRX2g8++ABDhgyBQqHAZZddhv/+978ejzPGsHr1aqSlpUGpVGLWrFk4depUOC/Bp0Cu7Z///CemT5+O+Ph4xMfHY9asWR3SFxQUgOM4j9vs2bPDfRk+BXJ9xcXFHfKuUHguRt9bP7uZM2d2uDaO4zB37lx3moh/doz4bdOmTUwmk7G33nqL/fzzz+zee+9lWq2WVVVVeU3/3XffMbFYzJ599ll27Ngx9uc//5lJpVJ25MgRd5o1a9YwjUbDPv74Y/bjjz+ym266ieXk5DCTyRSpy2KMBX5td955J3vllVfYDz/8wI4fP84KCgqYRqNh58+fd6fJz89ns2fPZpWVle5bXV1dpC7JQ6DXV1RUxNRqtUfeL1686JGmt352tbW1Htd19OhRJhaLWVFRkTtNpD87CkQBmDhxIlu2bJn7vt1uZ+np6aywsNBr+ttuu43NnTvX49ikSZPYfffdxxhjzOFwsNTUVPa3v/3N/XhDQwOTy+Xs/fffD8MV+BbotbVns9mYSqViGzZscB/Lz89n8+bNC3VWgxLo9RUVFTGNRuPzfNH02b3wwgtMpVKx5uZm97FIf3ZUNfOTa1faWbNmuY91tistAOzevdsjPQBcd9117vQlJSW4ePGiRxqNRoNJkyb5PGc4BHNt7RmNRlitViQkJHgc37FjB5KTkzF48GDcf//9qK2tDWne/RHs9TU3NyMrKws6nQ7z5s3Dzz//7H4smj67N998EwsXLkRsrOc+ZZH87CgQ+amzXWkvXrzo9TkXL17sNL3rZyDnDIdgrq29hx9+GOnp6R5fiNmzZ2Pjxo346quv8Mwzz2Dnzp2YM2cO7Hbvu9aGSzDXN3jwYLz11lv45JNP8M4778DhcGDKlCk4f/48gOj57Pbt24ejR49iyZIlHscj/dn16tn3pGdYs2YNNm3ahB07dng06C5cuND9+2WXXYaRI0ciNzcXO3bswNVXXy1EVv02efJkj731pkyZgqFDh+K1117Dk08+KWDOQuvNN9/EZZddhokTJ3ocj/RnRyUiPwW6Ky0ApKamdpre9TOQc4ZDMNfm8txzz2HNmjXYunUrRo4c2WnaAQMGoF+/fjh9+nS38xyI7lyfi1QqxZgxY9x5j4bPzmAwYNOmTbjnnnu6fJ1wf3YUiPwUzK60kydP9kgPANu2bXOnz8nJQWpqqkcavV6PvXv3RnSn22B33H322Wfx5JNPYsuWLRg/fnyXr3P+/HnU1tYiLS0tJPn2Vyh2FLbb7Thy5Ig77739swP4oSVmsxm//vWvu3ydsH92EWsWjwKbNm1icrmcFRcXs2PHjrGlS5cyrVbr7tb9zW9+wx555BF3+u+++45JJBL23HPPsePHj7NHH33Ua/e9Vqtln3zyCfvpp5/YvHnzBOsCDuTa1qxZw2QyGfvwww89unibmpoYY4w1NTWxlStXst27d7OSkhK2fft2NnbsWJaXl8daWloiem3BXN/jjz/OvvzyS3bmzBl28OBBtnDhQqZQKNjPP//sTtNbPzuXadOmsdtvv73DcSE+OwpEAXrppZdYZmYmk8lkbOLEiWzPnj3ux2bMmMHy8/M90v/73/9mgwYNYjKZjA0fPpx9/vnnHo87HA72l7/8haWkpDC5XM6uvvpqduLEiUhcSgeBXFtWVhYD0OH26KOPMsYYMxqN7Nprr2VJSUlMKpWyrKwsdu+993YYixNJgVzfQw895E6bkpLCrr/+enbo0CGP8/XWz44xxn755RcGgG3durXDuYT47GgZEEKI4KiNiBAiOApEhBDBUSAihAiOAhEhRHAUiAghgqNARAgRHAUiQojgKBARQgRHgYj0KsXFxdBqte77jz32GEaPHu2+X1BQgPnz50c8X6R7KBARr1xrFv/2t7/t8NiyZcvAcRwKCgo80oc6AGRnZ+PFF1/0OHb77bfj5MmTPp+zbt06FBcXu+/PnDkTDz30UEjzRUKPAhHxSafTYdOmTTCZTO5jLS0teO+995CZmSlInpRKJZKTk30+rtFoPEpMpHegQER8Gjt2LHQ6HTZv3uw+tnnzZmRmZmLMmDHdOre3ksr8+fPdpayZM2eirKwMf/jDH9y7SAAdq2bttS2ZFRQUYOfOnVi3bp37HCUlJRg4cCCee+45j+cdPnwYHMdFfK0kwqNARDq1ePFiFBUVue+/9dZbuPvuu8P+ups3b0ZGRgaeeOIJVFZWorKyMuBzrFu3DpMnT8a9997rPkdmZmaHawKAoqIiXHHFFRg4cGCoLoEEgAIR6dSvf/1r/O9//0NZWRnKysrw3Xff+bWQVnclJCRALBZDpVIhNTU1qFUPNRoNZDIZYmJi3OcQi8UoKCjAiRMn3Ht/Wa1WvPfee1i8eHGoL4P4idasJp1KSkrC3LlzUVxcDMYY5s6di379+gmdrW5JT0/H3Llz8dZbb2HixIn47LPPYDabsWDBAqGz1mdRiYh0afHixSguLsaGDRtCVmoQiURovxSW1WoNybn9sWTJEndDfFFREW6//XbExMRE7PWJJwpEpEuzZ8+GxWKB1WrFddddF5JzJiUlebT72O12HD161CONTCbr9vY1vs5x/fXXIzY2FuvXr8eWLVuoWiYwqpqRLonFYhw/ftz9uy+NjY04fPiwx7HExETodLoOaa+66iqsWLECn3/+OXJzc7F27Vo0NDR4pMnOzsauXbuwcOFCyOXyoKqE2dnZ2Lt3L0pLSxEXF4eEhASIRCJ3W9GqVauQl5cX0QXvSUdUIiJ+UavVUKvVnabZsWMHxowZ43F7/PHHvaZdvHgx8vPzsWjRIsyYMQMDBgzAlVde6ZHmiSeeQGlpKXJzc5GUlBRUvleuXAmxWIxhw4YhKSkJ586dcz92zz33wGKxRKQXkHSO1qwmfda3336Lq6++GuXl5R12SiWRRYGI9Dlmsxk1NTXIz89Hamoq3n33XaGz1OdR1Yz0Oe+//z6ysrLQ0NCAZ599VujsEFCJiBDSA1CJiBAiOApEhBDBUSAihAiOAhEhRHAUiAghgqNARAgRHAUiQojgKBARQgT3/wGwzN7+n6CW1gAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 300x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from ml_utility_loss.loss_learning.visualization import plot_pred_density_2\n",
"\n",
"_ = plot_pred_density_2(y)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "e79e4b0f",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T14:09:15.392278Z",
"iopub.status.busy": "2024-03-22T14:09:15.391924Z",
"iopub.status.idle": "2024-03-22T14:09:15.784425Z",
"shell.execute_reply": "2024-03-22T14:09:15.783446Z"
},
"papermill": {
"duration": 0.413747,
"end_time": "2024-03-22T14:09:15.786550",
"exception": false,
"start_time": "2024-03-22T14:09:15.372803",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 300x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from ml_utility_loss.loss_learning.visualization import plot_density_3\n",
"\n",
"_ = plot_density_3(y2[\"pred\"], next(iter(y2[\"y\"].values())))"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "745adde1",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T14:09:15.827277Z",
"iopub.status.busy": "2024-03-22T14:09:15.826461Z",
"iopub.status.idle": "2024-03-22T14:09:16.050286Z",
"shell.execute_reply": "2024-03-22T14:09:16.049185Z"
},
"papermill": {
"duration": 0.245593,
"end_time": "2024-03-22T14:09:16.052340",
"exception": false,
"start_time": "2024-03-22T14:09:15.806747",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 300x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from ml_utility_loss.loss_learning.visualization import plot_box_3\n",
"\n",
"_ = plot_box_3(y2[\"pred\"], next(iter(y2[\"y\"].values())))"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "eabe1bab",
"metadata": {
"execution": {
"iopub.execute_input": "2024-03-22T14:09:16.091828Z",
"iopub.status.busy": "2024-03-22T14:09:16.091522Z",
"iopub.status.idle": "2024-03-22T14:09:16.340630Z",
"shell.execute_reply": "2024-03-22T14:09:16.339642Z"
},
"papermill": {
"duration": 0.271426,
"end_time": "2024-03-22T14:09:16.342666",
"exception": false,
"start_time": "2024-03-22T14:09:16.071240",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 300x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#\"\"\"\n",
"from ml_utility_loss.loss_learning.visualization import plot_grad, plot_grad_2, plot_grad_3\n",
"import matplotlib.pyplot as plt\n",
"\n",
"#plot_grad_2(y, model.models)\n",
"for m in model.models:\n",
" ym = y[m]\n",
" fig, ax = plt.subplots()\n",
" plot_grad_3(ym[\"error\"], ym[\"grad\"], name=f\"{m}_grad\", fig=fig, ax=ax)\n",
"#\"\"\""
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "54c0e9f3",
"metadata": {
"papermill": {
"duration": 0.019751,
"end_time": "2024-03-22T14:09:16.382119",
"exception": false,
"start_time": "2024-03-22T14:09:16.362368",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": []
}
],
"metadata": {
"accelerator": "GPU",
"celltoolbar": "Tags",
"colab": {
"authorship_tag": "ABX9TyOOVfelovKP9fLGU7SvvRie",
"gpuType": "T4",
"mount_file_id": "17POSGAvge8y9DW9WGs2jLkibaRjToayg",
"provenance": []
},
"kaggle": {
"accelerator": "gpu",
"dataSources": [],
"dockerImageVersionId": 30648,
"isGpuEnabled": true,
"isInternetEnabled": true,
"language": "python",
"sourceType": "notebook"
},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.13"
},
"papermill": {
"default_parameters": {},
"duration": 5617.022719,
"end_time": "2024-03-22T14:09:19.125511",
"environment_variables": {},
"exception": null,
"input_path": "eval/contraceptive/realtabformer/42/mlu-eval.ipynb",
"output_path": "eval/contraceptive/realtabformer/42/mlu-eval.ipynb",
"parameters": {
"allow_same_prediction": true,
"dataset": "contraceptive",
"dataset_name": "contraceptive",
"debug": false,
"folder": "eval",
"gp": false,
"gp_multiply": false,
"log_wandb": false,
"param_index": 0,
"path": "eval/contraceptive/realtabformer/42",
"path_prefix": "../../../../",
"random_seed": 42,
"single_model": "realtabformer"
},
"start_time": "2024-03-22T12:35:42.102792",
"version": "2.5.0"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 5
} |