{
  "id": 106359,
  "title": "#57 Summary",
  "url": "/competitions/champs-scalar-coupling/writeups/fool-s-gold-57-summary",
  "author_name": "",
  "post_date": "2019-08-30T12:25:54.053Z",
  "votes": 22,
  "comment_count": 15,
  "views": 0,
  "content": "<p>This turned out to be one of my favorite contests. I have always been fascinated by chemistry and have a reasonable knowledge base in chemistry in general. Originally, I hoped to use my chemical intuition to get an edge in this contest. Bu I realized soon enough that, since I had zero knowledge in molecular modeling, my edge was very slim.</p>\n\n<p>I sat on the fence for a very long time reluctant to invest time in learning the state of the art of molecule representation and modeling of molecular properties. Luckily, the Kaggle community came through with many great kernels that I could sample quickly and zero down to a few that were most promising in my hands.</p>\n\n<p>I started working hard on this contest about two weeks ago. For a long time I was out of medal range. Then, things started to click around one week ago and I managed quickly move into solid silver range within a few days.</p>\n\n<p>There was not much time left and models took long time to run. Since there was very little danger of overfitting to LB from what I observed on oof predictions, I chose not waste resources on creating oof prediction and blend old models with newer versions as they came in using LB as the only guide. The current standings and scores: #57 and -2.21819 (Private) and #58 and -2.22542 (Public), prove that that was a solid strategic choice.</p>\n\n<p>The three kernels below (with minor tweaks) contributed the most to the final blend:\n<a href=\"https://www.kaggle.com/toshik/schnet-starter-kit\">SchNet Starter Kit</a>  by <a href=\"/toshik\">@toshik</a> , who barely missed Gold with -2.8 solo score! Amazing!\n<a href=\"https://www.kaggle.com/criskiev/distance-is-all-you-need-lb-1-481\">Distance - is all you need. LB -1.481</a>  by <a href=\"/criskiev\">@criskiev</a> , whose team got Silver!\n<a href=\"https://www.kaggle.com/xwxw2929/keras-neural-net-and-distance-features\">Keras Neural Net and Distance Features</a>  by <a href=\"/xwxw2929\">@xwxw2929</a>, who got solo Bronze!\nBasically, most credit for my 🥈  goes to the creators of these great kernels. I am glad they all did great in the contest. Congrats!</p>\n\n<p>At first the core of my blend was Sergii’s kernel, then Aicanghai_Smile’s Keras version started to weigh in more, but, in the last 5 days or so, I realized that <strong>the biggest hidden gem is actually SchNet.</strong> Wow! In the final blend it has by far the most weight. </p>\n\n<p>For SchNet my main modifications was training separate models for each type and adjustment of batch size upward (often I used 16 for mini-batches). Each of 8 models took 6-8 hrs to train for 60-90 epochs using Kaggle’s GPUs. The best SchNet model was -1.971 and I feel that I barely scratched the surface with what it could really accomplish.</p>\n\n<p>99% of computing was done with Kernels. It is great to have access to such powerful GPUs. My main wish is that GPU kernels would not freeze two days before the deadline.\nIn the end, I ran out of time before I could apply my secret chemical intuition skills : (.  I am guessing that a promising strategy to improve further is to split molecules into finer subgroups based on molecular features such as double bonds, rings, etc. and then train separate SchNet models on these subgroups.</p>\n\n<p>Congrats to all! Thank you the organizers and Kaggle for making this a great contest!</p>\n\n<p>**<em>Update: *</em><a href=\"https://www.kaggle.com/stocks/schnet-by-j-type-helped-me-win-silver-57\">SchNet Kernel by J-Type</a></p>",
  "messages": [
    {
      "id": "611385",
      "postDate": "08/29/2019 08:29:46",
      "content": "<p>This turned out to be one of my favorite contests. I have always been fascinated by chemistry and have a reasonable knowledge base in chemistry in general. Originally, I hoped to use my chemical intuition to get an edge in this contest. Bu I realized soon enough that, since I had zero knowledge in molecular modeling, my edge was very slim.</p>\n\n<p>I sat on the fence for a very long time reluctant to invest time in learning the state of the art of molecule representation and modeling of molecular properties. Luckily, the Kaggle community came through with many great kernels that I could sample quickly and zero down to a few that were most promising in my hands.</p>\n\n<p>I started working hard on this contest about two weeks ago. For a long time I was out of medal range. Then, things started to click around one week ago and I managed quickly move into solid silver range within a few days.</p>\n\n<p>There was not much time left and models took long time to run. Since there was very little danger of overfitting to LB from what I observed on oof predictions, I chose not waste resources on creating oof prediction and blend old models with newer versions as they came in using LB as the only guide. The current standings and scores: #57 and -2.21819 (Private) and #58 and -2.22542 (Public), prove that that was a solid strategic choice.</p>\n\n<p>The three kernels below (with minor tweaks) contributed the most to the final blend:\n<a href=\"https://www.kaggle.com/toshik/schnet-starter-kit\">SchNet Starter Kit</a>  by <a href=\"/toshik\">@toshik</a> , who barely missed Gold with -2.8 solo score! Amazing!\n<a href=\"https://www.kaggle.com/criskiev/distance-is-all-you-need-lb-1-481\">Distance - is all you need. LB -1.481</a>  by <a href=\"/criskiev\">@criskiev</a> , whose team got Silver!\n<a href=\"https://www.kaggle.com/xwxw2929/keras-neural-net-and-distance-features\">Keras Neural Net and Distance Features</a>  by <a href=\"/xwxw2929\">@xwxw2929</a>, who got solo Bronze!\nBasically, most credit for my 🥈  goes to the creators of these great kernels. I am glad they all did great in the contest. Congrats!</p>\n\n<p>At first the core of my blend was Sergii’s kernel, then Aicanghai_Smile’s Keras version started to weigh in more, but, in the last 5 days or so, I realized that <strong>the biggest hidden gem is actually SchNet.</strong> Wow! In the final blend it has by far the most weight. </p>\n\n<p>For SchNet my main modifications was training separate models for each type and adjustment of batch size upward (often I used 16 for mini-batches). Each of 8 models took 6-8 hrs to train for 60-90 epochs using Kaggle’s GPUs. The best SchNet model was -1.971 and I feel that I barely scratched the surface with what it could really accomplish.</p>\n\n<p>99% of computing was done with Kernels. It is great to have access to such powerful GPUs. My main wish is that GPU kernels would not freeze two days before the deadline.\nIn the end, I ran out of time before I could apply my secret chemical intuition skills : (.  I am guessing that a promising strategy to improve further is to split molecules into finer subgroups based on molecular features such as double bonds, rings, etc. and then train separate SchNet models on these subgroups.</p>\n\n<p>Congrats to all! Thank you the organizers and Kaggle for making this a great contest!</p>\n\n<p>**<em>Update: *</em><a href=\"https://www.kaggle.com/stocks/schnet-by-j-type-helped-me-win-silver-57\">SchNet Kernel by J-Type</a></p>",
      "rawMarkdown": "This turned out to be one of my favorite contests. I have always been fascinated by chemistry and have a reasonable knowledge base in chemistry in general. Originally, I hoped to use my chemical intuition to get an edge in this contest. Bu I realized soon enough that, since I had zero knowledge in molecular modeling, my edge was very slim.\n\nI sat on the fence for a very long time reluctant to invest time in learning the state of the art of molecule representation and modeling of molecular properties. Luckily, the Kaggle community came through with many great kernels that I could sample quickly and zero down to a few that were most promising in my hands.\n\nI started working hard on this contest about two weeks ago. For a long time I was out of medal range. Then, things started to click around one week ago and I managed quickly move into solid silver range within a few days.\n\nThere was not much time left and models took long time to run. Since there was very little danger of overfitting to LB from what I observed on oof predictions, I chose not waste resources on creating oof prediction and blend old models with newer versions as they came in using LB as the only guide. The current standings and scores: #57 and -2.21819 (Private) and #58 and -2.22542 (Public), prove that that was a solid strategic choice.\n\nThe three kernels below (with minor tweaks) contributed the most to the final blend:\n[SchNet Starter Kit](https://www.kaggle.com/toshik/schnet-starter-kit)  by @toshik , who barely missed Gold with -2.8 solo score! Amazing!\n[Distance - is all you need. LB -1.481](https://www.kaggle.com/criskiev/distance-is-all-you-need-lb-1-481)  by @criskiev , whose team got Silver!\n[Keras Neural Net and Distance Features](https://www.kaggle.com/xwxw2929/keras-neural-net-and-distance-features)  by @xwxw2929, who got solo Bronze!\nBasically, most credit for my 🥈  goes to the creators of these great kernels. I am glad they all did great in the contest. Congrats!\n\nAt first the core of my blend was Sergii’s kernel, then Aicanghai_Smile’s Keras version started to weigh in more, but, in the last 5 days or so, I realized that **the biggest hidden gem is actually SchNet.** Wow! In the final blend it has by far the most weight. \n\nFor SchNet my main modifications was training separate models for each type and adjustment of batch size upward (often I used 16 for mini-batches). Each of 8 models took 6-8 hrs to train for 60-90 epochs using Kaggle’s GPUs. The best SchNet model was -1.971 and I feel that I barely scratched the surface with what it could really accomplish.\n\n99% of computing was done with Kernels. It is great to have access to such powerful GPUs. My main wish is that GPU kernels would not freeze two days before the deadline.\nIn the end, I ran out of time before I could apply my secret chemical intuition skills : (.  I am guessing that a promising strategy to improve further is to split molecules into finer subgroups based on molecular features such as double bonds, rings, etc. and then train separate SchNet models on these subgroups.\n\nCongrats to all! Thank you the organizers and Kaggle for making this a great contest!\n\n***Update: **[SchNet Kernel by J-Type](https://www.kaggle.com/stocks/schnet-by-j-type-helped-me-win-silver-57)",
      "votes": null
    },
    {
      "id": "611393",
      "postDate": "08/29/2019 08:37:29",
      "content": "<p>Really good, I would like to work more on SchNet... but only one GPU and the time it takes...</p>\n\n<blockquote>\n  <p>For SchNet my main modifications was training separate models for each type and adjustment of batch size upward (often I used 16 for mini-batches). Each of 8 models took 6-8 hrs to train for 60-90 epochs using Kaggle’s GPUs. The best SchNet model was -1.971 and I feel that I barely scratched the surface with what it could really accomplish.</p>\n</blockquote>\n\n<p>Are you going to publish the kernel or something? I'd like to see it and combine min and yours :) I changed a little bit the architecture, used batch size = 12 and added <strong>atom features</strong>, that meant: <code>LB -1.65</code> with 25-30 epchos but took a lot of time and kaggle failed while commiting + only 1 gpu... and we didn't set random_seed so we couldn't reproduce results :(</p>\n\n<p>Anyway, thanks for sharing your approach.</p>",
      "rawMarkdown": "Really good, I would like to work more on SchNet... but only one GPU and the time it takes...\n&gt; For SchNet my main modifications was training separate models for each type and adjustment of batch size upward (often I used 16 for mini-batches). Each of 8 models took 6-8 hrs to train for 60-90 epochs using Kaggle’s GPUs. The best SchNet model was -1.971 and I feel that I barely scratched the surface with what it could really accomplish.\n\nAre you going to publish the kernel or something? I'd like to see it and combine min and yours :) I changed a little bit the architecture, used batch size = 12 and added **atom features**, that meant: ```LB -1.65``` with 25-30 epchos but took a lot of time and kaggle failed while commiting + only 1 gpu... and we didn't set random_seed so we couldn't reproduce results :(\n\nAnyway, thanks for sharing your approach.",
      "votes": null
    },
    {
      "id": "611454",
      "postDate": "08/29/2019 09:13:25",
      "content": "<p>I don't know if publishing the kernels is practical. They take forever to run. It is essentially the original SchNet just split by type and with longer train time. Usually, did not submit individual results but blended them right away with the previous best blend. Basically, I don't know which kernel set is the best.  I will look into batch sizes I used.</p>\n\n<p>Everything went crazy in the last few days: GPUs died and I lost access to my remote machine where I combined predictions. I ended up hastily re-running models with slightly different parameters and piling them all into one monster stew: looked disgusting but ended up tasting good. LOL.</p>\n\n<p>I guess I could share my final monster blend submission via kernels for others to blend with. Maybe it is the fastest route. I guess it is OK to publish the submissions now.</p>",
      "rawMarkdown": "I don't know if publishing the kernels is practical. They take forever to run. It is essentially the original SchNet just split by type and with longer train time. Usually, did not submit individual results but blended them right away with the previous best blend. Basically, I don't know which kernel set is the best.  I will look into batch sizes I used.\n\nEverything went crazy in the last few days: GPUs died and I lost access to my remote machine where I combined predictions. I ended up hastily re-running models with slightly different parameters and piling them all into one monster stew: looked disgusting but ended up tasting good. LOL.\n\nI guess I could share my final monster blend submission via kernels for others to blend with. Maybe it is the fastest route. I guess it is OK to publish the submissions now.",
      "votes": null
    },
    {
      "id": "611476",
      "postDate": "08/29/2019 09:26:58",
      "content": "<p>how many epochs? so basically you run 8 SchNet and each one 7-9h? ok ok good to know :)</p>\n\n<blockquote>\n  <p>I guess it is OK to publish the submissions now.\n  Sure.</p>\n</blockquote>",
      "rawMarkdown": "how many epochs? so basically you run 8 SchNet and each one 7-9h? ok ok good to know :)\n&gt; I guess it is OK to publish the submissions now.\nSure.",
      "votes": null
    },
    {
      "id": "611482",
      "postDate": "08/29/2019 09:31:32",
      "content": "<p>Similar approach to me and we ended up with similar scores :)</p>",
      "rawMarkdown": "Similar approach to me and we ended up with similar scores :)",
      "votes": null
    },
    {
      "id": "611505",
      "postDate": "08/29/2019 09:49:59",
      "content": "<p>60-90 epochs each for each type, probably 50 hrs of GPU time to cover the whole train set once. But I simply did not have time to optimize anything. I cut train time by maybe 20% in the last day but only managed to cover 1/3 dataset (lots of snags). </p>\n\n<p>SchNet should be able to reach -2.4 at least with proper params I believe. </p>\n\n<p><a href=\"/jesucristo\">@jesucristo</a> Very impressive LGBM score!</p>",
      "rawMarkdown": "60-90 epochs each for each type, probably 50 hrs of GPU time to cover the whole train set once. But I simply did not have time to optimize anything. I cut train time by maybe 20% in the last day but only managed to cover 1/3 dataset (lots of snags). \n\nSchNet should be able to reach -2.4 at least with proper params I believe. \n\n@jesucristo Very impressive LGBM score!",
      "votes": null
    },
    {
      "id": "611510",
      "postDate": "08/29/2019 09:51:17",
      "content": "<p>👍 </p>",
      "rawMarkdown": "👍",
      "votes": null
    },
    {
      "id": "611527",
      "postDate": "08/29/2019 10:02:15",
      "content": "<p>Thanks :) I'll update the kernel and github.\nProbably I'll share my SchNet too, a simple one :) I'll write you then so you can check how I improved it. I think the LR schedule was a big problem... CyclicLR seems to be the solution. </p>",
      "rawMarkdown": "Thanks :) I'll update the kernel and github.\nProbably I'll share my SchNet too, a simple one :) I'll write you then so you can check how I improved it. I think the LR schedule was a big problem... CyclicLR seems to be the solution.",
      "votes": null
    },
    {
      "id": "613053",
      "postDate": "08/30/2019 07:33:47",
      "content": "<p>i've added my final sub to the summary. it should blend well with LGBM since it is mostly SchNet. I will publish SchNet Kernel with the batch parameters I used for each type later today.</p>",
      "rawMarkdown": "i've added my final sub to the summary. it should blend well with LGBM since it is mostly SchNet. I will publish SchNet Kernel with the batch parameters I used for each type later today.",
      "votes": null
    },
    {
      "id": "613331",
      "postDate": "08/30/2019 12:26:31",
      "content": "<p>Published <a href=\"https://www.kaggle.com/stocks/schnet-by-j-type-helped-me-win-silver-57\">SchNet Kernel by J-Type</a></p>",
      "rawMarkdown": "Published [SchNet Kernel by J-Type](https://www.kaggle.com/stocks/schnet-by-j-type-helped-me-win-silver-57)",
      "votes": null
    },
    {
      "id": "613506",
      "postDate": "08/30/2019 15:11:21",
      "content": "<p>kaggle Start!</p>",
      "rawMarkdown": "kaggle Start!",
      "votes": null
    },
    {
      "id": "613630",
      "postDate": "08/30/2019 17:14:56",
      "content": "<p>Welcome to the community! Enjoy the journey!</p>",
      "rawMarkdown": "Welcome to the community! Enjoy the journey!",
      "votes": null
    },
    {
      "id": "613782",
      "postDate": "08/30/2019 20:07:34",
      "content": "<p>thank you so much man :) (probably not many people will see it, but it really helps me) And I just realized you became comps Master... it's amazing, congratulations!</p>",
      "rawMarkdown": "thank you so much man :) (probably not many people will see it, but it really helps me) And I just realized you became comps Master... it's amazing, congratulations!",
      "votes": null
    },
    {
      "id": "613814",
      "postDate": "08/30/2019 20:42:31",
      "content": "<p>Thanks for the great work and for sharing your learning <a href=\"/stocks\">@stocks</a> . Congrats on becoming a Kaggle master as well.</p>",
      "rawMarkdown": "Thanks for the great work and for sharing your learning @stocks . Congrats on becoming a Kaggle master as well.",
      "votes": null
    },
    {
      "id": "614062",
      "postDate": "08/31/2019 03:13:03",
      "content": "<p>Thank you!</p>",
      "rawMarkdown": "Thank you!",
      "votes": null
    },
    {
      "id": "614806",
      "postDate": "09/01/2019 05:15:07",
      "content": "<p>Thank you for using my notebook. I haven't tried separation for coupling types, so your report is interesting !</p>",
      "rawMarkdown": "Thank you for using my notebook. I haven't tried separation for coupling types, so your report is interesting !",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 611393,
      "author_name": "jesucristo",
      "author_url": "",
      "post_date": "08/29/2019 08:37:29",
      "content": "<p>Really good, I would like to work more on SchNet... but only one GPU and the time it takes...</p>\n\n<blockquote>\n  <p>For SchNet my main modifications was training separate models for each type and adjustment of batch size upward (often I used 16 for mini-batches). Each of 8 models took 6-8 hrs to train for 60-90 epochs using Kaggle’s GPUs. The best SchNet model was -1.971 and I feel that I barely scratched the surface with what it could really accomplish.</p>\n</blockquote>\n\n<p>Are you going to publish the kernel or something? I'd like to see it and combine min and yours :) I changed a little bit the architecture, used batch size = 12 and added <strong>atom features</strong>, that meant: <code>LB -1.65</code> with 25-30 epchos but took a lot of time and kaggle failed while commiting + only 1 gpu... and we didn't set random_seed so we couldn't reproduce results :(</p>\n\n<p>Anyway, thanks for sharing your approach.</p>",
      "votes": null,
      "replies": [
        {
          "id": 611454,
          "author_name": "stocks",
          "author_url": "",
          "post_date": "08/29/2019 09:13:25",
          "content": "<p>I don't know if publishing the kernels is practical. They take forever to run. It is essentially the original SchNet just split by type and with longer train time. Usually, did not submit individual results but blended them right away with the previous best blend. Basically, I don't know which kernel set is the best.  I will look into batch sizes I used.</p>\n\n<p>Everything went crazy in the last few days: GPUs died and I lost access to my remote machine where I combined predictions. I ended up hastily re-running models with slightly different parameters and piling them all into one monster stew: looked disgusting but ended up tasting good. LOL.</p>\n\n<p>I guess I could share my final monster blend submission via kernels for others to blend with. Maybe it is the fastest route. I guess it is OK to publish the submissions now.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 611476,
          "author_name": "jesucristo",
          "author_url": "",
          "post_date": "08/29/2019 09:26:58",
          "content": "<p>how many epochs? so basically you run 8 SchNet and each one 7-9h? ok ok good to know :)</p>\n\n<blockquote>\n  <p>I guess it is OK to publish the submissions now.\n  Sure.</p>\n</blockquote>",
          "votes": null,
          "replies": []
        },
        {
          "id": 611505,
          "author_name": "stocks",
          "author_url": "",
          "post_date": "08/29/2019 09:49:59",
          "content": "<p>60-90 epochs each for each type, probably 50 hrs of GPU time to cover the whole train set once. But I simply did not have time to optimize anything. I cut train time by maybe 20% in the last day but only managed to cover 1/3 dataset (lots of snags). </p>\n\n<p>SchNet should be able to reach -2.4 at least with proper params I believe. </p>\n\n<p><a href=\"/jesucristo\">@jesucristo</a> Very impressive LGBM score!</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 611527,
          "author_name": "jesucristo",
          "author_url": "",
          "post_date": "08/29/2019 10:02:15",
          "content": "<p>Thanks :) I'll update the kernel and github.\nProbably I'll share my SchNet too, a simple one :) I'll write you then so you can check how I improved it. I think the LR schedule was a big problem... CyclicLR seems to be the solution. </p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 613053,
          "author_name": "stocks",
          "author_url": "",
          "post_date": "08/30/2019 07:33:47",
          "content": "<p>i've added my final sub to the summary. it should blend well with LGBM since it is mostly SchNet. I will publish SchNet Kernel with the batch parameters I used for each type later today.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 613331,
          "author_name": "stocks",
          "author_url": "",
          "post_date": "08/30/2019 12:26:31",
          "content": "<p>Published <a href=\"https://www.kaggle.com/stocks/schnet-by-j-type-helped-me-win-silver-57\">SchNet Kernel by J-Type</a></p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 613782,
          "author_name": "jesucristo",
          "author_url": "",
          "post_date": "08/30/2019 20:07:34",
          "content": "<p>thank you so much man :) (probably not many people will see it, but it really helps me) And I just realized you became comps Master... it's amazing, congratulations!</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 614062,
          "author_name": "stocks",
          "author_url": "",
          "post_date": "08/31/2019 03:13:03",
          "content": "<p>Thank you!</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 611482,
      "author_name": "julianmukaj",
      "author_url": "",
      "post_date": "08/29/2019 09:31:32",
      "content": "<p>Similar approach to me and we ended up with similar scores :)</p>",
      "votes": null,
      "replies": [
        {
          "id": 611510,
          "author_name": "stocks",
          "author_url": "",
          "post_date": "08/29/2019 09:51:17",
          "content": "<p>👍 </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 613506,
      "author_name": "tsubasafunai",
      "author_url": "",
      "post_date": "08/30/2019 15:11:21",
      "content": "<p>kaggle Start!</p>",
      "votes": null,
      "replies": [
        {
          "id": 613630,
          "author_name": "stocks",
          "author_url": "",
          "post_date": "08/30/2019 17:14:56",
          "content": "<p>Welcome to the community! Enjoy the journey!</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 613814,
      "author_name": "michelml",
      "author_url": "",
      "post_date": "08/30/2019 20:42:31",
      "content": "<p>Thanks for the great work and for sharing your learning <a href=\"/stocks\">@stocks</a> . Congrats on becoming a Kaggle master as well.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 614806,
      "author_name": "toshik",
      "author_url": "",
      "post_date": "09/01/2019 05:15:07",
      "content": "<p>Thank you for using my notebook. I haven't tried separation for coupling types, so your report is interesting !</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "611385": "This turned out to be one of my favorite contests. I have always been fascinated by chemistry and have a reasonable knowledge base in chemistry in general. Originally, I hoped to use my chemical intuition to get an edge in this contest. Bu I realized soon enough that, since I had zero knowledge in molecular modeling, my edge was very slim.\n\nI sat on the fence for a very long time reluctant to invest time in learning the state of the art of molecule representation and modeling of molecular properties. Luckily, the Kaggle community came through with many great kernels that I could sample quickly and zero down to a few that were most promising in my hands.\n\nI started working hard on this contest about two weeks ago. For a long time I was out of medal range. Then, things started to click around one week ago and I managed quickly move into solid silver range within a few days.\n\nThere was not much time left and models took long time to run. Since there was very little danger of overfitting to LB from what I observed on oof predictions, I chose not waste resources on creating oof prediction and blend old models with newer versions as they came in using LB as the only guide. The current standings and scores: #57 and -2.21819 (Private) and #58 and -2.22542 (Public), prove that that was a solid strategic choice.\n\nThe three kernels below (with minor tweaks) contributed the most to the final blend:\n[SchNet Starter Kit](https://www.kaggle.com/toshik/schnet-starter-kit)  by @toshik , who barely missed Gold with -2.8 solo score! Amazing!\n[Distance - is all you need. LB -1.481](https://www.kaggle.com/criskiev/distance-is-all-you-need-lb-1-481)  by @criskiev , whose team got Silver!\n[Keras Neural Net and Distance Features](https://www.kaggle.com/xwxw2929/keras-neural-net-and-distance-features)  by @xwxw2929, who got solo Bronze!\nBasically, most credit for my 🥈  goes to the creators of these great kernels. I am glad they all did great in the contest. Congrats!\n\nAt first the core of my blend was Sergii’s kernel, then Aicanghai_Smile’s Keras version started to weigh in more, but, in the last 5 days or so, I realized that **the biggest hidden gem is actually SchNet.** Wow! In the final blend it has by far the most weight. \n\nFor SchNet my main modifications was training separate models for each type and adjustment of batch size upward (often I used 16 for mini-batches). Each of 8 models took 6-8 hrs to train for 60-90 epochs using Kaggle’s GPUs. The best SchNet model was -1.971 and I feel that I barely scratched the surface with what it could really accomplish.\n\n99% of computing was done with Kernels. It is great to have access to such powerful GPUs. My main wish is that GPU kernels would not freeze two days before the deadline.\nIn the end, I ran out of time before I could apply my secret chemical intuition skills : (.  I am guessing that a promising strategy to improve further is to split molecules into finer subgroups based on molecular features such as double bonds, rings, etc. and then train separate SchNet models on these subgroups.\n\nCongrats to all! Thank you the organizers and Kaggle for making this a great contest!\n\n***Update: **[SchNet Kernel by J-Type](https://www.kaggle.com/stocks/schnet-by-j-type-helped-me-win-silver-57)",
    "611393": "Really good, I would like to work more on SchNet... but only one GPU and the time it takes...\n&gt; For SchNet my main modifications was training separate models for each type and adjustment of batch size upward (often I used 16 for mini-batches). Each of 8 models took 6-8 hrs to train for 60-90 epochs using Kaggle’s GPUs. The best SchNet model was -1.971 and I feel that I barely scratched the surface with what it could really accomplish.\n\nAre you going to publish the kernel or something? I'd like to see it and combine min and yours :) I changed a little bit the architecture, used batch size = 12 and added **atom features**, that meant: ```LB -1.65``` with 25-30 epchos but took a lot of time and kaggle failed while commiting + only 1 gpu... and we didn't set random_seed so we couldn't reproduce results :(\n\nAnyway, thanks for sharing your approach.",
    "611454": "I don't know if publishing the kernels is practical. They take forever to run. It is essentially the original SchNet just split by type and with longer train time. Usually, did not submit individual results but blended them right away with the previous best blend. Basically, I don't know which kernel set is the best.  I will look into batch sizes I used.\n\nEverything went crazy in the last few days: GPUs died and I lost access to my remote machine where I combined predictions. I ended up hastily re-running models with slightly different parameters and piling them all into one monster stew: looked disgusting but ended up tasting good. LOL.\n\nI guess I could share my final monster blend submission via kernels for others to blend with. Maybe it is the fastest route. I guess it is OK to publish the submissions now.",
    "611476": "how many epochs? so basically you run 8 SchNet and each one 7-9h? ok ok good to know :)\n&gt; I guess it is OK to publish the submissions now.\nSure.",
    "611482": "Similar approach to me and we ended up with similar scores :)",
    "611505": "60-90 epochs each for each type, probably 50 hrs of GPU time to cover the whole train set once. But I simply did not have time to optimize anything. I cut train time by maybe 20% in the last day but only managed to cover 1/3 dataset (lots of snags). \n\nSchNet should be able to reach -2.4 at least with proper params I believe. \n\n@jesucristo Very impressive LGBM score!",
    "611510": "👍",
    "611527": "Thanks :) I'll update the kernel and github.\nProbably I'll share my SchNet too, a simple one :) I'll write you then so you can check how I improved it. I think the LR schedule was a big problem... CyclicLR seems to be the solution.",
    "613053": "i've added my final sub to the summary. it should blend well with LGBM since it is mostly SchNet. I will publish SchNet Kernel with the batch parameters I used for each type later today.",
    "613331": "Published [SchNet Kernel by J-Type](https://www.kaggle.com/stocks/schnet-by-j-type-helped-me-win-silver-57)",
    "613506": "kaggle Start!",
    "613630": "Welcome to the community! Enjoy the journey!",
    "613782": "thank you so much man :) (probably not many people will see it, but it really helps me) And I just realized you became comps Master... it's amazing, congratulations!",
    "613814": "Thanks for the great work and for sharing your learning @stocks . Congrats on becoming a Kaggle master as well.",
    "614062": "Thank you!",
    "614806": "Thank you for using my notebook. I haven't tried separation for coupling types, so your report is interesting !"
  },
  "source": "meta"
}