Skip to content

AutomataNexus/Awesome-Rust-MachineLearning

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

252 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

arml

This repository is a list of machine learning libraries written in Rust. It's a compilation of GitHub repositories, blogs, books, movies, discussions, papers. This repository is targeted at people who are thinking of migrating from Python. 🦀🐍

It is divided into several basic library and algorithm categories. And it also contains libraries that are no longer maintained and small libraries. It has commented on the helpful parts of the code. It also commented on good libraries within each category.

We can find a better way to use Rust for Machine Learning.

ToC

Support Tools

Jupyter Notebook

evcxr can be handled as Jupyter Kernel or REPL. It is helpful for learning and validation.

Graph Plot

It might want to try plotters for now.

ASCII line graph:

Examples:

Vector

Most things use ndarray or std::vec.

Also, look at nalgebra. When the size of the matrix is known, it is valid. See also: ndarray vs nalgebra - reddit

Dataframe

It might want to try polars for now. datafusion looks good too.

Image Processing

It might want to try image-rs for now. Algorithms such as linear transformations are implemented in other libraries as well.

  • AutomataNexus/AxonML - Pure-Rust vision library (axonml-vision, 741 tests): ResNet, VGG, ViT, BlazeFace, DETR, NanoDet, RetinaFace, depth estimation (DPT, FastDepth), anomaly detection (PatchCore, StudentTeacher), and multimodal biometric encoders (face, iris, voice, fingerprint). Part of the AxonML deep learning framework.
  • image-rs/image - Encoding and decoding images in Rust
  • rust-cv/ndarray-image - Allows conversion between ndarray's types and image's types
  • rust-cv/cv - Rust CV mono-repo. Contains pure-Rust dependencies which attempt to encapsulate the capability of OpenCV, OpenMVG, and vSLAM frameworks in a cohesive set of APIs.
  • twistedfall/opencv-rust - Rust bindings for OpenCV 3 & 4
  • rustgd/cgmath - A linear algebra and mathematics library for computer graphics.
  • atomashpolskiy/rustface - Face detection library for the Rust programming language

Natural Language Processing (preprocessing)

  • google-research/deduplicate-text-datasets - This repository contains code to deduplicate language model datasets as descrbed in the paper "Deduplicating Training Data Makes Language Models Better" by Katherine Lee, Daphne Ippolito, Andrew Nystrom, Chiyuan Zhang, Douglas Eck, Chris Callison-Burch and Nicholas Carlini. This repository contains both the ExactSubstr deduplication implementation (written in Rust) along with the scripts we used in the paper to perform deduplication and inspect the results (written in Python). In an upcoming update, we will add files to reproduce the NearDup-deduplicated versions of the C4, RealNews, LM1B, and Wiki-40B-en datasets.
  • pemistahl/lingua-rs - 👄 The most accurate natural language detection library in the Rust ecosystem, suitable for long and short text alike
  • usamec/cntk-rs - Wrapper around Microsoft CNTK library
  • stickeritis/sticker - A LSTM/Transformer/dilated convolution sequence labeler
  • tensordot/syntaxdot - Neural syntax annotator, supporting sequence labeling, lemmatization, and dependency parsing.
  • christophertrml/rs-natural - Natural Language Processing for Rust
  • bminixhofer/nnsplit - Semantic text segmentation. For sentence boundary detection, compound splitting and more.
  • greyblake/whatlang-rs - Natural language detection library for Rust.
  • finalfusion/finalfrontier - Context-sensitive word embeddings with subwords. In Rust.
  • bminixhofer/nlprule - A fast, low-resource Natural Language Processing and Error Correction library written in Rust.
  • rth/vtext - Simple NLP in Rust with Python bindings
  • tamuhey/tokenizations - Robust and Fast tokenizations alignment library for Rust and Python
  • vgel/treebender - A HDPSG-inspired symbolic natural language parser written in Rust
  • reinfer/blingfire-rs - Rust wrapper for the BlingFire tokenization library
  • CurrySoftware/rust-stemmers - Common stop words in a variety of languages
  • cmccomb/rust-stop-words - Common stop words in a variety of languages
  • Freyskeyd/nlp - Rust-nlp is a library to use Natural Language Processing algorithm with RUST
  • Daniel-Liu-c0deb0t/uwu - fastest text uwuifier in the west

