Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
69 changed files
with
7,519 additions
and
1,477 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,6 +3,8 @@ output/ | |
download/ | ||
logs/ | ||
protos/ | ||
docs/ | ||
build/ | ||
|
||
# Byte-compiled / optimized / DLL files | ||
__pycache__/ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
syntax = "proto3"; | ||
|
||
package tensorflow; | ||
option cc_enable_arenas = true; | ||
option java_outer_classname = "AttrValueProtos"; | ||
option java_multiple_files = true; | ||
option java_package = "org.tensorflow.framework"; | ||
option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework"; | ||
import "tensor.proto"; | ||
import "tensor_shape.proto"; | ||
import "types.proto"; | ||
|
||
// Protocol buffer representing the value for an attr used to configure an Op. | ||
// Comment indicates the corresponding attr type. Only the field matching the | ||
// attr type may be filled. | ||
message AttrValue { | ||
// LINT.IfChange | ||
message ListValue { | ||
repeated bytes s = 2; // "list(string)" | ||
repeated int64 i = 3 [packed = true]; // "list(int)" | ||
repeated float f = 4 [packed = true]; // "list(float)" | ||
repeated bool b = 5 [packed = true]; // "list(bool)" | ||
repeated DataType type = 6 [packed = true]; // "list(type)" | ||
repeated TensorShapeProto shape = 7; // "list(shape)" | ||
repeated TensorProto tensor = 8; // "list(tensor)" | ||
repeated NameAttrList func = 9; // "list(attr)" | ||
} | ||
// LINT.ThenChange(https://www.tensorflow.org/code/tensorflow/c/c_api.cc) | ||
|
||
oneof value { | ||
bytes s = 2; // "string" | ||
int64 i = 3; // "int" | ||
float f = 4; // "float" | ||
bool b = 5; // "bool" | ||
DataType type = 6; // "type" | ||
TensorShapeProto shape = 7; // "shape" | ||
TensorProto tensor = 8; // "tensor" | ||
ListValue list = 1; // any "list(...)" | ||
|
||
// "func" represents a function. func.name is a function's name or | ||
// a primitive op's name. func.attr.first is the name of an attr | ||
// defined for that function. func.attr.second is the value for | ||
// that attr in the instantiation. | ||
NameAttrList func = 10; | ||
|
||
// This is a placeholder only used in nodes defined inside a | ||
// function. It indicates the attr value will be supplied when | ||
// the function is instantiated. For example, let us suppose a | ||
// node "N" in function "FN". "N" has an attr "A" with value | ||
// placeholder = "foo". When FN is instantiated with attr "foo" | ||
// set to "bar", the instantiated node N's attr A will have been | ||
// given the value "bar". | ||
string placeholder = 9; | ||
} | ||
} | ||
|
||
// A list of attr names and their values. The whole list is attached | ||
// with a string name. E.g., MatMul[T=float]. | ||
message NameAttrList { | ||
string name = 1; | ||
map<string, AttrValue> attr = 2; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,113 @@ | ||
syntax = "proto3"; | ||
|
||
package tensorflow.serving; | ||
package tensorflow; | ||
option cc_enable_arenas = true; | ||
option java_outer_classname = "FunctionProtos"; | ||
option java_multiple_files = true; | ||
option java_package = "org.tensorflow.framework"; | ||
option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework"; | ||
import "attr_value.proto"; | ||
import "node_def.proto"; | ||
import "op_def.proto"; | ||
|
||
// Metadata for an inference request such as the processing name and type | ||
message FunctionSpec { | ||
// Required function name. | ||
string name = 1; | ||
// Required function type. | ||
string type = 2; | ||
// A library is a set of named functions. | ||
message FunctionDefLibrary { | ||
repeated FunctionDef function = 1; | ||
repeated GradientDef gradient = 2; | ||
} | ||
|
||
// A function can be instantiated when the runtime can bind every attr | ||
// with a value. When a GraphDef has a call to a function, it must | ||
// have binding for every attr defined in the signature. | ||
// | ||
// TODO(zhifengc): | ||
// * device spec, etc. | ||
message FunctionDef { | ||
// The definition of the function's name, arguments, return values, | ||
// attrs etc. | ||
OpDef signature = 1; | ||
|
||
// Attributes specific to this function definition. | ||
map<string, AttrValue> attr = 5; | ||
|
||
// Attributes for function arguments. These attributes are the same set of | ||
// valid attributes as to _Arg nodes. | ||
message ArgAttrs { | ||
map<string, AttrValue> attr = 1; | ||
} | ||
map<uint32, ArgAttrs> arg_attr = 7; | ||
|
||
// NOTE: field id 2 deleted on Jan 11, 2017, GraphDef version 21. | ||
reserved 2; | ||
|
||
// In both of the following fields, there is the need to specify an | ||
// output that is used as either the input to another node (in | ||
// `node_def`) or as a return value of the function (in `ret`). | ||
// Unlike the NodeDefs in GraphDef, we need to be able to specify a | ||
// list in some cases (instead of just single outputs). Also, we | ||
// need to be able to deal with lists of unknown length (so the | ||
// output index may not be known at function definition time). So | ||
// we use the following format instead: | ||
// * "fun_in" where "fun_in" is the name of a function input arg in | ||
// the `signature` field above. This represents that input, whether | ||
// it is a single tensor or a list. | ||
// * "fun_in:0" gives the first element of a function input arg (a | ||
// non-list input is considered a list of length 1 for these | ||
// purposes). | ||
// * "node:out" where "node" is the name of a node in `node_def` and | ||
// "out" is the name one of its op's output arguments (the name | ||
// comes from the OpDef of the node's op). This represents that | ||
// node's output, whether it is a single tensor or a list. | ||
// Note: We enforce that an op's output arguments are never | ||
// renamed in the backwards-compatibility test. | ||
// * "node:out:0" gives the first element of a node output arg (a | ||
// non-list output is considered a list of length 1 for these | ||
// purposes). | ||
// | ||
// NOT CURRENTLY SUPPORTED (but may be in the future): | ||
// * "node:out:-1" gives last element in a node output list | ||
// * "node:out:1:" gives a list with all but the first element in a | ||
// node output list | ||
// * "node:out::-1" gives a list with all but the last element in a | ||
// node output list | ||
|
||
// The body of the function. Unlike the NodeDefs in a GraphDef, attrs | ||
// may have values of type `placeholder` and the `input` field uses | ||
// the "output" format above. | ||
|
||
// By convention, "op" in node_def is resolved by consulting with a | ||
// user-defined library first. If not resolved, "func" is assumed to | ||
// be a builtin op. | ||
repeated NodeDef node_def = 3; | ||
|
||
// A mapping from the output arg names from `signature` to the | ||
// outputs from `node_def` that should be returned by the function. | ||
map<string, string> ret = 4; | ||
|
||
// A mapping from control output names from `signature` to node names in | ||
// `node_def` which should be control outputs of this function. | ||
map<string, string> control_ret = 6; | ||
} | ||
|
||
// GradientDef defines the gradient function of a function defined in | ||
// a function library. | ||
// | ||
// A gradient function g (specified by gradient_func) for a function f | ||
// (specified by function_name) must follow the following: | ||
// | ||
// The function 'f' must be a numerical function which takes N inputs | ||
// and produces M outputs. Its gradient function 'g', which is a | ||
// function taking N + M inputs and produces N outputs. | ||
// | ||
// I.e. if we have | ||
// (y1, y2, ..., y_M) = f(x1, x2, ..., x_N), | ||
// then, g is | ||
// (dL/dx1, dL/dx2, ..., dL/dx_N) = g(x1, x2, ..., x_N, | ||
// dL/dy1, dL/dy2, ..., dL/dy_M), | ||
// where L is a scalar-value function of (x1, x2, ..., xN) (e.g., the | ||
// loss function). dL/dx_i is the partial derivative of L with respect | ||
// to x_i. | ||
message GradientDef { | ||
string function_name = 1; // The function name. | ||
string gradient_func = 2; // The gradient function's name. | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
syntax = "proto3"; | ||
|
||
package tensorflow.serving; | ||
option cc_enable_arenas = true; | ||
|
||
import "google/protobuf/any.proto"; | ||
import "meta_graph.proto"; | ||
import "model.proto"; | ||
|
||
// Message returned for "signature_def" field. | ||
message SignatureDefMap { | ||
map<string, SignatureDef> signature_def = 1; | ||
}; | ||
|
||
message GetModelMetadataRequest { | ||
// Model Specification indicating which model we are querying for metadata. | ||
// If version is not specified, will use the latest (numerical) version. | ||
ModelSpec model_spec = 1; | ||
// Metadata fields to get. Currently supported: "signature_def". | ||
repeated string metadata_field = 2; | ||
} | ||
|
||
message GetModelMetadataResponse { | ||
// Model Specification indicating which model this metadata belongs to. | ||
ModelSpec model_spec = 1; | ||
// Map of metadata field name to metadata field. The options for metadata | ||
// field name are listed in GetModelMetadataRequest. Currently supported: | ||
// "signature_def". | ||
map<string, google.protobuf.Any> metadata = 2; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
syntax = "proto3"; | ||
|
||
package tensorflow; | ||
option cc_enable_arenas = true; | ||
option java_outer_classname = "GraphProtos"; | ||
option java_multiple_files = true; | ||
option java_package = "org.tensorflow.framework"; | ||
option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework"; | ||
import "node_def.proto"; | ||
import "function.proto"; | ||
import "versions.proto"; | ||
|
||
// Represents the graph of operations | ||
message GraphDef { | ||
repeated NodeDef node = 1; | ||
|
||
// Compatibility versions of the graph. See core/public/version.h for version | ||
// history. The GraphDef version is distinct from the TensorFlow version, and | ||
// each release of TensorFlow will support a range of GraphDef versions. | ||
VersionDef versions = 4; | ||
|
||
// Deprecated single version field; use versions above instead. Since all | ||
// GraphDef changes before "versions" was introduced were forward | ||
// compatible, this field is entirely ignored. | ||
int32 version = 3 [deprecated = true]; | ||
|
||
// EXPERIMENTAL. DO NOT USE OR DEPEND ON THIS YET. | ||
// | ||
// "library" provides user-defined functions. | ||
// | ||
// Naming: | ||
// * library.function.name are in a flat namespace. | ||
// NOTE: We may need to change it to be hierarchical to support | ||
// different orgs. E.g., | ||
// { "/google/nn", { ... }}, | ||
// { "/google/vision", { ... }} | ||
// { "/org_foo/module_bar", { ... }} | ||
// map<string, FunctionDefLib> named_lib; | ||
// * If node[i].op is the name of one function in "library", | ||
// node[i] is deemed as a function call. Otherwise, node[i].op | ||
// must be a primitive operation supported by the runtime. | ||
// | ||
// | ||
// Function call semantics: | ||
// | ||
// * The callee may start execution as soon as some of its inputs | ||
// are ready. The caller may want to use Tuple() mechanism to | ||
// ensure all inputs are ready in the same time. | ||
// | ||
// * The consumer of return values may start executing as soon as | ||
// the return values the consumer depends on are ready. The | ||
// consumer may want to use Tuple() mechanism to ensure the | ||
// consumer does not start until all return values of the callee | ||
// function are ready. | ||
FunctionDefLibrary library = 2; | ||
}; |
Oops, something went wrong.