Skip to main content

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)
benchmark/       # speed + fp32-correctness A/B harness

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 a gpu extra rather than their base install. Importing the top-level chalk package is still cheap (kernels lazy-load), so probing chalk.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.Linear layers (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
make run-benchmarks

Status

Intentionally minimal to start — kernels are landed one at a time under chalk/ops + chalk/transformers, each with correctness tests and benchmark evidence.

License

BSD-2-Clause. See LICENSE and NOTICE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

freesolo_chalk-0.3.1.tar.gz (217.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

freesolo_chalk-0.3.1-py3-none-any.whl (105.7 kB view details)

Uploaded Python 3

File details

Details for the file freesolo_chalk-0.3.1.tar.gz.

File metadata

  • Download URL: freesolo_chalk-0.3.1.tar.gz
  • Upload date:
  • Size: 217.9 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

Hashes for freesolo_chalk-0.3.1.tar.gz
Algorithm Hash digest
SHA256 9b8ba63917861c28e42d7a670ce37b520ce2670d406b0e168f6e8a626b646717
MD5 4a52862b2afd8ab5c24bdeee1e0956e8
BLAKE2b-256 2fbd15cca4d02d123c39773d190f2b48fa02ff6878a77413e5b877e1f1489419

See more details on using hashes here.

File details

Details for the file freesolo_chalk-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: freesolo_chalk-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 105.7 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

Hashes for freesolo_chalk-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 69e0c6c0cb319510b004a248d741298bcdb735068f6c28cfe6b28a3e37e93f24
MD5 5c00ba34013eb4b13be71dcec1252b2a
BLAKE2b-256 e953d92cb40d771c85dc3f08a4be129f5a80b3c842bf0caf1562a54dc7f22b73

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page