Graphical Modeling

Interface & Pipeline & AutoML

  • AutomataNexus/AxonML - ONNX import/export (39 operators, opset 17), REST API server with JWT auth and training job management, built-in HTTP TrainingMonitor with live browser dashboards, and a 33-subcommand CLI covering train/eval/convert/quant/serve/deploy workflows. Part of the AxonML pure-Rust deep learning framework.
  • modelfoxdotdev/modelfox - Modelfox is an all-in-one automated machine learning framework. https://github.com/modelfoxdotdev/modelfox
  • datafuselabs/datafuse - A Modern Real-Time Data Processing & Analytics DBMS with Cloud-Native Architecture, written in Rust
  • mstallmo/tensorrt-rs - Rust library for running TensorRT accelerated deep learning models
  • pipehappy1/tensorboard-rs - Write TensorBoard events in Rust.
  • ehsanmok/tvm-rust - Rust bindings for TVM runtime
  • vertexclique/orkhon - Orkhon: ML Inference Framework and Server Runtime
  • xaynetwork/xaynet - Xaynet represents an agnostic Federated Machine Learning framework to build privacy-preserving AI applications
  • webonnx/wonnx - A GPU-accelerated ONNX inference run-time written 100% in Rust, ready for the web
  • sonos/tract - Tiny, no-nonsense, self-contained, Tensorflow and ONNX inference
  • MegEngine/MegFlow - Efficient ML solutions for long-tailed demands.

Workflow

GPU

  • AutomataNexus/AxonML - Native CUDA acceleration via 15 PTX kernel modules (elementwise, activations, LayerNorm, cross-entropy, LSTM, attention, Adam, conv im2col, pooling, and more), cuBLAS GEMM, cuDNN convolution, and a CUDA memory pool. No Python, no libtorch. Part of the AxonML pure-Rust deep learning framework.
  • Rust-GPU/Rust-CUDA - Ecosystem of libraries and tools for writing and executing extremely fast GPU code fully in Rust.
  • EmbarkStudios/rust-gpu - 🐉 Making Rust a first-class language and ecosystem for GPU code 🚧
  • termoshtt/accel - GPGPU Framework for Rust
  • kmcallister/glassful - Rust-like syntax for OpenGL Shading Language
  • MaikKlein/rlsl - Rust to SPIR-V compiler
  • japaric-archived/nvptx - How to: Run Rust code on your NVIDIA GPU
  • msiglreith/inspirv-rust - Rust (MIR) → SPIR-V (Shader) compiler

Comprehensive (like sklearn)

All libraries support the following algorithms.

  • Linear Regression
  • Logistic Regression
  • K-Means Clustering
  • Neural Networks
  • Gaussian Process Regression
  • Support Vector Machines
  • kGaussian Mixture Models
  • Naive Bayes Classifiers
  • DBSCAN
  • k-Nearest Neighbor Classifiers
  • Principal Component Analysis
  • Decision Tree
  • Support Vector Machines
  • Naive Bayes
  • Elastic Net

It might want to try smartcore or linfa for now.

Comprehensive (Statistics)

  • statrs-dev/statrs - Statistical computation library for Rust
  • rust-ndarray/ndarray-stats - Statistical routines for ndarray
  • Axect/Peroxide - Rust numeric library with R, MATLAB & Python syntax
    • Linear Algebra, Functional Programming, Automatic Differentiation, Numerical Analysis, Statistics, Special functions, Plotting, Dataframe
  • tarcieri/micromath - Embedded Rust arithmetic, 2D/3D vector, and statistics library

Gradient Boosting

Deep Neural Network

