Skip to content

Commit 07b3ddc

Browse files
committed
Update GSoC list with 2023 ideas
1 parent e0ed181 commit 07b3ddc

File tree

3 files changed

+53
-86
lines changed

3 files changed

+53
-86
lines changed

_layout/navbar.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@
2222
<a class="nav-link" href="https://fluxml.ai/Flux.jl/stable/ecosystem/">Ecosystem</a>
2323
</li>
2424
<!--
25-
<li class="nav-item">
26-
<a class="nav-link" href="/gsoc/">GSoC</a>
27-
</li>
2825
<li class="nav-item">
2926
<a class="nav-link" href="/gsod/">GSoD</a>
3027
</li>
3128
-->
3229
<li class="nav-item">
3330
<a class="nav-link" href="/blog/">Blog</a>
3431
</li>
32+
<li class="nav-item">
33+
<a class="nav-link" href="/gsoc/">GSoC</a>
34+
</li>
3535
<li>
3636
<a class="nav-link" href="/governance/">Governance</a>
3737
</li>

gsoc.md

+49-82
Original file line numberDiff line numberDiff line change
@@ -6,112 +6,79 @@ title = "Google Summer of Code"
66
<h1>FluxML Projects - Summer of Code</h1>
77
~~~
88

9-
Flux usually takes part in [Google Summer of Code](https://summerofcode.withgoogle.com) as a NumFocus organization. We follow the same [rules and application guidelines](https://julialang.org/jsoc/projects/) as Julia, so please check there for more information on applying. Below are a set of ideas for potential projects (though you are welcome to explore anything you are interested in).
9+
Flux usually takes part in [Google Summer of Code](https://summerofcode.withgoogle.com) as a NumFocus organization. We follow the same [rules and application guidelines](https://julialang.org/jsoc/projects/) as Julia, so please check there for more information on applying. Below are a set of ideas for potential projects (though you are welcome to explore anything you are interested in). **Please note that year for the idea list. Project ideas from a previous year will not always carry over to a new year.**
1010

11-
Flux projects are typically very competitive; we encourage you to get started early, as successful contributors typically have early PRs or working prototypes as part of the application. It is a good idea to simply start contributing via issue discussion and PRs and let a project grow from there; you can take a look at [this list of issues](https://github.com/FluxML/Flux.jl/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) for some starter contributions.
11+
Flux projects are typically very competitive; we encourage you to get started early, as successful contributors typically have early PRs or working prototypes as part of the application. It is a good idea to simply start contributing via issue discussion and PRs and let a project grow from there; you can take a look at [this list of issues](https://github.com/FluxML/Flux.jl/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) for some starter contributions. Please see the [contributing guide](https://github.com/FluxML/Flux.jl/blob/master/CONTRIBUTING.md) for help first.
1212

13-
## Metalhead.jl Developement
13+
# FluxML GSoC 2023 Ideas List
1414

15-
**Difficulty:** Medium (175h)
15+
## Writing Julia-native kernels for common NN operations
1616

17-
**Expected outcomes:** Help us improve [Metalhead.jl](https://github.com/FluxML/Metalhead.jl) by
18-
@@tight-list
19-
- adding new models
20-
- porting pre-trained weights
21-
- extending the model interfaces to make them more customizable
22-
@@
17+
Implement optimized kernels for common neural network operations for which we don't already have Julia-native implementations. This project will require experience with GPU kernel writing and performance optimizations.
2318

24-
**Skills:** Familiarity with vision model architectures and Flux.jl
19+
**Difficulty.** Hard. **Duration.** 350 hours
2520

26-
**Mentors:** [Kyle Daruwalla](https://github.com/darsnack)
21+
### Description
2722

28-
## FastAI.jl Time Series Development
23+
Many ML frameworks are making the move away from vendor-specific libraries (like CUBLAS, CUDNN, etc.) towards more generic, JIT-compiled implementations of ML-related kernels, like BLAS, softmax, ReLU, etc. The reasons for this move are many-fold:
24+
- Vendor-provided libraries often only work on that vendor's hardware and software
25+
- These libraries only support certain element types, tensor shapes/sizes, and limited array view/stride/transpose support
26+
- These libraries often expect to be executed from the host, without a device-side launchable equivalent
27+
- These libraries have unreliable build systems or are binary blobs
2928

30-
**Difficulty:** Medium (350h)
29+
Improving this state of affairs for Flux will involve using Julia's existing GPU and compute kernel libraries (e.g KernelAbstractions.jl) to implement various accelerated, cross-vendor routines. These kernels should be both composable and performance competitive with Flux's current generic code paths. Examples of routines specifically useful for implementing Neural Networks include:
3130

32-
In this project, you will assist the [ML community team](https://julialang.zulipchat.com/#narrow/stream/237432-ml-ecosystem-coordination) with building time series methods for FastAI.jl on top of the existing JuliaML + FluxML ecosystem packages. Some familiarity with the following Julia packages is preferred, but it is not required:
31+
- GEMM and GEMV
32+
- Softmax
33+
- Batchnorm and Layernorm
34+
- ReLU
35+
- Convolution/correlation
3336

34-
@@tight-list
35-
* [MLDataPattern.jl](https://github.com/JuliaML/MLDataPattern.jl.git)
36-
* [FluxTraining.jl](https://github.com/lorenzoh/FluxTraining.jl.git)
37-
* [DataAugmentation.jl](https://github.com/lorenzoh/DataAugmentation.jl)
38-
@@
37+
The ideal candidate should have experience with what operations are used in popular ML models and how they are commonly implemented on GPU. This includes experience writing and benchmarking high performance GPU kernels. Because kernels will be required for both training and inference, an understanding of automatic differentiation (AD) is also highly recommended.
3938

40-
**Expected outcomes:** You will
41-
@@tight-list
42-
- load a working time series dataset using the FastAI.jl data registry
43-
- create new block methods for time series tasks
44-
- load at least one working time series model into a learner
45-
- develop an example tutorial that ties all the previous steps together
46-
@@
39+
**Mentors.** [Julian Samaroo](https://github.com/jpsamaroo), [Kyle Daruwalla](https://github.com/darsnack), [Brian Chen](https://github.com/ToucheSir)
4740

48-
**Skills:** Familiarity with deep learning pipelines, common practices, Flux.jl, and recurrent neural networks
41+
### Prerequisites
4942

50-
**Mentors:** [Lorenz Ohly](https://github.com/lorenzoh), [Kyle Daruwalla](https://github.com/darsnack), [Brian Chen](https://github.com/ToucheSir)
43+
- Julia language fluency is essential.
44+
- Experience with low-level GPU kernel programming is strongly recommended.
45+
- Experience with common primitive machine learning ops (forwards and backwards passes) and their interaction is recommended.
46+
- Familiarity with existing prior art such as [tiny-cuda-nn](https://github.com/NVlabs/tiny-cuda-nn) is preferred.
5147

52-
## FastAI.jl Text Development
48+
### Your contributions
5349

54-
**Difficulty:** Medium (350h)
50+
- A new package containing the optimized kernels and any supporting code for integration into Flux/Flux's operation library [NNlib.jl](https://github.com/FluxML/NNlib.jl).
51+
- Tests on CI and a simple benchmark harness for the new NN kernel library.
52+
- A proof-of-concept example showing the kernels being used with kernel fusion on device (GPU).
5553

56-
In this project, you will assist the [ML community team](https://julialang.zulipchat.com/#narrow/stream/237432-ml-ecosystem-coordination) with building text methods for FastAI.jl on top of the existing JuliaML + FluxML ecosystem packages. Some familiarity with the following Julia packages is preferred, but it is not required:
5754

58-
@@tight-list
59-
* [MLDataPattern.jl](https://github.com/JuliaML/MLDataPattern.jl.git)
60-
* [FluxTraining.jl](https://github.com/lorenzoh/FluxTraining.jl.git)
61-
* [JuliaText](https://github.com/JuliaText)
62-
@@
55+
## Benchmark tooling for common models and operations
6356

64-
**Expected outcomes:** You will
65-
@@tight-list
66-
- load a working text dataset using the FastAI.jl data registry
67-
- create new block methods for textual tasks
68-
- load at least one working text model into a learner
69-
- develop an example tutorial that ties all the previous steps together
70-
@@
57+
Create a benchmarking tool for the FluxML ecosystem that we can invoke on demand from PRs. This project will require previous experience with training machine learning models at a "low-level" (i.e. without the use of tools like PyTorch Lightning).
7158

72-
**Skills:** Familiarity with deep learning pipelines, common practices, Flux.jl, and JuliaText
59+
**Difficulty.** Moderate. **Duration.** 350 hours
7360

74-
**Mentors:** [Lorenz Ohly](https://github.com/lorenzoh), [Kyle Daruwalla](https://github.com/darsnack), [Brian Chen](https://github.com/ToucheSir)
61+
### Description
7562

76-
## Differentiable Computer Vision
63+
FluxML's machine learning stack is distributed across many packages, and each package is designed to function as independently as possible. This is done to maximize code-reuse across the Julia ML ecosystem. As a result, it is challenging for us to quantitively determine the performance impact of code changes without manual testing. The goal of this project is to develop a FluxML-specific benchmarking package. The package should allow us to install specific commits of various packages across the FluxML stack, then run a benchmarking suite. The test suite will include low-level operations like convolution or simple gradient calls, as well as complete end-to-end examples like a full forward/backward pass of Metalhead.jl models.
7764

78-
**Difficulty:** Hard (350h)
65+
The ideal candidate should have experience with multiple ML task setups such as vision, autoregressive language modeling, time series forecasting, etc. Furthermore, some experience with Github Actions and continuous integration (CI) is suggested.
7966

80-
Create a library of utility functions that can consume Julia's imaging libraries to make them differentiable. With Zygote.jl, we have the platform to take a general purpose package and apply automatic differentiation to it.
67+
**Mentors.** [Brian Chen](https://github.com/ToucheSir), [Kyle Daruwalla](https://github.com/darsnack)
8168

82-
**Expected outcomes:** You will
83-
@@tight-list
84-
- write AD rules for functions in existing computer vision libraries
85-
- demonstrate the use of these newly differentiable libraries for tasks such as homography regression
86-
@@
69+
### Prerequisites
8770

88-
**Skills:** Familiarity with automatic differentiation, deep learning, and defining (a lot of) custom adjoints
71+
- Julia language fluency is essential.
72+
- Github CI and experience with GH Actions is strongly suggested.
73+
- Experience with more than one ML task
74+
(e.g. image classification, autoregressive language modeling, etc.).
75+
- Familiarity with prior art is preferred:
76+
- [BenchmarkCI.jl](https://github.com/tkf/BenchmarkCI.jl)
77+
- [JuliaGPU speed center](https://speed.juliagpu.org)
78+
- [TaylorDiff benchmarking site](https://benchmark.tansongchen.com/TaylorDiff.jl)
8979

90-
**Mentors:** [Dhairya Gandhi](https://github.com/DhairyaLGandhi/)
80+
### Your contributions
9181

92-
## FermiNets: Generative Synthesis for Automating the Choice of Neural Architectures
93-
94-
**Difficulty:** Hard (175h)
95-
96-
The application of machine learning requires a practitioner to understand how to optimize a neural architecture for a given problem, or does it? Recently, techniques in automated machine learning, also known as AutoML, have dropped this requirement by allowing for good architectures to be found automatically. One such method is the [FermiNet](https://arxiv.org/abs/1809.05989), which employs generative synthesis to give a neural architecture which respects certain operational requirements.
97-
98-
**Expected outcomes:** The goal of this project is to implement the FermiNet in Flux to allow for automated synthesis of neural networks.
99-
100-
**Mentors:** [Chris Rackauckas](https://github.com/ChrisRackauckas) and [Dhairya Gandhi](https://github.com/DhairyaLGandhi/)
101-
102-
## Differentiable Rendering
103-
104-
**Difficulty:** Hard (350h+)
105-
106-
We have an existing package, [RayTracer.jl](https://github.com/avik-pal/RayTracer.jl), which is motivated by OpenDR and exists to do differentiable raytracing with Flux.jl and Zygote.jl.
107-
108-
**Expected outcomes:** You will
109-
@@tight-list
110-
- implement at least 2 alternative rendering models like NeRF, VolSDF, Neural Raytracing, etc.
111-
- make improvements to RayTracer.jl to use the latest Flux libraries
112-
- update RayTracer.jl for ChainRules.jl
113-
@@
114-
115-
**Skills:** GPU programming, deep learning, familiarity with the literature, familiarity with defining custom adjoints
116-
117-
**Mentors:** [Dhairya Gandhi](https://github.com/DhairyaLGandhi/), [Avik Pal](https://github.com/avik-pal), [Julian Samaroo](https://github.com/jpsamaroo)
82+
- A new FluxML package, FluxBenchmarks.jl, that will perform configurable benchmarking across our ML stack.
83+
- Github Actions integration for FluxBenchmarks.jl to invoke the tool from PRs.
84+
- A benchmarking suite that will build your experience with different types of ML models and operations across the stack.

tutorialposts/2021-02-07-convnet.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ title = "Simple ConvNet"
33
published = "7 February 2021"
44
author = "Elliot Saba, Adarsh Kumar, Mike J Innes, Dhairya Gandhi, Sudhanshu Agrawal, Sambit Kumar Dash, fps.io, Carlo Lucibello, Andrew Dinhobl, Liliana Badillo"
55
external = "http://fluxml.ai/Flux.jl/stable/tutorials/2021-02-07-convnet/"
6-
+++
6+
+++

0 commit comments

Comments
 (0)