{
  "id": 73341,
  "title": "How to Get Reproducible Results with CuDNN Networks",
  "url": "/competitions/quora-insincere-questions-classification/discussion/73341",
  "author_name": "",
  "post_date": "2018-12-02T06:29:25.530223300Z",
  "votes": 29,
  "comment_count": 12,
  "views": 0,
  "content": "<p>We have all been experiencing the issue with reproducability. This thread is dedicated to dicuss various approaches teams and kagglers have been using. </p>\n\n<h2>What causes it?</h2>\n\n<ol>\n<li>Randomness in Initialization, such as weights. </li>\n<li>Randomness in Regularization, such as dropout. </li>\n<li>Randomness in Layers, such as word embedding or Optimization</li>\n<li>Randomness introduced by any randomness from third party library </li>\n</ol>\n\n<h2>Methods to reproduce on CPU</h2>\n\n<ol>\n<li>Set random seeds for numpy operations/splits <code>np.random.seed(2018)</code></li>\n<li>Set random seed for Tensorflow operations from <code>tf.set_random_seed(2)</code></li>\n</ol>\n\n<h2>Why Reproducibility is hard when we train on GPU</h2>\n\n<p>The backend is configured to use a sophisticated stack of GPU libraries, and that some of these may introduce their own source of randomness that you may or may not be able to account for.  Alike GPU in our kernels </p>\n\n<h3>Dealing with GPU reproducibility</h3>\n\n<ol>\n<li>Rerun the experiment  10 - 15 times and average the scores to get the progress of your model.</li>\n</ol>\n\n<p>Let me know if you guys have any other awesome thoughts on making results more reproducible for this competition. I am getting deviations from 0.692 - 0.698 . My local CV and the leaderboard scores are correlating as well.</p>\n\n<h2>Various methods from kernels/discussion so far</h2>\n\n<h3>Pytorch</h3>\n\n<p>Credit - <a href=\"/bkkaggle\">@bkkaggle</a></p>\n\n<pre><code>SEED = 1337\nnp.random.seed(SEED)\ntorch.manual_seed(SEED)\ntorch.cuda.manual_seed(SEED)\ntorch.backends.cudnn.deterministic = True\n</code></pre>\n\n<h3>Tensorflow</h3>\n\n<p>Credit - <a href=\"/shujian\">@shujian</a></p>\n\n<p><a href=\"http://%20https://www.twosigma.com/insights/article/a-workaround-for-non-determinism-in-tensorflow/\">A Workaround for Non-Determinism in TensorFlow</a></p>",
  "messages": [
    {
      "id": "431377",
      "postDate": "12/02/2018 06:29:25",
      "content": "<p>We have all been experiencing the issue with reproducability. This thread is dedicated to dicuss various approaches teams and kagglers have been using. </p>\n\n<h2>What causes it?</h2>\n\n<ol>\n<li>Randomness in Initialization, such as weights. </li>\n<li>Randomness in Regularization, such as dropout. </li>\n<li>Randomness in Layers, such as word embedding or Optimization</li>\n<li>Randomness introduced by any randomness from third party library </li>\n</ol>\n\n<h2>Methods to reproduce on CPU</h2>\n\n<ol>\n<li>Set random seeds for numpy operations/splits <code>np.random.seed(2018)</code></li>\n<li>Set random seed for Tensorflow operations from <code>tf.set_random_seed(2)</code></li>\n</ol>\n\n<h2>Why Reproducibility is hard when we train on GPU</h2>\n\n<p>The backend is configured to use a sophisticated stack of GPU libraries, and that some of these may introduce their own source of randomness that you may or may not be able to account for.  Alike GPU in our kernels </p>\n\n<h3>Dealing with GPU reproducibility</h3>\n\n<ol>\n<li>Rerun the experiment  10 - 15 times and average the scores to get the progress of your model.</li>\n</ol>\n\n<p>Let me know if you guys have any other awesome thoughts on making results more reproducible for this competition. I am getting deviations from 0.692 - 0.698 . My local CV and the leaderboard scores are correlating as well.</p>\n\n<h2>Various methods from kernels/discussion so far</h2>\n\n<h3>Pytorch</h3>\n\n<p>Credit - <a href=\"/bkkaggle\">@bkkaggle</a></p>\n\n<pre><code>SEED = 1337\nnp.random.seed(SEED)\ntorch.manual_seed(SEED)\ntorch.cuda.manual_seed(SEED)\ntorch.backends.cudnn.deterministic = True\n</code></pre>\n\n<h3>Tensorflow</h3>\n\n<p>Credit - <a href=\"/shujian\">@shujian</a></p>\n\n<p><a href=\"http://%20https://www.twosigma.com/insights/article/a-workaround-for-non-determinism-in-tensorflow/\">A Workaround for Non-Determinism in TensorFlow</a></p>",
      "rawMarkdown": "We have all been experiencing the issue with reproducability. This thread is dedicated to dicuss various approaches teams and kagglers have been using. \n\n## What causes it?  \n 1. Randomness in Initialization, such as weights. \n 2. Randomness in Regularization, such as dropout. \n 3. Randomness in Layers, such as word embedding or Optimization\n 4. Randomness introduced by any randomness from third party library \n\n## Methods to reproduce on CPU \n1. Set random seeds for numpy operations/splits `np.random.seed(2018)`\n2. Set random seed for Tensorflow operations from `tf.set_random_seed(2)`\n\n## Why Reproducibility is hard when we train on GPU\nThe backend is configured to use a sophisticated stack of GPU libraries, and that some of these may introduce their own source of randomness that you may or may not be able to account for.  Alike GPU in our kernels \n\n### Dealing with GPU reproducibility \n1. Rerun the experiment  10 - 15 times and average the scores to get the progress of your model.\n\nLet me know if you guys have any other awesome thoughts on making results more reproducible for this competition. I am getting deviations from 0.692 - 0.698 . My local CV and the leaderboard scores are correlating as well.\n\n\n## Various methods from kernels/discussion so far\n\n### Pytorch \nCredit - @bkkaggle\n\n    SEED = 1337\n    np.random.seed(SEED)\n    torch.manual_seed(SEED)\n    torch.cuda.manual_seed(SEED)\n    torch.backends.cudnn.deterministic = True\n\n### Tensorflow \nCredit - @shujian\n\n[A Workaround for Non-Determinism in TensorFlow][1]\n\n\n  [1]: http://%20https://www.twosigma.com/insights/article/a-workaround-for-non-determinism-in-tensorflow/",
      "votes": null
    },
    {
      "id": "431423",
      "postDate": "12/02/2018 08:47:32",
      "content": "<p><a href=\"https://www.kaggle.com/c/quora-insincere-questions-classification/discussion/72040\">https://www.kaggle.com/c/quora-insincere-questions-classification/discussion/72040</a></p>\n\n<p>I think this discussion mostly contains about reproducibility. I think with keras it's gonna be tough.</p>",
      "rawMarkdown": "https://www.kaggle.com/c/quora-insincere-questions-classification/discussion/72040\n\nI think this discussion mostly contains about reproducibility. I think with keras it's gonna be tough.",
      "votes": null
    },
    {
      "id": "431496",
      "postDate": "12/02/2018 11:41:18",
      "content": "<p>I missed that thread. Btw, are you using pytorch. How repeatable are the results in your case? </p>",
      "rawMarkdown": "I missed that thread. Btw, are you using pytorch. How repeatable are the results in your case?",
      "votes": null
    },
    {
      "id": "431649",
      "postDate": "12/02/2018 17:16:18",
      "content": "<p>No, I have not tried pytorch but with keras, the same kernel is always giving me different results. </p>",
      "rawMarkdown": "No, I have not tried pytorch but with keras, the same kernel is always giving me different results.",
      "votes": null
    },
    {
      "id": "431834",
      "postDate": "12/03/2018 01:36:59",
      "content": "<p>I think it is good this has it's own thread. All the keras\\cudnn specific discussion has been in kernel threads.</p>\n\n<p>Eventually after dealing with all the places of randomness I was able to make local code run deterministically. This hopefully will be helpful for exploration. But none of this works on kaggle kernels. I  also have no issue locally with Cudnn and on Kaggle kernels even super simple non RNN kernels are not deterministic.</p>\n\n<p>I shared a simple kernel to show that the issue is not Cudnn and give people a fast way to test their environment for randomness.</p>\n\n<p><a href=\"https://www.kaggle.com/joeytaj/gpu-randomness-exploration\">https://www.kaggle.com/joeytaj/gpu-randomness-exploration</a></p>\n\n<p>My local environment is \nWindows 10\nGTX 1080\nTensorflow 1.12\nKeras 2.2.4\ncudnn 7.1.4\ncuda 9.0</p>",
      "rawMarkdown": "I think it is good this has it's own thread. All the keras\\cudnn specific discussion has been in kernel threads.\n\nEventually after dealing with all the places of randomness I was able to make local code run deterministically. This hopefully will be helpful for exploration. But none of this works on kaggle kernels. I  also have no issue locally with Cudnn and on Kaggle kernels even super simple non RNN kernels are not deterministic.\n\nI shared a simple kernel to show that the issue is not Cudnn and give people a fast way to test their environment for randomness.\n\nhttps://www.kaggle.com/joeytaj/gpu-randomness-exploration\n\n\nMy local environment is \nWindows 10\nGTX 1080\nTensorflow 1.12\nKeras 2.2.4\ncudnn 7.1.4\ncuda 9.0",
      "votes": null
    },
    {
      "id": "431969",
      "postDate": "12/03/2018 07:36:22",
      "content": "<p>I'm seeing about a 0.001 variation using the same kernel now... And my score between local and public is pretty stable. Using Keras... CuDNN-variants.</p>",
      "rawMarkdown": "I'm seeing about a 0.001 variation using the same kernel now... And my score between local and public is pretty stable. Using Keras... CuDNN-variants.",
      "votes": null
    },
    {
      "id": "432930",
      "postDate": "12/04/2018 13:43:01",
      "content": "<p>I checked this code on my local PC and found some randomness in results between each run (about 0.001 or lower). \nFor example:\n<code>Epoch:  3 -    Val F1 Score: 0.5564</code> vs <code>Epoch:  3 -    Val F1 Score: 0.5549</code>\n<code>Epoch:  4 -    Val F1 Score: 0.5616</code> vs <code>Epoch:  4 -    Val F1 Score: 0.5614</code></p>",
      "rawMarkdown": "I checked this code on my local PC and found some randomness in results between each run (about 0.001 or lower). \nFor example:\n`Epoch:  3 -    Val F1 Score: 0.5564` vs `Epoch:  3 -    Val F1 Score: 0.5549`\n`Epoch:  4 -    Val F1 Score: 0.5616` vs `Epoch:  4 -    Val F1 Score: 0.5614`",
      "votes": null
    },
    {
      "id": "434142",
      "postDate": "12/06/2018 00:44:25",
      "content": "<p>How did you achieve that? Any special trick?\nAnd what is your gap between local and public score?</p>\n\n<p>If you don't mind to share for sure :)</p>",
      "rawMarkdown": "How did you achieve that? Any special trick?\nAnd what is your gap between local and public score?\n\nIf you don't mind to share for sure :)",
      "votes": null
    },
    {
      "id": "434218",
      "postDate": "12/06/2018 04:05:08",
      "content": "<p>Not really... I just focused on some preprocessing and then a simple model with 5 fold CV. Though I'm not sure if a 5-fold is the way to go or not, yet. I haven't really heard much about the teams using a blended approach. Are you using a single model? Your standing is quite high.</p>",
      "rawMarkdown": "Not really... I just focused on some preprocessing and then a simple model with 5 fold CV. Though I'm not sure if a 5-fold is the way to go or not, yet. I haven't really heard much about the teams using a blended approach. Are you using a single model? Your standing is quite high.",
      "votes": null
    },
    {
      "id": "434225",
      "postDate": "12/06/2018 04:28:40",
      "content": "<p>Confirmed that for <code>pytorch</code> the result seems reproducible using the following setting in both script and notebook mode (tested 3-4 times):</p>\n\n<pre>def set_seeds(rand_seed):\n    torch.manual_seed(rand_seed)\n    torch.cuda.manual_seed(rand_seed)\n    torch.cuda.manual_seed_all(rand_seed)\n\n    # When running on the CuDNN backend\n    torch.backends.cudnn.deterministic = True\n\n    np.random.seed(rand_seed)\n    random.seed(rand_seed)\n</pre>\n\n<p>Official doc about Reproducibility:\n<a href=\"https://pytorch.org/docs/master/notes/randomness.html\">https://pytorch.org/docs/master/notes/randomness.html</a></p>",
      "rawMarkdown": "Confirmed that for `pytorch` the result seems reproducible using the following setting in both script and notebook mode (tested 3-4 times):\n<pre>def set_seeds(rand_seed):\n    torch.manual_seed(rand_seed)\n    torch.cuda.manual_seed(rand_seed)\n    torch.cuda.manual_seed_all(rand_seed)\n\n    # When running on the CuDNN backend\n    torch.backends.cudnn.deterministic = True\n\n    np.random.seed(rand_seed)\n    random.seed(rand_seed)\n</pre>\n\nOfficial doc about Reproducibility:\nhttps://pytorch.org/docs/master/notes/randomness.html",
      "votes": null
    },
    {
      "id": "434316",
      "postDate": "12/06/2018 07:38:21",
      "content": "<p>Thanks, Mark! Time to port my workflow to PyTorch.</p>",
      "rawMarkdown": "Thanks, Mark! Time to port my workflow to PyTorch.",
      "votes": null
    },
    {
      "id": "434404",
      "postDate": "12/06/2018 10:44:53",
      "content": "<p>Thanks for the info!</p>\n\n<p>Yes, I have been using one model so far, without k-folds. But with some tricks for sure :) Although, I'm not able to get such a good variation with LB as you.</p>",
      "rawMarkdown": "Thanks for the info!\n\nYes, I have been using one model so far, without k-folds. But with some tricks for sure :) Although, I'm not able to get such a good variation with LB as you.",
      "votes": null
    },
    {
      "id": "434434",
      "postDate": "12/06/2018 11:51:26",
      "content": "<p>Great to hear Sava (<a href=\"/thinline72\">@thinline72</a>), I am using a single LSTM model in my present best with CV (0.6841) and LB (0.699 )correlation. But, I too suffer from randomness. I guess I have to make a pytorch pipeline to ensure reproducability. </p>",
      "rawMarkdown": "Great to hear Sava (@thinline72), I am using a single LSTM model in my present best with CV (0.6841) and LB (0.699 )correlation. But, I too suffer from randomness. I guess I have to make a pytorch pipeline to ensure reproducability.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 431423,
      "author_name": "suchith0312",
      "author_url": "",
      "post_date": "12/02/2018 08:47:32",
      "content": "<p><a href=\"https://www.kaggle.com/c/quora-insincere-questions-classification/discussion/72040\">https://www.kaggle.com/c/quora-insincere-questions-classification/discussion/72040</a></p>\n\n<p>I think this discussion mostly contains about reproducibility. I think with keras it's gonna be tough.</p>",
      "votes": null,
      "replies": [
        {
          "id": 431496,
          "author_name": "shaz13",
          "author_url": "",
          "post_date": "12/02/2018 11:41:18",
          "content": "<p>I missed that thread. Btw, are you using pytorch. How repeatable are the results in your case? </p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 431649,
          "author_name": "suchith0312",
          "author_url": "",
          "post_date": "12/02/2018 17:16:18",
          "content": "<p>No, I have not tried pytorch but with keras, the same kernel is always giving me different results. </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 431834,
      "author_name": "joeytaj",
      "author_url": "",
      "post_date": "12/03/2018 01:36:59",
      "content": "<p>I think it is good this has it's own thread. All the keras\\cudnn specific discussion has been in kernel threads.</p>\n\n<p>Eventually after dealing with all the places of randomness I was able to make local code run deterministically. This hopefully will be helpful for exploration. But none of this works on kaggle kernels. I  also have no issue locally with Cudnn and on Kaggle kernels even super simple non RNN kernels are not deterministic.</p>\n\n<p>I shared a simple kernel to show that the issue is not Cudnn and give people a fast way to test their environment for randomness.</p>\n\n<p><a href=\"https://www.kaggle.com/joeytaj/gpu-randomness-exploration\">https://www.kaggle.com/joeytaj/gpu-randomness-exploration</a></p>\n\n<p>My local environment is \nWindows 10\nGTX 1080\nTensorflow 1.12\nKeras 2.2.4\ncudnn 7.1.4\ncuda 9.0</p>",
      "votes": null,
      "replies": [
        {
          "id": 432930,
          "author_name": "alexanderkuzmenko",
          "author_url": "",
          "post_date": "12/04/2018 13:43:01",
          "content": "<p>I checked this code on my local PC and found some randomness in results between each run (about 0.001 or lower). \nFor example:\n<code>Epoch:  3 -    Val F1 Score: 0.5564</code> vs <code>Epoch:  3 -    Val F1 Score: 0.5549</code>\n<code>Epoch:  4 -    Val F1 Score: 0.5616</code> vs <code>Epoch:  4 -    Val F1 Score: 0.5614</code></p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 431969,
      "author_name": "learnmower",
      "author_url": "",
      "post_date": "12/03/2018 07:36:22",
      "content": "<p>I'm seeing about a 0.001 variation using the same kernel now... And my score between local and public is pretty stable. Using Keras... CuDNN-variants.</p>",
      "votes": null,
      "replies": [
        {
          "id": 434142,
          "author_name": "thinline72",
          "author_url": "",
          "post_date": "12/06/2018 00:44:25",
          "content": "<p>How did you achieve that? Any special trick?\nAnd what is your gap between local and public score?</p>\n\n<p>If you don't mind to share for sure :)</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 434218,
          "author_name": "learnmower",
          "author_url": "",
          "post_date": "12/06/2018 04:05:08",
          "content": "<p>Not really... I just focused on some preprocessing and then a simple model with 5 fold CV. Though I'm not sure if a 5-fold is the way to go or not, yet. I haven't really heard much about the teams using a blended approach. Are you using a single model? Your standing is quite high.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 434404,
          "author_name": "thinline72",
          "author_url": "",
          "post_date": "12/06/2018 10:44:53",
          "content": "<p>Thanks for the info!</p>\n\n<p>Yes, I have been using one model so far, without k-folds. But with some tricks for sure :) Although, I'm not able to get such a good variation with LB as you.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 434434,
          "author_name": "shaz13",
          "author_url": "",
          "post_date": "12/06/2018 11:51:26",
          "content": "<p>Great to hear Sava (<a href=\"/thinline72\">@thinline72</a>), I am using a single LSTM model in my present best with CV (0.6841) and LB (0.699 )correlation. But, I too suffer from randomness. I guess I have to make a pytorch pipeline to ensure reproducability. </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 434225,
      "author_name": "markpeng",
      "author_url": "",
      "post_date": "12/06/2018 04:28:40",
      "content": "<p>Confirmed that for <code>pytorch</code> the result seems reproducible using the following setting in both script and notebook mode (tested 3-4 times):</p>\n\n<pre>def set_seeds(rand_seed):\n    torch.manual_seed(rand_seed)\n    torch.cuda.manual_seed(rand_seed)\n    torch.cuda.manual_seed_all(rand_seed)\n\n    # When running on the CuDNN backend\n    torch.backends.cudnn.deterministic = True\n\n    np.random.seed(rand_seed)\n    random.seed(rand_seed)\n</pre>\n\n<p>Official doc about Reproducibility:\n<a href=\"https://pytorch.org/docs/master/notes/randomness.html\">https://pytorch.org/docs/master/notes/randomness.html</a></p>",
      "votes": null,
      "replies": [
        {
          "id": 434316,
          "author_name": "learnmower",
          "author_url": "",
          "post_date": "12/06/2018 07:38:21",
          "content": "<p>Thanks, Mark! Time to port my workflow to PyTorch.</p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "431377": "We have all been experiencing the issue with reproducability. This thread is dedicated to dicuss various approaches teams and kagglers have been using. \n\n## What causes it?  \n 1. Randomness in Initialization, such as weights. \n 2. Randomness in Regularization, such as dropout. \n 3. Randomness in Layers, such as word embedding or Optimization\n 4. Randomness introduced by any randomness from third party library \n\n## Methods to reproduce on CPU \n1. Set random seeds for numpy operations/splits `np.random.seed(2018)`\n2. Set random seed for Tensorflow operations from `tf.set_random_seed(2)`\n\n## Why Reproducibility is hard when we train on GPU\nThe backend is configured to use a sophisticated stack of GPU libraries, and that some of these may introduce their own source of randomness that you may or may not be able to account for.  Alike GPU in our kernels \n\n### Dealing with GPU reproducibility \n1. Rerun the experiment  10 - 15 times and average the scores to get the progress of your model.\n\nLet me know if you guys have any other awesome thoughts on making results more reproducible for this competition. I am getting deviations from 0.692 - 0.698 . My local CV and the leaderboard scores are correlating as well.\n\n\n## Various methods from kernels/discussion so far\n\n### Pytorch \nCredit - @bkkaggle\n\n    SEED = 1337\n    np.random.seed(SEED)\n    torch.manual_seed(SEED)\n    torch.cuda.manual_seed(SEED)\n    torch.backends.cudnn.deterministic = True\n\n### Tensorflow \nCredit - @shujian\n\n[A Workaround for Non-Determinism in TensorFlow][1]\n\n\n  [1]: http://%20https://www.twosigma.com/insights/article/a-workaround-for-non-determinism-in-tensorflow/",
    "431423": "https://www.kaggle.com/c/quora-insincere-questions-classification/discussion/72040\n\nI think this discussion mostly contains about reproducibility. I think with keras it's gonna be tough.",
    "431496": "I missed that thread. Btw, are you using pytorch. How repeatable are the results in your case?",
    "431649": "No, I have not tried pytorch but with keras, the same kernel is always giving me different results.",
    "431834": "I think it is good this has it's own thread. All the keras\\cudnn specific discussion has been in kernel threads.\n\nEventually after dealing with all the places of randomness I was able to make local code run deterministically. This hopefully will be helpful for exploration. But none of this works on kaggle kernels. I  also have no issue locally with Cudnn and on Kaggle kernels even super simple non RNN kernels are not deterministic.\n\nI shared a simple kernel to show that the issue is not Cudnn and give people a fast way to test their environment for randomness.\n\nhttps://www.kaggle.com/joeytaj/gpu-randomness-exploration\n\n\nMy local environment is \nWindows 10\nGTX 1080\nTensorflow 1.12\nKeras 2.2.4\ncudnn 7.1.4\ncuda 9.0",
    "431969": "I'm seeing about a 0.001 variation using the same kernel now... And my score between local and public is pretty stable. Using Keras... CuDNN-variants.",
    "432930": "I checked this code on my local PC and found some randomness in results between each run (about 0.001 or lower). \nFor example:\n`Epoch:  3 -    Val F1 Score: 0.5564` vs `Epoch:  3 -    Val F1 Score: 0.5549`\n`Epoch:  4 -    Val F1 Score: 0.5616` vs `Epoch:  4 -    Val F1 Score: 0.5614`",
    "434142": "How did you achieve that? Any special trick?\nAnd what is your gap between local and public score?\n\nIf you don't mind to share for sure :)",
    "434218": "Not really... I just focused on some preprocessing and then a simple model with 5 fold CV. Though I'm not sure if a 5-fold is the way to go or not, yet. I haven't really heard much about the teams using a blended approach. Are you using a single model? Your standing is quite high.",
    "434225": "Confirmed that for `pytorch` the result seems reproducible using the following setting in both script and notebook mode (tested 3-4 times):\n<pre>def set_seeds(rand_seed):\n    torch.manual_seed(rand_seed)\n    torch.cuda.manual_seed(rand_seed)\n    torch.cuda.manual_seed_all(rand_seed)\n\n    # When running on the CuDNN backend\n    torch.backends.cudnn.deterministic = True\n\n    np.random.seed(rand_seed)\n    random.seed(rand_seed)\n</pre>\n\nOfficial doc about Reproducibility:\nhttps://pytorch.org/docs/master/notes/randomness.html",
    "434316": "Thanks, Mark! Time to port my workflow to PyTorch.",
    "434404": "Thanks for the info!\n\nYes, I have been using one model so far, without k-folds. But with some tricks for sure :) Although, I'm not able to get such a good variation with LB as you.",
    "434434": "Great to hear Sava (@thinline72), I am using a single LSTM model in my present best with CV (0.6841) and LB (0.699 )correlation. But, I too suffer from randomness. I guess I have to make a pytorch pipeline to ensure reproducability."
  },
  "source": "meta"
}