software-track/
├── src/
│ └── bitbybit/
│ ├── kernel/ # hash‑kernel abstractions
│ │ ├── _base.py # _HashKernel (provided)
│ │ ├── random.py # RandomProjKernel (implement)
│ │ └── learned.py # LearnedProjKernel (implement)
│ ├── nn/ # hash‑backed torch.nn layers (provided)
│ ├── utils/ # helpers (provided)
│ └── patch.py # swaps torch.nn ⇄ bitbybit.nn
├── train.py # minimal training template
├── publish.py # leaderboard uploader
├── config.py # hashing layerwise config
└── requirements.txtDo this step before installing other packages:
sudo apt-get update
sudo apt-get install -y \
python3-dev \
libjpeg-dev \
zlib1g-dev \
libpng-dev \
libtiff-dev \
libfreetype6-dev \
liblcms2-dev \
libwebp-dev \
libharfbuzz-dev \
libfribidi-devThen do this:
uv venv --python 3.12
source .venv/bin/activate
uv pip install -r pyproject.tomlWeights are fetched from https://github.com/chenyaofo/pytorch-cifar-models using the keys
"cifar10_resnet20"
"cifar100_resnet20"-
Implement kernels: complete
RandomProjKernelandLearnedProjKernel. -
Train: extend train.py to fine‑tune projections (and optionally the backbone).
-
Submit: save checkpoints to
software-track/submission_checkpoints/<model>.pththen run
python publish.py \ --team-name <team-name> \ --key <pre-shared-key>
Submissions are unlimited within the 24‑hour window; the server keeps your best score.
Evaluation lives in bitbybit.utils.score.calculate_submission_score.
export PYTHONPATH="$PWD/src"