Skip to main content

A Rust-accelerated, scikit-learn-compatible machine learning library — drop-in replacement with 2-18x speedups

Project description

Thermite ML

A blazing-fast, Rust-accelerated machine learning library for Python — drop-in compatible with scikit-learn.

Thermite: an exothermic reaction that burns at 2500°C. Your ML training should be just as fast.

License: MIT Python 3.8+ Rust PyPI


Why Thermite?

scikit-learn is the most widely-used ML library in the world (40M+ monthly downloads), but its internals are built on NumPy/SciPy/Cython — fast for 2010, but bottlenecked by 2026 standards.

Thermite rewrites the compute-heavy core natively in Rust using explicit SIMD, Rayon multithreading, and matrixmultiply optimizations. We expose the exact same Python API you already know. No new syntax. No migration guide. Just import thermite instead of import sklearn.

Unmatched Capabilities

  • Zero-Copy Polars Integration: Feed Apache Arrow polars DataFrames directly into Thermite's Rust core without any conversion or data duplication.
  • GPU Acceleration (wgpu): Native WebGPU/CUDA hardware acceleration backend thermite-gpu. Dispatch compute shaders for massive ensemble aggregations and matrix multiplications instantly by simply adding device='gpu'.
  • True Parallelism (No GIL): Unlike Scikit-Learn which relies on heavy multiprocess pickling via joblib, Thermite releases the Python GIL during heavy computation. GridSearchCV and RandomizedSearchCV effortlessly scale across all your cores with zero IPC overhead.
  • Native Categorical & Sparse Support: Decision Trees handle categorical features natively (bypassing One-Hot Encoding overhead). LinearRegression and KMeans natively ingest and optimize scipy.sparse matrices.
  • Out-of-Core Learning: Memory too small? Use .partial_fit() to train GaussianNB or LogisticRegression on streaming datasets incrementally.

The Numbers (Performance Superiority)

Thermite offers incredible performance boosts while maintaining 100% accuracy parity.

Operation scikit-learn Thermite Speedup
LogisticRegression.fit (Sparse NLP) 0.1068s 0.0059s 18.22x
LinearSVC.fit (Sparse TF-IDF) 0.0244s 0.0022s 10.99x
RandomForest.fit (Categorical Splits) 0.1806s 0.0653s 2.76x
LinearRegression.fit (Dense 10k) 0.0238s 0.0100s 2.37x
KMeans.fit (Dense) 0.0829s 0.0356s 2.33x
GridSearchCV (100 folds, 8 cores) ~14.0s ~1.5s ~9.3x

Tested on an M2 Apple Silicon chip. See BENCHMARKS.md for reproducible scripts.


Installation

Thermite v1.0.0 is distributed as pre-compiled wheels for macOS, Linux, and Windows. No Rust toolchain required!

pip install thermite-ml

Quick Start: scikit-learn Drop-In

# The API is 100% identical to scikit-learn
from thermite.ensemble import RandomForestClassifier
from thermite.model_selection import train_test_split
from thermite.preprocessing import StandardScaler

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# Opt-in to Hardware Acceleration with `device='gpu'`
clf = RandomForestClassifier(n_estimators=100, n_jobs=-1, device='gpu')
clf.fit(X_train, y_train)

print(f"Accuracy: {clf.score(X_test, y_test):.4f}")

Zero-Copy Polars Integration

Traditional scikit-learn forces you to convert polars DataFrames to pandas or numpy, triggering a massive memory copy. Thermite natively ingests the underlying Apache Arrow memory buffers:

import polars as pl
from thermite.linear_model import LogisticRegression
from thermite.polars_compat import make_polars_pipeline

df = pl.read_csv("100GB_dataset.csv")

# Instantly train directly on the Polars DataFrame
model = make_polars_pipeline(LogisticRegression())
model.fit(df.select(pl.exclude("target")), df["target"])

System Architecture

Thermite is structured to provide safety, performance, and portability:

  1. thermite-core (Rust): The backbone. Implements the mathematical optimization routines using ndarray and rayon. Safe, memory-efficient, and brutally fast.
  2. thermite-gpu (Rust): WebGPU (wgpu) based compute shader dispatch system targeting Vulkan, Metal, and DX12 dynamically.
  3. thermite-binding (Rust/PyO3): The translation layer bridging Python NumPy arrays to Rust contiguous views with zero allocation.
  4. thermite (Python): The high-level Python wrappers that mimic scikit-learn estimator APIs, implementing input validation and BaseEstimator compatibility.

