Version: v0.3.2
Release Date: 2026-06-04
Status: Polished evidence-backed research release candidate
Project Synapse is a research codebase for studying resource-conditioned hypernetworks for modular task adaptation. The core idea is to use a compact hypernetwork to generate lightweight task-specific parameters on demand, conditioned on task identity and runtime device context, while a cache-like memory module reuses previously successful parameter configurations.
This repository is being released as a public research artifact with a verified quick-start path. It is still research software, not a production-ready framework.
- Latest public release:
v0.3.2 - Zenodo concept DOI:
10.5281/zenodo.20544669 - Zenodo version DOI for
v0.3.2:10.5281/zenodo.20544670 - Public benchmark note: RESULTS_v0.3.0.md
- Seeded benchmark artifact: benchmarks/public_digits_fixed_head_vs_synapse_seed42.json
- Citation metadata: CITATION.cff
In one sentence:
Generate small task-specific parameters from task identity and device context, then reuse successful parameter states through a cache-like memory.
Most parameter-efficient adaptation workflows are still largely static. Project Synapse explores a different systems question:
Can adaptation become context-aware at runtime, so a model changes how it parameterizes itself depending on task demands and device constraints?
That makes this repository most useful as a platform for studying:
- edge or on-device adaptation,
- task switching under changing resource conditions,
- lightweight hypernetwork-generated heads or adapters,
- cache or recall mechanisms for previously successful parameter states.
This release is primarily for:
- researchers studying hypernetworks, PEFT, continual learning, or edge adaptation,
- students who want a runnable starting point for resource-aware adaptation experiments,
- practitioners exploring ideas for modular on-device adaptation before investing in a larger benchmark effort.
If you need a production PEFT stack today, standard LoRA or adapter pipelines are usually the better default.
The main research question for this release is:
Can a resource-conditioned hypernetwork generate lightweight task heads or adapters that improve task switching, memory use, or on-device adaptation latency over fixed heads, adapters, or LoRA baselines?
The code currently explores that question through three architectural components:
- Neural Substrate A modular execution layer that selects input processors and task heads.
- Task Weaver A hypernetwork that generates lightweight head parameters conditioned on task and context.
- Synaptic Ledger A cache that stores successful context-to-parameter mappings for fast recall.
v0.3.2 is intended to provide a public-ready, reproducible research artifact on top of the broader research codebase. It is suitable for:
- Advisor review
- Early open-source release
- Research planning
- Incremental benchmarking work
It is not yet a complete benchmark suite, but it now includes verified public experiment paths.
The first controlled public benchmark in this repository compares Synapse against a fixed-head baseline on the public digits task under the same 8-epoch training budget.
Headline result from the seeded end-to-end run:
- Synapse resource-aware model:
98.61%validation accuracy - Fixed-head baseline:
95.56%validation accuracy - Synapse latency remains much higher on CPU:
1.39 ms/batchvs0.02 ms/batch - Synapse marginal task-specific parameters remain much smaller:
8vs2410
Curated artifact:
- benchmark summary note: RESULTS_v0.3.0.md
- machine-readable result: benchmarks/public_digits_fixed_head_vs_synapse_seed42.json
Interpretation:
- Synapse is no longer only a conceptual artifact; it now has one reproducible comparative result.
- The system still carries a large shared overhead on small single-task problems.
- Its most defensible efficiency advantage remains marginal task growth, not single-task simplicity.
The point of this repository is not to claim a new fundamental learning primitive. The point is to provide a meaningful, inspectable public system for testing whether:
- runtime resource context can shape lightweight parameter generation,
- modular task-head generation can support efficient switching,
- a memory-like ledger can help recall useful parameter states.
That makes Synapse most valuable as:
- a research prototype,
- a benchmark starting point,
- a thesis or lab artifact that can be extended with stronger baselines.
The current codebase includes:
- A modular
SynapseModelorchestrator in src/synapse_model.py - A task-conditioned hypernetwork in src/fabric_weaver.py
- A modular substrate in src/fabric_substrate.py
- A ledger-based cache in src/fabric_ledger.py
- Dataset loaders and experiment configs for several prototype scenarios
- A training entrypoint in scripts/train.py
- Exploratory notebooks and historical training logs
- A fully self-contained public toy experiment in configs/public_toy_exp.yaml
- A reproducible real-dataset experiment in configs/public_digits_exp.yaml
- A resource-aware public demo in configs/public_digits_resource_exp.yaml
- A working adaptation analysis tool in scripts/test_adaptation.py
- A working feature extraction utility in scripts/extract_imagenet_features.py
- A public fixed-head vs Synapse benchmark script in scripts/benchmark_public_digits.py
This release still has important limitations:
- The semantic context extractor is still a placeholder in src/synapse_model.py.
- Several legacy configs are exploratory and may require local path fixes, dataset preparation, or additional code work.
- Some planned multimodal and detection paths remain partial or aspirational.
- The repo now supports resource-aware experiments, but it does not yet include the broader baseline suite promised in the longer-term roadmap.
The v0.2.3 release tightens several semantics that matter for research correctness:
- per-sample generated weights are now handled explicitly instead of being silently collapsed to the first sample,
- processor-to-input routing can now be declared explicitly through
input_key_map, - ledger cache keys now preserve processor order and store cached weights on CPU.
The repository uses a numbered root layout for internal organization, but the active source directories are standard:
configs/experiment YAML filesdata/dataset loaderssrc/core model codetraining/trainer and dashboardutils/logging and metrics helpersscripts/training, evaluation, extraction, and adaptation entrypointsbenchmarks/curated public benchmark artifactstests/prototype testsnotebooks/analysis and debugging notebookstraining_logs/archived run logs
conda env create -f 02_environment.yml
conda activate synapsepython -m venv .venv
source .venv/bin/activate
pip install -r 03_requirements.txtpython scripts/train.py --config configs/public_digits_exp.yamlNotes:
configs/public_digits_exp.yamlis the recommended public quick-start because it uses a real dataset bundled viascikit-learnwith no private data requirement.configs/public_toy_exp.yamlremains available as a fully self-contained smoke-test path.configs/public_digits_resource_exp.yamlis the recommended resource-aware demo path when you want to exercise telemetry-conditioned parameter generation.- Other configs are still experimental and often expect local datasets that are not bundled in the repo.
- Some legacy configs require preparatory steps such as feature extraction.
python scripts/eval.py --config configs/public_digits_exp.yaml --checkpoint <checkpoint_path>The training script saves checkpoints to the directory configured by checkpoint_dir.
python scripts/test_adaptation.py --config configs/public_digits_resource_exp.yaml --checkpoint <checkpoint_path> --max-batches 2This script compares generated task-head weights and predictions under two contexts and reports:
- sampled-batch accuracy under each context,
- prediction agreement,
- drift in generated head weights.
python scripts/benchmark_public_digits.py --config configs/public_digits_resource_exp.yamlThis benchmark trains a fixed-head baseline and compares it against Synapse on the public digits path using the same epoch budget.
Curated seeded result artifact:
cat benchmarks/public_digits_fixed_head_vs_synapse_seed42.jsonpython scripts/extract_imagenet_features.py --config configs/config_for_feature_extraction.yaml --output-dir data/imagenet_featuresThis utility extracts backbone features from an ImageFolder-style dataset and writes feature and label batches for later use with get_imagenet_feature_loaders.
The following commands have been verified in this repository:
python -m unittest discover -s tests -v
python scripts/train.py --config configs/public_toy_exp.yaml
python scripts/train.py --config configs/public_digits_exp.yaml
python scripts/eval.py --config configs/public_digits_exp.yaml --checkpoint <checkpoint_path>
python scripts/benchmark_public_digits.py --config configs/public_digits_resource_exp.yamlToday, this repository can already be used to:
- train and evaluate a reproducible public classification experiment,
- run a resource-aware demo that changes generated head weights across contexts,
- inspect whether context changes alter generated parameters without destroying predictions,
- run a fixed-head versus Synapse benchmark on the public digits task,
- extract backbone features from an ImageFolder-style dataset for further experiments.
This release should not yet be interpreted as:
- a production framework,
- a benchmark-proven replacement for adapters or LoRA,
- a claim that resource-conditioned hypernetworks are broadly superior.
The notebooks in notebooks/ are useful for exploratory debugging and architecture inspection, but they should be treated as research workpads rather than stable reproducibility artifacts.
This release includes:
- Research positioning: 04_RESEARCH_POSITIONING_v1.0.md
- Changelog: CHANGELOG.md
- Release notes: RELEASE_NOTES_v0.3.2.md
- Previous release notes: RELEASE_NOTES_v0.3.1.md
- Previous release notes: RELEASE_NOTES_v0.3.0.md
- Previous release notes: RELEASE_NOTES_v0.2.3.md
- Previous release notes: RELEASE_NOTES_v0.2.2.md
- Previous release notes: RELEASE_NOTES_v0.2.1.md
- Previous release notes: RELEASE_NOTES_v0.2.0.md
- Previous alpha notes: RELEASE_NOTES_v0.1.0-alpha.md
- Verified public results: RESULTS_v0.3.0.md
- Curated benchmark artifacts: benchmarks/README.md
- Contribution guide: CONTRIBUTING.md
- Authors: AUTHORS.md
- Citation metadata: CITATION.cff
- Zenodo DOI setup: ZENODO_DOI_SETUP.md
- Code of conduct: CODE_OF_CONDUCT.md
- Security policy: SECURITY.md
- Version marker: VERSION
The strongest way to read this repository is:
- As a research prototype for resource-aware parameter generation
- As a platform for benchmarking hypernetwork-based task adaptation
- As an evidence-backed public release candidate that still needs broader baseline work, richer systems evaluation, and real telemetry support
The current roadmap is:
v0.1.0-alphaArchitecture release and positioning packagev0.2.0Reproducible single-task public artifactv0.3.0First comparative fixed-head benchmark on the public digits pathv0.4.0Broader baseline suite including adapters and LoRAv0.5.0Multitask edge benchmark studyv1.0.0Research-quality open-source release
The project is distributed under the MIT license in 01_LICENSE.
The current public release is maintained by Syed Amir Hamza. Authorship details are listed in AUTHORS.md, and software citation metadata is provided in CITATION.cff.
Preferred DOI usage:
- cite
10.5281/zenodo.20544670when you want the exactv0.3.2release, - cite
10.5281/zenodo.20544669when you want the evolving project across versions.
This repository now has a Zenodo record. The current concept DOI is 10.5281/zenodo.20544669, and the current version DOI for v0.3.2 is 10.5281/zenodo.20544670. The archival workflow and future-version notes are documented in ZENODO_DOI_SETUP.md.