Deep learning with Apple Silicon: go-metal

For the past few months I have been working on a Go module that makes it possible to perform deep learning on Apple Silicon. It's coming along well.

Go-Metal is a PyTorch-inspired deep learning library built specifically for Apple Silicon. It provides GPU-accelerated tensor operations, automatic differentiation, and a complete training pipeline - all with the safety and simplicity of Go. It's only dependency apart from the standard library is google.golang.org/protobuf, so the package can read and write ONNX files.

Naturally, since this library is intended for use on Apple machines with Apple GPUs, it's only useful for people on Macs, but I'm relatively pleased with how it's coming along. 

Why not CUDA, or support for NVIDIA GPUs? Well, the answer is simple: I have a Mac with Apple Silicon, and at the moment I don't have a machine with NVIDIA GPUs. I plan on picking one up at some point, and then I'll probably make a version of this with CUDA support.

Also, I'm working on a new course focusing on deep learning, and there was no better way to refresh my memory on the intricacies of machine learning than to build something from scratch. Plus, it's fun.

If you're interested, and have a Mac, give it a try. I'm looking for feedback and the inevitable bugs that need to be fixed.

Categories: : apple-silicon, machine-learning