From 7ac5fbcc47a5784d45b2644b36f49278e906f72e Mon Sep 17 00:00:00 2001 From: lucasdelimanogueira Date: Wed, 5 Jun 2024 20:25:16 -0300 Subject: [PATCH] fix memory usage --- mprofile_20240605162109.dat | 28 ---- mprofile_20240605162319.dat | 257 ------------------------------------ profiling_results.prof | Bin 46211 -> 0 bytes train_singlegpu.py | 97 -------------- 4 files changed, 382 deletions(-) delete mode 100644 mprofile_20240605162109.dat delete mode 100644 mprofile_20240605162319.dat delete mode 100644 profiling_results.prof delete mode 100644 train_singlegpu.py diff --git a/mprofile_20240605162109.dat b/mprofile_20240605162109.dat deleted file mode 100644 index 5e8562a..0000000 --- a/mprofile_20240605162109.dat +++ /dev/null @@ -1,28 +0,0 @@ -CMDLINE /usr/bin/python3 train_singlegpu.py -MEM 1.109375 1717615269.6916 -MEM 14.167969 1717615269.7921 -MEM 21.085938 1717615269.8925 -MEM 26.617188 1717615269.9930 -MEM 32.312500 1717615270.0934 -MEM 38.429688 1717615270.1939 -MEM 40.683594 1717615270.2943 -MEM 46.445312 1717615270.3947 -MEM 54.089844 1717615270.4953 -MEM 58.347656 1717615270.5959 -MEM 63.308594 1717615270.6964 -MEM 65.226562 1717615270.7970 -MEM 70.898438 1717615270.8975 -MEM 76.828125 1717615270.9980 -MEM 82.242188 1717615271.0986 -MEM 87.656250 1717615271.1991 -MEM 93.328125 1717615271.2996 -MEM 98.742188 1717615271.4001 -MEM 104.671875 1717615271.5006 -MEM 135.867188 1717615271.6011 -MEM 117.457031 1717615271.7016 -MEM 125.246094 1717615271.8022 -MEM 125.503906 1717615271.9026 -MEM 125.503906 1717615272.0029 -MEM 127.074219 1717615272.1032 -MEM 127.074219 1717615272.2036 -MEM 73.593750 1717615272.3040 diff --git a/mprofile_20240605162319.dat b/mprofile_20240605162319.dat deleted file mode 100644 index b859d5e..0000000 --- a/mprofile_20240605162319.dat +++ /dev/null @@ -1,257 +0,0 @@ -CMDLINE /usr/bin/python3 train_singlegpu.py -MEM 1.171875 1717615399.9716 -MEM 18.777344 1717615400.0720 -MEM 25.433594 1717615400.1725 -MEM 30.570312 1717615400.2729 -MEM 36.207031 1717615400.3734 -MEM 40.167969 1717615400.4738 -MEM 46.121094 1717615400.5743 -MEM 56.503906 1717615400.6747 -MEM 63.429688 1717615400.7751 -MEM 70.007812 1717615400.8755 -MEM 84.187500 1717615400.9758 -MEM 98.109375 1717615401.0761 -MEM 140.132812 1717615401.1765 -MEM 125.375000 1717615401.2769 -MEM 125.632812 1717615401.3772 -MEM 126.433594 1717615401.4775 -MEM 127.203125 1717615401.5778 -MEM 127.203125 1717615401.6781 -MEM 127.316406 1717615401.7785 -MEM 127.316406 1717615401.8787 -MEM 134.515625 1717615401.9790 -MEM 134.773438 1717615402.0793 -MEM 136.054688 1717615402.1796 -MEM 140.953125 1717615402.2799 -MEM 140.953125 1717615402.3802 -MEM 146.867188 1717615402.4805 -MEM 147.125000 1717615402.5809 -MEM 153.562500 1717615402.6813 -MEM 154.335938 1717615402.7817 -MEM 154.335938 1717615402.8820 -MEM 154.335938 1717615402.9825 -MEM 154.335938 1717615403.0828 -MEM 154.335938 1717615403.1832 -MEM 154.335938 1717615403.2836 -MEM 161.039062 1717615403.3839 -MEM 161.812500 1717615403.4842 -MEM 162.328125 1717615403.5845 -MEM 169.273438 1717615403.6848 -MEM 169.531250 1717615403.7852 -MEM 176.992188 1717615403.8855 -MEM 176.992188 1717615403.9857 -MEM 184.449219 1717615404.0860 -MEM 184.449219 1717615404.1863 -MEM 186.488281 1717615404.2866 -MEM 191.898438 1717615404.3869 -MEM 192.156250 1717615404.4872 -MEM 199.632812 1717615404.5875 -MEM 199.632812 1717615404.6878 -MEM 207.109375 1717615404.7881 -MEM 207.109375 1717615404.8884 -MEM 213.296875 1717615404.9887 -MEM 214.761719 1717615405.0890 -MEM 214.957031 1717615405.1894 -MEM 222.171875 1717615405.2897 -MEM 222.429688 1717615405.3900 -MEM 229.648438 1717615405.4903 -MEM 229.906250 1717615405.5906 -MEM 236.093750 1717615405.6910 -MEM 237.382812 1717615405.7913 -MEM 237.898438 1717615405.8916 -MEM 244.859375 1717615405.9919 -MEM 245.117188 1717615406.0922 -MEM 252.335938 1717615406.1925 -MEM 252.593750 1717615406.2928 -MEM 258.781250 1717615406.3931 -MEM 260.070312 1717615406.4934 -MEM 260.585938 1717615406.5937 -MEM 267.546875 1717615406.6940 -MEM 267.804688 1717615406.7944 -MEM 275.023438 1717615406.8947 -MEM 275.281250 1717615406.9949 -MEM 281.726562 1717615407.0953 -MEM 282.757812 1717615407.1956 -MEM 283.273438 1717615407.2959 -MEM 290.234375 1717615407.3962 -MEM 290.234375 1717615407.4965 -MEM 297.710938 1717615407.5969 -MEM 297.710938 1717615407.6972 -MEM 298.226562 1717615407.7976 -MEM 305.187500 1717615407.8979 -MEM 305.445312 1717615407.9983 -MEM 305.445312 1717615408.0987 -MEM 312.921875 1717615408.1990 -MEM 312.921875 1717615408.2993 -MEM 319.109375 1717615408.3996 -MEM 320.398438 1717615408.4999 -MEM 320.656250 1717615408.6002 -MEM 327.875000 1717615408.7005 -MEM 328.132812 1717615408.8008 -MEM 335.609375 1717615408.9011 -MEM 335.609375 1717615409.0014 -MEM 341.796875 1717615409.1018 -MEM 343.085938 1717615409.2021 -MEM 343.601562 1717615409.3024 -MEM 350.562500 1717615409.4026 -MEM 350.820312 1717615409.5029 -MEM 358.039062 1717615409.6032 -MEM 358.296875 1717615409.7035 -MEM 365.000000 1717615409.8039 -MEM 365.773438 1717615409.9042 -MEM 366.289062 1717615410.0044 -MEM 373.250000 1717615410.1047 -MEM 373.507812 1717615410.2051 -MEM 380.726562 1717615410.3055 -MEM 380.984375 1717615410.4057 -MEM 388.460938 1717615410.5060 -MEM 388.460938 1717615410.6064 -MEM 390.523438 1717615410.7066 -MEM 395.937500 1717615410.8069 -MEM 396.195312 1717615410.9072 -MEM 403.414062 1717615411.0075 -MEM 403.671875 1717615411.1078 -MEM 411.148438 1717615411.2081 -MEM 411.148438 1717615411.3084 -MEM 417.335938 1717615411.4088 -MEM 418.625000 1717615411.5091 -MEM 418.882812 1717615411.6094 -MEM 426.101562 1717615411.7097 -MEM 426.359375 1717615411.8100 -MEM 433.578125 1717615411.9103 -MEM 433.835938 1717615412.0106 -MEM 440.023438 1717615412.1110 -MEM 441.312500 1717615412.2113 -MEM 441.828125 1717615412.3116 -MEM 448.789062 1717615412.4119 -MEM 449.046875 1717615412.5122 -MEM 456.265625 1717615412.6125 -MEM 456.523438 1717615412.7127 -MEM 462.968750 1717615412.8131 -MEM 464.000000 1717615412.9133 -MEM 464.515625 1717615413.0136 -MEM 471.476562 1717615413.1139 -MEM 471.734375 1717615413.2142 -MEM 478.949219 1717615413.3145 -MEM 479.207031 1717615413.4148 -MEM 486.683594 1717615413.5151 -MEM 486.683594 1717615413.6154 -MEM 487.457031 1717615413.7157 -MEM 494.160156 1717615413.8160 -MEM 494.417969 1717615413.9163 -MEM 501.636719 1717615414.0166 -MEM 501.894531 1717615414.1169 -MEM 509.113281 1717615414.2172 -MEM 509.371094 1717615414.3175 -MEM 509.886719 1717615414.4178 -MEM 516.847656 1717615414.5181 -MEM 516.847656 1717615414.6184 -MEM 524.324219 1717615414.7187 -MEM 524.582031 1717615414.8190 -MEM 531.027344 1717615414.9193 -MEM 532.058594 1717615415.0196 -MEM 532.574219 1717615415.1199 -MEM 539.535156 1717615415.2202 -MEM 539.535156 1717615415.3205 -MEM 547.011719 1717615415.4209 -MEM 547.269531 1717615415.5211 -MEM 554.488281 1717615415.6214 -MEM 554.746094 1717615415.7217 -MEM 556.808594 1717615415.8220 -MEM 562.222656 1717615415.9223 -MEM 562.222656 1717615416.0226 -MEM 569.699219 1717615416.1229 -MEM 569.957031 1717615416.2232 -MEM 577.175781 1717615416.3235 -MEM 577.433594 1717615416.4238 -MEM 582.332031 1717615416.5241 -MEM 584.910156 1717615416.6244 -MEM 584.910156 1717615416.7248 -MEM 592.386719 1717615416.8251 -MEM 592.386719 1717615416.9253 -MEM 599.863281 1717615417.0257 -MEM 600.121094 1717615417.1259 -MEM 603.472656 1717615417.2262 -MEM 606.523438 1717615417.3266 -MEM 606.523438 1717615417.4269 -MEM 606.523438 1717615417.5272 -MEM 606.523438 1717615417.6275 -MEM 606.523438 1717615417.7278 -MEM 606.523438 1717615417.8281 -MEM 606.523438 1717615417.9284 -MEM 606.523438 1717615418.0287 -MEM 606.523438 1717615418.1290 -MEM 606.523438 1717615418.2293 -MEM 606.523438 1717615418.3296 -MEM 606.523438 1717615418.4299 -MEM 606.523438 1717615418.5301 -MEM 606.523438 1717615418.6305 -MEM 606.523438 1717615418.7308 -MEM 606.523438 1717615418.8311 -MEM 606.523438 1717615418.9314 -MEM 606.523438 1717615419.0317 -MEM 606.523438 1717615419.1320 -MEM 606.523438 1717615419.2323 -MEM 606.523438 1717615419.3327 -MEM 606.523438 1717615419.4330 -MEM 606.523438 1717615419.5333 -MEM 606.523438 1717615419.6336 -MEM 606.523438 1717615419.7340 -MEM 606.523438 1717615419.8345 -MEM 606.523438 1717615419.9348 -MEM 606.523438 1717615420.0351 -MEM 606.523438 1717615420.1354 -MEM 606.523438 1717615420.2357 -MEM 606.523438 1717615420.3360 -MEM 606.523438 1717615420.4363 -MEM 606.523438 1717615420.5366 -MEM 606.523438 1717615420.6370 -MEM 606.523438 1717615420.7373 -MEM 606.523438 1717615420.8377 -MEM 606.523438 1717615420.9381 -MEM 606.523438 1717615421.0384 -MEM 606.523438 1717615421.1387 -MEM 606.523438 1717615421.2390 -MEM 606.523438 1717615421.3393 -MEM 606.523438 1717615421.4396 -MEM 606.523438 1717615421.5399 -MEM 606.523438 1717615421.6402 -MEM 606.523438 1717615421.7405 -MEM 606.523438 1717615421.8408 -MEM 606.523438 1717615421.9411 -MEM 606.523438 1717615422.0415 -MEM 606.523438 1717615422.1418 -MEM 612.191406 1717615422.2421 -MEM 612.191406 1717615422.3425 -MEM 612.707031 1717615422.4428 -MEM 618.636719 1717615422.5431 -MEM 618.636719 1717615422.6434 -MEM 625.597656 1717615422.7437 -MEM 625.597656 1717615422.8441 -MEM 631.785156 1717615422.9444 -MEM 632.816406 1717615423.0447 -MEM 633.074219 1717615423.1450 -MEM 640.292969 1717615423.2453 -MEM 640.292969 1717615423.3456 -MEM 647.769531 1717615423.4459 -MEM 647.769531 1717615423.5461 -MEM 654.214844 1717615423.6465 -MEM 655.246094 1717615423.7468 -MEM 655.761719 1717615423.8471 -MEM 662.722656 1717615423.9474 -MEM 662.980469 1717615424.0477 -MEM 670.199219 1717615424.1480 -MEM 670.457031 1717615424.2483 -MEM 677.160156 1717615424.3486 -MEM 677.933594 1717615424.4489 -MEM 678.449219 1717615424.5492 -MEM 685.410156 1717615424.6495 -MEM 685.410156 1717615424.7498 -MEM 692.886719 1717615424.8501 -MEM 692.886719 1717615424.9504 -MEM 700.363281 1717615425.0506 -MEM 700.363281 1717615425.1509 -MEM 700.878906 1717615425.2512 -MEM 707.839844 1717615425.3515 -MEM 708.097656 1717615425.4518 -MEM 652.933594 1717615425.5522 diff --git a/profiling_results.prof b/profiling_results.prof deleted file mode 100644 index 1cc4be2ba2a421a39f14ed2721a48298170a4890..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46211 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 Zj6AmZ;$hcH@SJ#i?}yQw8gTXN{~tsXjobhL diff --git a/train_singlegpu.py b/train_singlegpu.py deleted file mode 100644 index 4d028eb..0000000 --- a/train_singlegpu.py +++ /dev/null @@ -1,97 +0,0 @@ -import norch -import norch.nn as nn -import norch.optim as optim -from norch.norchvision import transforms as T -import random -random.seed(1) -from memory_profiler import profile - -@profile -def main(): - - - BATCH_SIZE = 32 - device = "cpu" - epochs = 10 - - transform = T.Compose( - [ - T.ToTensor(), - T.Reshape([-1, 784, 1]) - ] - ) - - target_transform = T.Compose( - [ - T.ToTensor() - ] - ) - - - print("Loading data") - train_data, test_data = norch.norchvision.datasets.MNIST.splits(transform=transform, target_transform=target_transform) - train_loader = norch.utils.data.DataLoader(train_data, batch_size=BATCH_SIZE) - - class MyModel(nn.Module): - def __init__(self): - super(MyModel, self).__init__() - self.fc1 = nn.Linear(784, 30) - self.sigmoid1 = nn.Sigmoid() - self.fc2 = nn.Linear(30, 10) - self.sigmoid2 = nn.Sigmoid() - - def forward(self, x): - out = self.fc1(x) - out = self.sigmoid1(out) - out = self.fc2(out) - out = self.sigmoid2(out) - - return out - - print("Creating model") - model = MyModel().to(device) - criterion = nn.CrossEntropyLoss() - optimizer = optim.SGD(model.parameters(), lr=0.01) - loss_list = [] - - print("Starting training") - for epoch in range(epochs): - - avg_loss = 0 - num_steps = 0 - - for idx, batch in enumerate(train_loader): - - if idx % 100 == 0 and idx > 0: - print(f"Epoch: {epoch}/{epochs} - Step: {idx} / {len(train_loader)}") - break - - inputs, target = batch - - inputs = inputs.to(device) - target = target.to(device) - - outputs = model(inputs) - loss = criterion(outputs, target) - - optimizer.zero_grad() - - loss.backward() - - optimizer.step() - - avg_loss += loss[0] - num_steps += 1 - - avg_loss = avg_loss / num_steps - print(f'Epoch [{epoch + 1}/{epochs}], Loss: {avg_loss:.4f}') - loss_list.append(avg_loss) - - break - - - -if __name__ == "__main__": - main() - -