Flux.jl icon indicating copy to clipboard operation
Flux.jl copied to clipboard

example for using apple GPU with flux

Open rcherukuri12 opened this issue 1 year ago • 4 comments

Motivation and description

Need an example for using Apple silicon.

Need clear documentation that tell you to do things twice.

First time :

Using Flux, Metal Flux.gpu_backend!( "Metal")

Then exit session

Then launch again

Using Flux, Metal Flux.GPU_BACKEND Flux.GPU_BACKEND = 'Metal'

Possible Implementation

Document procedure properly in the front page for GPU switching .

rcherukuri12 avatar Mar 11 '24 13:03 rcherukuri12

There's some documentation here: http://fluxml.ai/Flux.jl/stable/gpu/#Selecting-GPU-backend Could always be better though.

Support for anything but CUDA is a bit experimental. For me e.g. this model http://fluxml.ai/Flux.jl/stable/models/quickstart/ does not work on Metal, but I didn't try hard & maybe have wrong versions or something. Do some models work for you?

I believe that many functions in NNlib need to call the Metal equivalents, parallel to how things here https://github.com/FluxML/NNlib.jl/tree/master/ext/NNlibCUDAExt call CUDA functions.

mcabbott avatar Mar 11 '24 14:03 mcabbott

Thank you . For example the quick start example works perfectly with Apple silicon but needs to be documented.

The only thing I had to do is switch to "using Metal" instead of "CUDA" But also exit and create new session . This allowed re-compilation of Flux with Metal.

Screenshot 2024-03-11 at 6 57 32 AM

Can I recommend you put comments in the code ? From this :

using Flux, CUDA, Statistics, ProgressMeter Like this : using CUDA # switch to 'using Metal' for Apple silicon using Flux, Statistics, ProgressMeter

Screenshot 2024-03-11 at 7 34 20 AM

rcherukuri12 avatar Mar 11 '24 15:03 rcherukuri12

Can I recommend you put comments in the code ?

Feel free to submit a pull request! However, it takes 95 seconds to train on my Apple Silicon GPU and 7 seconds to train on my Pi5's CPU so it might be worth waiting for better support before recommending it in the documentation.

christiangnrd avatar Mar 12 '24 00:03 christiangnrd

Thank you, will do a pull request. I would think the other way , the more people start using, the more requests you get ( know the demand for using Flux on Mac with GPU ), so more incentive to make it faster, quicker.

rcherukuri12 avatar Mar 12 '24 06:03 rcherukuri12