fSEAD: a Composable FPGA-based Streaming Ensemble Anomaly Detection Library
<|reference_start|>fSEAD: a Composable FPGA-based Streaming Ensemble Anomaly Detection Library: Machine learning ensembles combine multiple base models to produce a more accurate output. They can be applied to a range of machine learning problems, including anomaly detection. In this paper, we investigate how to maximize the composability and scalability of an FPGA-based streaming ensemble anomaly detector (fSEAD). To achieve this, we propose a flexible computing architecture consisting of multiple partially reconfigurable regions, pblocks, which each implement anomaly detectors. Our proof-of-concept design supports three state-of-the-art anomaly detection algorithms: Loda, RS-Hash and xStream. Each algorithm is scalable, meaning multiple instances can be placed within a pblock to improve performance. Moreover, fSEAD is implemented using High-level synthesis (HLS), meaning further custom anomaly detectors can be supported. Pblocks are interconnected via an AXI-switch, enabling them to be composed in an arbitrary fashion before combining and merging results at run-time to create an ensemble that maximizes the use of FPGA resources and accuracy. Through utilizing reconfigurable Dynamic Function eXchange (DFX), the detector can be modified at run-time to adapt to changing environmental conditions. We compare fSEAD to an equivalent central processing unit (CPU) implementation using four standard datasets, with speed-ups ranging from $3\times$ to $8\times$.<|reference_end|>
@article{lou2024fsead:,
    title={fSEAD: a Composable FPGA-based Streaming Ensemble Anomaly Detection
  Library},
    author={Binglei Lou, David Boland, Philip H.W. Leong},
    journal={ACM Transactions on Reconfigurable Technology and
  Systems(TRETS),16, 3, Article 42 (2023). Journal Track of The International
  Conference on Field Programmable Technology (FPT'22), Hong Kong SAR, China},
    year={2024},
    doi={10.1145/3568992},
    archivePrefix={arXiv},
    eprint={2406.05999},
    primaryClass={cs.AR cs.AI cs.LG}
}