Move tf_data_stats.proto to third_party.

PiperOrigin-RevId: 334271275
Change-Id: I5adf7008111c769571df8ffe50a5bfde2d9f7499
This commit is contained in:
Jiho Choi 2020-09-28 17:25:04 -07:00 committed by TensorFlower Gardener
parent 96cb7dd9d7
commit 421a7754e6
2 changed files with 96 additions and 0 deletions

View File

@ -148,3 +148,10 @@ tf_proto_library(
cc_api_version = 2,
visibility = [":friends"],
)
tf_proto_library(
name = "tf_data_stats_proto",
srcs = ["tf_data_stats.proto"],
cc_api_version = 2,
visibility = [":friends"],
)

View File

@ -0,0 +1,89 @@
// This proto describes the format of the output profile file from
// the tf.data stats tool.
syntax = "proto3";
package tensorflow.profiler;
// Stat for iterator.
message IteratorStat {
// Id of the iterator.
int64 id = 1;
// Start time of the iterator's GetNext in ps.
int64 start_time_ps = 2;
// Duration of the iterator's GetNext in ps.
int64 duration_ps = 3;
// Self time of the iterator's GetNext in ps. It takes account into async
// iterators. It is calculated by subtracting the time overlapped with its
// child iterator's duration from the iterator's duration.
int64 self_time_ps = 4;
// Whether it is blocking the root iterator. An async iterator's child
// iterator may not block its parent iterator if it is executed in advance and
// does not overlap with the parent iterator.
bool is_blocking = 5;
// The number of times this iterator is called. For example, a batch
// iterator's child iterator may be called multiple times.
int64 num_calls = 6;
}
// Metadata for iterator.
message IteratorMetadata {
// Id of the iterator.
int64 id = 1;
// Id of the parent iterator.
int64 parent_id = 2;
// Name of the iterator.
string name = 3;
// Long name of the iterator.
string long_name = 6;
// Whether it is an async iterator.
bool is_async = 4;
// Parameters of the iterator (e.g., num_parallel_calls).
map<string, string> params = 5;
}
// Stat and metadata for input pipeline.
message InputPipelineStat {
// Id of the blocking iterator with the longest self time.
int64 bottleneck_iterator_id = 2;
// Stats per iterator.
map<int64, IteratorStat> iterator_stats = 1;
}
// Metadata for input pipeline.
message InputPipelineMetadata {
// The distribution strategy creates one "host" input pipeline which actually
// runs tf.data user code. Also, it creates a "device" input pipeline per
// device (e.g., TensorCore) which takes an element from the host input
// pipeline and transfers it to the device.
enum InputPipelineType {
HOST = 0;
DEVICE = 1;
}
// Id of the input pipeline which is set to the id of its root iterator.
int64 id = 1;
InputPipelineType type = 2;
string name = 4;
reserved 3;
}
// Collection of metadata and stats of input pipeline.
message InputPipelineStats {
// Metadata of the input pipeline.
InputPipelineMetadata metadata = 1;
// Average latency (i.e., the root iterator's latency) of the input pipeline.
int64 avg_latency_ps = 3;
// Minimum latency of the input pipeline.
int64 min_latency_ps = 4;
// Maximum latency of the input pipeline.
int64 max_latency_ps = 5;
// Stats per call sorted by the root iterator's duration.
repeated InputPipelineStat stats = 2;
}
// Collection of stats of tf.data input pipelines within a host.
message TfDataStats {
// Metadata per iterator.
map<int64, IteratorMetadata> iterator_metadata = 2;
// Stats per input pipeline.
map<int64, InputPipelineStats> input_pipelines = 1;
}