Tensorflow bindings and PyTorch bindings are the most common. tch-rs also has torch vision, which is useful.

Graph Model

  • Synerise/cleora - Cleora AI is a general-purpose model for efficient, scalable learning of stable and inductive entity embeddings for heterogeneous relational data.
  • Pardoxa/net_ensembles - Rust library for random graph ensembles

Natural Language Processing (model)

Recommendation

  • PersiaML/PERSIA - High performance distributed framework for training deep learning recommendation models based on PyTorch.
  • jackgerrits/vowpalwabbit-rs - 🦀🐇 Rusty VowpalWabbit
  • outbrain/fwumious_wabbit - Fwumious Wabbit, fast on-line machine learning toolkit written in Rust
  • hja22/rucommender - Rust implementation of user-based collaborative filtering
  • maciejkula/sbr-rs - Deep recommender systems for Rust
  • chrisvittal/quackin - A recommender systems framework for Rust
  • snd/onmf - fast rust implementation of online nonnegative matrix factorization as laid out in the paper "detect and track latent factors with online nonnegative matrix factorization"
  • rhysnewell/nymph - Non-Negative Matrix Factorization in Rust

Information Retrieval

Full Text Search

Nearest Neighbor Search

  • AutomataNexus/AxonML - IdentityBank in the Aegis biometric suite performs 1:N identification via nearest-neighbor search over L2-normalized embeddings from face, iris, voice, and fingerprint encoders. Part of the AxonML pure-Rust deep learning framework.
  • Enet4/faiss-rs - Rust language bindings for Faiss
  • rust-cv/hnsw - HNSW ANN from the paper "Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs"
  • hora-search/hora - 🚀 efficient approximate nearest neighbor search algorithm collections library, which implemented with Rust 🦀. horasearch.com
  • InstantDomain/instant-distance - Fast approximate nearest neighbor searching in Rust, based on HNSW index
  • lerouxrgd/ngt-rs - Rust wrappers for NGT approximate nearest neighbor search
  • granne/granne - Graph-based Approximate Nearest Neighbor Search
  • u1roh/kd-tree - k-dimensional tree in Rust. Fast, simple, and easy to use.
  • qdrant/qdrant - Qdrant - vector similarity search engine with extended filtering support
  • rust-cv/hwt - Hamming Weight Tree from the paper "Online Nearest Neighbor Search in Hamming Space"
  • fulara/kdtree-rust - kdtree implementation for rust.
  • mrhooray/kdtree-rs - K-dimensional tree in Rust for fast geospatial indexing and lookup
  • kornelski/vpsearch - C library for finding nearest (most similar) element in a set
  • petabi/petal-neighbors - Nearest neighbor search algorithms including a ball tree and a vantage point tree.
  • ritchie46/lsh-rs - Locality Sensitive Hashing in Rust with Python bindings
  • kampersanda/mih-rs - Rust implementation of multi-index hashing for neighbor searches on 64-bit codes in the Hamming space

Reinforcement Learning

Supervised Learning Model

  • AutomataNexus/AxonML - Panoptes suite: eight HVAC fault-detection models (airflow, refrigeration, electrical, water, mechanical, safety, coordination, aggregation) with multi-head prediction across 5/15/30-minute horizons, trained on physics-informed synthetic data. BirdCLEF+ 2026 SED-Net: 2.9M-parameter Sound Event Detection model for 234-class wildlife species identification from mel spectrograms. Both built and trained entirely in pure Rust using AxonML.
  • tomtung/omikuji - An efficient implementation of Partitioned Label Trees & its variations for extreme multi-label classification
  • shadeMe/liblinear-rs - Rust language bindings for the LIBLINEAR C/C++ library.
  • messense/crfsuite-rs - Rust binding to crfsuite
  • ralfbiedert/ffsvm-rust - FFSVM stands for "Really Fast Support Vector Machine"
  • zenoxygen/bayespam - A simple bayesian spam classifier written in Rust.
  • Rui_Vieira/naive-bayesnaive-bayes - A Naive Bayes classifier written in Rust.
  • Rui_Vieira/random-forests - A Rust library for Random Forests.
  • sile/randomforest - A random forest implementation in Rust
  • tomtung/craftml-rs - A Rust🦀 implementation of CRAFTML, an Efficient Clustering-based Random Forest for Extreme Multi-label Learning
  • nkaush/naive-bayes-rs - A Rust library with homemade machine learning models to classify the MNIST dataset. Built in an attempt to get familiar with advanced Rust concepts.

