Skip to content
Niranjhana Narayanan edited this page Sep 12, 2019 · 7 revisions

Overview

TensorFI is a configurable fault injector for applications written using the TensorFlow framework. Unlike existing fault injectors such as LLFI, FSEFI, PINFI, etc., TensorFI injects high-level faults directly into TensorFlow programs. As TensorFlow programs are represented as dataflow graphs, users inject faults at the level of graph nodes. This ensures that programmers can establish a one-to-one correspondence between the injected fault and the effect of the fault on the machine learning algorithm.

The goal of the following pages is to provide information on the implementation, usage and programming of the TensorFI tool.

  1. Design Principles

    We've tried to incorporate these while designing and encourage you to keep in mind when contributing code as well!

  2. How TensorFI works

    For a brief of what's going on behind the scenes.

  3. Programmer's Guide

    When you want to work with TensorFI closely, fork and modify it for your own purposes.

  4. Usage Guide

    When you want to get started using it straight away!

That said, there are a few limitations which can be improved upon.

Known Limitations and Assumptions

  1. Faults can only be injected during testing, not training.
  2. We only support multi-threaded fault injections, not multi-process.
  3. We assume there's only one main graph per TensorFlow session.
  4. There's a race condition in logging the run count for multithreaded injections due to TensorFlow's spawning of internal threads.

Contributions and Licensing

You are strongly encouraged to contribute code and file bug reports for the tool. Remember it is still under development, so every bit helps. That said, we have released it under a liberal MIT license, so you are not obligated to contribute the code back even if you modify it for your purposes. If you do contribute code, be sure to add your name to the CONTRIBUTIONS.txt file.

If you do make changes to it, make sure you can run the test cases in the \tests directory successfully (or add new test cases if you need them). Also, please conform to the Python coding guidelines and follow the same indentation as the rest of the code (TODO: Write a code style guide).

Finally, if you like TensorFI and find it useful, please cite the TensorFI paper. We would also appreciate receiving a quick email on your experience with it.

Clone this wiki locally