Skip to content

2-2000x faster ML algos, 50% less memory usage, works on all hardware - new and old.

License

Notifications You must be signed in to change notification settings

unslothai/hyperlearn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

drawing

2-2000x faster algos, 50% less memory usage, works on all hardware - new and old.

If you want to collab on fast algorithms - msg me!! Join our Discord server on making AI faster, or if you just wanna chat about AI!! https://discord.gg/unsloth

Unsloth Website

Documentation

50 Page Modern Big Data Algorithms PDF


Hyperlearn's algorithms, methods and repo has been featured or mentioned in 5 research papers!

+ Microsoft, UW, UC Berkeley, Greece, NVIDIA

Hyperlearn's methods and algorithms have been incorporated into more than 6 organizations and repositories!

+ NASA + Facebook's Pytorch, Scipy, Cupy, NVIDIA, UNSW

During Hyperlearn's development, bugs and issues were notified to GCC!


Packages Used

HyperLearn is written completely in PyTorch, NoGil Numba, Numpy, Pandas, Scipy & LAPACK, C++, C, Python, Cython and Assembly, and mirrors (mostly) Scikit Learn. HyperLearn also has statistical inference measures embedded, and can be called just like Scikit Learn's syntax.

Some key current achievements of HyperLearn:

  • 70% less time to fit Least Squares / Linear Regression than sklearn + 50% less memory usage
  • 50% less time to fit Non Negative Matrix Factorization than sklearn due to new parallelized algo
  • 40% faster full Euclidean / Cosine distance algorithms
  • 50% less time LSMR iterative least squares
  • New Reconstruction SVD - use SVD to impute missing data! Has .fit AND .transform. Approx 30% better than mean imputation
  • 50% faster Sparse Matrix operations - parallelized
  • RandomizedSVD is now 20 - 30% faster

Modern Big Data Algorithms

Comparison of Speed / Memory

Algorithm n p Time(s) RAM(mb) Notes
Sklearn Hyperlearn Sklearn Hyperlearn
QDA (Quad Dis A) 1000000 100 54.2 22.25 2,700 1,200 Now parallelized
LinearRegression 1000000 100 5.81 0.381 700 10 Guaranteed stable & fast

Time(s) is Fit + Predict. RAM(mb) = max( RAM(Fit), RAM(Predict) )

I've also added some preliminary results for N = 5000, P = 6000

drawing


Help is really needed! Message me!


Key Methodologies and Aims


1. Embarrassingly Parallel For Loops

  • Including Memory Sharing, Memory Management
  • CUDA Parallelism through PyTorch & Numba

2. 50%+ Faster, 50%+ Leaner

3. Why is Statsmodels sometimes unbearably slow?

  • Confidence, Prediction Intervals, Hypothesis Tests & Goodness of Fit tests for linear models are optimized.
  • Using Einstein Notation & Hadamard Products where possible.
  • Computing only what is neccessary to compute (Diagonal of matrix and not entire matrix).
  • Fixing the flaws of Statsmodels on notation, speed, memory issues and storage of variables.

4. Deep Learning Drop In Modules with PyTorch

  • Using PyTorch to create Scikit-Learn like drop in replacements.

5. 20%+ Less Code, Cleaner Clearer Code

  • Using Decorators & Functions where possible.
  • Intuitive Middle Level Function names like (isTensor, isIterable).
  • Handles Parallelism easily through hyperlearn.multiprocessing

6. Accessing Old and Exciting New Algorithms

  • Matrix Completion algorithms - Non Negative Least Squares, NNMF
  • Batch Similarity Latent Dirichelt Allocation (BS-LDA)
  • Correlation Regression
  • Feasible Generalized Least Squares FGLS
  • Outlier Tolerant Regression
  • Multidimensional Spline Regression
  • Generalized MICE (any model drop in replacement)
  • Using Uber's Pyro for Bayesian Deep Learning


Extra License Terms

  1. The Apache 2.0 license is adopted.