Custom Triton/CUDA kernels that complement Liger Kernel for LLM post-training
Project description
Chalk
Custom Triton/CUDA kernels that complement Liger Kernel.
pip install freesolo-chalk
Liger fuses the cross-entropy, activation, and RMSNorm paths. Chalk fills the gaps that matter for Freesolo's Flash post-training stack — fused GEMMs, the LoRA-delta matmuls, the QKV norm+RoPE epilogue, embedding gather, and FP8 frozen-base GEMMs — each behind a documented, benchmarked, opt-in entry point.
Chalk's repository layout and conventions intentionally mirror Liger Kernel.
Layout
src/chalk/
ops/ # raw Triton/CUDA kernels + autograd.Function wrappers
transformers/ # model-level installers that monkeypatch kernels into HF modules
utils.py # device detection helpers
test/ # correctness + gating tests (mirrors test/ops, test/transformers)
Design principles
- Worker-side kernel library. Like Liger, chalk depends on
torch+triton— it is meant to be installed where kernels actually run (the GPU worker), so consumers should depend on it from agpuextra rather than their base install. Importing the top-levelchalkpackage is still cheap (kernels lazy-load), so probingchalk.utils.infer_device()never forces a heavy import. - Complements, not replaces, Liger. Liger fuses CE / activation / RMSNorm; chalk fuses the GEMMs, LoRA delta, QKV epilogue, embedding, and FP8 base.
- Safe fallback. Every installer is arch-gated, runs a numeric self-test on install,
patches only frozen
nn.Linearlayers (never trainable / PEFT-wrapped layers), and silently falls back to the eager / Liger path on any import / compile / self-test failure. - Opt-in & evidence-based. Kernels are off unless explicitly enabled, and every kept kernel has end-to-end loss-curve evidence — not just a microbenchmark.
Development
pip install -e '.[dev]'
make checkstyle # ruff check + format
make test # pytest with coverage
Status
Intentionally minimal to start — kernels are landed one at a time under chalk/ops +
chalk/transformers, each with correctness tests.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file freesolo_chalk-0.4.9.tar.gz.
File metadata
- Download URL: freesolo_chalk-0.4.9.tar.gz
- Upload date:
- Size: 215.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f54541b80402e4d8fb92ed37bda6e37ba60d2f21ae6b274d157d5c2ddf149fbd
|
|
| MD5 |
239a6c859db88417c16e279814ad748a
|
|
| BLAKE2b-256 |
78db0fdf85757b75a127184a5f6d4c85afb02937e1c232f3db04b2c71ac63b41
|
File details
Details for the file freesolo_chalk-0.4.9-py3-none-any.whl.
File metadata
- Download URL: freesolo_chalk-0.4.9-py3-none-any.whl
- Upload date:
- Size: 118.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
276cfd97cd2d2b85956fdc6de8348e81192b2a42568aef3527ecb4c3a11ab29a
|
|
| MD5 |
f11ab2d423e0681c0fd09e5d47c7970b
|
|
| BLAKE2b-256 |
58d40092f85e02f69b5db473c88617ef3595d86816c01ea197939aac35315533
|