CITADEL: Context Similarity Based Deep Learning Framework Bug Finding
<|reference_start|>CITADEL: Context Similarity Based Deep Learning Framework Bug Finding: With deep learning (DL) technology becoming an integral part of the new intelligent software, tools of DL framework testing and bug-finding are in high demand. Existing DL framework testing tools have limited coverage on bug types. For example, they lack the capability of finding performance bugs, which are critical for DL model training and inference regarding performance, economics, and the environment. This problem is challenging due to the difficulty of getting test oracles of performance bugs. Moreover, existing tools are inefficient, generating hundreds of test cases with few trigger bugs. In this paper, we propose Citadel, a method that accelerates the finding of bugs in terms of efficiency and effectiveness. We observe that many DL framework bugs are similar due to the similarity of operators and algorithms belonging to the same family (e.g., Conv2D and Conv3D). Orthogonal to existing bug-finding tools, Citadel aims to find new bugs that are similar to reported ones that have known test oracles. It works by first collecting existing bug reports and identifying problematic APIs. Citadel defines context similarity to measure the similarity of DL framework API pairs and automatically generates test cases with oracles for APIs that are similar to the problematic APIs in existing bug reports. Citadel respectively covers 1,436 PyTorch and 5,380 TensorFlow APIs and effectively detects 77 and 74 API bugs, many of which, e.g., 11 performance bugs, cannot be detected by existing tools. Moreover, a remarkable 35.40% of the test cases generated by Citadel can trigger bugs, which significantly transcends the state-of-the-art method (3.90%).<|reference_end|>
@article{zhang2024citadel:,
    title={CITADEL: Context Similarity Based Deep Learning Framework Bug Finding},
    author={Xiaoyu Zhang, Juan Zhai, Shiqing Ma, Shiwei Wang, Chao Shen},
    journal={arXiv preprint arXiv:2406.12196},
    year={2024},
    archivePrefix={arXiv},
    eprint={2406.12196},
    primaryClass={cs.SE}
}