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)

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, and silently falls back to the eager / Liger path on any import / compile / self-test failure. All installers but one patch only frozen nn.Linear layers (never trainable / PEFT-wrapped layers). The exception is the LoRA-delta installer (install_fused_lora_delta), the one kernel that intentionally accelerates the trainable PEFT LoRA path: it monkeypatches PEFT's dense lora.Linear.forward to route the adapter delta through the fused kernel. Its self-test checks the fused forward and the x / A / B gradients against torch autograd (bf16 tolerance) before patching, and at runtime it falls back to stock PEFT per call for everything the kernel does not replicate exactly (merged / disabled adapters, mixed-adapter batches, LoRA variants, dropout, lora_bias, quantized / non-dense bases, and any non-CUDA tensor) — so a failed self-test or any unsupported layer leaves training numerics on the stock PEFT path.
  • 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

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_dev-0.5.4.tar.gz (398.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_dev-0.5.4-py3-none-any.whl (290.2 kB view details)

Uploaded Python 3

File details

Details for the file freesolo_chalk_dev-0.5.4.tar.gz.

File metadata

  • Download URL: freesolo_chalk_dev-0.5.4.tar.gz
  • Upload date:
  • Size: 398.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","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":true}

File hashes

Hashes for freesolo_chalk_dev-0.5.4.tar.gz
Algorithm Hash digest
SHA256 d211e4bab40fcb5730e3e95b983d926e8a7416dc963484b763d095135174e3cf
MD5 14c7d31574ae84007a37926f3b0b4beb
BLAKE2b-256 2fbe614dcdc00caf0587642d1994baa52a034e09bb38268f248a0c2cdda9b6c5

See more details on using hashes here.

File details

Details for the file freesolo_chalk_dev-0.5.4-py3-none-any.whl.

File metadata

  • Download URL: freesolo_chalk_dev-0.5.4-py3-none-any.whl
  • Upload date:
  • Size: 290.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","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":true}

File hashes

Hashes for freesolo_chalk_dev-0.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 67e3de76b83c10a007c39a1ab3042ca2858cf447c1a3904ccb4cc8396bbd707f
MD5 d733f4744d4cb02bfb4b9ca4f7b63f3c
BLAKE2b-256 28fba39f5060137cb8f318f9d5996705e558023bfa358875d656879b0f5246a5

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