Supported Algorithms

  • Linear Models: LinearRegression, Ridge, Lasso, LogisticRegression (Binary & Multinomial OvR), LinearSVC.
  • Ensembles: RandomForestClassifier, RandomForestRegressor, GradientBoostingClassifier, GradientBoostingRegressor.
  • Trees: DecisionTreeClassifier, DecisionTreeRegressor.
  • Clustering: KMeans, DBSCAN.
  • Decomposition: PCA.
  • Probabilistic: GaussianNB.
  • Preprocessing: StandardScaler, MinMaxScaler, OneHotEncoder, LabelEncoder.
  • Pipelines: Pipeline, GridSearchCV, cross_val_score.
  • Deep Learning Connectivity: Native __dlpack__ integrations for PyTorch/JAX from_dlpack zero-copy tensor passing.
  • AutoML: Rust native BayesianOptimizer utilizing Ridge surrogates.

What Sets Thermite Apart & Competitive Comparison

While scikit-learn dominates the ML ecosystem (with over 100+ algorithms and extensive preprocessing), Thermite differentiates itself as an extreme performance overlay for production deployments.

Why people still use scikit-learn:

  1. Algorithm Breadth: scikit-learn offers extensive specialized algorithms (e.g. Gaussian Mixture Models, complex Imputers like MICE) not yet ported to Thermite.
  2. Ecosystem Tooling: Vastly wider array of third-party plugins.

Why Thermite is unique:

  1. Rust-Native & Zero-Copy: While similar projects like Intel(R) Extension for Scikit-learn try to accelerate operations by monkey-patching Cython with daal4py, Thermite is rewritten ground-up in Rust. We achieve true zero-copy data transmission for Apache Arrow/Polars AND Deep Learning frameworks (PyTorch/JAX via DLPack).
  2. Distributed Computing Preparedness: Thermite's Rust estimators derive Serde enabling high-speed bincode serialization out-of-the-box. This natively plugs into distributed execution engines like Ray and Dask without the heavy overhead of Python's standard pickle.
  3. Rust AutoML: Instead of looping cross-validation in Python, Thermite provides a fast native BayesianOptimizer.
  4. Scale-up Milestones v1.3.0:
    • Text Preprocessing: Blazing fast CountVectorizer and TfidfVectorizer utilizing Rust's hash maps.
    • Advanced Imputation: IterativeImputer handles missing values dynamically via Ridge regression.
    • Histogram-Based GBDT: Fast discretizing tree building (HistGradientBoostingClassifier, HistGradientBoostingRegressor).
    • Deep Learning: Built-in MLPClassifier with GPU-accelerated forward passes (thermite_gpu).
  5. Scale-up Milestones v1.4.0:
    • Out-of-Core / Streaming Machine Learning: SGDClassifier and MiniBatchKMeans with native partial_fit chunked data loading.
    • Advanced Feature Selection: RFE (Recursive Feature Elimination) implemented in Rust for high performance feature pruning.
    • Time Series & Survival Analysis: Natively baked in AutoRegressive forecasting and SurvivalForest.
    • Native ONNX Export: Export trained core models directly to ONNX binaries with .to_onnx() without overhead.
  6. Scale-up Milestones v1.6.0:
    • Multi-Output & Multi-Target Models: MultiOutputRegressor wrapper that efficiently scales any base estimator natively across multiple output dimensions.
    • Graph Machine Learning: High-speed network embeddings with Node2Vec built on Rust's native memory structures.
    • Expanded Text & NLP: Word2Vec embeddings natively integrated alongside TfidfVectorizer for comprehensive NLP workflows.
    • Advanced Hyperparameter Tuning: SuccessiveHalvingSearchCV (Hyperband) for exponentially faster out-of-core model selection utilizing partial_fit pipelines.
  7. Scale-up Milestones v1.7.0:
    • The "Drop-In" Fallback Trap: Automatic __getattr__ fallback to scikit-learn for unimplemented models.
    • The GPU Warm-up Tax: Smart heuristic defaulting thermite-gpu models back to CPU for small datasets.
    • Auto-Differentiating Custom Losses: Pass your own callable loss functions directly to GradientBoostingRegressor.
    • Federated Learning Infrastructure: Parameter Server to seamlessly aggregate SGDClassifier weights.
    • Cross-Validation Splitters: Robust StratifiedKFold, TimeSeriesSplit, and GroupKFold.
    • Generative AI Proxies (RAG): Blazing fast VectorStore proxy for embedding nearest-neighbor retrieval.

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

thermite_ml-1.7.0.tar.gz (113.4 kB view details)

Uploaded Source

Built Distributions

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

thermite_ml-1.7.0-cp38-abi3-win_amd64.whl (947.5 kB view details)

Uploaded CPython 3.8+Windows x86-64

thermite_ml-1.7.0-cp38-abi3-win32.whl (846.9 kB view details)

Uploaded CPython 3.8+Windows x86

thermite_ml-1.7.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ x86-64

thermite_ml-1.7.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ i686

thermite_ml-1.7.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

thermite_ml-1.7.0-cp38-abi3-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

thermite_ml-1.7.0-cp38-abi3-macosx_10_12_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

Details for the file thermite_ml-1.7.0.tar.gz.

