Skip to main content

Triton-powered framework for training and deploying Spiking Transformers.

Project description

Tether

Gemini_Generated_Image_xofloxxofloxxofl

Tether is a Triton-powered framework for training and deploying Spiking Transformers and deep Spiking Neural Networks (SNNs).

We’ve solved the non-differentiability of discrete spikes by implementing high-performance Triton kernels with modular Surrogate Gradients.

Key Features

  • High-Performance Neurons:
    • LIF (Leaky Integrate-and-Fire): Standard spiking neuron with fused Triton kernels.
    • ALIF (Adaptive LIF): Neurons with adaptive thresholds for better temporal dynamics.
    • PLIF (Parametric LIF): Neurons with learnable, per-channel decay and threshold parameters.
  • Modular Surrogate Gradients: Choose from Arctan, Sigmoid, or FastSigmoid to train your SNNs effectively.
  • Linear Spike-Driven Attention: Eliminates the $O(N^2)$ Softmax bottleneck, allowing for massive context windows with significantly lower energy per inference.
  • Data Utilities: SpikingDatasetWrapper and encoding functions (rate_encoding, latency_encoding) to convert static datasets to spike trains.
  • Triton-Powered: Leverages OpenAI's Triton language for custom CUDA kernels, enabling massive speedups (60x+) over vanilla PyTorch.

Installation

This project is managed with uv.

uv sync

Or install dependencies manually:

pip install torch triton numpy

Usage

Using PLIF with Sigmoid Surrogate

import torch
from tether import PLIF, Sigmoid

# Create a Parametric LIF layer with Sigmoid surrogate
# Decay and threshold are learnable vectors per neuron
layer = PLIF(
    n_neurons=128, 
    init_decay=0.9, 
    surrogate=Sigmoid(alpha=4.0)
).cuda()

# Input sequence: (Time, Batch, Neurons)
x = torch.randn(32, 16, 128).cuda()
spikes = layer(x)

Training a Spiking Language Model

The train_stories.py script demonstrates training a Spiking-LLM on the TinyShakespeare dataset.

python train_stories.py

Data Encoding

from tether.data import SpikingDatasetWrapper, rate_encoding
from torchvision.datasets import MNIST

# Wrap MNIST to output spike trains
spiking_mnist = SpikingDatasetWrapper(
    MNIST(root="./data", download=True, train=True),
    encode_fn=lambda x: rate_encoding(x, n_steps=10)
)

Architecture

  • tether.kernels: Custom Triton kernels for LIF, ALIF, and PLIF.
  • tether.functional: PyTorch autograd functions wrapping the Triton kernels.
  • tether.nn: Neural network modules including LIF, ALIF, PLIF, SpikingSelfAttention.
  • tether.data: Utilities for spike encoding and dataset wrapping.

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

tetherpy-0.1.1.tar.gz (27.3 kB view details)

Uploaded Source

Built Distribution

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

tetherpy-0.1.1-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file tetherpy-0.1.1.tar.gz.

File metadata

  • Download URL: tetherpy-0.1.1.tar.gz
  • Upload date:
  • Size: 27.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tetherpy-0.1.1.tar.gz
Algorithm Hash digest
SHA256 73c4c7b6780d52e825abf8bac8ac1befab5d7b6b6b2d203f32d5ea3375ff62e2
MD5 31ae50d3f31823c718d1b60889cd011b
BLAKE2b-256 eb6b30e33619a6231e42cd910acdefd73ebda85b5c9d02d51d07b86f15f11474

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetherpy-0.1.1.tar.gz:

Publisher: release.yml on Khushiyant/tether

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

File details

Details for the file tetherpy-0.1.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for tetherpy-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e26d3243521c7407eef04dd410423cf6adb45eb453bd8eec1265d92683347e4a
MD5 105d85509dc98ebce3116790c7464575
BLAKE2b-256 2364f269bb5fceeec2f74555733e9d651d5799d62eaf4c299fe61b36ba590845

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetherpy-0.1.1-py3-none-any.whl:

Publisher: release.yml on Khushiyant/tether

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