Skip to main content

Binary Neural Networks

Packed 1-bit inference for CPU and edge — with metrics that refuse to lie

CI CodeQL OpenSSF Scorecard Docs Python 3.11–3.13 License: MIT Repro Pack SIMD PyPI

Binary Neural Networks (bnn 1.0.0) is the honest optimiser toolkit for packed binary / ternary inference on CPU and edge. It bit-packs weights into uint64, runs real XNOR–popcount SIMD kernels, and prints dual metrics — pack math and wall-clock — as separate numbers.

It is not a claim that sign() is 32× faster on GPU. Compression 32× is exact uint64 pack size. Kernel speed is XNOR–popcount. Those are different physics.

32.00×

weight pack
exact, uint64-aligned

~23.9×

SIMD vs NumPy FP32
64×4096×4096, one CPU

err = 0

every ISA path
AVX-512 · AVX2 · NEON · scalar

5.1×

faster kernel
aggregate, 12 shapes

29.68×

measured RAM
not the 32× brochure

REFUSE

when cosine is junk
drop-in is a gate, not a vibe

Six numbers, six kinds of claim — that distinction is the product. Pack ratio is exact math. err = 0 is exact integer arithmetic. SIMD and kernel speedups are wall-clock on one machine. Resident RAM is measured from real buffers, which is why it sits below theoretical 32×. REFUSE is the report telling you not to ship a wrap whose cosine collapsed.

Jump: 60 seconds · When to use / when not · Kernel · Wrap · SIMD · Benchmarks · Bridges · Docs


60 seconds to a dual-metric report

PyPI bnn-lab is not live yet (human Trusted Publisher residual). Until that upload, install from Git. The short name bnn on PyPI is an unrelated package — import and CLI here stay bnn.

A non-editable pip install "bnn-lab @ git+…" is a library wheel. It does not ship repo scripts/. bnn repro, bnn optimise, and bnn recommend call those scripts — use them only after a clone. Do not put bnn repro on the next line after a wheel install.

Git pip — Python API only

pip install "bnn-lab @ git+https://github.com/KanakMalpani/Binary-Neural-Networks.git@v1.0.0"
import torch
import torch.nn as nn
from bnn.optimise import OptimiseConfig, optimise_model

class Tiny(nn.Module):
    def __init__(self):
        super().__init__()
        self.ffn_fc1 = nn.Linear(64, 256)
        self.ffn_fc2 = nn.Linear(256, 64)

    def forward(self, x):
        return self.ffn_fc2(torch.relu(self.ffn_fc1(x)))

x = torch.randn(8, 64)
result = optimise_model(
    Tiny(), x, OptimiseConfig(policy="hybrid_ffn", min_in_features=64)
)
print(result.payload["compression_replaced_weights"])  # 32× pack — size, not latency
print(result.payload["status"])                        # OK or REFUSE_DROP_IN_CLAIM

Clone — CLI (bnn repro / bnn optimise / bnn recommend)

git clone https://github.com/KanakMalpani/Binary-Neural-Networks.git
cd Binary-Neural-Networks
pip install -e ".[dev]" -c constraints.txt
python -m bnn.kernels.compile_native
bnn repro
bnn optimise --policy auto --report results\optimise_report.json
bnn recommend --goal edge-vision

Expect REPRO: PASS (exit 0). The report prints compression, cosine, wall-clock, and REFUSE/OK. Prefer bnn optimise over legacy bnn wrap --ultra.

No compiler? Install still succeeds — the NumPy packed path stays correct. Windows native needs MSVC x64 (MinGW 32-bit → WinError 193). Full path: docs/GUIDE_E2E.md.


The thesis (locked)

Most “binary” demos train with STE, then infer with sign() + nn.Linear. That is a simulation. On commodity GPUs it is often slower than FP32. The 32× in papers is usually bit-pack compression, not end-to-end latency.

