-
Notifications
You must be signed in to change notification settings - Fork 23
Design Principles
TensorFI is designed with the following principles in mind:
To use TensorFI, all the programmer has to do is to incorporate a single line of Python code in their program. Everything else happens behind the scenes automatically. We also assume that the programmer has access to the master session in which the TensorFlow graph is constructed, but we do not assume the programmer knows either where the graph is being constructed or where it is executed. This also ensures compatibility with third-party libraries and sophisticated training algorithms that may construct the graph using custom API methods.
Because TensorFlow may be pre-installed on the system, and each individual system may have its own installation of TensorFlow, we do not assume the programmer is able to make any modifications to TensorFlow. All that is needed is that they import our main fault injection library into the Python program. We also use only the publicly documented API of TensorFlow (see Known Limitations and Assumptions), and hence the injector does not depend on the internal implementation of TensorFlow or have any specific version dependencies.
The third and final principle is that TensorFI should not interfere with the normal execution of the TensorFlow graph when no faults are executed. Further it should not render the main graph incapable of being executed on GPUs or make it nonparallelizable due to its modifications. Finally, the fault injection process should be reasonably fast, though it does not have to be as optimized as the main graph or be capable of being parallelized.
Copyright (2019) Dependable Systems Lab at UBC