Deep learning frameworks (DLFs) have been playing an increasingly important role in this intelligence age since they act as a basic infrastructure for an increasingly wide range of AIbased applications. Meanwhile, as multi-programming-language (MPL) software systems, DLFs are inevitably suffering from bugs caused by the use of multiple programming languages (PLs). Hence, it is of paramount significance to understand the bugs (especially the bugs involving multiple PLs, i.e., MPL bugs) of DLFs, which can provide a foundation for preventing, detecting, and resolving bugs in the development of DLFs. To this end, we manually analyzed 1497 bugs in three MPL DLFs, namely MXNet, PyTorch, and TensorFlow. First, we classified bugs in these DLFs into 12 types (e.g., algorithm design bugs and memory bugs) according to their bug labels and characteristics. Second, we further explored the impacts of different bug types on the development of DLFs, and found that deployment bugs and memory bugs negatively impact the development of DLFs in different aspects the most. Third, we found that 28.6%, 31.4%, and 16.0% of bugs in MXNet, PyTorch, and TensorFlow are MPL bugs, respectively; the PL combination of Python and C/C++ is most used in fixing more than 92% MPL bugs in all DLFs. Finally, the code change complexity of MPL bug fixes is significantly greater than that of single-programming-language (SPL) bug fixes in all the three DLFs, while in PyTorch MPL bug fixes have longer open time and greater communication complexity than SPL bug fixes. These results provide insights for bug management in DLFs.
翻译:深学习框架( DLF) 在这个智能时代一直发挥着越来越重要的作用, 因为这些框架可以作为越来越广泛的AI基础应用程序的基础基础设施。 与此同时, 由于多程序化语言软件系统( MPL), DLF 不可避免地会因使用多程序化语言( PLs) 造成的错误而受害。 因此, 理解 DLF 的错误( 特别是涉及多个 PLs 的错误, 即 MPL 错误) 至关重要, 这可以为 DLF 的开发提供一个基础来预防、 检测和解决错误。 为此, 我们手工分析了 3个 MPL DL 软件系统( 即 MXNet、 PyTorrch 和 TensorFlow 软件系统) 中的 1497 错误。 因此, 我们将这些 DLF DLF 的错误根据其错误标签和特性分为12种( 例如, 算法设计错误和记忆错误) 。 其次, 我们进一步探索了各种错误式的直观对 DLF 开发过程的影响, 并且发现部署错误和记忆错误的错误错误在 MIL RF 4 中分别对 DL 3 和 mlF 的开发产生了很大的错误。</s>