You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@madlib.apache.org by GitBox <gi...@apache.org> on 2019/10/10 16:21:40 UTC

[GitHub] [madlib] fmcquillan99 commented on issue #443: DL: Add training for multiple models

fmcquillan99 commented on issue #443: DL: Add training for multiple models
URL: https://github.com/apache/madlib/pull/443#issuecomment-540664010
 
 
   Prelim testing for fit() looks OK (see below).  I suggest after @kaknikhil finishes addressing review comments that we merge this PR then work on https://issues.apache.org/jira/browse/MADLIB-1387 after which we can do more E2E testing.
   
   ```
   SELECT * FROM mst_table ORDER BY mst_key;
   
    mst_key | model_id |                                 compile_params                                  |      fit_params       
   ---------+----------+---------------------------------------------------------------------------------+-----------------------
          1 |        1 | loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']   | batch_size=4,epochs=1
          2 |        1 | loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']   | batch_size=8,epochs=1
          3 |        1 | loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1
          4 |        1 | loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1
          5 |        1 | loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy'] | batch_size=4,epochs=1
          6 |        1 | loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy'] | batch_size=8,epochs=1
          7 |        2 | loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']   | batch_size=4,epochs=1
          8 |        2 | loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']   | batch_size=8,epochs=1
          9 |        2 | loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=4,epochs=1
         10 |        2 | loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy'] | batch_size=8,epochs=1
         11 |        2 | loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy'] | batch_size=4,epochs=1
         12 |        2 | loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy'] | batch_size=8,epochs=1
   (12 rows)
   
   DROP TABLE IF EXISTS iris_multi_model, iris_multi_model_summary, iris_multi_model_info;
   SELECT madlib.madlib_keras_fit_multiple_model('iris_train_packed',    -- source_table
                                                 'iris_multi_model',     -- model_output_table
                                                 'mst_table',            -- model_selection_table
                                                 7,  -- num_iterations
                                                 0,   -- gpus_per_host
                                                 'iris_test_packed'      -- validation dataset
                                                );
   SELECT * FROM iris_multi_model_info ORDER BY training_metrics_final DESC;
   
   -[ RECORD 1 ]------------+--------------------------------------------------------------------------------------------------------------------------------
   mst_key                  | 10
   model_id                 | 2
   compile_params           | loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy']
   fit_params               | batch_size=8,epochs=1
   model_type               | madlib_keras
   model_size               | 1.2197265625
   metrics_elapsed_time     | {0.181155920028687,0.186516046524048,0.184003829956055,0.258072137832642,0.192763805389404,0.18028712272644,0.176060914993286}
   metrics_type             | {accuracy}
   training_metrics_final   | 0.983333349228
   training_loss_final      | 0.249839022756
   training_metrics         | {0.716666638851166,0.716666638851166,0.716666638851166,0.716666638851166,0.716666638851166,0.783333361148834,0.983333349227905}
   training_loss            | {0.828127026557922,0.647694051265717,0.481598526239395,0.439306199550629,0.393612682819366,0.308133810758591,0.249839022755623}
   validation_metrics_final | 0.899999976158
   validation_loss_final    | 0.335877805948
   validation_metrics       | {0.466666668653488,0.466666668653488,0.466666668653488,0.466666668653488,0.5,0.633333325386047,0.899999976158142}
   validation_loss          | {1.13481867313385,0.979182302951813,0.748289108276367,0.746902406215668,0.66666042804718,0.500535547733307,0.335877805948257}
   -[ RECORD 2 ]------------+--------------------------------------------------------------------------------------------------------------------------------
   mst_key                  | 8
   model_id                 | 2
   compile_params           | loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
   fit_params               | batch_size=8,epochs=1
   model_type               | madlib_keras
   model_size               | 1.2197265625
   metrics_elapsed_time     | {0.193707942962646,0.177205085754395,0.188807010650635,0.177771091461182,0.188723087310791,0.178416967391968,0.199656009674072}
   metrics_type             | {accuracy}
   training_metrics_final   | 0.983333349228
   training_loss_final      | 0.159384667873
   training_metrics         | {0.716666638851166,0.708333313465118,0.699999988079071,0.716666638851166,0.725000023841858,0.550000011920929,0.983333349227905}
   training_loss            | {0.623141229152679,0.618586182594299,0.520916938781738,0.485385835170746,0.456164866685867,0.781868517398834,0.159384667873383}
   validation_metrics_final | 0.866666674614
   validation_loss_final    | 0.247822448611
   validation_metrics       | {0.466666668653488,0.466666668653488,0.466666668653488,0.466666668653488,0.5,0.200000002980232,0.866666674613953}
   validation_loss          | {0.630768358707428,0.811316192150116,0.619273781776428,0.66645485162735,0.520728230476379,0.992052137851715,0.247822448611259}
   -[ RECORD 3 ]------------+--------------------------------------------------------------------------------------------------------------------------------
   mst_key                  | 4
   model_id                 | 1
   compile_params           | loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy']
   fit_params               | batch_size=8,epochs=1
   model_type               | madlib_keras
   model_size               | 0.7900390625
   metrics_elapsed_time     | {0.15691614151001,0.153699159622192,0.548386812210083,0.169425010681152,0.165678024291992,0.157116889953613,0.15025782585144}
   metrics_type             | {accuracy}
   training_metrics_final   | 0.975000023842
   training_loss_final      | 0.26616576314
   training_metrics         | {0.391666680574417,0.400000005960464,0.725000023841858,0.925000011920929,0.758333325386047,0.833333313465118,0.975000023841858}
   training_loss            | {1.02847397327423,0.830727696418762,0.655663847923279,0.534718573093414,0.419764846563339,0.321459263563156,0.266165763139725}
   validation_metrics_final | 0.933333337307
   validation_loss_final    | 0.310080826283
   validation_metrics       | {0.100000001490116,0.100000001490116,0.5,0.833333313465118,0.533333361148834,0.733333349227905,0.933333337306976}
   validation_loss          | {1.24580788612366,1.13383376598358,0.899369597434998,0.65422135591507,0.657262623310089,0.500903606414795,0.310080826282501}
   -[ RECORD 4 ]------------+--------------------------------------------------------------------------------------------------------------------------------
   mst_key                  | 7
   model_id                 | 2
   compile_params           | loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
   fit_params               | batch_size=4,epochs=1
   model_type               | madlib_keras
   model_size               | 1.2197265625
   metrics_elapsed_time     | {0.192800045013428,0.176566123962402,0.184437036514282,0.179429054260254,0.182589054107666,0.176466941833496,0.202085018157959}
   metrics_type             | {accuracy}
   training_metrics_final   | 0.925000011921
   training_loss_final      | 0.321873039007
   training_metrics         | {0.608333349227905,0.975000023841858,0.75,0.858333349227905,0.608333349227905,0.983333349227905,0.925000011920929}
   training_loss            | {0.649360001087189,0.362144291400909,0.394706398248672,0.236399039626122,0.553112983703613,0.327443867921829,0.321873039007187}
   validation_metrics_final | 1
   validation_loss_final    | 0.241945460439
   validation_metrics       | {0.899999976158142,0.866666674613953,0.533333361148834,0.733333349227905,0.899999976158142,0.866666674613953,1}
   validation_loss          | {0.332620888948441,0.502064645290375,0.66054779291153,0.538120031356812,0.234018862247467,0.337950766086578,0.241945460438728}
   -[ RECORD 5 ]------------+--------------------------------------------------------------------------------------------------------------------------------
   mst_key                  | 3
   model_id                 | 1
   compile_params           | loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy']
   fit_params               | batch_size=4,epochs=1
   model_type               | madlib_keras
   model_size               | 0.7900390625
   metrics_elapsed_time     | {0.15620493888855,0.155749082565308,0.193189859390259,0.166114091873169,0.156448841094971,0.148685932159424,0.152026891708374}
   metrics_type             | {accuracy}
   training_metrics_final   | 0.925000011921
   training_loss_final      | 0.325599312782
   training_metrics         | {0.391666680574417,0.725000023841858,0.725000023841858,0.716666638851166,0.75,0.716666638851166,0.925000011920929}
   training_loss            | {1.11191356182098,0.621958792209625,0.446929544210434,0.41201776266098,0.374244391918182,0.509410500526428,0.325599312782288}
   validation_metrics_final | 0.933333337307
   validation_loss_final    | 0.276731878519
   validation_metrics       | {0.100000001490116,0.5,0.466666668653488,0.466666668653488,0.533333361148834,0.466666668653488,0.933333337306976}
   validation_loss          | {1.63468599319458,0.65976870059967,0.540513038635254,0.567835509777069,0.486706107854843,0.917201280593872,0.276731878519058}
   -[ RECORD 6 ]------------+--------------------------------------------------------------------------------------------------------------------------------
   mst_key                  | 9
   model_id                 | 2
   compile_params           | loss='categorical_crossentropy', optimizer='Adam(lr=0.01)',metrics=['accuracy']
   fit_params               | batch_size=4,epochs=1
   model_type               | madlib_keras
   model_size               | 1.2197265625
   metrics_elapsed_time     | {0.546731948852539,0.173670053482056,0.189447164535522,0.18386697769165,0.179111003875732,0.179292917251587,0.17428994178772}
   metrics_type             | {accuracy}
   training_metrics_final   | 0.891666650772
   training_loss_final      | 0.208736971021
   training_metrics         | {0.708333313465118,0.866666674613953,0.758333325386047,0.933333337306976,0.991666674613953,0.983333349227905,0.891666650772095}
   training_loss            | {0.753945171833038,0.351552069187164,0.330372422933578,0.267056792974472,0.148756921291351,0.110077999532223,0.208736971020699}
   validation_metrics_final | 1
   validation_loss_final    | 0.0952743515372
   validation_metrics       | {0.466666668653488,0.699999988079071,0.566666662693024,0.899999976158142,0.899999976158142,0.933333337306976,1}
   validation_loss          | {1.06321632862091,0.520808517932892,0.602703869342804,0.26708459854126,0.246414661407471,0.179920583963394,0.0952743515372276}
   -[ RECORD 7 ]------------+--------------------------------------------------------------------------------------------------------------------------------
   mst_key                  | 11
   model_id                 | 2
   compile_params           | loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
   fit_params               | batch_size=4,epochs=1
   model_type               | madlib_keras
   model_size               | 1.2197265625
   metrics_elapsed_time     | {0.186348915100098,0.186259984970093,0.176491975784302,0.574105024337769,0.191556930541992,0.178547859191895,0.176308870315552}
   metrics_type             | {accuracy}
   training_metrics_final   | 0.716666638851
   training_loss_final      | 0.478766709566
   training_metrics         | {0.391666680574417,0.591666638851166,0.716666638851166,0.716666638851166,0.716666638851166,0.716666638851166,0.716666638851166}
   training_loss            | {0.952429413795471,0.849565386772156,0.773178815841675,0.676037073135376,0.601148724555969,0.532010197639465,0.478766709566116}
   validation_metrics_final | 0.466666668653
   validation_loss_final    | 0.658966064453
   validation_metrics       | {0.100000001490116,0.366666674613953,0.466666668653488,0.466666668653488,0.466666668653488,0.466666668653488,0.466666668653488}
   validation_loss          | {1.31364703178406,1.14900648593903,1.0735125541687,0.92445170879364,0.823235094547272,0.713083922863007,0.658966064453125}
   -[ RECORD 8 ]------------+--------------------------------------------------------------------------------------------------------------------------------
   mst_key                  | 6
   model_id                 | 1
   compile_params           | loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
   fit_params               | batch_size=8,epochs=1
   model_type               | madlib_keras
   model_size               | 0.7900390625
   metrics_elapsed_time     | {0.158112049102783,0.153064966201782,0.175857067108154,0.151686906814575,0.162416934967041,0.590201854705811,0.161259889602661}
   metrics_type             | {accuracy}
   training_metrics_final   | 0.716666638851
   training_loss_final      | 0.896975934505
   training_metrics         | {0.391666680574417,0.658333361148834,0.716666638851166,0.716666638851166,0.716666638851166,0.716666638851166,0.716666638851166}
   training_loss            | {1.08892619609833,1.05738139152527,1.02508842945099,0.996677756309509,0.966224551200867,0.930180728435516,0.896975934505463}
   validation_metrics_final | 0.466666668653
   validation_loss_final    | 1.07026696205
   validation_metrics       | {0.100000001490116,0.400000005960464,0.466666668653488,0.466666668653488,0.466666668653488,0.466666668653488,0.466666668653488}
   validation_loss          | {1.36965489387512,1.33375680446625,1.25807249546051,1.22709584236145,1.17450451850891,1.09602510929108,1.07026696205139}
   -[ RECORD 9 ]------------+--------------------------------------------------------------------------------------------------------------------------------
   mst_key                  | 12
   model_id                 | 2
   compile_params           | loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
   fit_params               | batch_size=8,epochs=1
   model_type               | madlib_keras
   model_size               | 1.2197265625
   metrics_elapsed_time     | {0.182577848434448,0.180651903152466,0.191632986068726,0.184897899627686,0.179800987243652,0.175981998443604,0.174694776535034}
   metrics_type             | {accuracy}
   training_metrics_final   | 0.708333313465
   training_loss_final      | 0.879215478897
   training_metrics         | {0.391666680574417,0.391666680574417,0.391666680574417,0.391666680574417,0.400000005960464,0.558333337306976,0.708333313465118}
   training_loss            | {2.4544358253479,1.88577473163605,1.46488261222839,1.21406507492065,1.06772172451019,0.960707426071167,0.879215478897095}
   validation_metrics_final | 0.466666668653
   validation_loss_final    | 1.12123858929
   validation_metrics       | {0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116,0.400000005960464,0.466666668653488}
   validation_loss          | {3.79992151260376,2.91293883323669,2.22414708137512,1.76915240287781,1.4565817117691,1.25908029079437,1.1212385892868}
   -[ RECORD 10 ]-----------+--------------------------------------------------------------------------------------------------------------------------------
   mst_key                  | 2
   model_id                 | 1
   compile_params           | loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
   fit_params               | batch_size=8,epochs=1
   model_type               | madlib_keras
   model_size               | 0.7900390625
   metrics_elapsed_time     | {0.159732103347778,0.156741142272949,0.152164936065674,0.168025970458984,0.166567087173462,0.153841018676758,0.148435115814209}
   metrics_type             | {accuracy}
   training_metrics_final   | 0.391666680574
   training_loss_final      | 1.09972310066
   training_metrics         | {0.391666680574417,0.391666680574417,0.391666680574417,0.391666680574417,0.391666680574417,0.391666680574417,0.391666680574417}
   training_loss            | {1.09512889385223,1.09819459915161,1.09368872642517,1.0922759771347,1.10061180591583,1.09582090377808,1.09972310066223}
   validation_metrics_final | 0.10000000149
   validation_loss_final    | 1.27448761463
   validation_metrics       | {0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116}
   validation_loss          | {1.20508420467377,1.26680672168732,1.24172151088715,1.205646276474,1.27797186374664,1.25544846057892,1.27448761463165}
   -[ RECORD 11 ]-----------+--------------------------------------------------------------------------------------------------------------------------------
   mst_key                  | 1
   model_id                 | 1
   compile_params           | loss='categorical_crossentropy',optimizer='Adam(lr=0.1)',metrics=['accuracy']
   fit_params               | batch_size=4,epochs=1
   model_type               | madlib_keras
   model_size               | 0.7900390625
   metrics_elapsed_time     | {0.168879985809326,0.152376174926758,0.156481981277466,0.152595996856689,0.207169055938721,0.156559944152832,0.654519081115723}
   metrics_type             | {accuracy}
   training_metrics_final   | 0.391666680574
   training_loss_final      | 1.11036765575
   training_metrics         | {0.391666680574417,0.391666680574417,0.391666680574417,0.391666680574417,0.391666680574417,0.391666680574417,0.391666680574417}
   training_loss            | {1.10677635669708,1.09215080738068,1.11154639720917,1.10222017765045,1.09642863273621,1.09669518470764,1.11036765575409}
   validation_metrics_final | 0.10000000149
   validation_loss_final    | 1.31826531887
   validation_metrics       | {0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116}
   validation_loss          | {1.31928586959839,1.19879269599915,1.3339284658432,1.29005479812622,1.26196086406708,1.2497181892395,1.31826531887054}
   -[ RECORD 12 ]-----------+--------------------------------------------------------------------------------------------------------------------------------
   mst_key                  | 5
   model_id                 | 1
   compile_params           | loss='categorical_crossentropy',optimizer='Adam(lr=0.001)',metrics=['accuracy']
   fit_params               | batch_size=4,epochs=1
   model_type               | madlib_keras
   model_size               | 0.7900390625
   metrics_elapsed_time     | {0.163282155990601,0.152222871780396,0.55925989151001,0.153285980224609,0.155977010726929,0.159151077270508,0.169466972351074}
   metrics_type             | {accuracy}
   training_metrics_final   | 0.391666680574
   training_loss_final      | 0.94362616539
   training_metrics         | {0.391666680574417,0.391666680574417,0.391666680574417,0.391666680574417,0.391666680574417,0.400000005960464,0.391666680574417}
   training_loss            | {1.31070482730865,1.1811283826828,1.1090475320816,1.05325126647949,1.01403939723969,0.977032721042633,0.943626165390015}
   validation_metrics_final | 0.10000000149
   validation_loss_final    | 1.20139348507
   validation_metrics       | {0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116,0.100000001490116}
   validation_loss          | {1.90102434158325,1.61195623874664,1.46869885921478,1.3178962469101,1.27622199058533,1.26882350444794,1.20139348506927}
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services