Skip to main content

SC2 Benchmark: Supervised Compression for Split Computing

PyPI version GitHub Discussions

This is the official repository of sc2bench package and our TMLR paper, "SC2 Benchmark: Supervised Compression for Split Computing".

As an intermediate option between local computing and edge computing (full offloading), split computing has been attracting considerable attention from the research communities.

In split computing, we split a neural network model into two sequences so that some elementary feature transformations are applied by the first sequence of the model on a weak mobile (local) device. Then, intermediate, informative features are transmitted through a wireless communication channel to a powerful edge server that processes the bulk part of the computation (the second sequence of the model).

R-D (rate-distortion), ExR-D, and Three-way tradeoffs ImageNet (ILSVRC 2012): R-D (rate-distortion), ExR-D, and three-way tradeoffs for input compression and supervised compression with ResNet-50 as a reference model

Input compression vs. Supervised compression

Input compression is an approach to save transmitted data, but it leads to transmitting information irrelevant to the supervised task. To achieve better supervised rate-distortion tradeoff, we define supervised compression as learning compressed representations for supervised downstream tasks such as classification, detection, or segmentation. Specifically for split computing, we term the problem setting SC2 (Supervised Compression for Split Computing).

Note that the training process can be done offline (i.e., on a single device without splitting), and it is different from "split learning".

SC2 Metrics

1. Encoder Size (to be minimized)

Local processing cost should be minimized as local (mobile) devices usually have battery constraints and limited computing power. As a simple proxy for the computing costs, we measure the number of encoder parameters and define the encoder size as the total number of bits to represent the parameters of the encoder.

2. Data Size (to be minimized)

We want to penalize large data being transferred from the mobile device to the edge server while the BPP does not penalize it when feeding higher resolution images to downstream models for achieving higher model accuracy.

3. Model Accuracy (to be maximized)

While minimizing the two metrics, we want to maximize model accuracy (minimize supervised distortion). Example supervised distortions are accuracy, mean average precision (mAP), and mean intersection over union (mIoU) for image classification, object detection, and semantic segmentation, respectively.

Installation

pip install sc2bench

Virtual Environments

For pipenv users,

pipenv install --python 3.9
# or create your own pipenv environment
pipenv install sc2bench 

Datasets

See instructions here

Checkpoints

You can download our checkpoints including trained model weights here.
Unzip the downloaded zip files under ./, then there will be ./resource/ckpt/.

Supervised Compression

  1. CR + BQ: "Neural Compression and Filtering for Edge-assisted Real-time Object Detection in Challenged Networks"
  2. End-to-End: "End-to-end Learning of Compressible Features"
  3. Entropic Student: "Supervised Compression for Resource-Constrained Edge Computing Systems"

README.md explains how to train/test implemented supervised compression methods.

Baselines: Input Compression

Each README.md gives instructions to run the baseline experiments.

Codec-based Feature Compression

# JPEG
python script/task/image_classification.py -test_only --config configs/ilsvrc2012/feature_compression/jpeg-resnet50.yaml
# WebP
python script/task/image_classification.py -test_only --config configs/ilsvrc2012/feature_compression/webp-resnet50.yaml

Citation

[Paper] [Preprint]

@article{matsubara2023sc2,
  title={{SC2 Benchmark: Supervised Compression for Split Computing}},
  author={Matsubara, Yoshitomo and Yang, Ruihan and Levorato, Marco and Mandt, Stephan},
  journal={Transactions on Machine Learning Research},
  issn={2835-8856},
  year={2023},
  url={https://openreview.net/forum?id=p28wv4G65d}
}

Note

For measuring data size per sample precisely, it is important to keep test batch size of 1 when testing.
E.g., some baseline modules may expect larger batch size if you have multiple GPUs.
Then, add CUDA_VISIBLE_DEVICES=0 before your execution command (e.g., sh, bash, python) so that you can force the script to use one GPU (use GPU: 0 in this case).

For instance, an input compression experiment using factorized prior (pretrained input compression model) and ResNet-50 (pretrained classifier)

CUDA_VISIBLE_DEVICES=0 sh script/neural_input_compression/ilsvrc2012-image_classification.sh factorized_prior-resnet50 8

Issues / Questions / Requests

The documentation is work-in-progress. In the meantime, feel free to create an issue if you find a bug.
If you have either a question or feature request, start a new discussion here.

References

Metadata

Release files for sc2bench 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sc2bench 0.1.1
File Size Uploaded
sc2bench-0.1.1.tar.gz 41.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sc2bench 0.1.1
File Interpreter ABI Platform
sc2bench-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 90.4 kB

Release files / sc2bench-0.1.1.tar.gz

Download URL sc2bench-0.1.1.tar.gz
Size 41.5 kB
Tags Source
SHA-256 checksum
How to use checksums
fc7cf8101ea37477f172182d0c2e862577da8aa22f144a1bbacd0af8e9b0cfd4
BLAKE2b-256 checksum
How to use checksums
e6c8cc622866ad78aeae9f4a3640c7bb47a0084a8613a06d88ee8bb8754d72d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / sc2bench-0.1.1-py3-none-any.whl

Download URL sc2bench-0.1.1-py3-none-any.whl
Size 48.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e91f2dd276e6f060f117d031e72fb1e2fd3869fee11d6ec0581921a0c7c53734
BLAKE2b-256 checksum
How to use checksums
996c5f5cdf7151b3bd40d92848be68c3f4c3a5b79ed6242c6bd96c9a8270f8cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page