EasyLM is an open-source toolkit that makes large language models easy to pre-train, fine-tune, evaluate and serve, all in JAX and Flax, rather than hiding it behind a hosted API. It has around 2,500 GitHub stars.
Built by Xinyang Geng and collaborators, EasyLM is a one-stop codebase for the full LLM lifecycle on Google’s JAX stack. It ships training recipes for models such as LLaMA, with support for distributed training across TPU and GPU pods, checkpointing, and serving endpoints once a model is trained. The project keeps dependencies minimal, so the moving parts โ data loading, sharding, optimisation, sampling โ stay visible instead of being hidden behind a heavy framework; that transparency is the point, and you can read the whole pipeline end to end. It focuses on LLaMA-style architectures and can export trained weights for use elsewhere. Because it sits on JAX/Flax rather than PyTorch, it appeals to teams already invested in that ecosystem who found LLM tooling there comparatively thin. The repository was last updated in 2024 and remains a compact, readable reference for how to structure an LLM training codebase.
EasyLM is free and open source under the Apache-2.0 license, and there is no commercial edition. You only pay for the accelerator compute you train on.
JAX and Flax developers, researchers who want a single understandable codebase for training and serving open LLMs, and students learning how LLM training actually works.