pytorch/caffe2/observers
Martin Schatz 5b835682e3 Remove GPU dependency from ProfileObserver (#17592)
Summary:
Remove GPU dependency and register ProfileObserver.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/17592

Reviewed By: ezyang

Differential Revision: D14265801

Pulled By: mdschatz

fbshipit-source-id: f98c0c32653c64a8b087c58ece4f864dfbe1d4b8
2019-03-04 10:00:46 -08:00
..
CMakeLists.txt Remove GPU dependency from ProfileObserver (#17592) 2019-03-04 10:00:46 -08:00
operator_attaching_net_observer.h Remove Apache headers from source. 2018-03-27 13:10:18 -07:00
profile_observer.cc Remove GPU dependency from ProfileObserver (#17592) 2019-03-04 10:00:46 -08:00
profile_observer.h Remove GPU dependency from ProfileObserver (#17592) 2019-03-04 10:00:46 -08:00
README.md update documentation for observers 2018-08-30 18:11:48 -07:00
runcnt_observer.cc use C10_MOBILE/ANDROID/IOS (#15363) 2019-01-09 15:08:20 -08:00
runcnt_observer.h More changes for hidden visibility (#10692) 2018-08-21 13:39:57 -07:00
time_observer_test.cc Remove Apache headers from source. 2018-03-27 13:10:18 -07:00
time_observer.cc Quick fix on the observer test 2018-03-27 18:10:39 -07:00
time_observer.h More changes for hidden visibility (#10692) 2018-08-21 13:39:57 -07:00

Observers

Usage

Observers are a small framework that allow users to attach code to the execution of SimpleNets and Operators.

An example of an Observer is the TimeObserver, used as follows:

C++

unique_ptr<TimeObserver<NetBase>> net_ob =
    make_unique<TimeObserver<NetBase>>(net.get());
auto* ob = net->AttachObserver(std::move(net_ob));
net->Run();
LOG(INFO) << "av time children: " << ob->average_time_children();
LOG(INFO) << "av time: " << ob->average_time();

Python

model.net.AttachObserver("TimeObserver")
ws.RunNet(model.net)
ob = model.net.GetObserver("TimeObserver")

print("av time children:", ob.average_time_children())
print("av time:", ob.average_time())

Histogram Observer

Creates a histogram for the values of weights and activations

model.net.AddObserver("HistogramObserver",
                      "histogram.txt", # filename
                      2014, # number of bins in histogram
                      32 # Dumping frequency
                      )
ws.RunNet(model.net)

This will generate a histogram for the activations and store it in histogram.txt

Implementing An Observer

To implement an observer you must inherit from ObserverBase and implement the Start and Stop functions.

Observers are instantiated with a subject of a generic type, such as a Net or Operator. The observer framework is built to be generic enough to "observe" various other types, however.