├── 1080Ti Notebook.ipynb ├── 2080Ti.ipynb └── README.md /1080Ti Notebook.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "%reload_ext autoreload\n", 10 | "%autoreload 2\n", 11 | "%matplotlib inline" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "import functools\n", 21 | "import traceback\n", 22 | "def get_ref_free_exc_info():\n", 23 | " \"Free traceback from references to locals/globals to avoid circular reference leading to gc.collect() unable to reclaim memory\"\n", 24 | " type, val, tb = sys.exc_info()\n", 25 | " traceback.clear_frames(tb)\n", 26 | " return (type, val, tb)\n", 27 | "\n", 28 | "def gpu_mem_restore(func):\n", 29 | " \"Reclaim GPU RAM if CUDA out of memory happened, or execution was interrupted\"\n", 30 | " @functools.wraps(func)\n", 31 | " def wrapper(*args, **kwargs):\n", 32 | " try:\n", 33 | " return func(*args, **kwargs)\n", 34 | " except:\n", 35 | " type, val, tb = get_ref_free_exc_info() # must!\n", 36 | " raise type(val).with_traceback(tb) from None\n", 37 | " return wrapper" 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 3, 43 | "metadata": {}, 44 | "outputs": [], 45 | "source": [ 46 | "from fastai.vision import *\n", 47 | "from fastai.metrics import error_rate" 48 | ] 49 | }, 50 | { 51 | "cell_type": "code", 52 | "execution_count": 4, 53 | "metadata": {}, 54 | "outputs": [], 55 | "source": [ 56 | "path = Path('/home/ekami/workspace/cifar100/')" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": 5, 62 | "metadata": {}, 63 | "outputs": [], 64 | "source": [ 65 | "train = path/'train'\n", 66 | "test = path/'test'" 67 | ] 68 | }, 69 | { 70 | "cell_type": "code", 71 | "execution_count": 6, 72 | "metadata": {}, 73 | "outputs": [], 74 | "source": [ 75 | "bs = 108" 76 | ] 77 | }, 78 | { 79 | "cell_type": "code", 80 | "execution_count": 7, 81 | "metadata": {}, 82 | "outputs": [ 83 | { 84 | "data": { 85 | "text/plain": [ 86 | "[PosixPath('/home/ekami/workspace/cifar100/test'),\n", 87 | " PosixPath('/home/ekami/workspace/cifar100/models'),\n", 88 | " PosixPath('/home/ekami/workspace/cifar100/train')]" 89 | ] 90 | }, 91 | "execution_count": 7, 92 | "metadata": {}, 93 | "output_type": "execute_result" 94 | } 95 | ], 96 | "source": [ 97 | "path.ls()" 98 | ] 99 | }, 100 | { 101 | "cell_type": "code", 102 | "execution_count": 8, 103 | "metadata": {}, 104 | "outputs": [], 105 | "source": [ 106 | "np.random.seed(42)\n", 107 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 108 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=bs).normalize(cifar_stats)" 109 | ] 110 | }, 111 | { 112 | "cell_type": "code", 113 | "execution_count": 9, 114 | "metadata": {}, 115 | "outputs": [], 116 | "source": [ 117 | "class gpu_mem_restore_ctx():\n", 118 | " \" context manager to reclaim GPU RAM if CUDA out of memory happened, or execution was interrupted\"\n", 119 | " def __enter__(self): return self\n", 120 | " def __exit__(self, exc_type, exc_val, exc_tb):\n", 121 | " if not exc_val: return True\n", 122 | " traceback.clear_frames(exc_tb)\n", 123 | " raise exc_type(exc_val).with_traceback(exc_tb) from None" 124 | ] 125 | }, 126 | { 127 | "cell_type": "code", 128 | "execution_count": 10, 129 | "metadata": {}, 130 | "outputs": [], 131 | "source": [ 132 | "#Allow crashing\n", 133 | "learn = create_cnn(data, models.resnet18 , metrics=accuracy)" 134 | ] 135 | }, 136 | { 137 | "cell_type": "markdown", 138 | "metadata": {}, 139 | "source": [ 140 | "## Resnet 18" 141 | ] 142 | }, 143 | { 144 | "cell_type": "code", 145 | "execution_count": 11, 146 | "metadata": {}, 147 | "outputs": [ 148 | { 149 | "data": { 150 | "text/plain": [ 151 | "405" 152 | ] 153 | }, 154 | "execution_count": 11, 155 | "metadata": {}, 156 | "output_type": "execute_result" 157 | } 158 | ], 159 | "source": [ 160 | "int(bs*3.75)" 161 | ] 162 | }, 163 | { 164 | "cell_type": "code", 165 | "execution_count": 12, 166 | "metadata": {}, 167 | "outputs": [], 168 | "source": [ 169 | "np.random.seed(42)\n", 170 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 171 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=408).normalize(cifar_stats)\n", 172 | "learn = create_cnn(data, models.resnet18, metrics=accuracy)" 173 | ] 174 | }, 175 | { 176 | "cell_type": "code", 177 | "execution_count": 13, 178 | "metadata": {}, 179 | "outputs": [ 180 | { 181 | "data": { 182 | "text/html": [ 183 | "Total time: 01:14

\n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | "
epochtrain_lossvalid_lossaccuracy
12.4419051.6218140.561000
\n" 197 | ], 198 | "text/plain": [ 199 | "" 200 | ] 201 | }, 202 | "metadata": {}, 203 | "output_type": "display_data" 204 | } 205 | ], 206 | "source": [ 207 | "with gpu_mem_restore_ctx():\n", 208 | " learn.fit_one_cycle(1)" 209 | ] 210 | }, 211 | { 212 | "cell_type": "code", 213 | "execution_count": 14, 214 | "metadata": {}, 215 | "outputs": [ 216 | { 217 | "data": { 218 | "text/html": [ 219 | "Total time: 35:26

\n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | "
epochtrain_lossvalid_lossaccuracy
11.6861311.2209040.651333
21.3881240.9966380.703500
31.2163910.9150400.721250
41.1656180.9373970.716500
51.1669391.0051420.696083
61.1671721.0361810.690250
71.1550991.0986190.678833
81.1417501.0318590.692500
91.1222530.9739100.700917
101.0785840.9877440.700667
111.0491870.9255350.718917
121.0237860.9237160.723000
130.9942830.9501930.714333
140.9788860.9398240.715583
150.9477340.9000960.729167
160.9122810.8271120.747167
170.8775080.7946710.759000
180.8487630.8077130.751250
190.8329540.7643020.766583
200.7839720.7225740.776667
210.7654270.7269200.779167
220.7402910.7165510.779667
230.7112790.6890460.785083
240.6837420.6835590.788750
250.6570320.6728590.791583
260.6347560.6665270.795333
270.6221700.6638410.796250
280.6131460.6582320.797417
290.6135480.6587170.797667
300.6121830.6587330.798000
\n" 407 | ], 408 | "text/plain": [ 409 | "" 410 | ] 411 | }, 412 | "metadata": {}, 413 | "output_type": "display_data" 414 | } 415 | ], 416 | "source": [ 417 | "with gpu_mem_restore_ctx():\n", 418 | " learn.fit_one_cycle(30, max_lr=1e-2)" 419 | ] 420 | }, 421 | { 422 | "cell_type": "markdown", 423 | "metadata": {}, 424 | "source": [ 425 | "## Resnet 18 (Mixed Prec)" 426 | ] 427 | }, 428 | { 429 | "cell_type": "code", 430 | "execution_count": 15, 431 | "metadata": {}, 432 | "outputs": [ 433 | { 434 | "data": { 435 | "text/plain": [ 436 | "108" 437 | ] 438 | }, 439 | "execution_count": 15, 440 | "metadata": {}, 441 | "output_type": "execute_result" 442 | } 443 | ], 444 | "source": [ 445 | "bs" 446 | ] 447 | }, 448 | { 449 | "cell_type": "code", 450 | "execution_count": 16, 451 | "metadata": {}, 452 | "outputs": [], 453 | "source": [ 454 | "np.random.seed(42)\n", 455 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 456 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=720).normalize(cifar_stats)" 457 | ] 458 | }, 459 | { 460 | "cell_type": "code", 461 | "execution_count": 17, 462 | "metadata": {}, 463 | "outputs": [], 464 | "source": [ 465 | "learn = to_fp16(create_cnn(data, models.resnet18, metrics=accuracy))" 466 | ] 467 | }, 468 | { 469 | "cell_type": "code", 470 | "execution_count": 18, 471 | "metadata": {}, 472 | "outputs": [ 473 | { 474 | "data": { 475 | "text/html": [ 476 | "Total time: 01:12

\n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | "
epochtrain_lossvalid_lossaccuracy
12.8706231.8397300.519083
\n" 490 | ], 491 | "text/plain": [ 492 | "" 493 | ] 494 | }, 495 | "metadata": {}, 496 | "output_type": "display_data" 497 | } 498 | ], 499 | "source": [ 500 | "with gpu_mem_restore_ctx():\n", 501 | " learn.fit_one_cycle(1)" 502 | ] 503 | }, 504 | { 505 | "cell_type": "code", 506 | "execution_count": 19, 507 | "metadata": {}, 508 | "outputs": [ 509 | { 510 | "data": { 511 | "text/html": [ 512 | "Total time: 34:08

\n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | "
epochtrain_lossvalid_lossaccuracy
12.2076751.7543650.537417
22.1151571.6120260.565667
31.9557241.4310370.600417
41.7664471.2644670.639083
51.5907251.1557790.663833
61.4413051.0664610.682167
71.3348571.0070200.702500
81.2464090.9611230.711833
91.1819720.9118340.725500
101.1283250.8817940.732333
111.0782430.8611210.739583
121.0318760.8395410.744167
131.0089280.8314070.744000
140.9775780.8095040.751833
150.9456960.7974860.757000
160.9191720.7829750.761917
170.8991460.7765900.766583
180.8829390.7678090.766000
190.8563470.7634040.767417
200.8415340.7547440.767250
210.8179570.7479330.771083
220.8031840.7464000.774833
230.7913400.7433900.773417
240.7817530.7396830.774750
250.7698660.7388790.776167
260.7670700.7373350.775583
270.7558520.7350690.775833
280.7471340.7349770.775833
290.7449600.7339250.776667
300.7423590.7352300.776667
\n" 700 | ], 701 | "text/plain": [ 702 | "" 703 | ] 704 | }, 705 | "metadata": {}, 706 | "output_type": "display_data" 707 | } 708 | ], 709 | "source": [ 710 | "with gpu_mem_restore_ctx():\n", 711 | " learn.fit_one_cycle(30)" 712 | ] 713 | }, 714 | { 715 | "cell_type": "markdown", 716 | "metadata": {}, 717 | "source": [ 718 | "## Resnet 34 " 719 | ] 720 | }, 721 | { 722 | "cell_type": "code", 723 | "execution_count": 20, 724 | "metadata": {}, 725 | "outputs": [], 726 | "source": [ 727 | "np.random.seed(42)\n", 728 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 729 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=248).normalize(cifar_stats)" 730 | ] 731 | }, 732 | { 733 | "cell_type": "code", 734 | "execution_count": 21, 735 | "metadata": {}, 736 | "outputs": [ 737 | { 738 | "name": "stderr", 739 | "output_type": "stream", 740 | "text": [ 741 | "Downloading: \"https://download.pytorch.org/models/resnet34-333f7ec4.pth\" to /home/ekami/.torch/models/resnet34-333f7ec4.pth\n", 742 | "100%|██████████| 87306240/87306240 [00:07<00:00, 11767995.32it/s]\n" 743 | ] 744 | } 745 | ], 746 | "source": [ 747 | "learn = create_cnn(data, models.resnet34, metrics=accuracy)" 748 | ] 749 | }, 750 | { 751 | "cell_type": "code", 752 | "execution_count": 22, 753 | "metadata": {}, 754 | "outputs": [ 755 | { 756 | "data": { 757 | "text/html": [ 758 | "Total time: 51:19

\n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | " \n", 767 | " \n", 768 | " \n", 769 | " \n", 770 | " \n", 771 | " \n", 772 | " \n", 773 | " \n", 774 | " \n", 775 | " \n", 776 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | " \n", 898 | " \n", 899 | " \n", 900 | " \n", 901 | " \n", 902 | " \n", 903 | " \n", 904 | " \n", 905 | " \n", 906 | " \n", 907 | " \n", 908 | " \n", 909 | " \n", 910 | " \n", 911 | " \n", 912 | " \n", 913 | " \n", 914 | " \n", 915 | " \n", 916 | " \n", 917 | " \n", 918 | " \n", 919 | " \n", 920 | " \n", 921 | " \n", 922 | " \n", 923 | " \n", 924 | " \n", 925 | " \n", 926 | " \n", 927 | " \n", 928 | " \n", 929 | " \n", 930 | " \n", 931 | " \n", 932 | " \n", 933 | " \n", 934 | " \n", 935 | " \n", 936 | " \n", 937 | " \n", 938 | " \n", 939 | " \n", 940 | " \n", 941 | " \n", 942 | " \n", 943 | " \n", 944 | " \n", 945 | "
epochtrain_lossvalid_lossaccuracy
14.1001023.2648990.285417
22.7937471.9785190.517667
31.9109821.3000820.636833
41.4550950.9997750.702500
51.2413690.8671220.738250
61.1099050.7964270.754583
71.0485910.7706180.762250
80.9790580.7308200.773833
90.9280350.7094700.780250
100.8905980.6840870.786833
110.8643310.6799800.785333
120.8132690.6565030.796083
130.7931110.6457350.799333
140.7587490.6374170.799167
150.7337920.6247780.803500
160.7134880.6228480.804250
170.6959180.6185200.805333
180.6704780.6009570.812333
190.6557890.6008300.811750
200.6386860.5961920.814667
210.6170200.5935540.813500
220.5988000.5873620.814333
230.5884850.5855360.816500
240.5602060.5839340.818000
250.5522420.5798020.818750
260.5443880.5769870.820917
270.5440160.5771230.820667
280.5447560.5767350.819333
290.5352350.5762900.820167
300.5335710.5765510.819833
\n" 946 | ], 947 | "text/plain": [ 948 | "" 949 | ] 950 | }, 951 | "metadata": {}, 952 | "output_type": "display_data" 953 | } 954 | ], 955 | "source": [ 956 | "with gpu_mem_restore_ctx():\n", 957 | " learn.fit_one_cycle(30)" 958 | ] 959 | }, 960 | { 961 | "cell_type": "markdown", 962 | "metadata": {}, 963 | "source": [ 964 | "## Resnet 34 (Mixed Precision)" 965 | ] 966 | }, 967 | { 968 | "cell_type": "code", 969 | "execution_count": 23, 970 | "metadata": {}, 971 | "outputs": [], 972 | "source": [ 973 | "np.random.seed(42)\n", 974 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 975 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=496).normalize(cifar_stats)" 976 | ] 977 | }, 978 | { 979 | "cell_type": "code", 980 | "execution_count": 24, 981 | "metadata": {}, 982 | "outputs": [], 983 | "source": [ 984 | "learn = to_fp16(create_cnn(data, models.resnet34, metrics=accuracy))" 985 | ] 986 | }, 987 | { 988 | "cell_type": "code", 989 | "execution_count": 25, 990 | "metadata": {}, 991 | "outputs": [ 992 | { 993 | "data": { 994 | "text/html": [ 995 | "Total time: 44:14

\n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | " \n", 1025 | " \n", 1026 | " \n", 1027 | " \n", 1028 | " \n", 1029 | " \n", 1030 | " \n", 1031 | " \n", 1032 | " \n", 1033 | " \n", 1034 | " \n", 1035 | " \n", 1036 | " \n", 1037 | " \n", 1038 | " \n", 1039 | " \n", 1040 | " \n", 1041 | " \n", 1042 | " \n", 1043 | " \n", 1044 | " \n", 1045 | " \n", 1046 | " \n", 1047 | " \n", 1048 | " \n", 1049 | " \n", 1050 | " \n", 1051 | " \n", 1052 | " \n", 1053 | " \n", 1054 | " \n", 1055 | " \n", 1056 | " \n", 1057 | " \n", 1058 | " \n", 1059 | " \n", 1060 | " \n", 1061 | " \n", 1062 | " \n", 1063 | " \n", 1064 | " \n", 1065 | " \n", 1066 | " \n", 1067 | " \n", 1068 | " \n", 1069 | " \n", 1070 | " \n", 1071 | " \n", 1072 | " \n", 1073 | " \n", 1074 | " \n", 1075 | " \n", 1076 | " \n", 1077 | " \n", 1078 | " \n", 1079 | " \n", 1080 | " \n", 1081 | " \n", 1082 | " \n", 1083 | " \n", 1084 | " \n", 1085 | " \n", 1086 | " \n", 1087 | " \n", 1088 | " \n", 1089 | " \n", 1090 | " \n", 1091 | " \n", 1092 | " \n", 1093 | " \n", 1094 | " \n", 1095 | " \n", 1096 | " \n", 1097 | " \n", 1098 | " \n", 1099 | " \n", 1100 | " \n", 1101 | " \n", 1102 | " \n", 1103 | " \n", 1104 | " \n", 1105 | " \n", 1106 | " \n", 1107 | " \n", 1108 | " \n", 1109 | " \n", 1110 | " \n", 1111 | " \n", 1112 | " \n", 1113 | " \n", 1114 | " \n", 1115 | " \n", 1116 | " \n", 1117 | " \n", 1118 | " \n", 1119 | " \n", 1120 | " \n", 1121 | " \n", 1122 | " \n", 1123 | " \n", 1124 | " \n", 1125 | " \n", 1126 | " \n", 1127 | " \n", 1128 | " \n", 1129 | " \n", 1130 | " \n", 1131 | " \n", 1132 | " \n", 1133 | " \n", 1134 | " \n", 1135 | " \n", 1136 | " \n", 1137 | " \n", 1138 | " \n", 1139 | " \n", 1140 | " \n", 1141 | " \n", 1142 | " \n", 1143 | " \n", 1144 | " \n", 1145 | " \n", 1146 | " \n", 1147 | " \n", 1148 | " \n", 1149 | " \n", 1150 | " \n", 1151 | " \n", 1152 | " \n", 1153 | " \n", 1154 | " \n", 1155 | " \n", 1156 | " \n", 1157 | " \n", 1158 | " \n", 1159 | " \n", 1160 | " \n", 1161 | " \n", 1162 | " \n", 1163 | " \n", 1164 | " \n", 1165 | " \n", 1166 | " \n", 1167 | " \n", 1168 | " \n", 1169 | " \n", 1170 | " \n", 1171 | " \n", 1172 | " \n", 1173 | " \n", 1174 | " \n", 1175 | " \n", 1176 | " \n", 1177 | " \n", 1178 | " \n", 1179 | " \n", 1180 | " \n", 1181 | " \n", 1182 | "
epochtrain_lossvalid_lossaccuracy
14.5228623.6407300.200583
23.4590702.3744010.443583
32.4699191.5608940.582833
41.8178461.1654020.662000
51.4493730.9590600.714667
61.2366900.8631160.740500
71.1131570.7958950.756417
81.0272900.7652710.763417
90.9678040.7216620.774667
100.9042660.7058370.780333
110.8657610.6878580.786917
120.8440980.6684080.791083
130.8020360.6651130.791667
140.7839700.6491330.798250
150.7454700.6349410.805250
160.7270000.6297800.804333
170.7099050.6191540.805417
180.6888050.6146380.810250
190.6730020.6128350.808083
200.6472790.6068330.811917
210.6300660.6013410.813167
220.6157390.5993530.814083
230.6008890.5926360.815833
240.5959160.5935150.817667
250.5781390.5895000.815500
260.5763460.5909780.815750
270.5714780.5869620.818833
280.5600520.5871710.818000
290.5563420.5866210.818083
300.5525110.5870520.818333
\n" 1183 | ], 1184 | "text/plain": [ 1185 | "" 1186 | ] 1187 | }, 1188 | "metadata": {}, 1189 | "output_type": "display_data" 1190 | } 1191 | ], 1192 | "source": [ 1193 | "with gpu_mem_restore_ctx():\n", 1194 | " learn.fit_one_cycle(30)" 1195 | ] 1196 | }, 1197 | { 1198 | "cell_type": "markdown", 1199 | "metadata": {}, 1200 | "source": [ 1201 | "## Resnet 50" 1202 | ] 1203 | }, 1204 | { 1205 | "cell_type": "code", 1206 | "execution_count": 26, 1207 | "metadata": {}, 1208 | "outputs": [], 1209 | "source": [ 1210 | "#bs = 512" 1211 | ] 1212 | }, 1213 | { 1214 | "cell_type": "code", 1215 | "execution_count": 27, 1216 | "metadata": {}, 1217 | "outputs": [], 1218 | "source": [ 1219 | "np.random.seed(42)\n", 1220 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 1221 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=98).normalize(cifar_stats)" 1222 | ] 1223 | }, 1224 | { 1225 | "cell_type": "code", 1226 | "execution_count": 28, 1227 | "metadata": {}, 1228 | "outputs": [ 1229 | { 1230 | "name": "stderr", 1231 | "output_type": "stream", 1232 | "text": [ 1233 | "Downloading: \"https://download.pytorch.org/models/resnet50-19c8e357.pth\" to /home/ekami/.torch/models/resnet50-19c8e357.pth\n", 1234 | "100%|██████████| 102502400/102502400 [00:19<00:00, 5150001.64it/s]\n" 1235 | ] 1236 | } 1237 | ], 1238 | "source": [ 1239 | "learn = create_cnn(data, models.resnet50, metrics=accuracy)" 1240 | ] 1241 | }, 1242 | { 1243 | "cell_type": "code", 1244 | "execution_count": 29, 1245 | "metadata": {}, 1246 | "outputs": [ 1247 | { 1248 | "data": { 1249 | "text/html": [ 1250 | "Total time: 1:45:22

\n", 1251 | " \n", 1252 | " \n", 1253 | " \n", 1254 | " \n", 1255 | " \n", 1256 | " \n", 1257 | " \n", 1258 | " \n", 1259 | " \n", 1260 | " \n", 1261 | " \n", 1262 | " \n", 1263 | " \n", 1264 | " \n", 1265 | " \n", 1266 | " \n", 1267 | " \n", 1268 | " \n", 1269 | " \n", 1270 | " \n", 1271 | " \n", 1272 | " \n", 1273 | " \n", 1274 | " \n", 1275 | " \n", 1276 | " \n", 1277 | " \n", 1278 | " \n", 1279 | " \n", 1280 | " \n", 1281 | " \n", 1282 | " \n", 1283 | " \n", 1284 | " \n", 1285 | " \n", 1286 | " \n", 1287 | " \n", 1288 | " \n", 1289 | " \n", 1290 | " \n", 1291 | " \n", 1292 | " \n", 1293 | " \n", 1294 | " \n", 1295 | " \n", 1296 | " \n", 1297 | " \n", 1298 | " \n", 1299 | " \n", 1300 | " \n", 1301 | " \n", 1302 | " \n", 1303 | " \n", 1304 | " \n", 1305 | " \n", 1306 | " \n", 1307 | " \n", 1308 | " \n", 1309 | " \n", 1310 | " \n", 1311 | " \n", 1312 | " \n", 1313 | " \n", 1314 | " \n", 1315 | " \n", 1316 | " \n", 1317 | " \n", 1318 | " \n", 1319 | " \n", 1320 | " \n", 1321 | " \n", 1322 | " \n", 1323 | " \n", 1324 | " \n", 1325 | " \n", 1326 | " \n", 1327 | " \n", 1328 | " \n", 1329 | " \n", 1330 | " \n", 1331 | " \n", 1332 | " \n", 1333 | " \n", 1334 | " \n", 1335 | " \n", 1336 | " \n", 1337 | " \n", 1338 | " \n", 1339 | " \n", 1340 | " \n", 1341 | " \n", 1342 | " \n", 1343 | " \n", 1344 | " \n", 1345 | " \n", 1346 | " \n", 1347 | " \n", 1348 | " \n", 1349 | " \n", 1350 | " \n", 1351 | " \n", 1352 | " \n", 1353 | " \n", 1354 | " \n", 1355 | " \n", 1356 | " \n", 1357 | " \n", 1358 | " \n", 1359 | " \n", 1360 | " \n", 1361 | " \n", 1362 | " \n", 1363 | " \n", 1364 | " \n", 1365 | " \n", 1366 | " \n", 1367 | " \n", 1368 | " \n", 1369 | " \n", 1370 | " \n", 1371 | " \n", 1372 | " \n", 1373 | " \n", 1374 | " \n", 1375 | " \n", 1376 | " \n", 1377 | " \n", 1378 | " \n", 1379 | " \n", 1380 | " \n", 1381 | " \n", 1382 | " \n", 1383 | " \n", 1384 | " \n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | " \n", 1400 | " \n", 1401 | " \n", 1402 | " \n", 1403 | " \n", 1404 | " \n", 1405 | " \n", 1406 | " \n", 1407 | " \n", 1408 | " \n", 1409 | " \n", 1410 | " \n", 1411 | " \n", 1412 | " \n", 1413 | " \n", 1414 | " \n", 1415 | " \n", 1416 | " \n", 1417 | " \n", 1418 | " \n", 1419 | " \n", 1420 | " \n", 1421 | " \n", 1422 | " \n", 1423 | " \n", 1424 | " \n", 1425 | " \n", 1426 | " \n", 1427 | " \n", 1428 | " \n", 1429 | " \n", 1430 | " \n", 1431 | " \n", 1432 | " \n", 1433 | " \n", 1434 | " \n", 1435 | " \n", 1436 | " \n", 1437 | "
epochtrain_lossvalid_lossaccuracy
12.5157731.8866900.541167
21.6968231.2025390.663750
31.3461150.9401260.719500
41.1050000.8071970.751083
51.0123990.7577590.765250
60.9413790.7345230.770833
70.8913240.6907610.783500
80.8196760.6797450.790583
90.7859650.6579220.794000
100.7376160.6314720.806583
110.7165650.6265810.805500
120.7034480.6119710.810333
130.6439080.6109460.809333
140.6191970.5964910.818167
150.5886130.5823700.821167
160.5722770.5844670.823833
170.5375260.5816180.819917
180.5207850.5734730.824500
190.4794180.5703150.828000
200.4622980.5656430.826917
210.4477080.5624720.830500
220.4137170.5603590.833417
230.3769120.5579390.834167
240.3724600.5594110.835167
250.3675710.5563800.837167
260.3477070.5547210.837667
270.3343810.5515040.838417
280.3513000.5496400.838250
290.3359100.5499180.837000
300.3401400.5530000.836417
\n" 1438 | ], 1439 | "text/plain": [ 1440 | "" 1441 | ] 1442 | }, 1443 | "metadata": {}, 1444 | "output_type": "display_data" 1445 | } 1446 | ], 1447 | "source": [ 1448 | "with gpu_mem_restore_ctx():\n", 1449 | " learn.fit_one_cycle(30)" 1450 | ] 1451 | }, 1452 | { 1453 | "cell_type": "markdown", 1454 | "metadata": {}, 1455 | "source": [ 1456 | "## Resnet 50 (Mixed Precision)" 1457 | ] 1458 | }, 1459 | { 1460 | "cell_type": "code", 1461 | "execution_count": 30, 1462 | "metadata": {}, 1463 | "outputs": [], 1464 | "source": [ 1465 | "np.random.seed(42)\n", 1466 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 1467 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=164).normalize(cifar_stats)" 1468 | ] 1469 | }, 1470 | { 1471 | "cell_type": "code", 1472 | "execution_count": 31, 1473 | "metadata": {}, 1474 | "outputs": [], 1475 | "source": [ 1476 | "learn = to_fp16(create_cnn(data, models.resnet50, metrics=accuracy))" 1477 | ] 1478 | }, 1479 | { 1480 | "cell_type": "code", 1481 | "execution_count": 32, 1482 | "metadata": {}, 1483 | "outputs": [ 1484 | { 1485 | "data": { 1486 | "text/html": [ 1487 | "Total time: 1:24:52

\n", 1488 | " \n", 1489 | " \n", 1490 | " \n", 1491 | " \n", 1492 | " \n", 1493 | " \n", 1494 | " \n", 1495 | " \n", 1496 | " \n", 1497 | " \n", 1498 | " \n", 1499 | " \n", 1500 | " \n", 1501 | " \n", 1502 | " \n", 1503 | " \n", 1504 | " \n", 1505 | " \n", 1506 | " \n", 1507 | " \n", 1508 | " \n", 1509 | " \n", 1510 | " \n", 1511 | " \n", 1512 | " \n", 1513 | " \n", 1514 | " \n", 1515 | " \n", 1516 | " \n", 1517 | " \n", 1518 | " \n", 1519 | " \n", 1520 | " \n", 1521 | " \n", 1522 | " \n", 1523 | " \n", 1524 | " \n", 1525 | " \n", 1526 | " \n", 1527 | " \n", 1528 | " \n", 1529 | " \n", 1530 | " \n", 1531 | " \n", 1532 | " \n", 1533 | " \n", 1534 | " \n", 1535 | " \n", 1536 | " \n", 1537 | " \n", 1538 | " \n", 1539 | " \n", 1540 | " \n", 1541 | " \n", 1542 | " \n", 1543 | " \n", 1544 | " \n", 1545 | " \n", 1546 | " \n", 1547 | " \n", 1548 | " \n", 1549 | " \n", 1550 | " \n", 1551 | " \n", 1552 | " \n", 1553 | " \n", 1554 | " \n", 1555 | " \n", 1556 | " \n", 1557 | " \n", 1558 | " \n", 1559 | " \n", 1560 | " \n", 1561 | " \n", 1562 | " \n", 1563 | " \n", 1564 | " \n", 1565 | " \n", 1566 | " \n", 1567 | " \n", 1568 | " \n", 1569 | " \n", 1570 | " \n", 1571 | " \n", 1572 | " \n", 1573 | " \n", 1574 | " \n", 1575 | " \n", 1576 | " \n", 1577 | " \n", 1578 | " \n", 1579 | " \n", 1580 | " \n", 1581 | " \n", 1582 | " \n", 1583 | " \n", 1584 | " \n", 1585 | " \n", 1586 | " \n", 1587 | " \n", 1588 | " \n", 1589 | " \n", 1590 | " \n", 1591 | " \n", 1592 | " \n", 1593 | " \n", 1594 | " \n", 1595 | " \n", 1596 | " \n", 1597 | " \n", 1598 | " \n", 1599 | " \n", 1600 | " \n", 1601 | " \n", 1602 | " \n", 1603 | " \n", 1604 | " \n", 1605 | " \n", 1606 | " \n", 1607 | " \n", 1608 | " \n", 1609 | " \n", 1610 | " \n", 1611 | " \n", 1612 | " \n", 1613 | " \n", 1614 | " \n", 1615 | " \n", 1616 | " \n", 1617 | " \n", 1618 | " \n", 1619 | " \n", 1620 | " \n", 1621 | " \n", 1622 | " \n", 1623 | " \n", 1624 | " \n", 1625 | " \n", 1626 | " \n", 1627 | " \n", 1628 | " \n", 1629 | " \n", 1630 | " \n", 1631 | " \n", 1632 | " \n", 1633 | " \n", 1634 | " \n", 1635 | " \n", 1636 | " \n", 1637 | " \n", 1638 | " \n", 1639 | " \n", 1640 | " \n", 1641 | " \n", 1642 | " \n", 1643 | " \n", 1644 | " \n", 1645 | " \n", 1646 | " \n", 1647 | " \n", 1648 | " \n", 1649 | " \n", 1650 | " \n", 1651 | " \n", 1652 | " \n", 1653 | " \n", 1654 | " \n", 1655 | " \n", 1656 | " \n", 1657 | " \n", 1658 | " \n", 1659 | " \n", 1660 | " \n", 1661 | " \n", 1662 | " \n", 1663 | " \n", 1664 | " \n", 1665 | " \n", 1666 | " \n", 1667 | " \n", 1668 | " \n", 1669 | " \n", 1670 | " \n", 1671 | " \n", 1672 | " \n", 1673 | " \n", 1674 | "
epochtrain_lossvalid_lossaccuracy
12.8344462.0726710.511667
21.8837641.3116980.639583
31.3952650.9991200.704250
41.1615820.8482800.743583
51.0244270.7721550.759583
60.9403680.7368960.770417
70.8925850.7073940.776083
80.8297820.6854500.790000
90.7808830.6626960.798583
100.7552690.6387690.802083
110.6957460.6230590.809167
120.6744820.6173390.806833
130.6140910.6081900.814583
140.6094340.5982530.812250
150.5619760.5892170.818333
160.5446760.5833860.821833
170.5031540.5810940.821750
180.4896390.5729930.823667
190.4693370.5748610.826917
200.4456350.5705550.829500
210.4219420.5702260.830333
220.3952350.5586660.831833
230.3764250.5635510.835083
240.3664220.5599150.835250
250.3441410.5579560.835000
260.3284420.5592160.835250
270.3226730.5569950.835167
280.3241440.5578310.835250
290.3207130.5550500.836333
300.3272410.5574590.836417
\n" 1675 | ], 1676 | "text/plain": [ 1677 | "" 1678 | ] 1679 | }, 1680 | "metadata": {}, 1681 | "output_type": "display_data" 1682 | } 1683 | ], 1684 | "source": [ 1685 | "with gpu_mem_restore_ctx():\n", 1686 | " learn.fit_one_cycle(30)" 1687 | ] 1688 | }, 1689 | { 1690 | "cell_type": "markdown", 1691 | "metadata": {}, 1692 | "source": [ 1693 | "## Resnet 101" 1694 | ] 1695 | }, 1696 | { 1697 | "cell_type": "code", 1698 | "execution_count": 33, 1699 | "metadata": {}, 1700 | "outputs": [], 1701 | "source": [ 1702 | "np.random.seed(42)\n", 1703 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 1704 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=64).normalize(cifar_stats)" 1705 | ] 1706 | }, 1707 | { 1708 | "cell_type": "code", 1709 | "execution_count": 34, 1710 | "metadata": {}, 1711 | "outputs": [ 1712 | { 1713 | "name": "stderr", 1714 | "output_type": "stream", 1715 | "text": [ 1716 | "Downloading: \"https://download.pytorch.org/models/resnet101-5d3b4d8f.pth\" to /home/ekami/.torch/models/resnet101-5d3b4d8f.pth\n", 1717 | "100%|██████████| 178728960/178728960 [00:29<00:00, 6127228.47it/s]\n" 1718 | ] 1719 | } 1720 | ], 1721 | "source": [ 1722 | "learn = create_cnn(data, models.resnet101, metrics=accuracy)" 1723 | ] 1724 | }, 1725 | { 1726 | "cell_type": "code", 1727 | "execution_count": 35, 1728 | "metadata": {}, 1729 | "outputs": [ 1730 | { 1731 | "data": { 1732 | "text/html": [ 1733 | "Total time: 2:36:27

\n", 1734 | " \n", 1735 | " \n", 1736 | " \n", 1737 | " \n", 1738 | " \n", 1739 | " \n", 1740 | " \n", 1741 | " \n", 1742 | " \n", 1743 | " \n", 1744 | " \n", 1745 | " \n", 1746 | " \n", 1747 | " \n", 1748 | " \n", 1749 | " \n", 1750 | " \n", 1751 | " \n", 1752 | " \n", 1753 | " \n", 1754 | " \n", 1755 | " \n", 1756 | " \n", 1757 | " \n", 1758 | " \n", 1759 | " \n", 1760 | " \n", 1761 | " \n", 1762 | " \n", 1763 | " \n", 1764 | " \n", 1765 | " \n", 1766 | " \n", 1767 | " \n", 1768 | " \n", 1769 | " \n", 1770 | " \n", 1771 | " \n", 1772 | " \n", 1773 | " \n", 1774 | " \n", 1775 | " \n", 1776 | " \n", 1777 | " \n", 1778 | " \n", 1779 | " \n", 1780 | " \n", 1781 | " \n", 1782 | " \n", 1783 | " \n", 1784 | " \n", 1785 | " \n", 1786 | " \n", 1787 | " \n", 1788 | " \n", 1789 | " \n", 1790 | " \n", 1791 | " \n", 1792 | " \n", 1793 | " \n", 1794 | " \n", 1795 | " \n", 1796 | " \n", 1797 | " \n", 1798 | " \n", 1799 | " \n", 1800 | " \n", 1801 | " \n", 1802 | " \n", 1803 | " \n", 1804 | " \n", 1805 | " \n", 1806 | " \n", 1807 | " \n", 1808 | " \n", 1809 | " \n", 1810 | " \n", 1811 | " \n", 1812 | " \n", 1813 | " \n", 1814 | " \n", 1815 | " \n", 1816 | " \n", 1817 | " \n", 1818 | " \n", 1819 | " \n", 1820 | " \n", 1821 | " \n", 1822 | " \n", 1823 | " \n", 1824 | " \n", 1825 | " \n", 1826 | " \n", 1827 | " \n", 1828 | " \n", 1829 | " \n", 1830 | " \n", 1831 | " \n", 1832 | " \n", 1833 | " \n", 1834 | " \n", 1835 | " \n", 1836 | " \n", 1837 | " \n", 1838 | " \n", 1839 | " \n", 1840 | " \n", 1841 | " \n", 1842 | " \n", 1843 | " \n", 1844 | " \n", 1845 | " \n", 1846 | " \n", 1847 | " \n", 1848 | " \n", 1849 | " \n", 1850 | " \n", 1851 | " \n", 1852 | " \n", 1853 | " \n", 1854 | " \n", 1855 | " \n", 1856 | " \n", 1857 | " \n", 1858 | " \n", 1859 | " \n", 1860 | " \n", 1861 | " \n", 1862 | " \n", 1863 | " \n", 1864 | " \n", 1865 | " \n", 1866 | " \n", 1867 | " \n", 1868 | " \n", 1869 | " \n", 1870 | " \n", 1871 | " \n", 1872 | " \n", 1873 | " \n", 1874 | " \n", 1875 | " \n", 1876 | " \n", 1877 | " \n", 1878 | " \n", 1879 | " \n", 1880 | " \n", 1881 | " \n", 1882 | " \n", 1883 | " \n", 1884 | " \n", 1885 | " \n", 1886 | " \n", 1887 | " \n", 1888 | " \n", 1889 | " \n", 1890 | " \n", 1891 | " \n", 1892 | " \n", 1893 | " \n", 1894 | " \n", 1895 | " \n", 1896 | " \n", 1897 | " \n", 1898 | " \n", 1899 | " \n", 1900 | " \n", 1901 | " \n", 1902 | " \n", 1903 | " \n", 1904 | " \n", 1905 | " \n", 1906 | " \n", 1907 | " \n", 1908 | " \n", 1909 | " \n", 1910 | " \n", 1911 | " \n", 1912 | " \n", 1913 | " \n", 1914 | " \n", 1915 | " \n", 1916 | " \n", 1917 | " \n", 1918 | " \n", 1919 | " \n", 1920 | "
epochtrain_lossvalid_lossaccuracy
12.0834571.4515300.638333
21.3217730.9085320.733333
31.0744720.7284610.775750
40.9854650.6661690.793667
50.8388590.6184050.806750
60.8038680.6009170.812500
70.7702960.5923370.814750
80.7125730.5878560.818417
90.7006380.5579250.827667
100.6569980.5434780.833500
110.5873330.5372640.833167
120.5767720.5235250.844917
130.5465390.5116170.843750
140.5311970.5193060.839500
150.4677770.5076150.845667
160.4683770.5045360.848250
170.4542810.4978950.849583
180.4205710.4918030.852833
190.4012520.4861610.853583
200.3591690.4922180.853583
210.3532620.4792240.857250
220.3178460.4822380.860833
230.3053950.4822870.860000
240.3023230.4778790.861250
250.2856790.4773470.863667
260.2656910.4728550.864000
270.2358590.4761830.865417
280.2532950.4757530.864083
290.2523390.4760510.865167
300.2385890.4742090.863583
\n" 1921 | ], 1922 | "text/plain": [ 1923 | "" 1924 | ] 1925 | }, 1926 | "metadata": {}, 1927 | "output_type": "display_data" 1928 | } 1929 | ], 1930 | "source": [ 1931 | "with gpu_mem_restore_ctx():\n", 1932 | " learn.fit_one_cycle(30)" 1933 | ] 1934 | }, 1935 | { 1936 | "cell_type": "markdown", 1937 | "metadata": {}, 1938 | "source": [ 1939 | "## Resnet 101 (Mixed Precision)" 1940 | ] 1941 | }, 1942 | { 1943 | "cell_type": "code", 1944 | "execution_count": 36, 1945 | "metadata": {}, 1946 | "outputs": [], 1947 | "source": [ 1948 | "np.random.seed(42)\n", 1949 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 1950 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=116).normalize(cifar_stats)" 1951 | ] 1952 | }, 1953 | { 1954 | "cell_type": "code", 1955 | "execution_count": 37, 1956 | "metadata": {}, 1957 | "outputs": [], 1958 | "source": [ 1959 | "learn = to_fp16(create_cnn(data, models.resnet101, metrics=accuracy))" 1960 | ] 1961 | }, 1962 | { 1963 | "cell_type": "code", 1964 | "execution_count": 38, 1965 | "metadata": {}, 1966 | "outputs": [ 1967 | { 1968 | "data": { 1969 | "text/html": [ 1970 | "Total time: 2:08:00

\n", 1971 | " \n", 1972 | " \n", 1973 | " \n", 1974 | " \n", 1975 | " \n", 1976 | " \n", 1977 | " \n", 1978 | " \n", 1979 | " \n", 1980 | " \n", 1981 | " \n", 1982 | " \n", 1983 | " \n", 1984 | " \n", 1985 | " \n", 1986 | " \n", 1987 | " \n", 1988 | " \n", 1989 | " \n", 1990 | " \n", 1991 | " \n", 1992 | " \n", 1993 | " \n", 1994 | " \n", 1995 | " \n", 1996 | " \n", 1997 | " \n", 1998 | " \n", 1999 | " \n", 2000 | " \n", 2001 | " \n", 2002 | " \n", 2003 | " \n", 2004 | " \n", 2005 | " \n", 2006 | " \n", 2007 | " \n", 2008 | " \n", 2009 | " \n", 2010 | " \n", 2011 | " \n", 2012 | " \n", 2013 | " \n", 2014 | " \n", 2015 | " \n", 2016 | " \n", 2017 | " \n", 2018 | " \n", 2019 | " \n", 2020 | " \n", 2021 | " \n", 2022 | " \n", 2023 | " \n", 2024 | " \n", 2025 | " \n", 2026 | " \n", 2027 | " \n", 2028 | " \n", 2029 | " \n", 2030 | " \n", 2031 | " \n", 2032 | " \n", 2033 | " \n", 2034 | " \n", 2035 | " \n", 2036 | " \n", 2037 | " \n", 2038 | " \n", 2039 | " \n", 2040 | " \n", 2041 | " \n", 2042 | " \n", 2043 | " \n", 2044 | " \n", 2045 | " \n", 2046 | " \n", 2047 | " \n", 2048 | " \n", 2049 | " \n", 2050 | " \n", 2051 | " \n", 2052 | " \n", 2053 | " \n", 2054 | " \n", 2055 | " \n", 2056 | " \n", 2057 | " \n", 2058 | " \n", 2059 | " \n", 2060 | " \n", 2061 | " \n", 2062 | " \n", 2063 | " \n", 2064 | " \n", 2065 | " \n", 2066 | " \n", 2067 | " \n", 2068 | " \n", 2069 | " \n", 2070 | " \n", 2071 | " \n", 2072 | " \n", 2073 | " \n", 2074 | " \n", 2075 | " \n", 2076 | " \n", 2077 | " \n", 2078 | " \n", 2079 | " \n", 2080 | " \n", 2081 | " \n", 2082 | " \n", 2083 | " \n", 2084 | " \n", 2085 | " \n", 2086 | " \n", 2087 | " \n", 2088 | " \n", 2089 | " \n", 2090 | " \n", 2091 | " \n", 2092 | " \n", 2093 | " \n", 2094 | " \n", 2095 | " \n", 2096 | " \n", 2097 | " \n", 2098 | " \n", 2099 | " \n", 2100 | " \n", 2101 | " \n", 2102 | " \n", 2103 | " \n", 2104 | " \n", 2105 | " \n", 2106 | " \n", 2107 | " \n", 2108 | " \n", 2109 | " \n", 2110 | " \n", 2111 | " \n", 2112 | " \n", 2113 | " \n", 2114 | " \n", 2115 | " \n", 2116 | " \n", 2117 | " \n", 2118 | " \n", 2119 | " \n", 2120 | " \n", 2121 | " \n", 2122 | " \n", 2123 | " \n", 2124 | " \n", 2125 | " \n", 2126 | " \n", 2127 | " \n", 2128 | " \n", 2129 | " \n", 2130 | " \n", 2131 | " \n", 2132 | " \n", 2133 | " \n", 2134 | " \n", 2135 | " \n", 2136 | " \n", 2137 | " \n", 2138 | " \n", 2139 | " \n", 2140 | " \n", 2141 | " \n", 2142 | " \n", 2143 | " \n", 2144 | " \n", 2145 | " \n", 2146 | " \n", 2147 | " \n", 2148 | " \n", 2149 | " \n", 2150 | " \n", 2151 | " \n", 2152 | " \n", 2153 | " \n", 2154 | " \n", 2155 | " \n", 2156 | " \n", 2157 | "
epochtrain_lossvalid_lossaccuracy
12.4025731.6414060.603583
21.4703690.9822780.721500
31.1022050.7702840.762917
40.9314130.6759700.792833
50.8430890.6315720.804000
60.7738700.6077830.812583
70.7473940.5791020.823000
80.6983550.5693110.822667
90.6653800.5697750.824250
100.6012340.5408310.833250
110.5838280.5157470.842083
120.5157660.5140280.841167
130.5010620.5084550.844500
140.4753480.5096870.845667
150.4639350.5016830.846500
160.4333650.4934460.852083
170.3996500.4969410.854250
180.3803420.4983030.853250
190.3506200.4838190.857833
200.3296240.4860340.855667
210.3206230.4803290.858750
220.2990290.4770230.859917
230.2648570.4768860.863000
240.2618440.4775070.864083
250.2549850.4767120.864250
260.2558780.4761270.864417
270.2317180.4748230.866250
280.2210850.4732010.866667
290.2216200.4716820.865083
300.2342610.4760060.865417
\n" 2158 | ], 2159 | "text/plain": [ 2160 | "" 2161 | ] 2162 | }, 2163 | "metadata": {}, 2164 | "output_type": "display_data" 2165 | } 2166 | ], 2167 | "source": [ 2168 | "with gpu_mem_restore_ctx():\n", 2169 | " learn.fit_one_cycle(30)" 2170 | ] 2171 | } 2172 | ], 2173 | "metadata": { 2174 | "kernelspec": { 2175 | "display_name": "Python 3", 2176 | "language": "python", 2177 | "name": "python3" 2178 | }, 2179 | "language_info": { 2180 | "codemirror_mode": { 2181 | "name": "ipython", 2182 | "version": 3 2183 | }, 2184 | "file_extension": ".py", 2185 | "mimetype": "text/x-python", 2186 | "name": "python", 2187 | "nbconvert_exporter": "python", 2188 | "pygments_lexer": "ipython3", 2189 | "version": "3.6.6" 2190 | } 2191 | }, 2192 | "nbformat": 4, 2193 | "nbformat_minor": 2 2194 | } 2195 | -------------------------------------------------------------------------------- /2080Ti.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "%reload_ext autoreload\n", 10 | "%autoreload 2\n", 11 | "%matplotlib inline" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "import functools\n", 21 | "import traceback\n", 22 | "def get_ref_free_exc_info():\n", 23 | " \"Free traceback from references to locals/globals to avoid circular reference leading to gc.collect() unable to reclaim memory\"\n", 24 | " type, val, tb = sys.exc_info()\n", 25 | " traceback.clear_frames(tb)\n", 26 | " return (type, val, tb)\n", 27 | "\n", 28 | "def gpu_mem_restore(func):\n", 29 | " \"Reclaim GPU RAM if CUDA out of memory happened, or execution was interrupted\"\n", 30 | " @functools.wraps(func)\n", 31 | " def wrapper(*args, **kwargs):\n", 32 | " try:\n", 33 | " return func(*args, **kwargs)\n", 34 | " except:\n", 35 | " type, val, tb = get_ref_free_exc_info() # must!\n", 36 | " raise type(val).with_traceback(tb) from None\n", 37 | " return wrapper" 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 3, 43 | "metadata": {}, 44 | "outputs": [], 45 | "source": [ 46 | "from fastai.vision import *\n", 47 | "from fastai.metrics import error_rate" 48 | ] 49 | }, 50 | { 51 | "cell_type": "code", 52 | "execution_count": 4, 53 | "metadata": {}, 54 | "outputs": [], 55 | "source": [ 56 | "path = Path('/home/init27/Downloads/cifar100/')" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": 5, 62 | "metadata": {}, 63 | "outputs": [], 64 | "source": [ 65 | "train = path/'train'\n", 66 | "test = path/'test'" 67 | ] 68 | }, 69 | { 70 | "cell_type": "code", 71 | "execution_count": 8, 72 | "metadata": {}, 73 | "outputs": [], 74 | "source": [ 75 | "bs = 108" 76 | ] 77 | }, 78 | { 79 | "cell_type": "code", 80 | "execution_count": 6, 81 | "metadata": {}, 82 | "outputs": [ 83 | { 84 | "data": { 85 | "text/plain": [ 86 | "[PosixPath('/home/init27/Downloads/cifar100/models'),\n", 87 | " PosixPath('/home/init27/Downloads/cifar100/train'),\n", 88 | " PosixPath('/home/init27/Downloads/cifar100/test')]" 89 | ] 90 | }, 91 | "execution_count": 6, 92 | "metadata": {}, 93 | "output_type": "execute_result" 94 | } 95 | ], 96 | "source": [ 97 | "path.ls()" 98 | ] 99 | }, 100 | { 101 | "cell_type": "code", 102 | "execution_count": 9, 103 | "metadata": {}, 104 | "outputs": [], 105 | "source": [ 106 | "np.random.seed(42)\n", 107 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 108 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=bs).normalize(cifar_stats)" 109 | ] 110 | }, 111 | { 112 | "cell_type": "code", 113 | "execution_count": 10, 114 | "metadata": {}, 115 | "outputs": [], 116 | "source": [ 117 | "class gpu_mem_restore_ctx():\n", 118 | " \" context manager to reclaim GPU RAM if CUDA out of memory happened, or execution was interrupted\"\n", 119 | " def __enter__(self): return self\n", 120 | " def __exit__(self, exc_type, exc_val, exc_tb):\n", 121 | " if not exc_val: return True\n", 122 | " traceback.clear_frames(exc_tb)\n", 123 | " raise exc_type(exc_val).with_traceback(exc_tb) from None" 124 | ] 125 | }, 126 | { 127 | "cell_type": "code", 128 | "execution_count": 11, 129 | "metadata": {}, 130 | "outputs": [], 131 | "source": [ 132 | "#Allow crashing\n", 133 | "learn = create_cnn(data, models.resnet18 , metrics=accuracy)" 134 | ] 135 | }, 136 | { 137 | "cell_type": "markdown", 138 | "metadata": {}, 139 | "source": [ 140 | "## Resnet 18\n", 141 | "\n" 142 | ] 143 | }, 144 | { 145 | "cell_type": "code", 146 | "execution_count": 17, 147 | "metadata": {}, 148 | "outputs": [], 149 | "source": [ 150 | "np.random.seed(42)\n", 151 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 152 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=408).normalize(cifar_stats)\n", 153 | "learn = create_cnn(data, models.resnet18, metrics=accuracy)" 154 | ] 155 | }, 156 | { 157 | "cell_type": "code", 158 | "execution_count": 18, 159 | "metadata": {}, 160 | "outputs": [ 161 | { 162 | "data": { 163 | "text/html": [ 164 | "Total time: 00:54

\n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | "
epochtrain_lossvalid_lossaccuracy
12.4255441.6324820.559083
\n" 178 | ], 179 | "text/plain": [ 180 | "" 181 | ] 182 | }, 183 | "metadata": {}, 184 | "output_type": "display_data" 185 | } 186 | ], 187 | "source": [ 188 | "with gpu_mem_restore_ctx():\n", 189 | " learn.fit_one_cycle(1)" 190 | ] 191 | }, 192 | { 193 | "cell_type": "code", 194 | "execution_count": 19, 195 | "metadata": {}, 196 | "outputs": [ 197 | { 198 | "data": { 199 | "text/html": [ 200 | "Total time: 28:12

\n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | "
epochtrain_lossvalid_lossaccuracy
11.6831621.2348880.647083
21.3777931.0066880.698833
31.2106700.9537260.711000
41.1614850.9813980.702750
51.1588310.9856150.702833
61.1682511.0456620.683667
71.1501261.0719300.681250
81.1469791.0255270.692417
91.1092321.0411670.691250
101.0889201.0466390.685083
111.0551131.0095890.702417
121.0277550.9371680.716500
131.0037850.9531450.715917
140.9687610.9164690.725417
150.9320070.9071130.728667
160.8995290.8743590.738333
170.8767440.8198280.748167
180.8537810.8134300.750667
190.8210740.7902450.762583
200.7935100.7641710.768833
210.7669650.7555080.770500
220.7381980.7375580.777167
230.7118210.7251240.779583
240.6808610.7229850.778667
250.6630840.7066590.783667
260.6442370.6964700.788083
270.6198590.6918470.790667
280.6095220.6919350.788750
290.5977010.6904380.789417
300.6051550.6908530.788500
\n" 388 | ], 389 | "text/plain": [ 390 | "" 391 | ] 392 | }, 393 | "metadata": {}, 394 | "output_type": "display_data" 395 | } 396 | ], 397 | "source": [ 398 | "with gpu_mem_restore_ctx():\n", 399 | " learn.fit_one_cycle(30, max_lr=1e-2)" 400 | ] 401 | }, 402 | { 403 | "cell_type": "markdown", 404 | "metadata": {}, 405 | "source": [ 406 | "## Resnet 18 (Mixed Precision)" 407 | ] 408 | }, 409 | { 410 | "cell_type": "code", 411 | "execution_count": 29, 412 | "metadata": {}, 413 | "outputs": [], 414 | "source": [ 415 | "np.random.seed(42)\n", 416 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 417 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=720).normalize(cifar_stats)" 418 | ] 419 | }, 420 | { 421 | "cell_type": "code", 422 | "execution_count": 30, 423 | "metadata": {}, 424 | "outputs": [], 425 | "source": [ 426 | "learn = to_fp16(create_cnn(data, models.resnet18, metrics=accuracy))" 427 | ] 428 | }, 429 | { 430 | "cell_type": "code", 431 | "execution_count": 31, 432 | "metadata": {}, 433 | "outputs": [ 434 | { 435 | "data": { 436 | "text/html": [ 437 | "Total time: 00:58

\n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | "
epochtrain_lossvalid_lossaccuracy
12.8923671.8574840.514833
\n" 451 | ], 452 | "text/plain": [ 453 | "" 454 | ] 455 | }, 456 | "metadata": {}, 457 | "output_type": "display_data" 458 | } 459 | ], 460 | "source": [ 461 | "with gpu_mem_restore_ctx():\n", 462 | " learn.fit_one_cycle(1)" 463 | ] 464 | }, 465 | { 466 | "cell_type": "code", 467 | "execution_count": 32, 468 | "metadata": {}, 469 | "outputs": [ 470 | { 471 | "data": { 472 | "text/html": [ 473 | "Total time: 28:28

\n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | "
epochtrain_lossvalid_lossaccuracy
12.2178031.7762560.535000
22.1116441.6348460.565083
31.9486031.4515060.600167
41.7633331.2886800.634083
51.5762181.1706220.659167
61.4351811.0886990.677000
71.3357171.0244430.695833
81.2418080.9743250.710167
91.1719490.9349630.718083
101.1180360.9143270.726500
111.0734530.8875450.731083
121.0323880.8723360.735083
130.9912460.8590430.737417
140.9688650.8387640.744333
150.9411470.8270380.748500
160.9211680.8150470.750500
170.8964680.8106710.750750
180.8763520.7973680.752500
190.8556250.7965570.754833
200.8342820.7871050.758667
210.8243250.7830100.761167
220.7992740.7761480.762583
230.7907840.7708340.761250
240.7741120.7685280.763750
250.7674630.7662010.765917
260.7584230.7640430.766750
270.7498850.7626750.766500
280.7466970.7612550.767583
290.7497170.7615670.766833
300.7475470.7620190.766500
\n" 661 | ], 662 | "text/plain": [ 663 | "" 664 | ] 665 | }, 666 | "metadata": {}, 667 | "output_type": "display_data" 668 | } 669 | ], 670 | "source": [ 671 | "with gpu_mem_restore_ctx():\n", 672 | " learn.fit_one_cycle(30)" 673 | ] 674 | }, 675 | { 676 | "cell_type": "markdown", 677 | "metadata": {}, 678 | "source": [ 679 | "## Resnet 34 " 680 | ] 681 | }, 682 | { 683 | "cell_type": "code", 684 | "execution_count": 155, 685 | "metadata": {}, 686 | "outputs": [], 687 | "source": [ 688 | "np.random.seed(42)\n", 689 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 690 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=248).normalize(cifar_stats)" 691 | ] 692 | }, 693 | { 694 | "cell_type": "code", 695 | "execution_count": 156, 696 | "metadata": {}, 697 | "outputs": [], 698 | "source": [ 699 | "learn = create_cnn(data, models.resnet34, metrics=accuracy)" 700 | ] 701 | }, 702 | { 703 | "cell_type": "code", 704 | "execution_count": 157, 705 | "metadata": {}, 706 | "outputs": [ 707 | { 708 | "data": { 709 | "text/html": [ 710 | "Total time: 39:37

\n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | " \n", 767 | " \n", 768 | " \n", 769 | " \n", 770 | " \n", 771 | " \n", 772 | " \n", 773 | " \n", 774 | " \n", 775 | " \n", 776 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | "
epochtrain_lossvalid_lossaccuracy
14.0915273.2544140.291917
22.7438541.9809680.516750
31.9209041.3372920.628833
41.4716991.0535530.692083
51.2333010.9133380.720250
61.1097500.8488460.743417
71.0375200.7917370.756333
80.9690360.7623820.766417
90.9196570.7295320.773250
100.8858720.7128020.778000
110.8394040.7046380.782583
120.8139410.6909260.786333
130.7894690.6725940.793000
140.7659090.6639170.796250
150.7280200.6533050.800167
160.7077190.6569650.797250
170.6825950.6424760.804083
180.6636530.6373330.803500
190.6512300.6252490.806083
200.6217780.6224630.809583
210.6130270.6218230.809250
220.6087410.6181270.813333
230.5775750.6138920.814583
240.5709140.6090380.814833
250.5446430.6092520.816750
260.5482200.6061480.817583
270.5356980.6040820.817750
280.5251070.6047530.817667
290.5311500.6042430.817250
300.5330260.6044700.817167
\n" 898 | ], 899 | "text/plain": [ 900 | "" 901 | ] 902 | }, 903 | "metadata": {}, 904 | "output_type": "display_data" 905 | } 906 | ], 907 | "source": [ 908 | "with gpu_mem_restore_ctx():\n", 909 | " learn.fit_one_cycle(30)" 910 | ] 911 | }, 912 | { 913 | "cell_type": "markdown", 914 | "metadata": {}, 915 | "source": [ 916 | "## Resnet 34 (Mixed Precision)" 917 | ] 918 | }, 919 | { 920 | "cell_type": "code", 921 | "execution_count": 158, 922 | "metadata": {}, 923 | "outputs": [], 924 | "source": [ 925 | "np.random.seed(42)\n", 926 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 927 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=496).normalize(cifar_stats)" 928 | ] 929 | }, 930 | { 931 | "cell_type": "code", 932 | "execution_count": 159, 933 | "metadata": {}, 934 | "outputs": [], 935 | "source": [ 936 | "learn = to_fp16(create_cnn(data, models.resnet34, metrics=accuracy))" 937 | ] 938 | }, 939 | { 940 | "cell_type": "code", 941 | "execution_count": 160, 942 | "metadata": {}, 943 | "outputs": [ 944 | { 945 | "data": { 946 | "text/html": [ 947 | "Total time: 32:13

\n", 948 | " \n", 949 | " \n", 950 | " \n", 951 | " \n", 952 | " \n", 953 | " \n", 954 | " \n", 955 | " \n", 956 | " \n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | " \n", 1025 | " \n", 1026 | " \n", 1027 | " \n", 1028 | " \n", 1029 | " \n", 1030 | " \n", 1031 | " \n", 1032 | " \n", 1033 | " \n", 1034 | " \n", 1035 | " \n", 1036 | " \n", 1037 | " \n", 1038 | " \n", 1039 | " \n", 1040 | " \n", 1041 | " \n", 1042 | " \n", 1043 | " \n", 1044 | " \n", 1045 | " \n", 1046 | " \n", 1047 | " \n", 1048 | " \n", 1049 | " \n", 1050 | " \n", 1051 | " \n", 1052 | " \n", 1053 | " \n", 1054 | " \n", 1055 | " \n", 1056 | " \n", 1057 | " \n", 1058 | " \n", 1059 | " \n", 1060 | " \n", 1061 | " \n", 1062 | " \n", 1063 | " \n", 1064 | " \n", 1065 | " \n", 1066 | " \n", 1067 | " \n", 1068 | " \n", 1069 | " \n", 1070 | " \n", 1071 | " \n", 1072 | " \n", 1073 | " \n", 1074 | " \n", 1075 | " \n", 1076 | " \n", 1077 | " \n", 1078 | " \n", 1079 | " \n", 1080 | " \n", 1081 | " \n", 1082 | " \n", 1083 | " \n", 1084 | " \n", 1085 | " \n", 1086 | " \n", 1087 | " \n", 1088 | " \n", 1089 | " \n", 1090 | " \n", 1091 | " \n", 1092 | " \n", 1093 | " \n", 1094 | " \n", 1095 | " \n", 1096 | " \n", 1097 | " \n", 1098 | " \n", 1099 | " \n", 1100 | " \n", 1101 | " \n", 1102 | " \n", 1103 | " \n", 1104 | " \n", 1105 | " \n", 1106 | " \n", 1107 | " \n", 1108 | " \n", 1109 | " \n", 1110 | " \n", 1111 | " \n", 1112 | " \n", 1113 | " \n", 1114 | " \n", 1115 | " \n", 1116 | " \n", 1117 | " \n", 1118 | " \n", 1119 | " \n", 1120 | " \n", 1121 | " \n", 1122 | " \n", 1123 | " \n", 1124 | " \n", 1125 | " \n", 1126 | " \n", 1127 | " \n", 1128 | " \n", 1129 | " \n", 1130 | " \n", 1131 | " \n", 1132 | " \n", 1133 | " \n", 1134 | "
epochtrain_lossvalid_lossaccuracy
14.5275953.7239820.192333
23.4965152.4633510.443083
32.4864721.6084100.577167
41.8105221.2040570.655750
51.4306691.0087470.701667
61.2250850.9052690.727500
71.0923920.8355430.743750
81.0132070.7933490.753833
90.9549000.7609040.762250
100.8979510.7391070.773417
110.8606280.7235680.776000
120.8239300.7031440.784000
130.7924100.6812150.790583
140.7670220.6835870.789167
150.7419680.6682850.796083
160.7185960.6619590.797583
170.6938800.6575650.796500
180.6765310.6522260.804333
190.6615410.6500920.803000
200.6419040.6328770.808167
210.6283840.6337680.807500
220.6079010.6308940.808167
230.5974070.6301450.809083
240.5803470.6259420.809583
250.5765500.6242900.813000
260.5641240.6209010.811500
270.5617510.6208300.811000
280.5495950.6201130.811500
290.5490340.6198810.812917
300.5531790.6186340.812083
\n" 1135 | ], 1136 | "text/plain": [ 1137 | "" 1138 | ] 1139 | }, 1140 | "metadata": {}, 1141 | "output_type": "display_data" 1142 | } 1143 | ], 1144 | "source": [ 1145 | "with gpu_mem_restore_ctx():\n", 1146 | " learn.fit_one_cycle(30)" 1147 | ] 1148 | }, 1149 | { 1150 | "cell_type": "markdown", 1151 | "metadata": {}, 1152 | "source": [ 1153 | "## Training Resnet 50" 1154 | ] 1155 | }, 1156 | { 1157 | "cell_type": "code", 1158 | "execution_count": 44, 1159 | "metadata": {}, 1160 | "outputs": [], 1161 | "source": [ 1162 | "np.random.seed(42)\n", 1163 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 1164 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=98).normalize(cifar_stats)" 1165 | ] 1166 | }, 1167 | { 1168 | "cell_type": "code", 1169 | "execution_count": 45, 1170 | "metadata": {}, 1171 | "outputs": [], 1172 | "source": [ 1173 | "learn = create_cnn(data, models.resnet50, metrics=accuracy)" 1174 | ] 1175 | }, 1176 | { 1177 | "cell_type": "code", 1178 | "execution_count": 46, 1179 | "metadata": {}, 1180 | "outputs": [ 1181 | { 1182 | "data": { 1183 | "text/html": [ 1184 | "Total time: 1:16:18

\n", 1185 | " \n", 1186 | " \n", 1187 | " \n", 1188 | " \n", 1189 | " \n", 1190 | " \n", 1191 | " \n", 1192 | " \n", 1193 | " \n", 1194 | " \n", 1195 | " \n", 1196 | " \n", 1197 | " \n", 1198 | " \n", 1199 | " \n", 1200 | " \n", 1201 | " \n", 1202 | " \n", 1203 | " \n", 1204 | " \n", 1205 | " \n", 1206 | " \n", 1207 | " \n", 1208 | " \n", 1209 | " \n", 1210 | " \n", 1211 | " \n", 1212 | " \n", 1213 | " \n", 1214 | " \n", 1215 | " \n", 1216 | " \n", 1217 | " \n", 1218 | " \n", 1219 | " \n", 1220 | " \n", 1221 | " \n", 1222 | " \n", 1223 | " \n", 1224 | " \n", 1225 | " \n", 1226 | " \n", 1227 | " \n", 1228 | " \n", 1229 | " \n", 1230 | " \n", 1231 | " \n", 1232 | " \n", 1233 | " \n", 1234 | " \n", 1235 | " \n", 1236 | " \n", 1237 | " \n", 1238 | " \n", 1239 | " \n", 1240 | " \n", 1241 | " \n", 1242 | " \n", 1243 | " \n", 1244 | " \n", 1245 | " \n", 1246 | " \n", 1247 | " \n", 1248 | " \n", 1249 | " \n", 1250 | " \n", 1251 | " \n", 1252 | " \n", 1253 | " \n", 1254 | " \n", 1255 | " \n", 1256 | " \n", 1257 | " \n", 1258 | " \n", 1259 | " \n", 1260 | " \n", 1261 | " \n", 1262 | " \n", 1263 | " \n", 1264 | " \n", 1265 | " \n", 1266 | " \n", 1267 | " \n", 1268 | " \n", 1269 | " \n", 1270 | " \n", 1271 | " \n", 1272 | " \n", 1273 | " \n", 1274 | " \n", 1275 | " \n", 1276 | " \n", 1277 | " \n", 1278 | " \n", 1279 | " \n", 1280 | " \n", 1281 | " \n", 1282 | " \n", 1283 | " \n", 1284 | " \n", 1285 | " \n", 1286 | " \n", 1287 | " \n", 1288 | " \n", 1289 | " \n", 1290 | " \n", 1291 | " \n", 1292 | " \n", 1293 | " \n", 1294 | " \n", 1295 | " \n", 1296 | " \n", 1297 | " \n", 1298 | " \n", 1299 | " \n", 1300 | " \n", 1301 | " \n", 1302 | " \n", 1303 | " \n", 1304 | " \n", 1305 | " \n", 1306 | " \n", 1307 | " \n", 1308 | " \n", 1309 | " \n", 1310 | " \n", 1311 | " \n", 1312 | " \n", 1313 | " \n", 1314 | " \n", 1315 | " \n", 1316 | " \n", 1317 | " \n", 1318 | " \n", 1319 | " \n", 1320 | " \n", 1321 | " \n", 1322 | " \n", 1323 | " \n", 1324 | " \n", 1325 | " \n", 1326 | " \n", 1327 | " \n", 1328 | " \n", 1329 | " \n", 1330 | " \n", 1331 | " \n", 1332 | " \n", 1333 | " \n", 1334 | " \n", 1335 | " \n", 1336 | " \n", 1337 | " \n", 1338 | " \n", 1339 | " \n", 1340 | " \n", 1341 | " \n", 1342 | " \n", 1343 | " \n", 1344 | " \n", 1345 | " \n", 1346 | " \n", 1347 | " \n", 1348 | " \n", 1349 | " \n", 1350 | " \n", 1351 | " \n", 1352 | " \n", 1353 | " \n", 1354 | " \n", 1355 | " \n", 1356 | " \n", 1357 | " \n", 1358 | " \n", 1359 | " \n", 1360 | " \n", 1361 | " \n", 1362 | " \n", 1363 | " \n", 1364 | " \n", 1365 | " \n", 1366 | " \n", 1367 | " \n", 1368 | " \n", 1369 | " \n", 1370 | " \n", 1371 | "
epochtrain_lossvalid_lossaccuracy
12.5389041.8966860.537917
21.7009871.2190140.660167
31.3047180.9526660.716250
41.0971500.8502750.743417
51.0082060.7814210.758083
60.9471500.7406770.770500
70.8917490.7203290.778250
80.8000580.6863940.791250
90.7712100.6746600.793167
100.7440090.6534070.798000
110.7104900.6351360.803083
120.6536510.6185440.810833
130.6548170.6123650.811500
140.6046550.6104850.818000
150.5934370.5913170.820833
160.5537680.5964430.819417
170.5071880.5853330.825250
180.4930850.5837390.829417
190.4769640.5753710.828667
200.4558300.5696290.831167
210.4473610.5725330.831417
220.4073000.5676950.833667
230.3830440.5655510.833667
240.3698850.5639260.835917
250.3763160.5613160.836833
260.3356860.5587880.838000
270.3467690.5602100.838083
280.3402220.5611730.839667
290.3279400.5582640.839667
300.3169470.5595350.839333
\n" 1372 | ], 1373 | "text/plain": [ 1374 | "" 1375 | ] 1376 | }, 1377 | "metadata": {}, 1378 | "output_type": "display_data" 1379 | } 1380 | ], 1381 | "source": [ 1382 | "with gpu_mem_restore_ctx():\n", 1383 | " learn.fit_one_cycle(30)" 1384 | ] 1385 | }, 1386 | { 1387 | "cell_type": "markdown", 1388 | "metadata": {}, 1389 | "source": [ 1390 | "## Resnet 50 (Mixed Precision)" 1391 | ] 1392 | }, 1393 | { 1394 | "cell_type": "code", 1395 | "execution_count": 57, 1396 | "metadata": {}, 1397 | "outputs": [], 1398 | "source": [ 1399 | "np.random.seed(42)\n", 1400 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 1401 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=164).normalize(cifar_stats)" 1402 | ] 1403 | }, 1404 | { 1405 | "cell_type": "code", 1406 | "execution_count": 58, 1407 | "metadata": {}, 1408 | "outputs": [], 1409 | "source": [ 1410 | "learn = to_fp16(create_cnn(data, models.resnet50, metrics=accuracy))" 1411 | ] 1412 | }, 1413 | { 1414 | "cell_type": "code", 1415 | "execution_count": 59, 1416 | "metadata": {}, 1417 | "outputs": [ 1418 | { 1419 | "data": { 1420 | "text/html": [ 1421 | "Total time: 53:38

\n", 1422 | " \n", 1423 | " \n", 1424 | " \n", 1425 | " \n", 1426 | " \n", 1427 | " \n", 1428 | " \n", 1429 | " \n", 1430 | " \n", 1431 | " \n", 1432 | " \n", 1433 | " \n", 1434 | " \n", 1435 | " \n", 1436 | " \n", 1437 | " \n", 1438 | " \n", 1439 | " \n", 1440 | " \n", 1441 | " \n", 1442 | " \n", 1443 | " \n", 1444 | " \n", 1445 | " \n", 1446 | " \n", 1447 | " \n", 1448 | " \n", 1449 | " \n", 1450 | " \n", 1451 | " \n", 1452 | " \n", 1453 | " \n", 1454 | " \n", 1455 | " \n", 1456 | " \n", 1457 | " \n", 1458 | " \n", 1459 | " \n", 1460 | " \n", 1461 | " \n", 1462 | " \n", 1463 | " \n", 1464 | " \n", 1465 | " \n", 1466 | " \n", 1467 | " \n", 1468 | " \n", 1469 | " \n", 1470 | " \n", 1471 | " \n", 1472 | " \n", 1473 | " \n", 1474 | " \n", 1475 | " \n", 1476 | " \n", 1477 | " \n", 1478 | " \n", 1479 | " \n", 1480 | " \n", 1481 | " \n", 1482 | " \n", 1483 | " \n", 1484 | " \n", 1485 | " \n", 1486 | " \n", 1487 | " \n", 1488 | " \n", 1489 | " \n", 1490 | " \n", 1491 | " \n", 1492 | " \n", 1493 | " \n", 1494 | " \n", 1495 | " \n", 1496 | " \n", 1497 | " \n", 1498 | " \n", 1499 | " \n", 1500 | " \n", 1501 | " \n", 1502 | " \n", 1503 | " \n", 1504 | " \n", 1505 | " \n", 1506 | " \n", 1507 | " \n", 1508 | " \n", 1509 | " \n", 1510 | " \n", 1511 | " \n", 1512 | " \n", 1513 | " \n", 1514 | " \n", 1515 | " \n", 1516 | " \n", 1517 | " \n", 1518 | " \n", 1519 | " \n", 1520 | " \n", 1521 | " \n", 1522 | " \n", 1523 | " \n", 1524 | " \n", 1525 | " \n", 1526 | " \n", 1527 | " \n", 1528 | " \n", 1529 | " \n", 1530 | " \n", 1531 | " \n", 1532 | " \n", 1533 | " \n", 1534 | " \n", 1535 | " \n", 1536 | " \n", 1537 | " \n", 1538 | " \n", 1539 | " \n", 1540 | " \n", 1541 | " \n", 1542 | " \n", 1543 | " \n", 1544 | " \n", 1545 | " \n", 1546 | " \n", 1547 | " \n", 1548 | " \n", 1549 | " \n", 1550 | " \n", 1551 | " \n", 1552 | " \n", 1553 | " \n", 1554 | " \n", 1555 | " \n", 1556 | " \n", 1557 | " \n", 1558 | " \n", 1559 | " \n", 1560 | " \n", 1561 | " \n", 1562 | " \n", 1563 | " \n", 1564 | " \n", 1565 | " \n", 1566 | " \n", 1567 | " \n", 1568 | " \n", 1569 | " \n", 1570 | " \n", 1571 | " \n", 1572 | " \n", 1573 | " \n", 1574 | " \n", 1575 | " \n", 1576 | " \n", 1577 | " \n", 1578 | " \n", 1579 | " \n", 1580 | " \n", 1581 | " \n", 1582 | " \n", 1583 | " \n", 1584 | " \n", 1585 | " \n", 1586 | " \n", 1587 | " \n", 1588 | " \n", 1589 | " \n", 1590 | " \n", 1591 | " \n", 1592 | " \n", 1593 | " \n", 1594 | " \n", 1595 | " \n", 1596 | " \n", 1597 | " \n", 1598 | " \n", 1599 | " \n", 1600 | " \n", 1601 | " \n", 1602 | " \n", 1603 | " \n", 1604 | " \n", 1605 | " \n", 1606 | " \n", 1607 | " \n", 1608 | "
epochtrain_lossvalid_lossaccuracy
12.8534792.0870020.499583
21.8516621.3425980.631250
31.3878961.0188170.699417
41.1658700.8668660.736500
51.0319150.7901430.755833
60.9215150.7597190.765500
70.8803130.7171900.778917
80.8383100.6977540.784250
90.7757290.6814220.791750
100.7252940.6496510.801583
110.6923800.6430330.801167
120.6615060.6332040.805750
130.6162020.6240440.810333
140.5918450.6123940.812417
150.5667310.6035920.818500
160.5427070.5970490.818333
170.5062980.5968410.822417
180.4928560.5888160.824667
190.4503510.5853150.826667
200.4412410.5807100.827167
210.4209250.5789270.828500
220.3925660.5819970.831417
230.3740370.5713750.832500
240.3667360.5725500.832583
250.3398710.5699140.831500
260.3447340.5686280.833083
270.3227930.5675100.832667
280.3078980.5658390.835750
290.3228320.5664650.832583
300.3171370.5688570.832000
\n" 1609 | ], 1610 | "text/plain": [ 1611 | "" 1612 | ] 1613 | }, 1614 | "metadata": {}, 1615 | "output_type": "display_data" 1616 | } 1617 | ], 1618 | "source": [ 1619 | "with gpu_mem_restore_ctx():\n", 1620 | " learn.fit_one_cycle(30)" 1621 | ] 1622 | }, 1623 | { 1624 | "cell_type": "markdown", 1625 | "metadata": {}, 1626 | "source": [ 1627 | "## Resnet 101" 1628 | ] 1629 | }, 1630 | { 1631 | "cell_type": "code", 1632 | "execution_count": 161, 1633 | "metadata": {}, 1634 | "outputs": [], 1635 | "source": [ 1636 | "np.random.seed(42)\n", 1637 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 1638 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=64).normalize(cifar_stats)" 1639 | ] 1640 | }, 1641 | { 1642 | "cell_type": "code", 1643 | "execution_count": 162, 1644 | "metadata": {}, 1645 | "outputs": [], 1646 | "source": [ 1647 | "learn = create_cnn(data, models.resnet101, metrics=accuracy)" 1648 | ] 1649 | }, 1650 | { 1651 | "cell_type": "code", 1652 | "execution_count": 163, 1653 | "metadata": {}, 1654 | "outputs": [ 1655 | { 1656 | "data": { 1657 | "text/html": [ 1658 | "Total time: 2:01:58

\n", 1659 | " \n", 1660 | " \n", 1661 | " \n", 1662 | " \n", 1663 | " \n", 1664 | " \n", 1665 | " \n", 1666 | " \n", 1667 | " \n", 1668 | " \n", 1669 | " \n", 1670 | " \n", 1671 | " \n", 1672 | " \n", 1673 | " \n", 1674 | " \n", 1675 | " \n", 1676 | " \n", 1677 | " \n", 1678 | " \n", 1679 | " \n", 1680 | " \n", 1681 | " \n", 1682 | " \n", 1683 | " \n", 1684 | " \n", 1685 | " \n", 1686 | " \n", 1687 | " \n", 1688 | " \n", 1689 | " \n", 1690 | " \n", 1691 | " \n", 1692 | " \n", 1693 | " \n", 1694 | " \n", 1695 | " \n", 1696 | " \n", 1697 | " \n", 1698 | " \n", 1699 | " \n", 1700 | " \n", 1701 | " \n", 1702 | " \n", 1703 | " \n", 1704 | " \n", 1705 | " \n", 1706 | " \n", 1707 | " \n", 1708 | " \n", 1709 | " \n", 1710 | " \n", 1711 | " \n", 1712 | " \n", 1713 | " \n", 1714 | " \n", 1715 | " \n", 1716 | " \n", 1717 | " \n", 1718 | " \n", 1719 | " \n", 1720 | " \n", 1721 | " \n", 1722 | " \n", 1723 | " \n", 1724 | " \n", 1725 | " \n", 1726 | " \n", 1727 | " \n", 1728 | " \n", 1729 | " \n", 1730 | " \n", 1731 | " \n", 1732 | " \n", 1733 | " \n", 1734 | " \n", 1735 | " \n", 1736 | " \n", 1737 | " \n", 1738 | " \n", 1739 | " \n", 1740 | " \n", 1741 | " \n", 1742 | " \n", 1743 | " \n", 1744 | " \n", 1745 | " \n", 1746 | " \n", 1747 | " \n", 1748 | " \n", 1749 | " \n", 1750 | " \n", 1751 | " \n", 1752 | " \n", 1753 | " \n", 1754 | " \n", 1755 | " \n", 1756 | " \n", 1757 | " \n", 1758 | " \n", 1759 | " \n", 1760 | " \n", 1761 | " \n", 1762 | " \n", 1763 | " \n", 1764 | " \n", 1765 | " \n", 1766 | " \n", 1767 | " \n", 1768 | " \n", 1769 | " \n", 1770 | " \n", 1771 | " \n", 1772 | " \n", 1773 | " \n", 1774 | " \n", 1775 | " \n", 1776 | " \n", 1777 | " \n", 1778 | " \n", 1779 | " \n", 1780 | " \n", 1781 | " \n", 1782 | " \n", 1783 | " \n", 1784 | " \n", 1785 | " \n", 1786 | " \n", 1787 | " \n", 1788 | " \n", 1789 | " \n", 1790 | " \n", 1791 | " \n", 1792 | " \n", 1793 | " \n", 1794 | " \n", 1795 | " \n", 1796 | " \n", 1797 | " \n", 1798 | " \n", 1799 | " \n", 1800 | " \n", 1801 | " \n", 1802 | " \n", 1803 | " \n", 1804 | " \n", 1805 | " \n", 1806 | " \n", 1807 | " \n", 1808 | " \n", 1809 | " \n", 1810 | " \n", 1811 | " \n", 1812 | " \n", 1813 | " \n", 1814 | " \n", 1815 | " \n", 1816 | " \n", 1817 | " \n", 1818 | " \n", 1819 | " \n", 1820 | " \n", 1821 | " \n", 1822 | " \n", 1823 | " \n", 1824 | " \n", 1825 | " \n", 1826 | " \n", 1827 | " \n", 1828 | " \n", 1829 | " \n", 1830 | " \n", 1831 | " \n", 1832 | " \n", 1833 | " \n", 1834 | " \n", 1835 | " \n", 1836 | " \n", 1837 | " \n", 1838 | " \n", 1839 | " \n", 1840 | " \n", 1841 | " \n", 1842 | " \n", 1843 | " \n", 1844 | " \n", 1845 | "
epochtrain_lossvalid_lossaccuracy
12.0553261.4472090.630000
21.3284820.9380830.723333
31.0654120.7628040.767833
40.8938590.6817910.788333
50.8579690.6400770.801417
60.7666420.6371750.802417
70.7816140.6251950.804750
80.7317610.5967060.817333
90.6828650.5820540.822250
100.6485900.5603010.828667
110.6182410.5562580.829667
120.5746540.5471300.835917
130.5304910.5401690.837667
140.5288480.5342720.839333
150.4915670.5262540.840750
160.4512760.5311700.842167
170.4388370.5185940.847167
180.4330880.5241590.845750
190.3816780.5228430.847667
200.3652160.5216570.848917
210.3433470.5175530.852500
220.3395960.5078000.854000
230.3099280.5144930.854917
240.2973990.5068180.856000
250.2688650.5044120.857667
260.2629930.5056060.860333
270.2449820.5031220.858667
280.2492510.5019700.860833
290.2544120.5044550.861500
300.2442840.5024310.859750
\n" 1846 | ], 1847 | "text/plain": [ 1848 | "" 1849 | ] 1850 | }, 1851 | "metadata": {}, 1852 | "output_type": "display_data" 1853 | } 1854 | ], 1855 | "source": [ 1856 | "with gpu_mem_restore_ctx():\n", 1857 | " learn.fit_one_cycle(30)" 1858 | ] 1859 | }, 1860 | { 1861 | "cell_type": "markdown", 1862 | "metadata": {}, 1863 | "source": [ 1864 | "## Resnet 101 (Mixed Precision)" 1865 | ] 1866 | }, 1867 | { 1868 | "cell_type": "code", 1869 | "execution_count": 164, 1870 | "metadata": {}, 1871 | "outputs": [], 1872 | "source": [ 1873 | "np.random.seed(42)\n", 1874 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 1875 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=116).normalize(cifar_stats)" 1876 | ] 1877 | }, 1878 | { 1879 | "cell_type": "code", 1880 | "execution_count": 165, 1881 | "metadata": {}, 1882 | "outputs": [], 1883 | "source": [ 1884 | "learn = to_fp16(create_cnn(data, models.resnet101, metrics=accuracy))" 1885 | ] 1886 | }, 1887 | { 1888 | "cell_type": "code", 1889 | "execution_count": 166, 1890 | "metadata": {}, 1891 | "outputs": [ 1892 | { 1893 | "data": { 1894 | "text/html": [ 1895 | "Total time: 1:22:32

\n", 1896 | " \n", 1897 | " \n", 1898 | " \n", 1899 | " \n", 1900 | " \n", 1901 | " \n", 1902 | " \n", 1903 | " \n", 1904 | " \n", 1905 | " \n", 1906 | " \n", 1907 | " \n", 1908 | " \n", 1909 | " \n", 1910 | " \n", 1911 | " \n", 1912 | " \n", 1913 | " \n", 1914 | " \n", 1915 | " \n", 1916 | " \n", 1917 | " \n", 1918 | " \n", 1919 | " \n", 1920 | " \n", 1921 | " \n", 1922 | " \n", 1923 | " \n", 1924 | " \n", 1925 | " \n", 1926 | " \n", 1927 | " \n", 1928 | " \n", 1929 | " \n", 1930 | " \n", 1931 | " \n", 1932 | " \n", 1933 | " \n", 1934 | " \n", 1935 | " \n", 1936 | " \n", 1937 | " \n", 1938 | " \n", 1939 | " \n", 1940 | " \n", 1941 | " \n", 1942 | " \n", 1943 | " \n", 1944 | " \n", 1945 | " \n", 1946 | " \n", 1947 | " \n", 1948 | " \n", 1949 | " \n", 1950 | " \n", 1951 | " \n", 1952 | " \n", 1953 | " \n", 1954 | " \n", 1955 | " \n", 1956 | " \n", 1957 | " \n", 1958 | " \n", 1959 | " \n", 1960 | " \n", 1961 | " \n", 1962 | " \n", 1963 | " \n", 1964 | " \n", 1965 | " \n", 1966 | " \n", 1967 | " \n", 1968 | " \n", 1969 | " \n", 1970 | " \n", 1971 | " \n", 1972 | " \n", 1973 | " \n", 1974 | " \n", 1975 | " \n", 1976 | " \n", 1977 | " \n", 1978 | " \n", 1979 | " \n", 1980 | " \n", 1981 | " \n", 1982 | " \n", 1983 | " \n", 1984 | " \n", 1985 | " \n", 1986 | " \n", 1987 | " \n", 1988 | " \n", 1989 | " \n", 1990 | " \n", 1991 | " \n", 1992 | " \n", 1993 | " \n", 1994 | " \n", 1995 | " \n", 1996 | " \n", 1997 | " \n", 1998 | " \n", 1999 | " \n", 2000 | " \n", 2001 | " \n", 2002 | " \n", 2003 | " \n", 2004 | " \n", 2005 | " \n", 2006 | " \n", 2007 | " \n", 2008 | " \n", 2009 | " \n", 2010 | " \n", 2011 | " \n", 2012 | " \n", 2013 | " \n", 2014 | " \n", 2015 | " \n", 2016 | " \n", 2017 | " \n", 2018 | " \n", 2019 | " \n", 2020 | " \n", 2021 | " \n", 2022 | " \n", 2023 | " \n", 2024 | " \n", 2025 | " \n", 2026 | " \n", 2027 | " \n", 2028 | " \n", 2029 | " \n", 2030 | " \n", 2031 | " \n", 2032 | " \n", 2033 | " \n", 2034 | " \n", 2035 | " \n", 2036 | " \n", 2037 | " \n", 2038 | " \n", 2039 | " \n", 2040 | " \n", 2041 | " \n", 2042 | " \n", 2043 | " \n", 2044 | " \n", 2045 | " \n", 2046 | " \n", 2047 | " \n", 2048 | " \n", 2049 | " \n", 2050 | " \n", 2051 | " \n", 2052 | " \n", 2053 | " \n", 2054 | " \n", 2055 | " \n", 2056 | " \n", 2057 | " \n", 2058 | " \n", 2059 | " \n", 2060 | " \n", 2061 | " \n", 2062 | " \n", 2063 | " \n", 2064 | " \n", 2065 | " \n", 2066 | " \n", 2067 | " \n", 2068 | " \n", 2069 | " \n", 2070 | " \n", 2071 | " \n", 2072 | " \n", 2073 | " \n", 2074 | " \n", 2075 | " \n", 2076 | " \n", 2077 | " \n", 2078 | " \n", 2079 | " \n", 2080 | " \n", 2081 | " \n", 2082 | "
epochtrain_lossvalid_lossaccuracy
12.3560061.6539880.594750
21.4581731.0151180.709333
31.1136600.8037040.758167
40.9318430.7103390.782333
50.8442360.6669150.791833
60.7850520.6252760.807167
70.7258670.6013630.815750
80.7047280.5925590.817833
90.6566510.5766170.821583
100.5996080.5722270.822667
110.5694340.5661420.828750
120.5388150.5395150.835917
130.5087810.5360170.835250
140.4714970.5352570.839833
150.4556950.5401520.836750
160.4377310.5312330.841583
170.3984600.5288750.847250
180.3708180.5213280.851000
190.3612730.5246040.851583
200.3280990.5168410.851167
210.3099710.5102280.854833
220.3008880.5187740.852333
230.2895900.5065020.856250
240.2585560.5131640.855417
250.2546890.5129960.857583
260.2329980.5162410.857750
270.2381410.5141060.857417
280.2172200.5148880.856250
290.2242650.5139120.856167
300.2207240.5140180.856750
\n" 2083 | ], 2084 | "text/plain": [ 2085 | "" 2086 | ] 2087 | }, 2088 | "metadata": {}, 2089 | "output_type": "display_data" 2090 | } 2091 | ], 2092 | "source": [ 2093 | "with gpu_mem_restore_ctx():\n", 2094 | " learn.fit_one_cycle(30)" 2095 | ] 2096 | }, 2097 | { 2098 | "cell_type": "markdown", 2099 | "metadata": {}, 2100 | "source": [ 2101 | "## Resnet 152" 2102 | ] 2103 | }, 2104 | { 2105 | "cell_type": "code", 2106 | "execution_count": 65, 2107 | "metadata": {}, 2108 | "outputs": [], 2109 | "source": [ 2110 | "np.random.seed(42)\n", 2111 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 2112 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=48).normalize(cifar_stats)" 2113 | ] 2114 | }, 2115 | { 2116 | "cell_type": "code", 2117 | "execution_count": 66, 2118 | "metadata": {}, 2119 | "outputs": [], 2120 | "source": [ 2121 | "learn = create_cnn(data, models.resnet152, metrics=accuracy)" 2122 | ] 2123 | }, 2124 | { 2125 | "cell_type": "code", 2126 | "execution_count": 67, 2127 | "metadata": {}, 2128 | "outputs": [ 2129 | { 2130 | "data": { 2131 | "text/html": [ 2132 | "Total time: 2:58:27

\n", 2133 | " \n", 2134 | " \n", 2135 | " \n", 2136 | " \n", 2137 | " \n", 2138 | " \n", 2139 | " \n", 2140 | " \n", 2141 | " \n", 2142 | " \n", 2143 | " \n", 2144 | " \n", 2145 | " \n", 2146 | " \n", 2147 | " \n", 2148 | " \n", 2149 | " \n", 2150 | " \n", 2151 | " \n", 2152 | " \n", 2153 | " \n", 2154 | " \n", 2155 | " \n", 2156 | " \n", 2157 | " \n", 2158 | " \n", 2159 | " \n", 2160 | " \n", 2161 | " \n", 2162 | " \n", 2163 | " \n", 2164 | " \n", 2165 | " \n", 2166 | " \n", 2167 | " \n", 2168 | " \n", 2169 | " \n", 2170 | " \n", 2171 | " \n", 2172 | " \n", 2173 | " \n", 2174 | " \n", 2175 | " \n", 2176 | " \n", 2177 | " \n", 2178 | " \n", 2179 | " \n", 2180 | " \n", 2181 | " \n", 2182 | " \n", 2183 | " \n", 2184 | " \n", 2185 | " \n", 2186 | " \n", 2187 | " \n", 2188 | " \n", 2189 | " \n", 2190 | " \n", 2191 | " \n", 2192 | " \n", 2193 | " \n", 2194 | " \n", 2195 | " \n", 2196 | " \n", 2197 | " \n", 2198 | " \n", 2199 | " \n", 2200 | " \n", 2201 | " \n", 2202 | " \n", 2203 | " \n", 2204 | " \n", 2205 | " \n", 2206 | " \n", 2207 | " \n", 2208 | " \n", 2209 | " \n", 2210 | " \n", 2211 | " \n", 2212 | " \n", 2213 | " \n", 2214 | " \n", 2215 | " \n", 2216 | " \n", 2217 | " \n", 2218 | " \n", 2219 | " \n", 2220 | " \n", 2221 | " \n", 2222 | " \n", 2223 | " \n", 2224 | " \n", 2225 | " \n", 2226 | " \n", 2227 | " \n", 2228 | " \n", 2229 | " \n", 2230 | " \n", 2231 | " \n", 2232 | " \n", 2233 | " \n", 2234 | " \n", 2235 | " \n", 2236 | " \n", 2237 | " \n", 2238 | " \n", 2239 | " \n", 2240 | " \n", 2241 | " \n", 2242 | " \n", 2243 | " \n", 2244 | " \n", 2245 | " \n", 2246 | " \n", 2247 | " \n", 2248 | " \n", 2249 | " \n", 2250 | " \n", 2251 | " \n", 2252 | " \n", 2253 | " \n", 2254 | " \n", 2255 | " \n", 2256 | " \n", 2257 | " \n", 2258 | " \n", 2259 | " \n", 2260 | " \n", 2261 | " \n", 2262 | " \n", 2263 | " \n", 2264 | " \n", 2265 | " \n", 2266 | " \n", 2267 | " \n", 2268 | " \n", 2269 | " \n", 2270 | " \n", 2271 | " \n", 2272 | " \n", 2273 | " \n", 2274 | " \n", 2275 | " \n", 2276 | " \n", 2277 | " \n", 2278 | " \n", 2279 | " \n", 2280 | " \n", 2281 | " \n", 2282 | " \n", 2283 | " \n", 2284 | " \n", 2285 | " \n", 2286 | " \n", 2287 | " \n", 2288 | " \n", 2289 | " \n", 2290 | " \n", 2291 | " \n", 2292 | " \n", 2293 | " \n", 2294 | " \n", 2295 | " \n", 2296 | " \n", 2297 | " \n", 2298 | " \n", 2299 | " \n", 2300 | " \n", 2301 | " \n", 2302 | " \n", 2303 | " \n", 2304 | " \n", 2305 | " \n", 2306 | " \n", 2307 | " \n", 2308 | " \n", 2309 | " \n", 2310 | " \n", 2311 | " \n", 2312 | " \n", 2313 | " \n", 2314 | " \n", 2315 | " \n", 2316 | " \n", 2317 | " \n", 2318 | " \n", 2319 | "
epochtrain_lossvalid_lossaccuracy
11.8988281.3059660.653833
21.1751810.8422900.747250
30.9662240.6992210.786167
40.8840340.6510860.795667
50.7927950.6216820.804750
60.7951350.5933150.819083
70.7236220.5968390.816833
80.6587140.5816740.821417
90.6704550.5531890.833000
100.6226070.5609350.830250
110.5870180.5335420.836250
120.5803080.5205490.841167
130.5213000.5328230.840583
140.4872490.5261090.842750
150.4488120.5133430.850167
160.4317170.5065660.850667
170.4010860.5064120.851917
180.3987200.5055100.853083
190.3611490.5005690.855833
200.3571570.4937130.856417
210.3195230.4960270.860000
220.2840450.4945040.861000
230.2536440.4933730.861333
240.2757020.5006110.861167
250.2489390.4889990.863083
260.2339020.4964970.862333
270.2180120.4919880.864417
280.2257830.4933720.864667
290.2176870.4931240.866333
300.2022060.4919470.863083
\n" 2320 | ], 2321 | "text/plain": [ 2322 | "" 2323 | ] 2324 | }, 2325 | "metadata": {}, 2326 | "output_type": "display_data" 2327 | } 2328 | ], 2329 | "source": [ 2330 | "with gpu_mem_restore_ctx():\n", 2331 | " learn.fit_one_cycle(30)" 2332 | ] 2333 | }, 2334 | { 2335 | "cell_type": "markdown", 2336 | "metadata": {}, 2337 | "source": [ 2338 | "## Resnet 152 (Mixed Precision)" 2339 | ] 2340 | }, 2341 | { 2342 | "cell_type": "code", 2343 | "execution_count": 167, 2344 | "metadata": {}, 2345 | "outputs": [], 2346 | "source": [ 2347 | "np.random.seed(42)\n", 2348 | "data = ImageDataBunch.from_folder(path, train=train, valid_pct=0.2,\n", 2349 | " ds_tfms=get_transforms(), size=224, num_workers=4, bs=88).normalize(cifar_stats)" 2350 | ] 2351 | }, 2352 | { 2353 | "cell_type": "code", 2354 | "execution_count": 168, 2355 | "metadata": {}, 2356 | "outputs": [], 2357 | "source": [ 2358 | "learn = to_fp16(create_cnn(data, models.resnet152, metrics=accuracy))" 2359 | ] 2360 | }, 2361 | { 2362 | "cell_type": "code", 2363 | "execution_count": 169, 2364 | "metadata": {}, 2365 | "outputs": [ 2366 | { 2367 | "data": { 2368 | "text/html": [ 2369 | "Total time: 1:51:21

\n", 2370 | " \n", 2371 | " \n", 2372 | " \n", 2373 | " \n", 2374 | " \n", 2375 | " \n", 2376 | " \n", 2377 | " \n", 2378 | " \n", 2379 | " \n", 2380 | " \n", 2381 | " \n", 2382 | " \n", 2383 | " \n", 2384 | " \n", 2385 | " \n", 2386 | " \n", 2387 | " \n", 2388 | " \n", 2389 | " \n", 2390 | " \n", 2391 | " \n", 2392 | " \n", 2393 | " \n", 2394 | " \n", 2395 | " \n", 2396 | " \n", 2397 | " \n", 2398 | " \n", 2399 | " \n", 2400 | " \n", 2401 | " \n", 2402 | " \n", 2403 | " \n", 2404 | " \n", 2405 | " \n", 2406 | " \n", 2407 | " \n", 2408 | " \n", 2409 | " \n", 2410 | " \n", 2411 | " \n", 2412 | " \n", 2413 | " \n", 2414 | " \n", 2415 | " \n", 2416 | " \n", 2417 | " \n", 2418 | " \n", 2419 | " \n", 2420 | " \n", 2421 | " \n", 2422 | " \n", 2423 | " \n", 2424 | " \n", 2425 | " \n", 2426 | " \n", 2427 | " \n", 2428 | " \n", 2429 | " \n", 2430 | " \n", 2431 | " \n", 2432 | " \n", 2433 | " \n", 2434 | " \n", 2435 | " \n", 2436 | " \n", 2437 | " \n", 2438 | " \n", 2439 | " \n", 2440 | " \n", 2441 | " \n", 2442 | " \n", 2443 | " \n", 2444 | " \n", 2445 | " \n", 2446 | " \n", 2447 | " \n", 2448 | " \n", 2449 | " \n", 2450 | " \n", 2451 | " \n", 2452 | " \n", 2453 | " \n", 2454 | " \n", 2455 | " \n", 2456 | " \n", 2457 | " \n", 2458 | " \n", 2459 | " \n", 2460 | " \n", 2461 | " \n", 2462 | " \n", 2463 | " \n", 2464 | " \n", 2465 | " \n", 2466 | " \n", 2467 | " \n", 2468 | " \n", 2469 | " \n", 2470 | " \n", 2471 | " \n", 2472 | " \n", 2473 | " \n", 2474 | " \n", 2475 | " \n", 2476 | " \n", 2477 | " \n", 2478 | " \n", 2479 | " \n", 2480 | " \n", 2481 | " \n", 2482 | " \n", 2483 | " \n", 2484 | " \n", 2485 | " \n", 2486 | " \n", 2487 | " \n", 2488 | " \n", 2489 | " \n", 2490 | " \n", 2491 | " \n", 2492 | " \n", 2493 | " \n", 2494 | " \n", 2495 | " \n", 2496 | " \n", 2497 | " \n", 2498 | " \n", 2499 | " \n", 2500 | " \n", 2501 | " \n", 2502 | " \n", 2503 | " \n", 2504 | " \n", 2505 | " \n", 2506 | " \n", 2507 | " \n", 2508 | " \n", 2509 | " \n", 2510 | " \n", 2511 | " \n", 2512 | " \n", 2513 | " \n", 2514 | " \n", 2515 | " \n", 2516 | " \n", 2517 | " \n", 2518 | " \n", 2519 | " \n", 2520 | " \n", 2521 | " \n", 2522 | " \n", 2523 | " \n", 2524 | " \n", 2525 | " \n", 2526 | " \n", 2527 | " \n", 2528 | " \n", 2529 | " \n", 2530 | " \n", 2531 | " \n", 2532 | " \n", 2533 | " \n", 2534 | " \n", 2535 | " \n", 2536 | " \n", 2537 | " \n", 2538 | " \n", 2539 | " \n", 2540 | " \n", 2541 | " \n", 2542 | " \n", 2543 | " \n", 2544 | " \n", 2545 | " \n", 2546 | " \n", 2547 | " \n", 2548 | " \n", 2549 | " \n", 2550 | " \n", 2551 | " \n", 2552 | " \n", 2553 | " \n", 2554 | " \n", 2555 | " \n", 2556 | "
epochtrain_lossvalid_lossaccuracy
12.1601351.4959380.625750
21.2945850.9200200.733083
30.9843790.7270620.776750
40.8656960.6417530.800250
50.7774030.5997950.815000
60.7268240.6070370.811833
70.6958080.5773060.824917
80.6633180.5615400.828833
90.6010160.5545050.833417
100.5760790.5461270.834667
110.5498000.5249470.842250
120.4948070.5135830.844250
130.4753650.5167160.846250
140.4439250.5066610.849750
150.4100930.5095160.849250
160.3789220.4995940.855167
170.3445420.4890110.856333
180.3400060.5072460.852333
190.3250860.4861560.861083
200.3020480.4909370.857667
210.2881650.4868600.864250
220.2565610.4925680.860917
230.2377630.4857180.862583
240.2243360.4863260.863333
250.2095520.4859670.863500
260.2108890.4855750.865250
270.2021230.4814210.865833
280.2059880.4860220.867167
290.1732480.4859570.865583
300.1825090.4841720.866750
\n" 2557 | ], 2558 | "text/plain": [ 2559 | "" 2560 | ] 2561 | }, 2562 | "metadata": {}, 2563 | "output_type": "display_data" 2564 | } 2565 | ], 2566 | "source": [ 2567 | "with gpu_mem_restore_ctx():\n", 2568 | " learn.fit_one_cycle(30)" 2569 | ] 2570 | } 2571 | ], 2572 | "metadata": { 2573 | "kernelspec": { 2574 | "display_name": "Python 3", 2575 | "language": "python", 2576 | "name": "python3" 2577 | }, 2578 | "language_info": { 2579 | "codemirror_mode": { 2580 | "name": "ipython", 2581 | "version": 3 2582 | }, 2583 | "file_extension": ".py", 2584 | "mimetype": "text/x-python", 2585 | "name": "python", 2586 | "nbconvert_exporter": "python", 2587 | "pygments_lexer": "ipython3", 2588 | "version": "3.6.6" 2589 | } 2590 | }, 2591 | "nbformat": 4, 2592 | "nbformat_minor": 2 2593 | } 2594 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RTX-2080Ti-Vs-GTX-1080Ti-CIFAR-100-Benchmarks 2 | 3 | [Scripts for the accompanying blogpost](https://hackernoon.com/rtx-2080ti-vs-gtx-1080ti-fastai-mixed-precision-training-comparisons-on-cifar-100-761d8f615d7f?source=user_profile---------4------------------) 4 | 5 | For more details, please checkout the blogpost above. 6 | 7 | For details on fast.ai and the latest MOOC (2019), please checkout course.fast.ai 8 | 9 | ### Special Thanks 10 | 11 | Special Thanks to Tuatini Godard for helping me run the tests on his 1080Ti 12 | --------------------------------------------------------------------------------