Skip to content

2.0.0.3

Latest

Choose a tag to compare

@iLevyTate iLevyTate released this 12 Jul 01:31
· 76 commits to main since this release
26e213d

This refinement release polishes the 2.0.x line with stability fixes, quality-of-life improvements, and better developer tooling. No breaking changes were introduced; projects that build against v2.0.2 should work out of the box.


✨ Key Additions

  1. Generic ANN→SNN Converter (convert.py)
    • Unified, argument-driven pipeline that supports any Hugging Face causal-LM
    • Optional 8-bit quantisation, calibration sample control, and simplified/​full modes

  2. Specialised SmolLM2 Converter (smollm2_converter.py)
    • End-to-end script for converting SmolLM2-1.7B-Instruct
    • Built-in TemporalSpikeProcessor wrapper for multi-turn conversations

  3. Command-line Runner (run_conversion.py)
    • Single entry-point to launch conversions with sensible logging, GPU/CPU autodetection, and on-disk spike telemetry

  4. SpikingJelly Compatibility Layer (spikingjelly_compat.py)
    • Gracefully handles API differences across SJ versions ≥ 0.0.0.0.14
    • Dynamically chooses correct quantiser and layer imports

  5. Comprehensive Test Suite
    test_conversational_snn.py – 1 K+ lines covering KV-cache integrity, position-ID boundaries, spike-rate sanity, and multi-turn coherence
    snn_multi_turn_conversation_test.py – quick smoke test for conversational loops


🛠️ Improvements

  • Performance: minor optimisation passes across conversion loops (fewer redundant tensor copies, improved progress bars with tqdm).
  • Logging: unified structured logging across all scripts; logs now emitted both to console and dedicated *.log files.
  • Error Handling: clearer import-time checks for PyTorch, SpikingJelly, and model compatibility; early exits with actionable messages.

🐞 Fixes

  • Resolved outdated activation references (GELU→ReLU) that caused silent accuracy drops in some converted layers.
  • Fixed spike-count overflow when timesteps > 64 in long-sequence tests.
  • Patched Windows path-handling edge-cases in file save routines (now OS-agnostic via os.path.join).

📚 Documentation

  • New Conversion Workflow, API Reference, and Hardware Requirements guides in the docs/ directory.
  • Root README.md updated with quick-start instructions, feature matrices, and a V1 vs V2 comparison table.

⚙️ CI / Tooling

  • Added GitHub Actions pipeline (.github/workflows/ci.yml) covering lint-safe syntax checks, basic dependency installation, and documentation presence validation across Python 3.8-3.11.

🔄 Upgrade Notes

  1. Make sure your spikingjelly version is ≥ 0.0.0.0.14 (pip install "spikingjelly[cuda]>=0.0.0.0.14" --pre).
  2. No API changes since v2.0.2; simply pull the new release and run your existing conversion commands.
  3. For SmolLM2 users, switch from the older experimental notebook to python smollm2_converter.py --help.

What's Changed

Full Changelog: 2.0.0.2...2.0.0.3