| syntax = "proto2"; |
| |
| import "caffe2/proto/caffe2.proto"; |
| |
| package torch; |
| |
| message RecordRef { |
| optional string key = 1; |
| } |
| |
| message TensorDef { |
| repeated int64 dims = 1; |
| optional int64 offset = 2; |
| repeated int64 strides = 3; |
| // whether we compute the gradient for the parameter |
| optional bool requires_grad = 4; |
| optional caffe2.TensorProto.DataType data_type = 5; |
| |
| optional RecordRef data = 6; |
| |
| // device field stores the canonical device string, and it follows the |
| // format below: `(cpu|cuda)[:<device-index>]`, e.g., 'cuda:0' |
| optional string device = 7; |
| |
| optional bool is_quantized = 8; |
| optional double scale = 9; |
| optional int64 zero_point = 10; |
| } |
| |
| message AttributeDef { |
| // The mypy type of this attribute |
| required string type = 1; |
| required string name = 2; |
| |
| // Offset into attribute table |
| required int64 id = 3; |
| } |
| |
| message ParameterDef { |
| // whether this parameter is registered as buffer or not |
| optional bool is_buffer = 1; |
| |
| // the offset into the tensor table where this parameter is stored |
| optional int64 tensor_id = 2; |
| |
| optional string name = 3; |
| } |
| |
| message ModuleDef { |
| repeated ModuleDef submodules = 1; |
| |
| optional RecordRef torchscript_arena = 2; |
| |
| repeated caffe2.NetDef caffe2_nets = 3; |
| |
| // because the old pickle modules may not be supported by torch_script, |
| // have to stored as pickle_arena at this moment. |
| optional RecordRef pickle_arena = 4; |
| // should be exposed by the Class Archive, so user can save |
| // module specific data which cannot be store in the graph or torch_script |
| optional RecordRef cpp_arena = 5; |
| |
| // the parameters of this module |
| repeated ParameterDef parameters = 6; |
| |
| // the names of inputs and outputs of the module are inferred |
| // from the main method. |
| |
| optional string name = 7; |
| |
| // whether apply the optimizations to this module, only applicable to |
| // script modules |
| optional bool optimize = 8; |
| |
| repeated AttributeDef attributes = 9; |
| |
| // Used for retrieving module state from the pickled IValues table |
| optional int64 get_state_attribute_id = 10; |
| |
| optional RecordRef torchscript_debug_arena = 11; |
| } |
| |
| // Represents all non-module code that the model depends on. |
| // Right now it's just a straight list of classes, defined in dependency order |
| // (i.e. dependencies appear before their dependers) |
| message LibDef { |
| optional RecordRef torchscript_arena = 1; |
| } |
| |
| enum ProtoVersion { PROTO_VERSION_NEWEST = 0x0000000000000006; } |
| |
| message ModelDef { |
| // numbers of fields that have been removed. Do not reuse them! |
| reserved 9; |
| reserved "libs"; |
| // for the proto version, to keep both backward and forward |
| // compatibility, please bump the proto_version when we add any |
| // change in the proto. runtime decides whether accept the |
| // model based on the ir_version. |
| optional int64 proto_version = 1; |
| |
| // main module of the model |
| optional ModuleDef main_module = 2; |
| |
| // to distinguish whether exported from c2 or torch |
| optional string producer_name = 3; |
| |
| // put build version here |
| optional string producer_version = 4; |
| |
| // the table contains all the tensor information |
| // the tensor id is defined as TensorProto.name |
| repeated TensorDef tensors = 5; |
| } |