Skip to main content
QUICK REVIEW

[論文レビュー] Free Lunch for Testing: Fuzzing Deep-Learning Libraries from Open Source

Anjiang Wei, Yinlin Deng|arXiv (Cornell University)|Jan 17, 2022
Software Testing and Debugging Techniques被引用数 9
ひとこと要約

FreeFuzz は、ドキュメント、開発者向けテスト、実世界のモデルといったオープンソースのコードから情報を抽出し、動的インストルメンテーションを用いて実行時における型および形状情報を抽出することで、深層学習ライブラリの完全自動化された API レベルのファズィングを実現する新規手法である。この手法は、LEMON よりも 9 倍多い 1158 個の API をカバーし、オーバーヘッドは 3.5 倍低減された。PyTorch および TensorFlow で 49 個のバグを発見し、そのうち 38 個は開発者によって以前に発見されていなかったと確認された。

ABSTRACT

Deep learning (DL) systems can make our life much easier, and thus are gaining more and more attention from both academia and industry. Meanwhile, bugs in DL systems can be disastrous, and can even threaten human lives in safety-critical applications. To date, a huge body of research efforts have been dedicated to testing DL models. However, interestingly, there is still limited work for testing the underlying DL libraries, which are the foundation for building, optimizing, and running DL models. One potential reason is that test generation for the underlying DL libraries can be rather challenging since their public APIs are mainly exposed in Python, making it even hard to automatically determine the API input parameter types due to dynamic typing. In this paper, we propose FreeFuzz, the first approach to fuzzing DL libraries via mining from open source. More specifically, FreeFuzz obtains code/models from three different sources: 1) code snippets from the library documentation, 2) library developer tests, and 3) DL models in the wild. Then, FreeFuzz automatically runs all the collected code/models with instrumentation to trace the dynamic information for each covered API, including the types and values of each parameter during invocation, and shapes of input/output tensors. Lastly, FreeFuzz will leverage the traced dynamic information to perform fuzz testing for each covered API. The extensive study of FreeFuzz on PyTorch and TensorFlow, two of the most popular DL libraries, shows that FreeFuzz is able to automatically trace valid dynamic information for fuzzing 1158 popular APIs, 9X more than state-of-the-art LEMON with 3.5X lower overhead than LEMON. To date, FreeFuzz has detected 49 bugs for PyTorch and TensorFlow (with 38 already confirmed by developers as previously unknown).

研究の動機と目的

  • 深層学習モデル開発の基盤をなすが、モデル自体と比較して十分にテストが行われていない深層学習ライブラリにおける自動テストの重要なギャップを埋めること。
  • Python を基盤とする深層学習ライブラリの動的型付けの特性が、自動テスト入力生成および型推論を困難にしているという課題を克服すること。
  • 実世界のコードと実行時インストルメンテーションを活用することで、高カバレッジで効率的かつ自動化された深層学習ライブラリ API のファズィングを可能にすること。
  • コードカバレッジが低く、オーバーヘッドが大きく、入力の多様性に欠けるという問題を抱える既存のモデルレベルのテスト手法(例:CRADLE や LEMON)を改善すること。
  • PyTorch や TensorFlow といった広く使われる深層学習ライブラリに、細粒度な API レベルのファズィングによって以前に発見されていなかったバグを特定すること。

提案手法

  • FreeFuzz は、公式ライブラリのドキュメント、開発者向けテストスイート、パブリックリポジトリに公開された実世界の深層学習モデルの 3 つのオープンソースソースからコードとモデルを収集する。
  • 収集したすべてのコードをインストルメント化して実行し、実行時に API の呼び出しを動的にトレースすることで、パラメータの型、値、および入出力テンソルの形状を収集する。
  • トレースされた動的情報をもとに、各カバーされた API に対してタイプに配慮したファズィング入力を生成し、正確かつ効果的なマッピングテストを可能にする。
  • API レベルでカバレッジ指向のファズィング戦略を採用し、エンドツーエンドのモデル実行ではなく、個々のライブラリ関数のユニットテストに焦点を当てる。
  • 実行時の挙動を最大限に可視化しつつ、パフォーマンスオーバーヘッドを最小限に抑えるため、軽量な実行時インストルメンテーションを用いる。
  • 出力の不一致を特定することで、潜在的なバグを検出できるように、既存のテストオラクルと統合する。

実験結果

リサーチクエスチョン

  • RQ1オープンソースコードおよびモデルを効果的にマイニングすることで、深層学習ライブラリ API の多様で妥当なテスト入力を自動生成できるか?
  • RQ2動的型付けの影響を受ける Python を基盤とする深層学習 API に対しても、動的インストルメンテーションによって信頼性の高い型および形状情報が抽出可能か?
  • RQ3API レベルのファズィングは、コードカバレッジ、効率性、バグ検出の観点で、モデルレベルのテストを上回ることができるか?
  • RQ4LEMON らしい最先端の手法と比較して、FreeFuzz はカバレッジ、オーバーヘッド、実世界でのバグ発見において優れているか?
  • RQ5先行研究(例:LEMON)で提案された既存のモデル変異技術は、深層学習ライブラリにおけるカバレッジ向上や新規バグの発見に、実際にどの程度寄与できるか?

主な発見

  • FreeFuzz は、PyTorch および TensorFlow の 1158 個の代表的な API について、動的情報を正しくトレースした。これは LEMON がカバーした 128 個の API と比較して 900% の増加である。
  • LEMON よりも 3.5 倍低い実行時オーバーヘッドを達成し、インストルメンテーションおよび実行の効率性が優れていることが示された。
  • FreeFuzz は、PyTorch および TensorFlow で 49 個の独自のバグを発見し、そのうち 38 個が開発者によって以前に発見されていなかったと確認された。
  • 本研究では、LEMON のモデル変異ルールが極めて制限されており、コードカバレッジの向上に顕著な効果を発揮していないことが判明した。
  • FreeFuzz による API レベルのファズィングは、低レベルのライブラリバグを特定する観点で、モデルレベルの差分テストに比べてよりスケーラブルで効果的である。
  • ドキュメントやオープンソースのモデルから得られる実世界のコードを活用することで、合成的または事前学習済みモデルに基づくアプローチよりも、より広範かつ現実的な API カバレッジが実現できる。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。