# \[ANN\] Announcing FastAI.jl

**URL:** https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394
**Category:** Package Announcements
**Tags:** package, announcement, flux, machinevision, machine-learning
**Created:** [July 27, 2021, 5:40pm UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394 "2021-07-27T17:40:26Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![holylorenzo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/holylorenzo/32/34169_2.png) [@holylorenzo](https://discourse.julialang.org/u/holylorenzo)
#### Post date: [July 27, 2021, 5:40pm UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/1 "2021-07-27T17:40:27Z")

</div>

I am excited to announce the release of [FastAI.jl](https://github.com/FluxML/FastAI.jl) which has been in the works for over a year now. FastAI.jl is a high-level, user-friendly library for training deep learning models built on Flux.jl. It draws inspiration from the great [fastai](https://docs.fast.ai). We hope the package makes the Julia deep learning ecosystem more approachable for beginners and life easier for more advanced practitioners.

The extensive [documentation](https://fluxml.ai/FastAI.jl/dev/) has a host of tutorials and examples and you can try them out by installing FastAI.jl or, if you want access to a free GPU, by using this [Google Colab template](https://colab.research.google.com/gist/lorenzoh/2fdc91f9e42a15e633861c640c68e5e8).

Features include

- high-level training loops with hyperparameter scheduling and callbacks
- a learning rate finder
- dataset loading
- efficient data augmentation
- visualizations
- logging
- efficient data loading;
- and many more

FastAI.jl comes with stable low-level and mid-level APIs for doing most things that are possible in fastai. Support for computer vision applications is very good, and we hope to add the high-level functionality for other applications like tabular data, reccomendation systems and text over the following weeks and months. [This documentation page](https://fluxml.ai/FastAI.jl/dev/docs/fastai_api_comparison.md.html) gives a comparison between the original fastai package’s and FastAI.jl’s APIs.

* * *

For those interested in learning more, we’ll be hosting a Q&A session 02.08., 10PM UTC (03.08., 12AM CEST | 8AM AEST). Jeremy Howard (creator of fastai) will be there, too.

**Meeting link: [Launch Meeting - Zoom](https://uwmadison.zoom.us/j/97409965147)**  
**Link for collecting and upvoting questions: [Pigeonhole Live](https://pigeonhole.at/FASTAIJL/q/2394812)**

 ![image](https://global.discourse-cdn.com/julialang/original/3X/7/b/7b6a661cd71ba895df772d869be5bb6f9ffddf6f.jpeg)

Package registration ~~is currently blocked but should go through soon.~~ is through, thanks to @brenhinkeller

---

<div class="post-metadata">

### Author: ![sivark](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sivark/32/960_2.png) [@sivark](https://discourse.julialang.org/u/sivark)
#### Post date: [July 27, 2021, 11:17pm UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/2 "2021-07-27T23:17:16Z")

</div>

This is a very cool project! 🙂

That said, unless you are representing FastAI (which is a specific organization/entity), it might be better to choose another name if all you wish to portray is a similar flavor of ease-of-use.

I don’t know if FastAI has registered trademarks (and can therefore legally force you to change the name), but regardless, it doesn’t behoove well to create confusion and put them in the awkward position of explaining that they are not responsible for the Julia library (and the lack of feature parity, or distinct design decisions, etc).

Imitation is certainly a form of flattery, but the way to keep it in good taste is to not copy the name 🙂

Forgive this comment if you do represent FastAI after all.

---

<div class="post-metadata">

### Author: ![rayegun](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rayegun/32/26729_2.png) [@rayegun](https://discourse.julialang.org/u/rayegun)
#### Post date: [July 28, 2021, 1:04am UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/3 "2021-07-28T01:04:13Z")

</div>

See [here](https://news.ycombinator.com/item?id=27975519) it looks like Jeremy Howard, (one of) the maintainer(s)/creator of FastAI is thrilled to have the project named like this and is also excited about the general Julia ML community! Hopefully trademarks and stuff have been sorted if necessary but if the author is pleased then that’s 99% of the way there.

---

<div class="post-metadata">

### Author: ![ToucheSir](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/touchesir/32/14411_2.png) [@ToucheSir](https://discourse.julialang.org/u/ToucheSir)
#### Post date: [July 28, 2021, 2:28am UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/4 "2021-07-28T02:28:12Z")

</div>

We (well, not me, the folks who put the hard work into FastAI and supporting libraries) have been in touch with Jeremy and fast.ai contributors off and on since the project’s inception 🙂. You can probably find the nitty-gritty details scattered across Zulip and the fastai discord.

---

<div class="post-metadata">

### Author: ![Akatz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/akatz/32/15164_2.png) [@Akatz](https://discourse.julialang.org/u/Akatz)
#### Post date: [July 28, 2021, 5:46am UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/5 "2021-07-28T05:46:20Z")

</div>

> [@rayegun](#):
>
> s like Jeremy Howard, (one of) the maintainer(s)/creator of FastAI is thrilled to have the project named like

And we have this tweet:

> <https://twitter.com/jeremyphoward/status/1420146809586868225>
>
> Flux @FluxML

---

<div class="post-metadata">

### Author: ![Juan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juan/32/7657_2.png) [@Juan](https://discourse.julialang.org/u/Juan)
#### Post date: [July 28, 2021, 10:30am UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/6 "2021-07-28T10:30:28Z")

</div>

How does FasAI.jl fit among other similar Julia’s packages and how it compares to them (Flux, Knet, Merlin, TensorFlow…)?

---

<div class="post-metadata">

### Author: ![sivark](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sivark/32/960_2.png) [@sivark](https://discourse.julialang.org/u/sivark)
#### Post date: [July 29, 2021, 3:10am UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/7 "2021-07-29T03:10:04Z")

</div>

Great to hear! @holylorenzo & co, Good luck with the project! 🎉  
The modular pieces look particularly useful and exciting for everyone in the Julia ecosystem 👍😁

---

<div class="post-metadata">

### Author: ![DoktorMike](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/doktormike/32/2736_2.png) [@DoktorMike](https://discourse.julialang.org/u/DoktorMike)
#### Post date: [July 29, 2021, 11:28am UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/8 "2021-07-29T11:28:26Z")

</div>

FastAI builds on top of Flux which it uses as a differentiable programming toolbox for neural networks. FastAI then provides different levels of abstractions that allows practitioners to quickly develop models for specific tasks such as image classification etc. There are many more nuances of course and I’m sure the author’s can provide a lot more details but that’s how I view it currently.

---

<div class="post-metadata">

### Author: ![holylorenzo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/holylorenzo/32/34169_2.png) [@holylorenzo](https://discourse.julialang.org/u/holylorenzo)
#### Post date: [July 29, 2021, 12:13pm UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/9 "2021-07-29T12:13:33Z")

</div>

FastAI.jl is built on top of many packages and combines them. It uses Flux.jl for models and optimization, but is still useful if you’re not using Flux.jl. Flux.jl is to FastAI.jl what PyTorch is to fast.ai. FastAI.jl builds on many other packages as well; some purpose-built for FastAI.jl, but all useful in their own right. From the docs:

- [Flux.jl](https://github.com/FluxML/Flux.jl) provides models, optimizers, and loss functions, fulfilling a similar role to PyTorch
- [MLDataPattern.jl](https://github.com/JuliaML/MLDataPattern.jl) gives you tools for building and transforming data containers
- [DataLoaders.jl](https://github.com/lorenzoh/DataLoaders.jl) takes care of efficient, parallelized iteration of data containers
- [DLPipelines.jl](https://github.com/lorenzoh/DLPipelines.jl) provides the low-level `LearningMethod` interface for defining data pipelines.
- [DataAugmentation.jl](https://github.com/lorenzoh/DataAugmentation.jl) takes care of the lower levels of high-performance, composable data augmentations.
- [FluxTraining.jl](https://github.com/lorenzoh/FluxTraining.jl) contributes a highly extensible training loop with 2-way callbacks

You may also find [this new blog post](https://lorenzoh.github.io/posts/fastaijl_ecosystem.html) to give a good overview of how FastAI.jl brings these together in a high-level interface.

---

<div class="post-metadata">

### Author: ![holylorenzo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/holylorenzo/32/34169_2.png) [@holylorenzo](https://discourse.julialang.org/u/holylorenzo)
#### Post date: [August 1, 2021, 8:37pm UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/10 "2021-08-01T20:37:12Z")

</div>

I’ve just updated the description with the meeting link for the Q&A about FastAI.jl that’s happening 02.08., 10PM UTC (03.08., 12AM CEST | 8AM AEST). If you already have a question in mind, you can submit it to the pigeonhole link.

**Meeting link: [Launch Meeting - Zoom](https://uwmadison.zoom.us/j/97409965147)**  
**Link for collecting and upvoting questions: [Pigeonhole Live](https://pigeonhole.at/FASTAIJL/q/2394812)**

---

<div class="post-metadata">

### Author: ![claforte](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/claforte/32/19115_2.png) [@claforte](https://discourse.julialang.org/u/claforte)
#### Post date: [August 2, 2021, 12:59am UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/11 "2021-08-02T00:59:48Z")

</div>

Congratulations, fantastic progress!  
I tried your Pluto.jl blog post/example from [https://lorenzoh.github.io/posts/fastaijl\_ecosystem.html](https://lorenzoh.github.io/posts/fastaijl_ecosystem.html).

There was a small issue that prevented it to work for me:

```julia
From worker 2: WARNING: both FastAI and CairoMakie export "Image"; uses of it in module workspace2 must be qualified
From worker 2: WARNING: both FastAI and CairoMakie export "Label"; uses of it in module workspace3 must be qualified

```

I replaced one of the lines with:

```julia
blocks = inputblock, targetblock = FastAI.Image{2}(), FastAI.Label(["cats", "dogs"])

```

… and it worked almost until the end. The final `fitonecycle!(learner, 10)` seems to freeze for me… I’m not sure if it’s because it’s running too slowly on my CPU…?

`

---

<div class="post-metadata">

### Author: ![holylorenzo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/holylorenzo/32/34169_2.png) [@holylorenzo](https://discourse.julialang.org/u/holylorenzo)
#### Post date: [August 2, 2021, 7:51am UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/12 "2021-08-02T07:51:41Z")

</div>

Thanks for the feedback, I’ll update the imports so it works.

Unfortunately, Pluto.jl doesn’t yet show you the output during training, so once you enable the cell it will only return once the training is complete which can take quite some time, especially the first time when it’s compiling. You’ll get a better interactive output for the training part in a Jupyter notebook atm. Training should also be prohibitively slow on a CPU, so I recommend using a GPU. If you don’t have access to one, you can try out [this Google Colab template](https://colab.research.google.com/gist/lorenzoh/2fdc91f9e42a15e633861c640c68e5e8) and copy the code over. Let me know if everything works out!

---

<div class="post-metadata">

### Author: ![amqdn](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/amqdn/32/17306_2.png) [@amqdn](https://discourse.julialang.org/u/amqdn)
#### Post date: [August 6, 2021, 9:54pm UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/13 "2021-08-06T21:54:51Z")

</div>

Wait, you got a Julia kernel working on Colab??

Is there a reference for some of the high-level philosophy guiding the FastAI.jl port? I’m interested in contributing but am somewhat intimidated by the mapping from Python to Julia, specifically what has constrained Jeremy/Sylvain’s choices and what wouldn’t in Julia.

EDIT: I am reading through the API comparison doc now.

---

<div class="post-metadata">

### Author: ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)
#### Post date: [August 6, 2021, 9:57pm UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/14 "2021-08-06T21:57:52Z")

</div>

> [@Julia on Google Colab: Free GPU-Accelerated Shareable Notebooks](https://discourse.julialang.org/t/julia-on-google-colab-free-gpu-accelerated-shareable-notebooks/15319/45):
>
> So this is another version agnostic solution I just came up with: [https://github.com/johnnychen94/colab-julia-bootstrap](https://github.com/johnnychen94/colab-julia-bootstrap) No major functionality difference to [ageron’s template](https://discourse.julialang.org/t/julia-on-google-colab-free-gpu-accelerated-shareable-notebooks/15319/40) but I guess more readable because it’s much shorter grinning_face_with_smiling_eyes

---

<div class="post-metadata">

### Author: ![Klaas\_Pauly](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/klaas_pauly/32/14819_2.png) [@Klaas\_Pauly](https://discourse.julialang.org/u/Klaas_Pauly)
#### Post date: [November 29, 2021, 3:50pm UTC](https://discourse.julialang.org/t/ann-announcing-fastai-jl/65394/15 "2021-11-29T15:50:55Z")

</div>

Has anyone else run into problems with the visualization based on the functions defined under interpretation (in `method.jl`)? I consistently seem to be getting `ERROR: UndefVarError: showbatch not defined` or `ERROR: UndefVarError: showoutputs not defined` etc, even though I am of course `using FastAI` and I checked that FastAI.jl does `include("interpretation/method.jl")` and `export showbatch` etc. It also doesn’t help when I explicitly state `FastAI.showbatch` or so. I am working VS Code. What am I missing here? Everything else works like a charm though!
