Show HN: ZigFormer – An LLM implemented in pure Zig
Hi everyone,
I've made an early version of ZigFormer, a small LLM implemented in Zig with no dependencies on external ML frameworks like PyTorch or JAX. ZigFormer is modelled after a textbook LLM (like GPT-2 from OpenAI) and can be used as a Zig library as well as a standalone application to train a model and chat with it.
This was mainly an educational project. I'm sharing it here in case others find it interesting or useful.
Link to the project: https://github.com/CogitatorTech/zigformer
Doesn't seem very bad, for any of the Zig code I looked at, it would maybe have been nicer to try starting from something like GGML and building on top so it was more extensible. Personally, aside from implementing all of BLAS in Zig, I would have just used OpenBLAS.
I don't mean to be mean, or anything, but aside from educating yourself this isn't super useful for others, if it could run any Qwen3 model or something it might be more interesting. Maybe have some explanation of what you are wanting from this project?
I wanted to get a sense of and intuition for how to build an LLM from scratch, and to learn more Zig by doing so.
I avoided using external (linear algebra/tensor) libraries to keep the project's scope small and manageable. Adding them can be the next step, but they are usually very large dependencies that can make the project bloated. Anyway, Zig has great SIMD and multi-threading support, but I think there is a need for a native linalg/tensor library for Zig with a clean and mature API.
I'm not sure about the usefulness, it depends TBH. I think there are a lot of people (like hobbyists, students, people learning Zig, etc.) who can find the project somewhat useful at its current stage.
OP said in the submission that this is educational.
Not everything has to be useful.