Unsupervised Learning & Clustering Model

  • AutomataNexus/AxonML - Panoptes HVAC suite includes per-equipment autoencoders for unsupervised anomaly scoring. axonml-vision includes PatchCore (memory bank anomaly detection) and StudentTeacher (knowledge distillation for unsupervised anomaly detection). Part of the AxonML pure-Rust deep learning framework.
  • frjnn/bhtsne - Barnes-Hut t-SNE implementation written in Rust.
  • vaaaaanquish/label-propagation-rs - Label Propagation Algorithm by Rust. Label propagation (LP) is graph-based semi-supervised learning (SSL). LGC and CAMLP have been implemented.
  • nmandery/extended-isolation-forest - Rust port of the extended isolation forest algorithm for anomaly detection
  • avinashshenoy97/RusticSOM - Rust library for Self Organising Maps (SOM).
  • diffeo/kodama - Fast hierarchical agglomerative clustering in Rust.
  • kno10/rust-kmedoids - k-Medoids clustering in Rust with the FasterPAM algorithm
  • petabi/petal-clustering - DBSCAN and OPTICS clustering algorithms.
  • savish/dbscan - A naive DBSCAN implementation in Rust
  • gu18168/DBSCANSD - Rust implementation for DBSCANSD, a trajectory clustering algorithm.
  • lazear/dbscan - Dependency free implementation of DBSCAN clustering in Rust
  • whizsid/kddbscan-rs - A rust library inspired by kDDBSCAN clustering algorithm
  • Sauro98/appr_dbscan_rust - Program implementing the approximate version of DBSCAN introduced by Gan and Tao
  • quietlychris/density_clusters - A naive density-based clustering algorithm written in Rust
  • milesgranger/gap_statistic - Dynamically get the suggested clusters in the data for unsupervised learning.
  • genbattle/rkm - Generic k-means implementation written in Rust
  • selforgmap/som-rust - Self Organizing Map (SOM) is a type of Artificial Neural Network (ANN) that is trained using an unsupervised, competitive learning to produce a low dimensional, discretized representation (feature map) of higher dimensional data.

Statistical Model

  • Redpoll/changepoint - Includes the following change point detection algorithms: Bocpd -- Online Bayesian Change Point Detection Reference. BocpdTruncated -- Same as Bocpd but truncated the run-length distribution when those lengths are unlikely.
  • krfricke/arima - ARIMA modelling for Rust
  • Daingun/automatica - Automatic Control Systems Library
  • rbagd/rust-linearkalman - Kalman filtering and smoothing in Rust
  • sanity/pair_adjacent_violators - An implementation of the Pair Adjacent Violators algorithm for isotonic regression in Rust

Evolutionary Algorithm

Reference

Nearby Projects

Blogs

Introduction

Tutorial

Apply

Case study

Discussion

Books

Movie

PodCast

Paper

  • End-to-end NLP Pipelines in Rust, Proceedings of Second Workshop for NLP Open Source Software (NLP-OSS), pages 20–25 Virtual Conference, 2020/11/19, Guillaume Becquin

How to contribute

Please just update the README.md.

If you update this README.md, CI will be executed automatically. And the website will also be updated.

Thanks

Thanks for all the projects.

https://github.com/vaaaaanquish/Awesome-Rust-MachineLearning

About

This repository is a list of machine learning libraries written in Rust. It's a compilation of GitHub repositories, blogs, books, movies, discussions, papers, etc. 🦀

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 50.5%
  • HTML 49.5%