File metadata

  • Download URL: thermite_ml-1.7.0.tar.gz
  • Upload date:
  • Size: 113.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for thermite_ml-1.7.0.tar.gz
Algorithm Hash digest
SHA256 cfbe05350de0cbcb3b066a9459ea62083fe9e55845428a451d09dcb0fb307f83
MD5 c7d02d4cb4471772b44d3b01185edf61
BLAKE2b-256 d24810f42839354a63020755c1326808bdb5e0a9658e9c6ef600ead54a9dca78

See more details on using hashes here.

Provenance

The following attestation bundles were made for thermite_ml-1.7.0.tar.gz:

Publisher: release.yml on KartavyaDikshit/Thermite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file thermite_ml-1.7.0-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: thermite_ml-1.7.0-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 947.5 kB
  • Tags: CPython 3.8+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for thermite_ml-1.7.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 9d62321bba8eab03bd1cfe69889f4a84f4ccfe25343c1bbabe8f4596e3cfd70a
MD5 60d09f50a114ec34ab4d1533bbcf2e60
BLAKE2b-256 9f65b40140209cee069a9bd005cee94391ef8a4d9232ef75f3e4278bb81d988f

See more details on using hashes here.

Provenance

The following attestation bundles were made for thermite_ml-1.7.0-cp38-abi3-win_amd64.whl:

Publisher: release.yml on KartavyaDikshit/Thermite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file thermite_ml-1.7.0-cp38-abi3-win32.whl.

File metadata

  • Download URL: thermite_ml-1.7.0-cp38-abi3-win32.whl
  • Upload date:
  • Size: 846.9 kB
  • Tags: CPython 3.8+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for thermite_ml-1.7.0-cp38-abi3-win32.whl
Algorithm Hash digest
SHA256 3b433fdb1ad39ccece7185c7de7c83e2d6aeccc3165fd54af7723ce6c3826494
MD5 ac9d71db4f734ed2f7adf8b3418a0735
BLAKE2b-256 68d39e609e284c49bc8d7f43e84602604eb05a2b8e85efd01bfeb192bfc52ed3

See more details on using hashes here.

Provenance

The following attestation bundles were made for thermite_ml-1.7.0-cp38-abi3-win32.whl:

Publisher: release.yml on KartavyaDikshit/Thermite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file thermite_ml-1.7.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for thermite_ml-1.7.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 877d9f643377da85907abc909ab0b75fa3f1c4d07ca6375e59445231a7dd049a
MD5 6023ec1985811a1020d32db8d3f56cbc
BLAKE2b-256 7e3b3dc06dccb3f485dbedd9e293431c9499f372fbde72b4023e39511cb721fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for thermite_ml-1.7.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on KartavyaDikshit/Thermite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file thermite_ml-1.7.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for thermite_ml-1.7.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 cdc8fa43293c4c033b0d9ef8ee1c104641095bf49a74d99edbd82a990d2ade52
MD5 084cd8341bc6406a183e64b761565684
BLAKE2b-256 cd856b4fc6b05f0bb18c87f9b39f8955a405a5eb777ef597e588c16c65a0126e

See more details on using hashes here.

Provenance

The following attestation bundles were made for thermite_ml-1.7.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on KartavyaDikshit/Thermite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file thermite_ml-1.7.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for thermite_ml-1.7.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f2a3170609a89dfa66a14bdfd8492e9fcafc248f7fdec26006c5dfcc0f46541a
MD5 f3feafa8c659cffa98db2d0d289ead6e
BLAKE2b-256 eb94c60cd24329fc09586df85aa3f5d5563299a07e9500ca347e970d0042b41a

See more details on using hashes here.

Provenance

The following attestation bundles were made for thermite_ml-1.7.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on KartavyaDikshit/Thermite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file thermite_ml-1.7.0-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for thermite_ml-1.7.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 330a0a53d225c69bdc1f1e12099ddde9b1a17dde18c662010c1eb6f64cb0a7ef
MD5 1e4049cf9a0ffa2d677fbd097026b5de
BLAKE2b-256 d194710e645ead7e756b5dee1369e1e7e142853928f16c1709e90070e0e38596

See more details on using hashes here.

Provenance

The following attestation bundles were made for thermite_ml-1.7.0-cp38-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on KartavyaDikshit/Thermite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file thermite_ml-1.7.0-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for thermite_ml-1.7.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f1ea17e4bdffdd70af77849c251c4502b9a684646f0ce4ce6e7d6dad7a446cdf
MD5 10315ecd053b41534abb158352ff9a0c
BLAKE2b-256 611b899c959d04b3f65b5828c19da0412ea13ae5f52e0423b9375975d8c00ff2

See more details on using hashes here.

Provenance

The following attestation bundles were made for thermite_ml-1.7.0-cp38-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yml on KartavyaDikshit/Thermite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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