Skip to content
fast-axolotl_

// features

The full acceleration surface

fast-axolotl is one idea done carefully: swap Axolotl's data-pipeline hot paths for Rust at import time, publish every number, and get out of the way. Here is the whole surface.

// data-pipeline acceleration

Where the Rust wins are

The two clean wins from the README, plus the two honest caveats.

Streaming dataset reader

win

streaming_dataset_reader iterates a file in fixed-size batches, never materializing the whole dataset. 77x on Parquet at 50,000 rows (16-core Linux). Format-detected by extension.

Parallel SHA256 dedup

win

parallel_hash_rows fans rows across cores; deduplicate_indices returns unique indices plus new hashes. 1.9x over a hashlib loop at 100,000 rows.

Token packing

caveat

pack_sequences composes input_ids, labels, and attention_mask in a single Rust pass. Honest caveat: ~0.4x at 10,000 sequences — FFI overhead dominates until larger batches.

Batch padding

caveat

pad_sequences supports left/right padding and pad_to_multiple_of for hardware alignment. Same FFI-overhead caveat (~0.5x) at small sizes.

// drop-in integration

Nothing in your setup changes

The shim installs itself; your Axolotl config and scripts stay put.

One import

win

import fast_axolotl before importing axolotl. The shim installs itself into sys.modules — no source edits to Axolotl.

No config diff

win

Existing axolotl.utils.* import paths route to Rust automatically. Opt into streaming with dataset_use_rust_streaming: true when you want it.

Prebuilt wheels

win

Python 3.10 through 3.13 on Linux, macOS, and Windows. Nothing to compile — uv add fast-axolotl or pip install.

Per-process toggle

win

uninstall() and install() switch the shim off and on within a process; is_available() confirms the extension linked.

// honest scope

What we do not claim

Credibility comes from publishing the losses, not just the wins.

Not a training accelerator

win

fast-axolotl targets the data pipeline — reads, dedup, packing, padding. It does not touch training kernels; for that, reach for a tool like Unsloth.

FFI overhead is documented

win

Packing and padding are exposed but only expected to pay off at larger training-scale batches. The 0.4x/0.5x small-batch numbers are published in BENCHMARK.md.

Data-bound wins only

win

If your wall-clock is GPU-bound rather than data-bound, fast-axolotl will not move it. The wins land when data loading is the bottleneck.

Every number is measured

win

All four operation numbers come from BENCHMARK.md on a documented system (Linux x86_64, 16 cores). No invented benchmarks.

See it in context

Read the architecture, browse use cases, or follow the guides.