# Introducing NABLA

**URL:** <https://forum.modular.com/t/introducing-nabla/1451>\
**Category:** Community Showcase\
**Created:** [May 14, 2025, 8:01pm UTC](https://forum.modular.com/t/introducing-nabla/1451 "2025-05-14T20:01:17Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![TilliFe](https://sea1.discourse-cdn.com/flex001/user_avatar/forum.modular.com/tillife/32/419_2.png) [@TilliFe](https://forum.modular.com/u/TilliFe)\
**Post date:** [May 14, 2025, 8:01pm UTC](https://forum.modular.com/t/introducing-nabla/1451/1 "2025-05-14T20:01:17Z")

</div>

![Screenshot 2025-05-13 at 20.10.02](https://us1.discourse-cdn.com/flex001/uploads/modular/original/1X/e5fc68cd929c88714913b4985107b06ccc04da75.jpeg)

Today we are releasing a **research preview of NABLA** - a framework for differentiable programming in Mojo. Nabla aims to bring to Mojo what parts of JAX and PyTorch brought to Python: _a high-level API for general program transformations, including vmap, jit, vjp, jvp & grad_.

Unlike previous attempts (e.g. Endia) that failed by attempting to rebuild the entire stack, Nabla was built from the ground up as a thin wrapper around Mojo and MAX to provide the same performance guarantees as them. (The Nabla core does NOT include any low-level kernels, for example.) There are many rough edges and features that still need to be implemented (operator coverage, GPU support, etc.), but the core AD engine has proven effective in initial tests. We hope you like it!

Docs and homepage: [nablaml.com](https://www.nablaml.com)

Examples and **roadmap** : [github.com/nabla-ml/nabla/experimental](https://github.com/nabla-ml/nabla/tree/main/experimental)

Follow us on **X** for related posts : [@nablaml](https://x.com/nablaml)

---

<div class="post-metadata">

**Author:** ![clattner](https://sea1.discourse-cdn.com/flex001/user_avatar/forum.modular.com/clattner/32/201_2.png) [@clattner](https://forum.modular.com/u/clattner)\
**Post date:** [May 14, 2025, 10:52pm UTC](https://forum.modular.com/t/introducing-nabla/1451/2 "2025-05-14T22:52:30Z")

</div>

This is so cool @TilliFe, congratulations!

---

<div class="post-metadata">

**Author:** ![WillEndure](https://avatars.discourse-cdn.com/v4/letter/w/9e8a1a/32.png) [@WillEndure](https://forum.modular.com/u/WillEndure)\
**Post date:** [May 22, 2025, 7:52pm UTC](https://forum.modular.com/t/introducing-nabla/1451/3 "2025-05-22T19:52:34Z")

</div>

```auto
import nabla

def main():
  # Init params with gradient computation enabled
  weight = nabla.randn((3, 4), DType.float32, requires_grad=True)
  bias = nabla.randn((2, 4), DType.float32, requires_grad=True)
  label = nabla.randn((2, 4), DType.float32)
  input = nabla.randn((2, 3), DType.float32)

  # Compute forward pass (single layer MLP)
  logits = nabla.relu(input @ weight + bias)
  loss = nabla.sum((logits - label) ** 2)
  print("Loss:", loss)

  # Backward pass to compute gradients
  loss.backward()

  # Update parameters à la SGD
  weight -= 0.01 * weight.grad()
  bias -= 0.01 * bias.grad()
  print("weight:", weight, "bias:", bias)

```

I love this example you have in the README. Its literally the textbook description of a neural net and backprop in the minimum number of lines of code such a thing could be described.

👏 👏 👏

---

<div class="post-metadata">

**Author:** ![frthjf](https://avatars.discourse-cdn.com/v4/letter/f/5daacb/32.png) [@frthjf](https://forum.modular.com/u/frthjf)\
**Post date:** [June 4, 2025, 9:19pm UTC](https://forum.modular.com/t/introducing-nabla/1451/4 "2025-06-04T21:19:52Z")

</div>

This this great, thanks for developing it!

@TilliFe Do you have plans to support differential equation solving like diffrax does in the Jax ecosystem?

---

<div class="post-metadata">

**Author:** ![TilliFe](https://sea1.discourse-cdn.com/flex001/user_avatar/forum.modular.com/tillife/32/419_2.png) [@TilliFe](https://forum.modular.com/u/TilliFe)\
**Post date:** [June 5, 2025, 6:19am UTC](https://forum.modular.com/t/introducing-nabla/1451/5 "2025-06-05T06:19:48Z")

</div>

Thank you! This sounds intriguing to me tbh! Let me get the low-level stuff working properly though first.

---

<div class="post-metadata">

**Author:** ![frthjf](https://avatars.discourse-cdn.com/v4/letter/f/5daacb/32.png) [@frthjf](https://forum.modular.com/u/frthjf)\
**Post date:** [June 6, 2025, 12:28am UTC](https://forum.modular.com/t/introducing-nabla/1451/7 "2025-06-06T00:28:02Z")

</div>

Fair enough, thanks!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex001/uploads/modular/original/1X/2751e0fbdc595a99718b216730957e9db4448cfd.jpeg) [@system](https://forum.modular.com/u/system)\
**Post date:** [December 3, 2025, 12:28am UTC](https://forum.modular.com/t/introducing-nabla/1451/8 "2025-12-03T00:28:47Z")

</div>

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.