Locked claim Meaning
Speedups come from packed kernels XNOR + popcount on CPU/edge — not sign() theatre
Training STE ≠ inference throughput STE trains latents; inference uses pack + GEMM
Compression 32× Exact for aligned uint64 binary pack — size, not e2e latency
Commodity GPU quality INT4 / FP8 / AWQ / vLLM — documented bridges, not fake BNN wins
Repro culture bnn repro + tests/golden_floors.json + committed results/*.json

When to use / when not

Honesty is the product. If another stack wins, this lab says so and routes you there (bnn recommend). Compact callout under the thesis — not a table buried at the bottom.

Use this lab when

  • You want smaller weights on CPU / edge and will retrain or wrap wide GEMMs
  • You need real XNOR–popcount, not sign() + nn.Linear
  • You want a report that refuses drop-in when cosine is junk
  • You are researching packed binary / ternary kernels, Bi-Real-style vision, or .bnnpack
  • You want dual metrics: 32× pack and measured wall-clock, separately

Do not use this lab when

  • GPU server quality → FP8 / AWQ-INT4 + vLLM — not sign(), not “GPU 32×”
  • Local CPU LLM chatbitnet.cpp (BitNet) or GGUF Q4_K_M
  • Phone / NPU stock SDK → INT8 / INT4 — vendors do not ship native 1-bit
  • Production ASR / diffusion fidelity → INT8 Whisper / ORT / FP8 PTQ (audio here is synthetic)
  • You need to claim 32× e2e latency from pack math alone — forbidden forever
flowchart TD
  Q{"Primary goal?"}
  Q -->|"GPU server quality"| GPU["FP8 / AWQ-INT4 + vLLM<br/>NOT classic BNN"]
  Q -->|"CPU local LLM"| LLM{"BitNet checkpoint?"}
  LLM -->|yes| BN["bitnet.cpp"]
  LLM -->|no| GGUF["GGUF Q4_K_M"]
  Q -->|"Edge vision, retrain OK"| EV["this repo — Bi-Real + packed GEMM"]
  Q -->|"Phone NPU stock SDK"| NPU["INT8 / INT4<br/>no stock 1-bit"]
  Q -->|"Packed XNOR research"| LAB["this repo — bnn optimise"]
  Q -->|"Diffusion / production ASR"| AVOID["INT8 / FP8 PTQ<br/>not this audio lane"]
  style LAB fill:#ddf4ff,stroke:#0969da
  style GPU fill:#fff8c5,stroke:#9a6700
  style BN fill:#fff8c5,stroke:#9a6700
  style NPU fill:#fff8c5,stroke:#9a6700
  style AVOID fill:#fff8c5,stroke:#9a6700
bnn recommend --goal edge-vision

(bnn recommend needs the clone / editable install above — not a git-pip wheel.)

Also skip (or hybrid-skip) small GEMMs / attention projections (packing overhead wins; auto leaves them FP) and drop-in HF LLMs without QAT (cold binary PTQ cosine often collapses — the report REFUSEs unless --force).

Full tree: docs/GUIDE_E2E.md · docs/18_DECISION_TREE_AND_COMPLETE_ROADMAP.md · limits: MODEL_CARD.md.


Core kernel pipeline

FP32 tensors are not “made binary” by sign() in nn.Linear. Inference quantizes to ±1, packs 32 or 64 values into a uint32/uint64 word, then a SIMD kernel does XNOR + popcount and scales back. That pack is the 32×. The popcount is the speed.

flowchart LR
  FP["FP32 weights<br/>and activations"] --> Q["Quantize to ±1"]
  Q --> P["Bit-pack<br/>32/64 values into<br/>uint32 / uint64"]
  P --> X["SIMD XNOR + popcount<br/>AVX-512 / AVX2 / NEON"]
  X --> S["Scale / dequant<br/>alpha · y + bias"]
  S --> Y["Output activations"]
  style P fill:#ddf4ff,stroke:#0969da
  style X fill:#ddf4ff,stroke:#0969da
flowchart TB
  subgraph Train["Training — STE simulation"]
    W["Full-precision latents"]
    STE["Straight-through estimator"]
    W --> STE
    STE --> W
  end
  subgraph Infer["Inference — packed path"]
    Pack["uint64 pack"]
    GEMM["XNOR-popcount GEMM"]
    Out["alpha · y + bias"]
    Pack --> GEMM --> Out
  end
  STE -.->|"checkpoint / policy"| Pack
  style Train fill:#f6f8fa,stroke:#57606a
  style Infer fill:#ddf4ff,stroke:#0969da

Wrap & optimisation flow

bnn optimise does not blindly binarize every Linear. It measures, assigns a per-layer policy, optionally QAT/distills, then refuses drop-in when cosine is below the gate.

flowchart LR
  M["FP / HF model"] --> Sens["Sensitivity<br/>per-layer"]
  Sens --> Pol{"Layer policy"}
  Pol -->|"binary"| Bin["Packed XNOR<br/>32× size"]
  Pol -->|"ternary"| Ter["Bitplane 1.58-bit"]
  Pol -->|"skip"| Skip["Keep FP32"]
  Bin --> Rec["QAT / distill<br/>optional"]
  Ter --> Rec
  Skip --> Rec
  Rec --> Gate{"Drop-in honesty<br/>cosine vs threshold"}
  Gate -->|"pass"| OK["status: OK<br/>drop_in_ok true"]
  Gate -->|"fail"| RF["status: REFUSE<br/>unless --force"]
  style OK fill:#dafbe1,stroke:#1a7f37
  style RF fill:#ffebe9,stroke:#cf222e

Default --policy auto on the documented hybrid demo lands cosine ~0.70 and REFUSE_DROP_IN — that is working as designed, not a silent 32× quality claim. Ternary+QAT can reach cosine 0.991 and still lose wall-clock (e2e 0.73×). The product gap is hybrid/binary that is both drop-in and faster — not paperwork.

Layer search is monotonic and tested: 32× is available at cosine 0.27. That is why the search exists.

quality_floor final cosine theoretical compression assignment
0.00 0.271 32.0× 3 binary
0.90 0.950 1.71× 1 ternary, 2 skip
0.999 1.000 1.00× 3 skip

Details: docs/42_QAT_AND_LAYER_SEARCH.md · tutorial 07.


SIMD execution ladder

One C source. ISA is chosen at run time — never -march=native baking the builder’s CPU into a wheel. AVX-512 is used when present, never required. WASM SIMD128 is a pedagogy path (wasm/), not a substitute for the native kernel.

flowchart TB
  Entry["binary_gemm"] --> Det{"cpuid / xgetbv<br/>or ARM features"}
  Det -->|"x86_64 + VPOPCNTDQ"| AVX512["AVX-512"]
  Det -->|"x86_64 else"| AVX2["AVX2 nibble LUT"]
  Det -->|"ARM64 / Apple Silicon"| NEON["NEON vcnt"]
  Det -->|"none of the above"| Scalar["Scalar popcount"]
  AVX512 --> Done["OpenMP + 4-row blocking<br/>optional alpha/bias epilogue"]
  AVX2 --> Done
  NEON --> Done
  Scalar --> Done
  Done --> Native{"native library loaded?"}
  Native -->|yes| Fast["Packed SIMD GEMM"]
  Native -->|no| NP["Portable NumPy fallback<br/>correct, not always fast"]
  WASM["WASM SIMD128<br/>pedagogy only"] -.->|"not the production dispatch"| Entry
  style AVX512 fill:#ddf4ff,stroke:#0969da
  style AVX2 fill:#ddf4ff,stroke:#0969da
  style NEON fill:#ddf4ff,stroke:#0969da
  style WASM fill:#f6f8fa,stroke:#57606a
  style NP fill:#fff8c5,stroke:#9a6700
Platform Native Production ladder
Linux x86-64 (GCC/Clang) yes AVX-512 → AVX2 → scalar
Windows x64 (MSVC) yes AVX-512 → AVX2 → scalar
macOS / Linux arm64 yes NEON
macOS x86-64 yes AVX2 → scalar
Browser / teaching WASM SIMD128 pedagogy — wasm/
Anything else NumPy packed GEMM correctness first

Deep dive: docs/41_PORTABLE_SIMD_KERNEL.md.

bnn validate-native          # selected ISA path, err = 0
BNN_KERNEL=scalar bnn bench  # force scalar / avx2 / avx512 / neon

Dual-metric benchmarks

Never equate pack math with latency.

flowchart LR
  subgraph Theory["Theory / size"]
    T1["32× weight pack<br/>uint64 aligned"]
    T2["~64× word ops<br/>XNOR-popcount"]
  end
  subgraph Wall["Wall-clock / energy-proxy"]
    W1["Kernel microbench<br/>prepacked GEMM"]
    W2["E2E forward<br/>incl. act-pack"]
  end
  Theory -.->|"do not equate"| Wall
Quantity Kind Do not claim as
Weight pack 32.00× Exact End-to-end latency
Native GEMM err = 0 Exact (when native loaded) Accuracy of a wrapped LLM
ISA paths agree Exact Cross-machine float identity
~23.9× vs NumPy FP32 at 64×4096×4096 Wall-clock (machine-dependent) Full-model FPS / GPU 32×
Wrap e2e speedup Wall-clock (machine-dependent) Drop-in quality

Committed snapshot (CPU; results/SUMMARY.md):

Check Result
Pack compression 32.0× (exact)
Native GEMM vs ±1 FP32 err = 0
Every ISA path agrees bit-for-bit err = 0 (binary and ternary)
64×4096×4096 compute vs NumPy FP32 ~23.9× (machine-dependent)
Wrapped Linear, measured RAM 29.68× (theoretical 32.00×)
MNIST binary / ternary 96.36% / 97.16% (FP 97.67%)
CIFAR Bi-Real vs FP CNN 61.14% vs 71.14% (~10 pp)
Audio binary vs FP (synthetic tones) 96.0% vs 94.5%not production ASR
Where the kernel speed came from (before → after, same process, min-of-5)

The old kernel opened a new OpenMP parallel region per batch row and re-streamed all of W B times. One team per call plus 4-row register blocking, then runtime SIMD dispatch:

Shape (B×N×M) before after
8 × 4096 × 4096 0.212 ms 0.062 ms 3.4×
64 × 4096 × 4096 1.999 ms 0.437 ms 4.6×
256 × 1024 × 1024 0.739 ms 0.119 ms 6.2×
512 × 512 × 512 2.038 ms 0.103 ms 19.9×
aggregate, 12 shapes 10.74 ms 2.12 ms 5.1×

Tiny shapes are call-overhead bound and unchanged — as expected. Wall-clock moves with core count, memory bandwidth and thermals; err = 0 does not. Details: docs/41_PORTABLE_SIMD_KERNEL.md.

Floors live in tests/golden_floors.json. Wall-clock ratios move with CPU, threads, and OpenMP — gates check conclusions, not bit-identical floats.


Ecosystem & bridges

This lab occupies packed PyTorch BNN optimisation now that Larq (TF/Keras) is archived. It does not compete with bitnet.cpp on LLM tok/s, or with torchao/vLLM on GPU INT4/FP8. When those win, bnn bridge / bnn recommend say so.

flowchart TB
  subgraph Lab["This lab — bnn-lab"]
    OPT["bnn.optimise"]
    KER["Packed XNOR / ternary GEMM"]
    COD[".bnnpack codec"]
    OPT --> KER
    OPT --> COD
    COD --> KER
  end
  PT["PyTorch STE train"] --> OPT
  HF["Hugging Face models"] --> OPT
  KER -.->|"ONNX = bridge only"| ONNX["ONNX Runtime"]
  OPT -.->|"GPU quality"| TAO["torchao / AWQ / FP8<br/>vLLM"]
  OPT -.->|"BitNet-style CPU LLM"| BCPP["bitnet.cpp"]
  OPT -.->|"generic local LLM"| GGUF2["llama.cpp GGUF"]
  style Lab fill:#ddf4ff,stroke:#0969da
  style TAO fill:#fff8c5,stroke:#9a6700
  style BCPP fill:#fff8c5,stroke:#9a6700
flowchart TB
  CLI["bnn CLI"]
  OPT2["bnn.optimise<br/>policy · calib · QAT"]
  WRAP["bnn.wrap<br/>PackedLinear / hybrid FFN"]
  CODEC["bnn.codec"]
  KER2["bnn.kernels"]
  STEZ["STE zoo · vision · audio · seq"]
  CLI --> OPT2
  CLI --> CODEC
  CLI --> STEZ
  OPT2 --> WRAP
  WRAP --> KER2
  CODEC --> KER2
  WRAP --> CODEC

Installing does not require a compiler. setup.py builds the kernel when a toolchain is present and falls back to NumPy otherwise. Prebuilt wheels from wheels.yml are five cibuildwheel jobs — linux-x86_64, linux-aarch64, windows-amd64, macos-arm64, macos-x86_64 — and land as Actions / v* tag artifacts until Trusted Publisher. There is no Windows ARM64 wheel. Live pip install bnn-lab from PyPI still needs Trusted Publishing.


What you can run next

Path Command / entry Docs
Optimiser bnn optimise --policy auto GUIDE §4 · tutorial 07 · HF 08
Per-layer search bnn.wrap.search_layer_modes(...) docs/42
QAT recovery bnn optimise --qat-steps 200 docs/42 — search before QAT
Memory footprint bnn memory --dim 1024 --ff 4096 docs/43
Codec bnn encode / bnn decode GUIDE §5
MNIST STE bnn train --epochs 3 --seed 42 pedagogy — not a throughput win
Vision bnn train-image --epochs 8 --subset 30000 tutorial 04
Audio bnn train-audio --epochs 5 tutorial 05 — synthetic only
Seq2seq / profile bnn train-seq2seq · bnn profile tutorial 06
Start here
Human path docs/GUIDE_E2E.md — install → repro → optimise
Browsable docs GitHub Pages
Reproduce REPRODUCIBILITY.md · bnn repro
AI agents AGENTS.md
Knowledge graph knowledge_graph/ · docs/44_KNOWLEDGE_GRAPH.md
Roadmap ROADMAP.md
Compatibility docs/COMPATIBILITY_MATRIX.md
Limits MODEL_CARD.md
bnn/           STE, layers, models, optimise, export, determinism
bnn/wrap/      hybrid policy, calib, QAT, PackedLinear
bnn/kernels/   portable XNOR GEMM (+ optional native)
bnn/codec/     .bnnpack encode / decode
bnn/vision/    CIFAR Bi-Real, tiny binary ViT
bnn/audio/     STFT + synthetic tones
bnn/seq/       binary Transformer encoder / decoder
results/       committed golden JSON + SUMMARY.md
tests/         pytest + golden_floors.json

Public API: import bnndocs/api/README.md. CLI: bnn --help · bnn --version.


Is / is not

Is Is not
Honest CPU / edge proof of packed binary speedups A promise of 32× e2e everywhere
Trainable BNN + BitLinear pedagogy + optimiser Full BitNet LLM pretrain
Dual-metric culture and repro gates Bit-identical floats across OS/CPU
Bridges toward INT4 / FP8 / bitnet.cpp A cuDNN / TensorRT replacement
Tagged v1.0.0 lab (PyPI upload still human) A fake-binary GPU 32× story

Contributing & quality

bnn export-check
bnn validate-native
bnn bench
bnn eval-suite

License: MIT · Citation: CITATION.cff · Repo: KanakMalpani/Binary-Neural-Networks

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bnn_lab-1.0.0.tar.gz (198.0 kB view details)

Uploaded Source

Built Distributions

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

bnn_lab-1.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (292.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

bnn_lab-1.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (276.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

bnn_lab-1.0.0-cp313-cp313-macosx_11_0_arm64.whl (153.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

bnn_lab-1.0.0-cp312-cp312-win_amd64.whl (154.2 kB view details)

Uploaded CPython 3.12Windows x86-64

bnn_lab-1.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (292.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

bnn_lab-1.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (276.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

bnn_lab-1.0.0-cp312-cp312-macosx_11_0_x86_64.whl (154.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

bnn_lab-1.0.0-cp312-cp312-macosx_11_0_arm64.whl (153.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

bnn_lab-1.0.0-cp311-cp311-win_amd64.whl (154.2 kB view details)

Uploaded CPython 3.11Windows x86-64

bnn_lab-1.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (292.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

bnn_lab-1.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (276.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

bnn_lab-1.0.0-cp311-cp311-macosx_11_0_x86_64.whl (154.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

bnn_lab-1.0.0-cp311-cp311-macosx_11_0_arm64.whl (153.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file bnn_lab-1.0.0.tar.gz.

File metadata

  • Download URL: bnn_lab-1.0.0.tar.gz
  • Upload date:
  • Size: 198.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for bnn_lab-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f50c686ebc00c584df529afbcb55fc4ff0b521616b7d7201aaac1835360d4238
MD5 4acc987cfe094a0248f64f0579293e50
BLAKE2b-256 072f5dd1ae505e17556aced3fd9aa1e657a83b8017c606e83f74eb9c0abbbe64

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0.tar.gz:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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

File details

Details for the file bnn_lab-1.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bnn_lab-1.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e7a87aac56090c32af3347ce21ecd32ad12ae05a4603eed8603bb3ab1a695025
MD5 1d85d2d72d727f6f49bbee76ac4b9989
BLAKE2b-256 a1da80f20397840c0f0133ced27a5cab8ff0e9d8d264e965ba641a3a77978d89

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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

File details

Details for the file bnn_lab-1.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for bnn_lab-1.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5632c50cab25df3520a0d1ccb4bd875591e5a5989c3341d41d81c913b3de1f35
MD5 a712e240796f2c31a46a10aab9ee7b00
BLAKE2b-256 2eed21f10c8bdd72b2df0328cf0de0273906cbce7bb6b44af1e214a2ab164d2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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

File details

Details for the file bnn_lab-1.0.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bnn_lab-1.0.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f4b87781cac7055318555edb7f702fb1a5205acdedaec554c649e7b1db6c2543
MD5 ecfec213f0562b47e84f457ee96098dd
BLAKE2b-256 38ee856c961568d0562c49c980031d66047393488892ca587cf54a99fc9fb628

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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

File details

Details for the file bnn_lab-1.0.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: bnn_lab-1.0.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 154.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for bnn_lab-1.0.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 af63b1d5ca70889a9f85b50de3f647f8b08f3c2f373437966c4744bd13df187b
MD5 31f66493180b6e5b77f90562d18fa809
BLAKE2b-256 7e74f145331e42fb7bad407470f3f22152b382c71206a06f89a1043d45b1c2ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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

File details

Details for the file bnn_lab-1.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bnn_lab-1.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 068d48116bab01b45495a102f73289bf418d04d3a3054d7390ab88c3c15e5fe2
MD5 f28e21c70deabd19b59f7c17c66a8c43
BLAKE2b-256 8c406cd8a7fbba43f4b311c0173d1669546192928f0d73d9ec13a1118ba02bbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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

File details

Details for the file bnn_lab-1.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for bnn_lab-1.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6bb86d3355d7a9ba199c1efd741b9dbd0c91e531a2e06425d6595224b30ee169
MD5 74532905d5b9183585629af3ea722919
BLAKE2b-256 74cac3af6fea6249e4ad8f6b485f47a790b0334127a9914bdd63e3e0d22b44ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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

File details

Details for the file bnn_lab-1.0.0-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for bnn_lab-1.0.0-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 3bef052d33a8a526fdfbafbcdab285101810da72d66b53b6b0ce80eb851328ca
MD5 33a84a80251d0d839417927374a868a6
BLAKE2b-256 86d15ccb320a9fa8873c2813fd0a0d6743115136bfb1d0a3fac3ae235d5b730a

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0-cp312-cp312-macosx_11_0_x86_64.whl:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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

File details

Details for the file bnn_lab-1.0.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bnn_lab-1.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a672d749c5c55b78d2295e3549fa1f09b3284c65ca18431118d53c9886cbb159
MD5 b863b6e7ba2bfa52db75508e0488e76c
BLAKE2b-256 e945df03891a5ef4dd5bedf8ec7b1dd289746c5abbddc79bf7d97532de8d2aef

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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

File details

Details for the file bnn_lab-1.0.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: bnn_lab-1.0.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 154.2 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for bnn_lab-1.0.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 79af000afc92cc8191dc1fd566d191dfd1afb513b00ef8c0d217ec0c64299cb0
MD5 aa6a3d073c95a394b776a36d112db21b
BLAKE2b-256 9f9c43545064393c22e8b53043bf80b2f8635a95734b7eff55940daefa294dee

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0-cp311-cp311-win_amd64.whl:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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

File details

Details for the file bnn_lab-1.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for bnn_lab-1.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 398d6f5de17a599ded3b47435186edb9d5b98b9c8d28d44d304149876ef429b3
MD5 419e445582fb0dd28e5c072a223cef48
BLAKE2b-256 b13de13ce5ba61316ab6d589c2be36cb4b7eb9d6686b7784fd28cdcdbbc8638a

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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

File details

Details for the file bnn_lab-1.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for bnn_lab-1.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 91b040142376dcefddada2fb7b0dccfe3198e2f1fe994991f76994c8d49d5e2a
MD5 a906a1b508bcd34db1d8a02b564a3ee7
BLAKE2b-256 2f509848b5d74962bdde3e4048bc13a610b67e12873693a6dfcd468f31816436

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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

File details

Details for the file bnn_lab-1.0.0-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for bnn_lab-1.0.0-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 cfadfcd4bc11e6cd49c20ec71cb51994d9a7403e17826081e2616e80e8ca88b6
MD5 91ae40c14ca8da8d10076c55a16ade86
BLAKE2b-256 beffe66eb903e557b0ef73152f639e3f3d069b0b2dd41120048f186d87988010

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0-cp311-cp311-macosx_11_0_x86_64.whl:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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

File details

Details for the file bnn_lab-1.0.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bnn_lab-1.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fbb107679761ca6e195d6393305db2eacbf810b47d9c343d6ef86cd902e4b0e4
MD5 5da77455844fc55b4dd0a198e1ee7b40
BLAKE2b-256 7336a93ff749ab409b6feedadda4f48e383ddec7b3373706f83a28588f5704c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for bnn_lab-1.0.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: wheels.yml on KanakMalpani/Binary-Neural-Networks

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 Sentry Error logging StatusPage Status page