Skip to main content

Dynamic neural networks and function transformations in Python + Mojo

Project description

NABLA

Nabla is a Python library that provides three key features:

  • Multidimensional Array computation (like NumPy) with strong GPU acceleration
  • Composable Function Transformations: vmap, grad, jit, and other Automatic Differentiation tools
  • Deep integration with MAX and (custom) Mojo kernels

For tutorials and API reference, visit: nablaml.com

Installation

Now available on PyPI!

pip install nabla-ml

Note: Nabla also includes an experimental pure Mojo API for native Mojo development.

Quick Start

import nabla as nb

# Example function using Nabla's array operations
def foo(input):
    return nb.sum(input * input, axes=0)

# Vectorize, differentiate, accelerate
foo_grads = nb.jit(nb.vmap(nb.grad(foo)))
gradients = foo_grads(nb.randn((10, 5)))

Development Setup

For contributors and advanced users:

# Clone and install in development mode
git clone https://github.com/nabla-ml/nb.git
cd nabla
pip install -e ".[dev]"

# Run tests
pytest

# Format and lint code
ruff format nabla/
ruff check nabla/ --fix

Repository Structure

nabla/
├── nabla/                     # Core Python library
│   ├── core/                  # Function transformations and core array class
│   ├── nn/                    # Neural network modules and models
│   ├── ops/                   # Mathematical operations (binary, unary, linalg, etc.)
│   ├── transforms/            # Function transformations (vmap, grad, jit, etc.)
│   └── utils/                 # Utilities (broadcasting, formatting, types)
├── tests/                     # Comprehensive test suite
├── tutorials/                 # Notebooks on Nabla usage for ML tasks
├── examples/                  # Example scripts for common use cases
└── experimental/              # An alternative pure Mojo API (WIP!)

Contributing

Contributions welcome! Discuss significant changes in Issues first. Submit PRs for bugs, docs, and smaller features.

License

Nabla is licensed under the Apache-2.0 license.


Thank you for checking out Nabla!

Development Status PyPI version Python 3.12+ License: Apache 2.0

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

nabla_ml-25.6141328.tar.gz (124.8 kB view details)

Uploaded Source

Built Distribution

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

nabla_ml-25.6141328-py3-none-any.whl (178.8 kB view details)

Uploaded Python 3

File details

Details for the file nabla_ml-25.6141328.tar.gz.

File metadata

  • Download URL: nabla_ml-25.6141328.tar.gz
  • Upload date:
  • Size: 124.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for nabla_ml-25.6141328.tar.gz
Algorithm Hash digest
SHA256 ddfb02ec090d1410680402e8b61ef8174f97399303f2ef68150b559358363961
MD5 812981235ec035b98c4bbd2cd14246a7
BLAKE2b-256 41739c7c6a49c9863daf04a8998a39b2ee65183685de548df591e410d0c109b2

See more details on using hashes here.

File details

Details for the file nabla_ml-25.6141328-py3-none-any.whl.

File metadata

  • Download URL: nabla_ml-25.6141328-py3-none-any.whl
  • Upload date:
  • Size: 178.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for nabla_ml-25.6141328-py3-none-any.whl
Algorithm Hash digest
SHA256 3ded40bd65039def8de86d89534809a3e67ce40f8396c2645d40037819a9d5e4
MD5 c797dbe03ecc2a2b60b488b5770d4ebe
BLAKE2b-256 2bd50f0305f1f86fdec6820ebb2d82bb2d86f9eb3fdac9f0be9c92769514ecb9

See more details on using hashes here.

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