There is also Lux.jl/examples/ImageNet at main · LuxDL/Lux.jl · GitHub with some inside you could ask for yours to be added in there
You can disable that by setting the environment variable XLA_REACTANT_GPU_PREALLOCATE=false (it may make performance slightly worse though).
Alternatively, if you are on GPU you can get memory statistics with Reactant.XLA.allocatorstats
using Reactant
device = Reactant.XLA.default_device(Reactant.XLA.default_backend())
Reactant.XLA.allocatorstats(device)
This will tell you the memory actually used (and the peak memory at any past point) within the preallocated pool.
Another roadblock I encountered in my cv models in lux and flux was the dataloader and image augmentation. I don’t know if it has changed this past year, but there were no so many maintained image augmentations libraries ( at least close to the level of PyTorch). Another good thing in PyTorch is the multi process dataloader which can speed up training a lot.
Reactant let you mesh directly the data and the paremeters however you like between your devices and MLUtils.jl do provide a DataLoader. As for image augmentations I’m not very familiar with Images.jl and everything in there but its big and feature request are welcome I think.
Julia is actually insanely capable for this sort of thing; the issue is that no one has put together an end-to-end off the shelf solution aimed at standard workflows. I use a Julia based data pipeline in both Python and Julia CV workflows, but I’m not sure it makes sense to try to open source since its specialized to medical imaging workflows (DICOM/Lossless JPEG, UInt8/UInt16 only) living entirely outside of the Images.jl ecosystem.
I ended up using pytorch’s dataloader with augmentations through pythoncall for a while but it was not ideal. I agree that Julia has a lot of potential there too ofc, since multithreading and multi processing works really well.