> The design of MLX is inspired by frameworks like PyTorch, Jax, and ArrayFire. A noteable difference from these frameworks and MLX is the unified memory model. Arrays in MLX live in shared memory. Operations on MLX arrays can be performed on any of the supported device types without performing data copies. Currently supported device types are the CPU and GPU.
Weird and unfortunate that a framework made by Apple for Apple Silicon doesn't support targeting the Apple Neural Engine.
Neural engine is not helpful for training, its inference hardware, whereas this targets training and research. They use Accelerate and Metal (with seemingly similar/identical performance shaders that their Pytorch adaption uses) which allows for high performance training.
This project additionally serves as documentation for other platforms to integrate Silicon, which is good.
Still, being to run LLaMa2 on the NPU would be awesome due to the unified memory. Apple's restricting its use to only Apple-approved models is frankly irksome.
The main thing about this framework is, that it uses unified memory with GPU. This gives maximum performance. Neural engine one the other hand is optimized for low-energy inference (which is mostly an advantage on mobile devices), and imposes limitations and restrictions since it's hardware supports only very specific neural network operations. Thus supporting neural engine within a universal machine learning platform doesn't make much sense, it would just be a bottleneck.
The way to use neural engine is to convert existing models that strictly adhere to the limitations of the neural engine hardware (excluding many operations used in non-restricted NN models) for use in energy-restricted inference applications only. It's a different application scenario.
If PyTorch can't use it, it's really not going to pick up at all.
They did half of the work, they now need to do the other half, which is contribute to PyTorch so it can use MLX data types so that PyTorch code can run unmodified and have the advantages of Apple silicon.
17 comments
[ 2.9 ms ] story [ 46.8 ms ] threadWeird and unfortunate that a framework made by Apple for Apple Silicon doesn't support targeting the Apple Neural Engine.
This project additionally serves as documentation for other platforms to integrate Silicon, which is good.
The way to use neural engine is to convert existing models that strictly adhere to the limitations of the neural engine hardware (excluding many operations used in non-restricted NN models) for use in energy-restricted inference applications only. It's a different application scenario.
I thought you could run arbitrary networks via CoreML, there's just limited precision and maybe not every operation available?
What does this do differently? AFAIK Jax has an experimental apple GPU backend as well.
They did half of the work, they now need to do the other half, which is contribute to PyTorch so it can use MLX data types so that PyTorch code can run unmodified and have the advantages of Apple silicon.
Access to ml-explore.github.io has been blocked by Cisco Umbrella. I wonder why.
I'd say it's due to some DNS "protection" config on a corporate or public access point, or maybe on a corporate laptop or device.