Deep Learning for Coders – Launching Deep Learning Part 2
fast.ai
fast.ai
However, the first lesson took a bit of stamina to go through. Much of it was introducing basic Unix/AWS/shell/Python things I know intimately and have strong opinions and deeply set ways about. Shell aliases, how to use AWS, what Python distribution to run, running Python from some crazy web tool called notebooks (and not Emacs), etc. felt like I was forced to learn a random selection of randomly flavored tools for no good reason.
Yes, it's a random selection of tools. The good reason to bear them is that you'll learn how to implement state of the art deep learning solutions for a lot of common problems.
So, I ended up viewing the lessons not as "this is how you should do it", but rather as "here's one way to do it". And it does get much easier after internalizing the tools in Lesson 1.
Just something to keep in mind when branding this as "deep learning for coders". Coders have deep opinions about the tools they use :)
Just as an example, the "crazy web tool called notebooks" is pretty much the standard way of working in many different areas of machine learning/deep learning (and others). It doesn't mean you necessarily have to do it yourself, but tons of material out there will be in this format, so it's valuable in and of itself to know it.
Also, you really should give notebooks a chance, they're a game-changer for productivity, IMO. (Although I'm a vim user, not emacs, so maybe you shouldn't listen to me ;).
I felt like some of the material is outdated and I find it not clear how to get around it. I ended up getting frustrated with the set up videos and git cloning instructions, so I skipped it in their entirety. I hope the future iterations of this class spell things out for beginners like me. Otherwise, I can't even begin the class since I don't know how to request access to P2, clone git, etc.
I am not uneducated. I come from a pure mathematics background and don't know anything about this set up business. I can code, know theoretical CS, but when it comes to setting up the tools (along with the outdated material) I am utterly lost.
At this point I'm just watching the videos. I can't actually do any of the coding stuff since I don't have the tools set up, but I like their top-down approach and am learning a lot despite these obstacles.
It's a fine line between helping too much vs too little in lesson 1! For the next time we run part 1, we're thinking we'll have an optional weekend workshop to teach the necessary (non deep learning specific) software pieces - python, numpy, AWS, shell, etc. That would end up being a separate mini-MOOC I suspect.
Based on the discussions on the forums it seems most students are between these two extremes, and largely follow the video advice, branching off sometimes where they need to do some additional research, or are already familiar with some alternative approach.
Edit: actually thinking more about it - probably your best bet is to simply use http://crestle.com . All the data, notebooks, and software is pre-installed, so you can start coding right away.
Will the revamped course in October be offered online (like the current version is) for public viewing?
Maybe an idea would be to leverage the community a bit more? Make it easier to edit the wiki for MOOC-students which are the ones watching/reading the material later on. And maybe refer to that wiki more on the site.
I end up using the forums a lot for trying to find info on stuff that is not working, or I don't understand. But it's not an easy platform to find information since it isn't structured well.
I thought if the resources around the course evolve over time, then the material should as well. It would be easier to keep a wiki up-to-date and refer to that, instead of a video (and site). For setup and "sidenotes" specifically, I'm not saying the lessons should be re-created in the wikis.
Although the homework and lesson notes in the wikis was indispensable.
The downside is you don't get as much control over your environment (you get a terminal in the browser, but no SSH or sudo access, for example). If you have the inclination and ability to manage your own instances, EC2 is more flexible.
Not sure that's how he does it, but it's one way.
I wonder how big the crowd between our two extremes is — the people who actually do run the commands exactly as explained in the videos? If the material is outdated, beginners cannot. Experts will do their own thing. How many people will follow the actual instructions?
It is only 99 euro/month.
You _can_ run it on a CPU, and that can work fine for very simple models (like the Tensorflow demos with MNIST) but anything much larger and things really start to take forever. Like, you'll be waiting for months.
The AWS P2 instances recommended for the course ($0.90/hour) have half a K80, which has access to 12 GB of VRAM. The list price for that card is $5000.
The GTX 1080 Ti has almost as much VRAM as half a K80, 11GB, and can be found for around $700.
One point of comparison is Cam Davidson Pilon's Bayesian Methods for Hackers, they have a similar vibe: practical applied advice from a field that tilts towards the academic...
In fact that book inspired me to create a spreadsheet that implements MCMC in order to make it easy to understand and visualize - we're planning to start an "Introduction to Machine Learning" course in a couple of months where I hope to show off the result of this...
I have done a few MOOCs: Andrew Ng's machine learning, Coursera ML specialisation, edx Analytics Edge and all of them were good learning experience but fast ai's deep learning part 1 really stood out.
For me, the combination of Deep Learning Book + Fast ai MOOC + CS231n (youtube videos & assignments) cover almost everything I want to learn about the subject.
@jph00, I'm half way through neural style transfer and I am loving it.
I'll go edit the post with this info now - but figured I'd add a comment here for those that have already read it.
I felt like the setup of the first part was at time a little frustrating, since I started it during a time when Keras had switched to a newer version which wasn't compatible some of the utility code that was written. Add this to the newbie factor to notebooks, and it was a pretty rough first week or so to setup and get actual learning done. It took me a bit of time to realize notebooks were more like repeatable trains of thoughts than well-written production code.
The other thing is that some of the supplementary material was really long and at times made me feel like, why take this course instead of just going through a course mentioned in supplementary material (e.g. CS231n wrt CNN's)? I think I ended up spending hundreds of hours reading/watching/practicing CNN's by reading papers, watching Karpathy's 231n videos, and doing a couple tutorials from data scientists who elaborated on a specific problem they were solving. I guess at times when watching Part 1's videos and doing the notebooks, I didn't feel like I was 'getting it' as much or as fast as when I was getting the information from other means.
While the forum discussions can be helpful, it was also wadding through a ton of unstructured content. And the service they used for the forums hotmapped the find shortcut to their own built-in search, which was a little annoying. I don't know a great solution to having more structured data, but perhaps adding some of questions that were answered to the lesson's Wikipedia. Or maybe splitting the technical issues from the high level concepts.
Lastly, I think it was either HN or /r/MachineLearning but someone had suggested a book regarding Machine Learning and hands-on Tensorflow usage which I picked up, and I felt like my pace of learning really sped up afterwards. I think part of it was Tensorflow has a lot more written about it so when you encounter an odd problem, chances are someone else has something to say about it.
All criticisms aside, I think I'll try going through Part 1 a second time around prior to going through Part 2.
FWIW, I think the supplementary material wasn't strictly necessary from a 'using the libraries' point of view. I'll never contribute to this field, but I feeling like Jeremy's explanation were conceptually helpful if not rigorous.
For me, the order was: lesson, notebook+lesson, wiki + supplementary material if something wasn't making sense, and the discussion board if all else failed. That discussion board is basically useless unless you're taking the class in real time I think, which has been my experience for all MOOCs.
Different strokes for different folks.
CS231n is great and I'm glad you checked it out. There isn't really anything nearly as good online unfortunately for the other areas we covered (NLP, collaborative filtering, etc). CS231n is not as code-oriented as the fast.ai course, and doesn't try to get you to the point you can replicate state of the art results - but it's got great conceptual content and Karpathy is a terrific technical communicator. I think the two courses go hand in hand quite nicely!
Pro-tip: Press CMD+F (or CTRL+F) a second time to "override" the shortcut for search.
It would be good if someone could revisit part.1 and make those minor editorial fixes if they haven't already done so.
I might be being too precious about my time, but I also found the first video about your teaching philosophy somewhat gratuitous; I wish I hadn't watched it.
We're redoing the whole of part 1 starting in October so this problem will be fully resolved then. Until then, follow the links on course.fast.ai or the forums, rather than what you see in the part 1 videos, or just remember to always replace platform.ai with course.fast.ai.
Your lecture on top down course philosophy actually helped me change my perspective. It's a welcome positive change so thank you.
(You can also install everything locally using the setup scripts available on the course github repo.)
(I know you have plenty to do, so really no pressure, this is simply a nice to have for newcomers that 'tuned in late'.)
(Although if folks follow the course and use the AMI or setup scripts provided, all the correct versions will be installed automatically still today.)
Recently started the first course and wanted to say I am really loving it. Thank you and Rachel for your time and effort into making this topic more accessible.
Getting things set up for lesson 1/2 I noticed there were a few confusing hiccups along the way, I was wondering how do I get access to edit the wikipedia to smooth out a few issues I struggled with?
The forums are generally helpful but it's a lot to wade through and overwhelming for newer participants.
Upgrading the lessons to Keras 2 is of course nice; I wonder if the videos will need to be re-recorded for that?
When we redo part 1 in October, we'll try to find a way to incorporate a clear link to an errata page or FAQ in each video, so that anyone with issues has one place to go.
I'm not sure I can any more strongly say that you need to get this URL into these videos using whatever tools you can, whatever tools the platform provides. If someone misses it because of the ineffectiveness of the platform, you still get credit for trying!
I assume it should also be the very first thing in the video description at this point. You are losing many more people who would never take the time to share this issue with you due to stale content! (There's a reason it's half-way to the top on your announcement of part 2...)
Am watching Part 1 now and only two sessions in, but there are some tweaks I would love to see. First the positive: I really appreciate the approach of hands-on and teaching theory only as it's needed and in conjunction with applied work.
Would love to see a tiny bit of time spent on setting up tools for people who already have good Nvidia GPU systems. My Ubuntu system has python (2.7) and python 3.5 both installed, but no Anaconda... I don't know if I'm going to totally screw up my system if I install Anaconda over those working existing python installations, for example.
It would be great to hear the questions. I can barely hear a faint voice in the background as Rachel reads the questions (presumably from online) but it seems like it would be a very easy tweak to have her closer to a microphone. Maybe this happens in later sessions and I just haven't gotten to them yet.
It would be great if so many things weren't abbreviated in the code variable and function names. Examples: nb for notebook, t for ?, a for array(?), U, s, and Vh for ?, ims (?), interp (interpretation or interpreter or interpolation?), sp, v, r, f, k, trn (train or turn or something else?), pred (predicate or prediction?), vec_numba (?)... the list goes on. Yes if I knew the field these might be obvious but for some of them I'm still learning. "np" I understand since that's standard practice and you explained it. It would be really really easy to just spell out words in the code, as well as being a good practice in general imho, and, since you are trying to teach stuff, it would seem appropriate.
Those nitpicks aside I'm really stoked about the course and really appreciate everything you have been putting into it!
Anaconda lives in its own folder (usually in $HOME). You can't screw anything up by installing it, and in fact you can hardly tell it's there. You need to set your path to actually use Anaconda's programs, and you shouldn't do that in .bashrc, but just in the shells where you are actively using it, with something like:
export PATH=/home/<you>/Development/Tools/Anaconda3/bin:$PATHThe question volume improves after lesson 3 when we get an audience mic.
It's definitely not perfect - the notebooks are not commented and the material does tend to jump around a bit - but what it does do, it does extremely well.
This course will teach you how to actually build deep learning systems and build the kinds of things you read about PhDs doing...
Part 2 seems equally strong in content (if not stronger). It's a beautiful time to be n00b in deep learning & AI, and learn via material like these. No excuses. Knowledge is power.
The Tiramisu model from lesson 14 takes like 25 hours to train and at $0.90 per hour, it adds up pretty fast...
[1]: https://blogs.dropbox.com/tech/2017/04/creating-a-modern-ocr...
THANK YOU for doing this.
I'll also link the text 'part 1' in that paragraph to make it more clear.
This seems a bit odd.