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 ~6.8s 97.0%
PyTorch ~737 MB ~6.8 GB ~5.1s 97.4%
TensorFlow ~1.4 GB ~2.0 GB ~17.8s 97.1%

💡 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.6.tar.gz (2.2 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.6-py3-none-any.whl (37.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for sorix-1.0.6.tar.gz
Algorithm Hash digest
SHA256 9fb706828e28fcecec3e620f910c0698feb66bf0cb7f308c6f66073c5e5b4717
MD5 b2e898c08274d82933f9aa62292868e6
BLAKE2b-256 5cbb73db67964afbbe2880e4c91b5d99d22187c01954b8d3cf2ba7cf35ef827c

See more details on using hashes here.

Provenance

The following attestation bundles were made for sorix-1.0.6.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.6-py3-none-any.whl.

File metadata

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

File hashes

Hashes for sorix-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 7e19781329986ac59dd4be59f7dbb2abb5f236987aa1a16949f8416ee37d5cc8
MD5 0158f6f475c611ee80ecf8f79e509efa
BLAKE2b-256 99bb2dd72b9124a6558f3f386d603c8bd9d052e3fb5528fe67870cd8d11bee9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for sorix-1.0.6-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