TL;DR: On December 1st, 2025 - my birthday - I released Born v0.5.0. Not because the version number was nice, but because that was the day we successfully trained our first Hierarchical Reasoning Model in pure Go. Nine months of preparation. Two weeks of intense labor. One framework that makes production ML in Go a reality.
The Dream
I've been writing Go for years. Love the language. The simplicity. The tooling. The "it just works" deployment story.
But every time I needed machine learning? Back to Python. TensorFlow. PyTorch. Docker images. Dependency hell. The whole circus.
For years I kept asking myself: Why can't we do ML in Go?
Sure, there were attempts. Gorgonia. GoMLX. Brave projects, but none of them felt like a complete answer. None of them made me think "yes, I can build production ML systems in pure Go."
So I decided to build one myself.
Nine Months of Obsession
Born didn't happen in a weekend hackathon. It was extracted from a private project we'd been building for nine months. Yes, nine months - like bringing a child into the world.
It started with a fundamental problem: we needed fast GPU acceleration in pure Go, without CGO. So we built goffi - a Foreign Function Interface for Go. Then we created Go bindings for WebGPU, making GPU compute accessible without a C compiler.
Layer by layer, we assembled the foundation:
- Tensor operations with automatic broadcasting
- Automatic differentiation engine
- Neural network modules (Linear, Conv2d, Attention, Transformers)
- Optimizers (SGD, Adam)
- GPU acceleration via WebGPU
All of this was running in our internal systems, powering real workloads. But it wasn't ready for the world yet.
The Birth
Two weeks before my birthday, we decided: it's time to open source this.
We extracted the ML framework from our monorepo, cleaned up the API, wrote documentation, and pushed to GitHub. But a repo without polish isn't a product.
So for two weeks, I barely slept:
- Implemented complete transformer architecture support
- Added attention mechanisms (SDPA, Multi-Head, Grouped Query Attention)
- Built KV-cache for efficient LLM inference (3.94x speedup!)
- Created tokenizers and text generation pipeline
- Fixed dozens of edge cases
- Wrote hundreds of tests
Then came December 1st.
My birthday. And also the day our internal HRM model - a Hierarchical Reasoning Model - successfully completed its first training run on Born. This architecture, which outperforms o3-mini and Claude 3.7 on reasoning benchmarks with just 27M parameters, was now trainable in pure Go.
That's when I knew: Born was ready.
I didn't celebrate with cake. I celebrated by pushing v0.5.0 to GitHub and watching the first stars appear.
What is Born?
Born is a modern deep learning framework for Go, inspired by Burn - the excellent Rust ML framework.
The philosophy is simple: "Models are born production-ready."
import "github.com/born-ml/born"
model := born.Load("model.born")
prediction := model.Predict(image)
// That's it. No Python. No containers. Just Go.
What you get:
- Pure Go - No CGO, trivial cross-compilation
- GPU Acceleration - WebGPU backend with 123x speedup
- Type Safety - Generics-powered API with compile-time guarantees
- Single Binary - Deploy your model as one executable
- Modern Architectures - Transformers, Attention, RMSNorm, SwiGLU, GQA
Why Does This Matter?
Because Go is everywhere in production.
Kubernetes. Docker. Terraform. Prometheus. The entire cloud-native ecosystem runs on Go. And now, when you need to add ML inference to your Go microservice, you don't need to:
- Spin up a Python sidecar
- Manage gRPC/REST bridges
- Deal with model serving infrastructure
- Explain to your ops team why you need CUDA drivers
You just import Born and go.
The Numbers
| What | Result |
|---|---|
| Development | 9 months + 2 weeks |
| GPU Speedup | 123x (MatMul 1024x1024) |
| KV-Cache Speedup | 3.94x |
| MNIST Accuracy | 98.18% (CNN) |
| Dependencies | Zero (pure Go) |
| Tests | 400+ |
| Deployment | Single binary |
We Need You
Born is live. It works. But it's just getting started.
We're looking for:
Testers with real projects - Try Born in your production systems. Find the edge cases. Push the limits. Your feedback shapes the roadmap.
Contributors - Whether it's a bug fix, new operator, documentation improvement, or a whole new backend - we welcome it all.
Early adopters - Be the first to deploy ML in pure Go. Share your experience. Help grow the community.
The best frameworks aren't built in isolation. They're shaped by real-world usage.
What's Next?
The roadmap includes:
- ONNX Import - Train in PyTorch, deploy in Go
- Quantization - INT8/FP16 for smaller, faster models
- More Backends - Vulkan, Metal, maybe CUDA
- Flash Attention - Even faster transformers
But honestly? The core is done. You can use Born today to build real ML systems in Go.
Try It
go get github.com/born-ml/born@v0.5.3
Check out the GitHub repo for examples and documentation.
Star the repo if you believe Go deserves great ML tooling.
December 1st, 2025 was my birthday. But it was also the day Go's machine learning framework was born.
Nine months of preparation. Two weeks of intense labor. One framework that changes everything.
I couldn't have asked for a better birthday present.
Now let's build something amazing together.
Links
- GitHub: github.com/born-ml/born
- Issues: Report bugs & request features
- Discussions: Ask questions & share ideas
- Releases: Download latest version
Related projects:
Author: Andrei Kolkov - Check out my other projects!
Top comments (0)