SparseFlow provides a standalone PyTorch implementation of sparse neuronal activation (AxonHillock) and sparse convolutional blocks, plus Lightning-based training protocols for comparing dense and sparse YOLOv8-nano-style models.
curl -LsSf https://astral.sh/uv/install.sh | shuv venv
source .venv/bin/activate
uv syncCreate .env in the project root and paste:
cat > .env << 'EOF'
HF_TOKEN=<your_hf_token>
HF_HUB_ENABLE_HF_TRANSFER=1
EOFNotes:
HF_TOKENenables authenticated requests to the Hugging Face Hub.HF_HUB_ENABLE_HF_TRANSFER=1enables faster transfer mode whenhf_transferis installed..envis git-ignored and should stay local.
Load these variables with uv when running commands:
uv run --env-file .env python scripts/check_dataset.py --split train --num-samples 3
uv run --env-file .env python main.py train --model yolov8:n --pretrained-weights yolov8n.pt --max-epochs 1You can use the same --env-file .env pattern for evaluate commands as well.
--pretrained-weights accepts either:
- an Ultralytics YOLO-style
.ptfile, such asyolov8n.pt - a SparseFlow Lightning
.ckptcheckpoint, such ascheckpoints/baseline.ckpt
The --device option accepts auto, cpu, or cuda. Use auto unless you
need to force CPU or CUDA.
Full-scale baseline training (COCO loaded automatically from Hugging Face):
uv run python main.py train \
--model yolov8:n \
--pretrained-weights yolov8n.pt \
--max-epochs 100 \
--batch-size 16 \
--device auto \
--checkpoint-out checkpoints/baseline.ckptEvaluate either a .pt file or a .ckpt checkpoint:
uv run python main.py evaluate --model yolov8:n --pretrained-weights yolov8n.pt --batch-size 16
uv run python main.py evaluate --model yolov8:n --pretrained-weights checkpoints/baseline.ckpt --batch-size 16Run prediction with either weight format:
uv run python main.py predict --model yolov8:n --pretrained-weights yolov8n.pt --batch-size 16
uv run python main.py predict --model yolov8:n --pretrained-weights checkpoints/baseline.ckpt --batch-size 16Sample-limit options are command-specific:
train: supports--max-train-samplesand--max-eval-samplesevaluate: supports--max-eval-samplespredict: does not support--max-eval-samples
Validate both --pretrained-weights loading paths without running COCO:
uv run python scripts/check_pretrained_weights_paths.py --pretrained-weights yolov8n.pttensorboard --logdir logs/tensorboardLogs are written to logs/tensorboard by default. Override with --log-dir <path> at training time.