Skip to main content

⚡ Atomic Ops — Fused GDN-2 Kernels for TPU v5e

PyPI License: MIT Python 3.10+

High-performance Gated DeltaNet-2 (GDN-2) implementation in JAX/Pallas, optimized for TPU v5e-8.
Features a fully fused backward pass delivering up to 16× end-to-end speedup over jax.associative_scan baselines. Fused Gated DeltaNet-2 kernels for TPU v5e, ported from NVlabs DeltaNet Triton reference. > Heads-up: Forward pass is currently ~1.6× slower than the pure-JAX WY reference on TPU (under investigation).
> The win comes from the fused backward — real training steps are dominated by backward, hence the 16× overall gain.
> A hybrid JAX forward + Pallas backward mode is planned for v0.3.0.


Install

pip install gdn2-pallas

## 🚀 Основные возможности

- **🚄 Молниеносная скорость** — forward и backward полностью написаны на Pallas с использованием MXU-блоков TPU.
- **🧩 Простота использования** — одна функция `gdn2_pallas_forward_trainable` для обучения и `gdn2_pallas_forward` для инференса.
- **🔒 Численная стабильность** — встроенные защиты (clipping, `nan_to_num`) на всех этапах.
- **🔬 Гибкость** — легко настраиваемые параметры (`BT`, `BC`, `CLIP`) через импорт констант.

---

## 📊 Бенчмарки (на TPU v5e‑8)

Я сравнили нашу реализацию с эталонной реализацией **GDN-2 на JAX `associative_scan`** (авторская реализация, широко используемая в исследовательских проектах). Замеры проводились на **batch_size = 8**, **seq_len = 4096**, **heads = 6**, **d_head = 128** (полный профиль обучения с backward).

| Режим | jax.associative_scan (ms) |JAX_REF(чисто математический эталон)| GDN-2 Pallas (ms) | Ускорение (jax_ref)| Ускорение(Pallas)
|-------|---------------------------|-------------------------|-------------------|-----------|-----|
| **Forward** (без backward) |1067.72   |**63.24** |**102.43** |**16.88х**| **10.42x** |
| **Backward** (весь градиент) | 4488.98 |**459.03**| **274.90** | **9.78x**|**16.33x** |
| **Полный цикл** (fwd + bwd) |4501.82 | **460.04**|**274.95** |**9.79x**|  **16.37x** |

> 🔥 **Итог:** Наш код на Pallas превосходит эталонную реализацию по скорости более чем в **16 раз** в среднем, что позволяет ускорить обучение гибридных моделей (GDN-2 + Mamba-2) в **>6 раз** в реальном тренировочном цикле.(реализация Mamba-2 можете найти по этой ссылке [**Mamba-2 Pallas**](https://github.com/Akseleu-J/mamba2-pallas)
> **jax** вресия оказалось для bwd медленной, поэтому pallas дает больше ускорениии

---

## 📦 Установка

### Установка из репозитория (рекомендуется)

```bash
pip install git+https://github.com/Akseleu-J/gdn2-pallas.git

Установка в режиме разработки

git clone https://github.com/Akseleu-J/gdn2-pallas.git
cd gdn2-pallas
pip install -e .

🧠 Быстрый старт

import jax
import jax.numpy as jnp
from atomic_ops import gdn2_forward_trainable

# Создаём случайные тензоры: (batch, seq_len, heads, d_head)
shape = (4, 2048, 6, 128)
q = jnp.ones(shape, dtype=jnp.float32)
k = jnp.ones(shape, dtype=jnp.float32)
v = jnp.ones(shape, dtype=jnp.float32)
w = jnp.ones(shape, dtype=jnp.float32)
b = jnp.ones(shape, dtype=jnp.float32)
g = jnp.ones(shape, dtype=jnp.float32)   # log‑decay
scale = 0.1

# Forward + Backward (через custom_vjp)
out, h_final = gdn2_pallas_forward_trainable(q, k, v, w, b, g, scale)

# Только Forward (для инференса)
from atomic_ops import gdn2_pallas_forward
out_inf, _ = gdn2_pallas_forward(q, k, v, w, b, g, scale)

print(out.shape, h_final.shape)   # (4, 2048, 6, 128) (4, 6, 128, 128)

Примечание: Функция автоматически подбирает устройство (CPU/GPU/TPU) через JAX. Для TPU v5e-8 убедитесь, что установлены правильные драйверы и jaxlib собран для TPU.


📖 Архитектура пакета

gdn2-palla/ ├── .github/workflows/ # CI/CD пайплайны ├── atomic_ops/ # исходный код ядра | ├── init.py | ├── fallback.py │ ├── gdn2_fwd.py # fwd-кмпоненты │ ├── gdn2_bwd.py # bwd | ├── gdn2_pipeline.py #сборка ядра в пайплайн | ├── configs.py | ├── utils.py │ └── reference.py # Jax эталонная математика ├── tests/ # бенчмарки/тесты └── README.md # Документация


🧑‍💻 Автор

Akseleu Omirbay Проект создан для высокопроизводительных исследований на TPU v5e. Вопросы и предложения приветствуются через Issues.


📄 Лицензия

Распространяется под лицензией MIT.


⭐ Поддержка

Если этот пакет помог вам в работе или исследовании, поставьте ⭐ на GitHub — это поможет другим исследователям найти его!

Metadata

Release files for gdn2-pallas 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gdn2-pallas 0.0.1
File Size Uploaded Provenance
gdn2_pallas-0.0.1.tar.gz 19.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for gdn2-pallas 0.0.1
File Interpreter ABI Platform
gdn2_pallas-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 38.9 kB

Release files / gdn2_pallas-0.0.1.tar.gz

Download URL gdn2_pallas-0.0.1.tar.gz
Size 19.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e0a7367eb86cea75edcfd223bc1decc08a4ae25cd15d289537904d5bd6d767e4
BLAKE2b-256 checksum
How to use checksums
0e1e9bc97dac8ab8bedfcf580fef7a569c2342fd045f2f08dfe3b1b6bff67457
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / gdn2_pallas-0.0.1-py3-none-any.whl

Download URL gdn2_pallas-0.0.1-py3-none-any.whl
Size 19.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
216c29e3dab66326ec47097710d239b7ff7f8608871284fc12675dc7038412a9
BLAKE2b-256 checksum
How to use checksums
fe9a22d0fa771a92366904651085f5fb3d4aa78d182d3bce01f3615bf67a9a91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for gdn2-pallas 0.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page