Skip to main content

A minimalistic and high-performance Machine Learning library based on NumPy

Project description

🌌 Sorix

Sorix training animation

PyPI version Tests status License: MIT GitHub stars


Sorix is a high-performance, minimalist deep learning library built on top of NumPy/CuPy. Designed for research and production environments where efficiency and a clean API matter. If you know PyTorch, you already know how to use Sorix.

📖 Read the Full Documentation


🚀 Key Features

  • ⚡ High Performance: Run optimized neural networks on NumPy (CPU) or CuPy (GPU).
  • 🧩 PyTorch-like API: Familiar and expressive syntax for a near-zero learning curve.
  • 🍃 Lightweight: Minimal dependencies, ideal for resource-constrained environments.
  • 🛠️ Production Ready: Straight path from prototype to real-world deployment.
  • 📈 Autograd Engine: Simple yet powerful automatic differentiation.

📊 Benchmark Results

Sorix outpaces the giants in resource efficiency while matching them in speed. In our MNIST benchmark, Sorix demonstrates its extreme lightweight nature:

Library CPU Size GPU Size Training (CPU) Accuracy
Sorix ~54 MB ~238 MB ~7.3s 97.2%
PyTorch ~737 MB ~6.8 GB ~9.21s 97.4%
TensorFlow ~1.4 GB ~2.0 GB ~17.14s 96.8%

💡 Tip: Sorix is ~28x smaller than PyTorch for GPU support and ~13x smaller on CPU, making it the perfect choice for serverless environments (like AWS Lambda) and edge computing.

👉 Full Benchmark Report


📦 Installation

Choose your preferred package manager:

Using pip:

pip install sorix

Using uv:

uv add sorix

Using Poetry:

poetry add sorix

Note for GPU support: Install the CuPy extra using pip install "sorix[cp13]" (Requires CuPy v13 and CUDA).


⚡ Full Pipeline: Define, Train, Save & Load

Building a neural network, training it, and persisting it for later use is straightforward:

import numpy as np
from sorix import tensor, save, load
from sorix.nn import Sequential, Linear, ReLU, MSELoss
from sorix.optim import SGD

# 1. Prepare data (y = 3x^2 + 2)
X = np.linspace(-1, 1, 100).reshape(-1, 1)
y = 3 * X**2 + 2 + 0.1 * np.random.randn(*X.shape)
X_t, y_t = tensor(X), tensor(y)

# 2. Define a multi-layer model
model = Sequential(
    Linear(1, 10),
    ReLU(),
    Linear(10, 1)
)

# 3. Define loss and optimizer
criterion = MSELoss()
optimizer = SGD(model.parameters(), lr=0.01)

# 4. Training loop
for epoch in range(1000):
    y_pred = model(X_t)
    loss = criterion(y_pred, y_t)

    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    if (epoch + 1) % 200 == 0:
        print(f"Epoch {epoch+1}, Loss: {loss.item():.4f}")

# 5. Save the model
save(model, "model.sor")

# 6. Load and verify
model_loaded = load("model.sor")
test_val = tensor([[0.5]])
print(f"Prediction for 0.5: {model_loaded(test_val).item():.4f}")

📖 Learn & Examples

Learn Sorix through interactive notebooks. Open them directly in Google Colab:

Topic Documentation Colab
Tensor Basics Tensors Guide Open In Colab
Autograd Engine Autograd Guide Open In Colab
Module Basics Module Guide Open In Colab
Linear Regression Regression Guide Open In Colab
MNIST Classification MNIST Guide Open In Colab

🛠️ Roadmap

  • Core Autograd Engine (NumPy/CuPy backends)
  • Basic Layers: Linear, ReLU, Sigmoid, Tanh, BatchNorm1D, Dropout
  • Optimizers: SGD, Adam, RMSprop
  • GPU Acceleration via CuPy
  • Sequential API
  • Convolutional Layers (Conv2d, MaxPool2d)
  • Advanced Initializations (Kaiming, Orthogonal)
  • Data Loaders & Datasets

🤝 Contribution

We appreciate any contribution from the community!

  1. Report Bugs: Open an Issue.
  2. Add Features: Submit a Pull Request.
  3. Improve Docs: Help us make the documentation better.
  4. Write Tests: Improve our code coverage.

📌 Links


Made with ❤️ for the AI Community

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

sorix-1.0.7.tar.gz (2.5 MB view details)

Uploaded Source

Built Distribution

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

sorix-1.0.7-py3-none-any.whl (53.9 kB view details)

Uploaded Python 3

File details

Details for the file sorix-1.0.7.tar.gz.

File metadata

  • Download URL: sorix-1.0.7.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sorix-1.0.7.tar.gz
Algorithm Hash digest
SHA256 d1c6a5d4d40495737671ab5ef3d6b6bec13c0d650e736060df88ce48d66fef3d
MD5 6b3bbffcb593163add2a75462193a530
BLAKE2b-256 a5075c6264b480a4c6e5a1452ae30399dcf120ec3c8f56335aa310cef6106cee

See more details on using hashes here.

Provenance

The following attestation bundles were made for sorix-1.0.7.tar.gz:

Publisher: pypi_publish.yml on Mitchell-Mirano/sorix

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

File details

Details for the file sorix-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: sorix-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 53.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sorix-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 7b9558db880bf55fb92f30128484e9e57af9c68751d97eaf0d3491b1a7530a12
MD5 29afcdc965090a0ecd03fa9e29feff8b
BLAKE2b-256 876544d388cc8b325cddb3323c2451e3c2514818113b9194b147ee7ecf1df0ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for sorix-1.0.7-py3-none-any.whl:

Publisher: pypi_publish.yml on Mitchell-Mirano/sorix

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