{
  "id": 100801,
  "title": "Why is no one using fastai for this challenge?",
  "url": "/competitions/recursion-cellular-image-classification/discussion/100801",
  "author_name": "Kurian Benoy",
  "post_date": "2019-07-21T07:21:15.085000",
  "votes": 2,
  "comment_count": 18,
  "views": 0,
  "content": "<p>Most of the solutions are based on pytorch here. I can't find any open kaggle kernels fo the fastai here. Even though for most of the kaggle challenges, we can find atleast something</p>",
  "messages": [
    {
      "id": 581058,
      "postDate": "2019-07-21T10:35:19.080Z",
      "content": "<p>For me because of much less flexibility compared to PyTorch and a lot of non obvious stuff going on (default parameters for almost everything). I've spent an hour reading through docs and sources to understand what kind of scheduling scheme it uses for 1cycle. It feels like fastai aims to be as convenient as possible resulting in so high-level interface it is just impossible to use for any kind of experimentation beyond \"comparing resnet18 and resnet34\", especially in such flexible environment as kaggle competitions.</p>",
      "rawMarkdown": "For me because of much less flexibility compared to PyTorch and a lot of non obvious stuff going on (default parameters for almost everything). I've spent an hour reading through docs and sources to understand what kind of scheduling scheme it uses for 1cycle. It feels like fastai aims to be as convenient as possible resulting in so high-level interface it is just impossible to use for any kind of experimentation beyond \"comparing resnet18 and resnet34\", especially in such flexible environment as kaggle competitions.",
      "votes": 13,
      "replies": [
        {
          "id": 581062,
          "postDate": "2019-07-21T10:43:38.567Z",
          "content": "<p>I totally agree. Everything is packed as undocumented classes, even simple things like a file path. </p>",
          "rawMarkdown": "I totally agree. Everything is packed as undocumented classes, even simple things like a file path. ",
          "votes": 9
        },
        {
          "id": 581450,
          "postDate": "2019-07-22T00:47:00.440Z",
          "content": "<p>file path? you mean <code>Path()</code>?</p>",
          "rawMarkdown": "file path? you mean `Path()`?"
        },
        {
          "id": 581578,
          "postDate": "2019-07-22T06:04:09.957Z",
          "content": "<p>Yes, why you need a class for that? 🙄 </p>",
          "rawMarkdown": "Yes, why you need a class for that? 🙄 ",
          "votes": 1
        },
        {
          "id": 581600,
          "postDate": "2019-07-22T06:38:20.293Z",
          "content": "<p>If it's about <code>pathlib.Path</code>, I have to say that it's a really good alternative to <code>os.path</code> and it has nothing to do with fast.ai :)</p>",
          "rawMarkdown": "If it's about `pathlib.Path`, I have to say that it's a really good alternative to `os.path` and it has nothing to do with fast.ai :)",
          "votes": 9
        },
        {
          "id": 582065,
          "postDate": "2019-07-22T17:59:19.560Z",
          "content": "<p>Yeah, <code>pathlib</code> is a cool thing, I would say. However, <code>fastai</code> library also likes to \"patch\" standard classes with new methods, like <code>Path.ls()</code>, for example :)</p>",
          "rawMarkdown": "Yeah, `pathlib` is a cool thing, I would say. However, `fastai` library also likes to \"patch\" standard classes with new methods, like `Path.ls()`, for example :)",
          "votes": 1
        },
        {
          "id": 582621,
          "postDate": "2019-07-23T11:23:25.030Z",
          "content": "<p>I thought Java-style is out of fashion these days :)</p>",
          "rawMarkdown": "I thought Java-style is out of fashion these days :)"
        }
      ]
    },
    {
      "id": 581440,
      "postDate": "2019-07-22T00:31:05.803Z",
      "content": "<p>I have a kernel over <a href=\"https://www.kaggle.com/tanlikesmath/rcic-fastai-starter\">here</a>, and the currently running commit will have more detailed explanation of the code.</p>\n\n<p>I just want to respond to a couple of the points discussed here.</p>\n\n<ol>\n<li><p>I agree the documentation is not the best. But what you have to realize is that fast.ai is only three people: Jeremy Howard, Rachael Thomas, and Sylvain Gugger. Compare that to other packages like PyTorch or TensorFlow that have dedicated teams paid to work on these kind of things. On the other hand the fast.ai team (AFAIK is a non-profit) probably only gets paid from teaching at University of San Francisco and has therefore focused on delivering top-notch deep learning courses. Keeping this in mind, I am quite satisfied by the current quality of the documentation.</p></li>\n<li><p>People think that using PyTorch and fastai is mutually exclusive. This is not true. For example, you can use your own PyTorch Dataset, which is documented over <a href=\"https://docs.fast.ai/basic_data.html#Using-a-custom-Dataset-in-fastai\">here</a>. Much of fastai is easily hackable. As an example, I demonstrated how to use 6-channel images in fastai.</p></li>\n<li><p>There are defaults parameters for a reason. Many of these parameters and techniques come from literature and have been shown empirically to be the best. But even if you don't want to use those parameters, you can easily change them.</p></li>\n<li><p>There has been one major change in the codebase, and another one coming up, but most of the concepts have remained the same and just different names of modules or improvement of the data API.</p></li>\n<li><p>Swift fastai is not meant for immediate use and is because there are some people who believe that Swift is a better language for deep learning, hence the development of S4TF and fastai in Swift. However, it is at least couple years down the road that it will be a library that can be used with any practical benefit compared to using Python.</p></li>\n</ol>\n\n<p>Fastai has been used for many successful competition solutions. I think the goal of fastai is to be an easy library for beginners to use but also easisly hackable for advanced purposes and even research. </p>",
      "rawMarkdown": "I have a kernel over [here](https://www.kaggle.com/tanlikesmath/rcic-fastai-starter), and the currently running commit will have more detailed explanation of the code.\n\nI just want to respond to a couple of the points discussed here.\n\n1. I agree the documentation is not the best. But what you have to realize is that fast.ai is only three people: Jeremy Howard, Rachael Thomas, and Sylvain Gugger. Compare that to other packages like PyTorch or TensorFlow that have dedicated teams paid to work on these kind of things. On the other hand the fast.ai team (AFAIK is a non-profit) probably only gets paid from teaching at University of San Francisco and has therefore focused on delivering top-notch deep learning courses. Keeping this in mind, I am quite satisfied by the current quality of the documentation.\n\n2. People think that using PyTorch and fastai is mutually exclusive. This is not true. For example, you can use your own PyTorch Dataset, which is documented over [here](https://docs.fast.ai/basic_data.html#Using-a-custom-Dataset-in-fastai). Much of fastai is easily hackable. As an example, I demonstrated how to use 6-channel images in fastai.\n\n3. There are defaults parameters for a reason. Many of these parameters and techniques come from literature and have been shown empirically to be the best. But even if you don't want to use those parameters, you can easily change them.\n\n4. There has been one major change in the codebase, and another one coming up, but most of the concepts have remained the same and just different names of modules or improvement of the data API.\n\n5. Swift fastai is not meant for immediate use and is because there are some people who believe that Swift is a better language for deep learning, hence the development of S4TF and fastai in Swift. However, it is at least couple years down the road that it will be a library that can be used with any practical benefit compared to using Python.\n\nFastai has been used for many successful competition solutions. I think the goal of fastai is to be an easy library for beginners to use but also easisly hackable for advanced purposes and even research. ",
      "votes": 7,
      "replies": [
        {
          "id": 581576,
          "postDate": "2019-07-22T06:03:12.807Z",
          "content": "<blockquote>\n  <p>Much of fastai is easily hackable</p>\n</blockquote>\n\n<p>Thats where I disagree. Most of fastai functions take fastai classes as input, which take fastai classes as input, which take fastai classes as input and so on. It takes ages to figure out, what is going on in each class. A simple example is <code>Learner.tta</code>: it takes like 1h to find out what augmentation is applied at the end. In that time you have easily written it yourself.   </p>",
          "rawMarkdown": "&gt; Much of fastai is easily hackable\n\nThats where I disagree. Most of fastai functions take fastai classes as input, which take fastai classes as input, which take fastai classes as input and so on. It takes ages to figure out, what is going on in each class. A simple example is `Learner.tta`: it takes like 1h to find out what augmentation is applied at the end. In that time you have easily written it yourself.   ",
          "votes": 9
        },
        {
          "id": 582057,
          "postDate": "2019-07-22T17:53:46.180Z",
          "content": "<p>Your comments are absolutely valid. (Especially about Swift). I personally learned (and keep learning) a lot from fast.ai projects, courses, and codebase. And I also was writing custom datasets and loaders. For example, for Quick Draw competition my custom dataset was rendering PNG images on the fly and used <code>Learner</code> class for training. As well as submitted a couple of tiny PRs.</p>\n\n<p>However, my overall <em>personal</em> experience with <code>fastai</code> library wasn't too smooth. Maybe I am doing it wrong or just can't grasp a concept. But I would say that <code>keras</code>, <code>pytorch</code>, <code>ignite</code>, and (an eager version of) <code>tensorflow</code> in some (many?) cases seem to be more flexible, \"hackable\", better documented, with a broader audience, etc. That probably means that these tools also could be a good way to go for ​​a beginner/hacker. </p>\n\n<p>Nevertheless, the contribution done by fast.ai team is undeniable. I've taken many of their ideas/implementations for my experiments and projects. </p>",
          "rawMarkdown": "Your comments are absolutely valid. (Especially about Swift). I personally learned (and keep learning) a lot from fast.ai projects, courses, and codebase. And I also was writing custom datasets and loaders. For example, for Quick Draw competition my custom dataset was rendering PNG images on the fly and used `Learner` class for training. As well as submitted a couple of tiny PRs.\n\nHowever, my overall *personal* experience with `fastai` library wasn't too smooth. Maybe I am doing it wrong or just can't grasp a concept. But I would say that `keras`, `pytorch`, `ignite`, and (an eager version of) `tensorflow` in some (many?) cases seem to be more flexible, \"hackable\", better documented, with a broader audience, etc. That probably means that these tools also could be a good way to go for ​​a beginner/hacker. \n\nNevertheless, the contribution done by fast.ai team is undeniable. I've taken many of their ideas/implementations for my experiments and projects. ",
          "votes": 1
        },
        {
          "id": 604434,
          "postDate": "2019-08-21T11:33:19.567Z",
          "content": "<p>Being a fastai fanboy myself, it pains me to say that I'd rather write my code in pytorch. I got into DL with fastai. But the more competitions I attend, the more caveats I find. Some methods don't work like they are described in the library.\nI was wasting a lot of time trying to get datasets into fastai structures. Fastai does give us some additional stuff like fit one cycle. Still, getting stuff into pytorch is way simpler and quicker. </p>",
          "rawMarkdown": "Being a fastai fanboy myself, it pains me to say that I'd rather write my code in pytorch. I got into DL with fastai. But the more competitions I attend, the more caveats I find. Some methods don't work like they are described in the library.\nI was wasting a lot of time trying to get datasets into fastai structures. Fastai does give us some additional stuff like fit one cycle. Still, getting stuff into pytorch is way simpler and quicker. ",
          "votes": 4
        }
      ]
    },
    {
      "id": 581356,
      "postDate": "2019-07-21T20:00:21.877Z",
      "content": "<p>The reason is simple - it's the worst deep learning library ever. The fake \"simplicity\" made it popular, but the lack of control and absolutely poor level of the codebase makes it completely useless in the long run.</p>",
      "rawMarkdown": "The reason is simple - it's the worst deep learning library ever. The fake \"simplicity\" made it popular, but the lack of control and absolutely poor level of the codebase makes it completely useless in the long run.",
      "votes": 6,
      "replies": [
        {
          "id": 582615,
          "postDate": "2019-07-23T11:20:41.493Z",
          "content": "<p>Wise words! Unfortunately, sometimes we must deal with fastai code. It's essentially undocumented cause it changes too often. There are no stable releases at all.</p>",
          "rawMarkdown": "Wise words! Unfortunately, sometimes we must deal with fastai code. It's essentially undocumented cause it changes too often. There are no stable releases at all.",
          "votes": 3
        }
      ]
    },
    {
      "id": 581359,
      "postDate": "2019-07-21T20:15:10.400Z",
      "content": "<p>I also tend to use my own stuff instead. (I even started creating <a href=\"https://github.com/devforfu/loop\">my own version</a> of PyTorch training loop...). The major reason: a bit non-flexible pipelines to read the data. The <code>DataBunch</code> class seems to be a kind of god object. It seems to be super-flexible but somehow I still prefer to use good old <code>DataLoader</code> and <code>Dataset</code> which give me a much higher level of control. (I don't need to store the data on the disk, can use on-the-fly data generation, etc.).</p>\n\n<p>Also, there are lots of inter-dependencies between the modules. For example, I would like to use one of the <code>Learner</code> classes but should take <code>DataBunch</code> as well to feed into the network.</p>\n\n<p>In general, the library is very opinionated, I would say :) It gives you the state-of-art results and many interesting tricks, but you probably should watch the lections, read through GitHub, forums, etc. to really master it. Also, the codebase was chaining a lot. (As soon as I know, guys rewrote it two or three times, and now writing a Swift version...). So you really should be involved in the process.​</p>\n\n<p>The <code>fastai</code> library does its best to become an end-to-end solution which you don't need to parametrize a lot and can use as a single tool/pipeline for every machine learning problem. And, this approach obviously has some drawbacks.</p>",
      "rawMarkdown": "I also tend to use my own stuff instead. (I even started creating [my own version](https://github.com/devforfu/loop) of PyTorch training loop...). The major reason: a bit non-flexible pipelines to read the data. The `DataBunch` class seems to be a kind of god object. It seems to be super-flexible but somehow I still prefer to use good old `DataLoader` and `Dataset` which give me a much higher level of control. (I don't need to store the data on the disk, can use on-the-fly data generation, etc.).\n\nAlso, there are lots of inter-dependencies between the modules. For example, I would like to use one of the `Learner` classes but should take `DataBunch` as well to feed into the network.\n\nIn general, the library is very opinionated, I would say :) It gives you the state-of-art results and many interesting tricks, but you probably should watch the lections, read through GitHub, forums, etc. to really master it. Also, the codebase was chaining a lot. (As soon as I know, guys rewrote it two or three times, and now writing a Swift version...). So you really should be involved in the process.​\n\nThe `fastai` library does its best to become an end-to-end solution which you don't need to parametrize a lot and can use as a single tool/pipeline for every machine learning problem. And, this approach obviously has some drawbacks.",
      "votes": 3
    },
    {
      "id": 580972,
      "postDate": "2019-07-21T07:21:15.087Z",
      "content": "<p>Most of the solutions are based on pytorch here. I can't find any open kaggle kernels fo the fastai here. Even though for most of the kaggle challenges, we can find atleast something</p>",
      "rawMarkdown": "Most of the solutions are based on pytorch here. I can't find any open kaggle kernels fo the fastai here. Even though for most of the kaggle challenges, we can find atleast something",
      "votes": 2
    },
    {
      "id": 581208,
      "postDate": "2019-07-21T15:31:12.047Z",
      "content": "<p>I would not say no one is using it...</p>\n\n<p>Also there is this very nice kernel by ilovescience\n<a href=\"https://www.kaggle.com/tanlikesmath/rcic-fastai-starter\">https://www.kaggle.com/tanlikesmath/rcic-fastai-starter</a>\nwith some very helpful fastai code. </p>",
      "rawMarkdown": "I would not say no one is using it...\n\nAlso there is this very nice kernel by ilovescience\nhttps://www.kaggle.com/tanlikesmath/rcic-fastai-starter\nwith some very helpful fastai code. ",
      "votes": 2
    },
    {
      "id": 581178,
      "postDate": "2019-07-21T14:59:30.413Z",
      "content": "<p>I tried (a little) but give up. In orders to use the goodies from the databunch, I have to wrap myself around to much abstraction and modification to get it running, rather than the straightforward pytorch's dataset and dataloader.</p>\n\n<p>I guess the Fastai library would be more beneficial if you follow the course closely (which is good), but I only get on and off around some interested topics .</p>",
      "rawMarkdown": "I tried (a little) but give up. In orders to use the goodies from the databunch, I have to wrap myself around to much abstraction and modification to get it running, rather than the straightforward pytorch's dataset and dataloader.\n\nI guess the Fastai library would be more beneficial if you follow the course closely (which is good), but I only get on and off around some interested topics .",
      "votes": 2,
      "replies": [
        {
          "id": 581687,
          "postDate": "2019-07-22T09:00:37.607Z",
          "content": "<p>Yea, and I also had issues using some external metrics for some competitions</p>",
          "rawMarkdown": "Yea, and I also had issues using some external metrics for some competitions"
        }
      ]
    },
    {
      "id": 582240,
      "postDate": "2019-07-23T00:04:57.200Z",
      "rawMarkdown": "",
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 581058,
      "author_name": "Vlad Shmyhlo ",
      "author_url": "",
      "post_date": "2019-07-21T10:35:19.080000",
      "content": "<p>For me because of much less flexibility compared to PyTorch and a lot of non obvious stuff going on (default parameters for almost everything). I've spent an hour reading through docs and sources to understand what kind of scheduling scheme it uses for 1cycle. It feels like fastai aims to be as convenient as possible resulting in so high-level interface it is just impossible to use for any kind of experimentation beyond \"comparing resnet18 and resnet34\", especially in such flexible environment as kaggle competitions.</p>",
      "votes": 13,
      "replies": [
        {
          "id": 581062,
          "author_name": "Dieter",
          "author_url": "",
          "post_date": "2019-07-21T10:43:38.567000",
          "content": "<p>I totally agree. Everything is packed as undocumented classes, even simple things like a file path. </p>",
          "votes": 9,
          "replies": []
        },
        {
          "id": 581450,
          "author_name": "ilovescience",
          "author_url": "",
          "post_date": "2019-07-22T00:47:00.440000",
          "content": "<p>file path? you mean <code>Path()</code>?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 581578,
          "author_name": "Dieter",
          "author_url": "",
          "post_date": "2019-07-22T06:04:09.957000",
          "content": "<p>Yes, why you need a class for that? 🙄 </p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 581600,
          "author_name": "Dmytro Danevskyi",
          "author_url": "",
          "post_date": "2019-07-22T06:38:20.293000",
          "content": "<p>If it's about <code>pathlib.Path</code>, I have to say that it's a really good alternative to <code>os.path</code> and it has nothing to do with fast.ai :)</p>",
          "votes": 9,
          "replies": []
        },
        {
          "id": 582065,
          "author_name": "Ilia Zaitsev",
          "author_url": "",
          "post_date": "2019-07-22T17:59:19.560000",
          "content": "<p>Yeah, <code>pathlib</code> is a cool thing, I would say. However, <code>fastai</code> library also likes to \"patch\" standard classes with new methods, like <code>Path.ls()</code>, for example :)</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 582621,
          "author_name": "Artyom Palvelev",
          "author_url": "",
          "post_date": "2019-07-23T11:23:25.030000",
          "content": "<p>I thought Java-style is out of fashion these days :)</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 581440,
      "author_name": "ilovescience",
      "author_url": "",
      "post_date": "2019-07-22T00:31:05.803000",
      "content": "<p>I have a kernel over <a href=\"https://www.kaggle.com/tanlikesmath/rcic-fastai-starter\">here</a>, and the currently running commit will have more detailed explanation of the code.</p>\n\n<p>I just want to respond to a couple of the points discussed here.</p>\n\n<ol>\n<li><p>I agree the documentation is not the best. But what you have to realize is that fast.ai is only three people: Jeremy Howard, Rachael Thomas, and Sylvain Gugger. Compare that to other packages like PyTorch or TensorFlow that have dedicated teams paid to work on these kind of things. On the other hand the fast.ai team (AFAIK is a non-profit) probably only gets paid from teaching at University of San Francisco and has therefore focused on delivering top-notch deep learning courses. Keeping this in mind, I am quite satisfied by the current quality of the documentation.</p></li>\n<li><p>People think that using PyTorch and fastai is mutually exclusive. This is not true. For example, you can use your own PyTorch Dataset, which is documented over <a href=\"https://docs.fast.ai/basic_data.html#Using-a-custom-Dataset-in-fastai\">here</a>. Much of fastai is easily hackable. As an example, I demonstrated how to use 6-channel images in fastai.</p></li>\n<li><p>There are defaults parameters for a reason. Many of these parameters and techniques come from literature and have been shown empirically to be the best. But even if you don't want to use those parameters, you can easily change them.</p></li>\n<li><p>There has been one major change in the codebase, and another one coming up, but most of the concepts have remained the same and just different names of modules or improvement of the data API.</p></li>\n<li><p>Swift fastai is not meant for immediate use and is because there are some people who believe that Swift is a better language for deep learning, hence the development of S4TF and fastai in Swift. However, it is at least couple years down the road that it will be a library that can be used with any practical benefit compared to using Python.</p></li>\n</ol>\n\n<p>Fastai has been used for many successful competition solutions. I think the goal of fastai is to be an easy library for beginners to use but also easisly hackable for advanced purposes and even research. </p>",
      "votes": 7,
      "replies": [
        {
          "id": 581576,
          "author_name": "Dieter",
          "author_url": "",
          "post_date": "2019-07-22T06:03:12.807000",
          "content": "<blockquote>\n  <p>Much of fastai is easily hackable</p>\n</blockquote>\n\n<p>Thats where I disagree. Most of fastai functions take fastai classes as input, which take fastai classes as input, which take fastai classes as input and so on. It takes ages to figure out, what is going on in each class. A simple example is <code>Learner.tta</code>: it takes like 1h to find out what augmentation is applied at the end. In that time you have easily written it yourself.   </p>",
          "votes": 9,
          "replies": []
        },
        {
          "id": 582057,
          "author_name": "Ilia Zaitsev",
          "author_url": "",
          "post_date": "2019-07-22T17:53:46.180000",
          "content": "<p>Your comments are absolutely valid. (Especially about Swift). I personally learned (and keep learning) a lot from fast.ai projects, courses, and codebase. And I also was writing custom datasets and loaders. For example, for Quick Draw competition my custom dataset was rendering PNG images on the fly and used <code>Learner</code> class for training. As well as submitted a couple of tiny PRs.</p>\n\n<p>However, my overall <em>personal</em> experience with <code>fastai</code> library wasn't too smooth. Maybe I am doing it wrong or just can't grasp a concept. But I would say that <code>keras</code>, <code>pytorch</code>, <code>ignite</code>, and (an eager version of) <code>tensorflow</code> in some (many?) cases seem to be more flexible, \"hackable\", better documented, with a broader audience, etc. That probably means that these tools also could be a good way to go for ​​a beginner/hacker. </p>\n\n<p>Nevertheless, the contribution done by fast.ai team is undeniable. I've taken many of their ideas/implementations for my experiments and projects. </p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 604434,
          "author_name": "Rafid Abyaad",
          "author_url": "",
          "post_date": "2019-08-21T11:33:19.567000",
          "content": "<p>Being a fastai fanboy myself, it pains me to say that I'd rather write my code in pytorch. I got into DL with fastai. But the more competitions I attend, the more caveats I find. Some methods don't work like they are described in the library.\nI was wasting a lot of time trying to get datasets into fastai structures. Fastai does give us some additional stuff like fit one cycle. Still, getting stuff into pytorch is way simpler and quicker. </p>",
          "votes": 4,
          "replies": []
        }
      ]
    },
    {
      "id": 581356,
      "author_name": "Dmytro Danevskyi",
      "author_url": "",
      "post_date": "2019-07-21T20:00:21.877000",
      "content": "<p>The reason is simple - it's the worst deep learning library ever. The fake \"simplicity\" made it popular, but the lack of control and absolutely poor level of the codebase makes it completely useless in the long run.</p>",
      "votes": 6,
      "replies": [
        {
          "id": 582615,
          "author_name": "Artyom Palvelev",
          "author_url": "",
          "post_date": "2019-07-23T11:20:41.493000",
          "content": "<p>Wise words! Unfortunately, sometimes we must deal with fastai code. It's essentially undocumented cause it changes too often. There are no stable releases at all.</p>",
          "votes": 3,
          "replies": []
        }
      ]
    },
    {
      "id": 581359,
      "author_name": "Ilia Zaitsev",
      "author_url": "",
      "post_date": "2019-07-21T20:15:10.400000",
      "content": "<p>I also tend to use my own stuff instead. (I even started creating <a href=\"https://github.com/devforfu/loop\">my own version</a> of PyTorch training loop...). The major reason: a bit non-flexible pipelines to read the data. The <code>DataBunch</code> class seems to be a kind of god object. It seems to be super-flexible but somehow I still prefer to use good old <code>DataLoader</code> and <code>Dataset</code> which give me a much higher level of control. (I don't need to store the data on the disk, can use on-the-fly data generation, etc.).</p>\n\n<p>Also, there are lots of inter-dependencies between the modules. For example, I would like to use one of the <code>Learner</code> classes but should take <code>DataBunch</code> as well to feed into the network.</p>\n\n<p>In general, the library is very opinionated, I would say :) It gives you the state-of-art results and many interesting tricks, but you probably should watch the lections, read through GitHub, forums, etc. to really master it. Also, the codebase was chaining a lot. (As soon as I know, guys rewrote it two or three times, and now writing a Swift version...). So you really should be involved in the process.​</p>\n\n<p>The <code>fastai</code> library does its best to become an end-to-end solution which you don't need to parametrize a lot and can use as a single tool/pipeline for every machine learning problem. And, this approach obviously has some drawbacks.</p>",
      "votes": 3,
      "replies": []
    },
    {
      "id": 581208,
      "author_name": "interneuron",
      "author_url": "",
      "post_date": "2019-07-21T15:31:12.047000",
      "content": "<p>I would not say no one is using it...</p>\n\n<p>Also there is this very nice kernel by ilovescience\n<a href=\"https://www.kaggle.com/tanlikesmath/rcic-fastai-starter\">https://www.kaggle.com/tanlikesmath/rcic-fastai-starter</a>\nwith some very helpful fastai code. </p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 581178,
      "author_name": "Phúc Lê",
      "author_url": "",
      "post_date": "2019-07-21T14:59:30.413000",
      "content": "<p>I tried (a little) but give up. In orders to use the goodies from the databunch, I have to wrap myself around to much abstraction and modification to get it running, rather than the straightforward pytorch's dataset and dataloader.</p>\n\n<p>I guess the Fastai library would be more beneficial if you follow the course closely (which is good), but I only get on and off around some interested topics .</p>",
      "votes": 2,
      "replies": [
        {
          "id": 581687,
          "author_name": "Sathvik Udupa",
          "author_url": "",
          "post_date": "2019-07-22T09:00:37.607000",
          "content": "<p>Yea, and I also had issues using some external metrics for some competitions</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 582240,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-07-23T00:04:57.200000",
      "content": "",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "581058": "For me because of much less flexibility compared to PyTorch and a lot of non obvious stuff going on (default parameters for almost everything). I've spent an hour reading through docs and sources to understand what kind of scheduling scheme it uses for 1cycle. It feels like fastai aims to be as convenient as possible resulting in so high-level interface it is just impossible to use for any kind of experimentation beyond \"comparing resnet18 and resnet34\", especially in such flexible environment as kaggle competitions.",
    "581440": "I have a kernel over [here](https://www.kaggle.com/tanlikesmath/rcic-fastai-starter), and the currently running commit will have more detailed explanation of the code.\n\nI just want to respond to a couple of the points discussed here.\n\n1. I agree the documentation is not the best. But what you have to realize is that fast.ai is only three people: Jeremy Howard, Rachael Thomas, and Sylvain Gugger. Compare that to other packages like PyTorch or TensorFlow that have dedicated teams paid to work on these kind of things. On the other hand the fast.ai team (AFAIK is a non-profit) probably only gets paid from teaching at University of San Francisco and has therefore focused on delivering top-notch deep learning courses. Keeping this in mind, I am quite satisfied by the current quality of the documentation.\n\n2. People think that using PyTorch and fastai is mutually exclusive. This is not true. For example, you can use your own PyTorch Dataset, which is documented over [here](https://docs.fast.ai/basic_data.html#Using-a-custom-Dataset-in-fastai). Much of fastai is easily hackable. As an example, I demonstrated how to use 6-channel images in fastai.\n\n3. There are defaults parameters for a reason. Many of these parameters and techniques come from literature and have been shown empirically to be the best. But even if you don't want to use those parameters, you can easily change them.\n\n4. There has been one major change in the codebase, and another one coming up, but most of the concepts have remained the same and just different names of modules or improvement of the data API.\n\n5. Swift fastai is not meant for immediate use and is because there are some people who believe that Swift is a better language for deep learning, hence the development of S4TF and fastai in Swift. However, it is at least couple years down the road that it will be a library that can be used with any practical benefit compared to using Python.\n\nFastai has been used for many successful competition solutions. I think the goal of fastai is to be an easy library for beginners to use but also easisly hackable for advanced purposes and even research. ",
    "581356": "The reason is simple - it's the worst deep learning library ever. The fake \"simplicity\" made it popular, but the lack of control and absolutely poor level of the codebase makes it completely useless in the long run.",
    "581359": "I also tend to use my own stuff instead. (I even started creating [my own version](https://github.com/devforfu/loop) of PyTorch training loop...). The major reason: a bit non-flexible pipelines to read the data. The `DataBunch` class seems to be a kind of god object. It seems to be super-flexible but somehow I still prefer to use good old `DataLoader` and `Dataset` which give me a much higher level of control. (I don't need to store the data on the disk, can use on-the-fly data generation, etc.).\n\nAlso, there are lots of inter-dependencies between the modules. For example, I would like to use one of the `Learner` classes but should take `DataBunch` as well to feed into the network.\n\nIn general, the library is very opinionated, I would say :) It gives you the state-of-art results and many interesting tricks, but you probably should watch the lections, read through GitHub, forums, etc. to really master it. Also, the codebase was chaining a lot. (As soon as I know, guys rewrote it two or three times, and now writing a Swift version...). So you really should be involved in the process.​\n\nThe `fastai` library does its best to become an end-to-end solution which you don't need to parametrize a lot and can use as a single tool/pipeline for every machine learning problem. And, this approach obviously has some drawbacks.",
    "580972": "Most of the solutions are based on pytorch here. I can't find any open kaggle kernels fo the fastai here. Even though for most of the kaggle challenges, we can find atleast something",
    "581208": "I would not say no one is using it...\n\nAlso there is this very nice kernel by ilovescience\nhttps://www.kaggle.com/tanlikesmath/rcic-fastai-starter\nwith some very helpful fastai code. ",
    "581178": "I tried (a little) but give up. In orders to use the goodies from the databunch, I have to wrap myself around to much abstraction and modification to get it running, rather than the straightforward pytorch's dataset and dataloader.\n\nI guess the Fastai library would be more beneficial if you follow the course closely (which is good), but I only get on and off around some interested topics .",
    "582240": ""
  }
}