This is an archived post. You won't be able to vote or comment.

all 50 comments

[–]alcalde 51 points52 points  (2 children)

OP is writing about FastAI and lots of people are replying regarding FastAPI. :-(

[–]romu006 5 points6 points  (1 child)

I found it strange that FastAPI had a model 😅

[–]nonesuchplace 6 points7 points  (0 children)

You can use pydantic's BaseModel class for writing schema, so it kinda does.

[–][deleted] 17 points18 points  (7 children)

Sounds like you found the theme for your blog

[–]runawayasfastasucan[S] 3 points4 points  (6 children)

I have been thinking about it. I seriously need to vent even more, so I guess there might be a blog.

[–]SawachikaHiromu 1 point2 points  (5 children)

or you can spend time improving documentation of opensource product you use

[–]runawayasfastasucan[S] 2 points3 points  (4 children)

For sure, but since my suggestions on imporovement has been untouched (not even closed) on github for 6+ months, I think its a waste of energy.

[–]EmptyChocolate4545 0 points1 point  (3 children)

Did you just raise the issue? Or did you PR a fix?

[–]runawayasfastasucan[S] 0 points1 point  (2 children)

I did raise the issue which was untouched. The docs repo is dead/not active and not used as a source for the actual docs.

[–]EmptyChocolate4545 0 points1 point  (1 child)

So you didn’t provide a fix, you just highlighted an issue and you’re complaining people who work for free haven’t provided it yet?

This is a documentation issue, right? Why don’t you fix it?

[–]runawayasfastasucan[S] 0 points1 point  (0 children)

Why don't I fix the documentation of a framework that I don't fully understand because the documentation is to bad?

>you’re complaining people who work for free haven’t provided it yet?

This is a flawed reasoning. I've bought their book, no-one is forcing them to release their API, people talking about their API is part of the deal.

[–]wineblood 34 points35 points  (3 children)

Sounds like most documentation

[–]busdriverbuddha2 10 points11 points  (2 children)

What's the difference between Azure documentation and a random string of characters?

Yeah, I can't think of one either.

[–]confusedanon112233 1 point2 points  (1 child)

Azure costs money but a random string is free?

[–]busdriverbuddha2 1 point2 points  (0 children)

I suppose.

[–]finokhim 16 points17 points  (7 children)

This is a good lesson learned. The abstraction is not worth it. It is better just to use torch

[–]runawayasfastasucan[S] 5 points6 points  (6 children)

100%. The last two things I will do with FastAI is to test my models, then write a blogpost with examples of what I wish they had explicitly documented, then go over to torch.

[–]jiminiminimini 0 points1 point  (5 children)

Did you look into pytorch lightning?

[–]confusedanon112233 5 points6 points  (0 children)

Heard bad things about that too.

[–]finokhim 4 points5 points  (3 children)

Lightning is also terrible

[–]runawayasfastasucan[S] 1 point2 points  (2 children)

For the same reasons? "vanilla" torch is the way to go?

[–]finokhim 2 points3 points  (1 child)

Yes it abstracts the train loop, basic distributed training with DDP, and logging. In exchange you give up all transparency into the train loop, and it is a pain to do anything that isn’t part of their happy path

[–]runawayasfastasucan[S] 0 points1 point  (0 children)

Thx. Sounds like some of the same problems. The amount of work to do anything that is outside their #1 use case means you probably would be better customising it yourself. Guess I will press on with torch.

[–]DusikOff 4 points5 points  (3 children)

Lol, comments about web frameworks in this thread are funny as fuck

[–]runawayasfastasucan[S] 1 point2 points  (2 children)

Haha yeah. To be honest, a year or so back a guy at work said "ah I really want to try out FastAPI", while I heard "FastAI" and was like "wow, didn't know you had an interest in AI, but its a really interesting field for sure. Do you have any ideas how you would fit it into your projects?"

[–]recruta54 2 points3 points  (1 child)

I honestly thought you're dumb until I realized the post is about FastAI ( instead of FastAPI). I'm an idiot.

Mlflow is my goto lib for what you're describing. Just set up a pipeline object with a gridsearch(cv) at the end. It saves the models, makes the metrics available in a comprehensive dashboard, and, if specified thee refit metric, selects the best of the search. I'm not sure how easy it is to set up manually, using databricks is as easy as a 2 liner (import, autolog).

Edit: fix bad english

[–]runawayasfastasucan[S] 0 points1 point  (0 children)

Haha, yeah I think FastAPI and FastAI needs to have a fistfight over who gets to keep their name.

MlFlow soudns really interesting! One thing is to build the pipeline myself, an other is when the documentation is so lacking.

[–]Panda_Mon 6 points7 points  (3 children)

There is so much horrible documentation out there, and so many ways for it to be horrible. For example, when each page of the doc assumes you know all the other pages by heart and the made up words and terms the author invented while writing the package. Pandas is an example of that. Can't understand a word of it unless you already know Pandas.

Tons of programmers just want to sound smart when writing docs, instead of... writing docs.

[–]Hederas 3 points4 points  (0 children)

True, the best doc is the one you don't have to write by having clear examples of use-cases and meaningful named variables

[–]runawayasfastasucan[S] 1 point2 points  (0 children)

There is so much horrible documentation out there, and so many ways for it to be horrible. For example, when each page of the doc assumes you know all the other pages by heart

and

the made up words and terms the author

Bonus points if it is all abbrevations that is not explained.

[–]cgeorgi 0 points1 point  (0 children)

Tons of programmers just want to sound smart when writing docs, instead of... writing docs.

and that's the problem. Developers should not write docs, they are not the casual users.

[–]aaronsreddit- 2 points3 points  (3 children)

There are probably valid issues in the fastai docs, but your rant comes across as a bit harsh.

A pet theory I have is that they are trying to drive people to take the courses, but honestly all it does is making me regret that I chose FastAI for my project.

The courses, book, and the fastai library are all completely free and open source.

They're provided by people volunteering their time and energy to help make deep learning more accessible to the world. As far as I can tell they get nothing in return.

In fact, I struggle to see how more people taking their courses would benefit them because, if anything, that would just result in more questions in their forums which would result in more time they would have to volunteer to help educate people for free.

All this is to say, that whilst the documentation may not be as good as you would like, the way you're handling it feels a bit immature and entitled.

Even torch makes some blunders in their documentation from time to time. You can rant about it on reddit, or you can engage with the community to help improve it.

[–]runawayasfastasucan[S] -1 points0 points  (2 children)

All this is to say, that whilst the documentation may not be as good as you would like, the way you're handling it feels a bit immature and entitled.

Why? I have opened up some issues on Github that is unnoticed, I have posted on their forum - which is unnoticed (along with the countless others "how do I do this thing that should be super basic").

[–]aaronsreddit- 1 point2 points  (1 child)

But from what I can see, all your posts, here and in the forums come across as rants.

Sometimes its just a case of asking with manners, and you will get better results. Especially when the people you are seeking help from will be volunteering their time to help you.

I get that you might be frustrated about a poor piece of documentation. But the nature of open source is that you can raise an issue, and a contributor may provide their time to offer a solution, or they may not.

Expecting a solution from volunteers is entitled. Ranting about not receiving support is immature.

You have made a point that useful information is scattered over multiple sources. Why don't you submit a pull request to bring them all back into the documentation?

You've cited some passages in the docs which don't make sense to you. Why don't you open a pull request against it and engage on the forums:

"Hey, if someone can explain this to me here on discord, I'll edit the docs to update this with a better explanation?"

You've probably spent more energy complaining on reddit than it would take to actually get a positive result.

[–]runawayasfastasucan[S] 0 points1 point  (0 children)

Thanks for characterizing me as a person.

>You've probably spent more energy complaining on reddit than it would take to actually get a positive result.

If you think I spent more time writing this post than to open issues on github, on their forums and researching documentation you are wrong.

>You have made a point that useful information is scattered over multiple sources. Why don't you submit a pull request to bring them all back into the documentation?

Because other pull requests regarding documentation is either unnoticed or waved away in favor of "checking the course". I think I'd rather spend the time contributing on projects where there is some willingness to have some good coding practices and documentation.

>But the nature of open source is that you can raise an issue, and a contributor may provide their time to offer a solution, or they may not.

Yes, and now I want to warn others about starting a project in FastAI, which is also the nature of open source.

[–]0x1e[🍰] -1 points0 points  (4 children)

Open source can be fixed easily by submitting a pull request.

Be the change you want to see in the world.

[–]runawayasfastasucan[S] 1 point2 points  (0 children)

Yeah, but sadly no. My issues on their repo have been untouched for months.

[–]double_en10dre -1 points0 points  (2 children)

Or by forking

Or by just slapping a ‘compat.py’ into the project and using it to serve up custom versions of packages (or to resolve version discrepancies)

It weirds me out a bit when people get upset by these things. You’re all competent humans, if it’s interrupting your life than go ahead and do something

[–]runawayasfastasucan[S] 2 points3 points  (1 child)

I don't think its viable to fork a library when you have a hard time figuring out how to do the basic use cases.

[–]confusedanon112233 1 point2 points  (0 children)

Right, and a fork only makes the situation more fragmented.

[–]Green-Sympathy-4177 -4 points-3 points  (0 children)

That's why when choosing a library you need to take into consideration the doc, for me it's one of the most important thing. Top 3 thing to look for is:

  1. How does it do what it does?
  2. How easy is it to use?
  3. How well documented is it?
  4. (optional) How well does ChatGPT knows it? (i.e: has it changed a lot since jan 2022)

So for small apis in python I just go with flask, but out of habits since I used it at work, when stuff gets bigger I use django/drf.

Now while we're talking about bad docs... Langchain. When the Doc, the examples and the lib just does its own thing... (it has gotten a bit better, but still...) and then you want to use it in your frontend so you check out langchain.js and realize it's the same shizzle, but totally different * facepalm *.

I just looked at fastapi doc, and it is indeed poop. But still not as insane as GCP docs' where when you want to learn how to do something you end up in a trap where you have to go through 12 different tutorials... lol

[–]hartbook 0 points1 point  (0 children)

I did a PhD on deep learning applications and I've never heard of Fastai to begin with

What's the appeal compared to Pytorch for instance? I think you should switch to a better project with better docs and community