FADE is a state-of-the-art general-purpose lossless data compressor based on deep learning. It addresses the critical trade-off between probability modeling precision and system efficiency inherent in existing neural compressors. By introducing a novel Dual-Stream Architecture, FADE effectively decouples data into micro-syntactic and macro-semantic features. Furthermore, it incorporates the Concurrent Stream-Parallel Pipeline to overcome the serial bottleneck of autoregressive decoding, achieving a breakthrough in throughput.
FADE has the following several features:
- 📉Superior Compression Ratio: Outperforms traditional and advanced learned methods.
- 🚀High Throughput: Powered by CSPP, achieving full-pipeline parallelism for both compression and decompression.
- ⚡Resource Optimized: Optimized for minimal inference latency and GPU memory usage compared.
- 🔧Extensible: The underlying CSPP pipeline supports easy integration with custom predictive models.
Trade-off between compression ratio and throughput. Top-right is better.
- 2026.04: We have uploaded the preprint paper to arXiv.
- 2026.04: Our work has been accepted by ACL 2026 for an Oral Presentation.
- 2026.01: We have released the source code and datasets.
conda create -n fade_env python=3.12
conda activate fade_env
git clone https://github.com/huidong-ma/FADE.git
cd ./FADE
pip install -r requirements.txt
# Compression
python fade.py c <raw_file> <compressed_file>
# Decompression
python fade.py d <compressed_file> <decompressed_file>
For example:
python fade.py c enwik6 enwik6.cmp
python fade.py d enwik6.cmp enwik6.decmp
- The CSPP framework is designed for seamless integration with various architectures. To execute your own probability prediction model using CSPP, simply register your model class in the
MODEL_REGISTRYwithinfade.py. You can then invoke it using the--model/-margument. - To ensure a fair comparison, the default batch size (
--batch_size/-b) is set to 512. However, as demonstrated in our paper, batch sizes of 4096 or 8192 yield superior overall compression ratios. For practical deployment, we recommend setting the batch size to 4096 or 8192, depending on your hardware capacity.
| Dataset | Type | Description | Link |
|---|---|---|---|
| Enwik9 | text | First |
Page |
| LJSpeech | audio | First 10,000 files of the LJSpeech audio dataset. | Page |
| TestImages | image | A classical 8-bit benchmark dataset for image compression evaluation. | Page |
| UVG | video | The video ShakeNDry from the UVG benchmark featuring 1080p 8-bit YUV format. | Page |
| CESM | float | First |
Page |
| DNACorpus | genome | A corpus of DNA sequences from 15 different species. | Page |
| Silesia | heterogeneous | A heterogeneous corpus of 12 files covering various file formats. | Page |
The processed data used in the paper can be directly downloaded from fade_datasets.tar.gz and extracted by executing tar -xzf fade_datasets.tar.gz.
If you use FADE in your research, please cite our paper and star this repository to support us!
@inproceedings{ma2026efficient,
title={Efficient Learned Data Compression via Dual-Stream Feature Decoupling},
author={Ma, Huidong and Shi, Xinyan and Hui, Sun and Yue, Xiaofei and Liu, Xiaoguang and Wang, Gang and Cai, Wentong},
booktitle={Proceedings of the 64th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)},
pages={7151--7164},
year={2026}
}
The code is based on PAC, EDPC, and Arithmetic Coding. Thanks for these great works.
Email: mahd@nbjl.nankai.edu.cn
Nankai-Baidu Joint Laboratory (NBJL)