/** * Copyright 2020 Huawei Technologies Co., Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ syntax = "proto3"; package debugger; import "mindinsight/debugger/proto/ms_graph.proto"; service EventListener { rpc WaitCMD (Metadata) returns (EventReply) {}; rpc SendMetadata (Metadata) returns (EventReply) {}; rpc SendGraph (stream Chunk) returns (EventReply) {}; rpc SendTensors (stream TensorProto) returns (EventReply) {}; rpc SendWatchpointHits (stream WatchpointHit) returns (EventReply) {}; rpc SendMultiGraphs (stream Chunk) returns (EventReply) {}; } message Metadata { string device_name = 1; int32 cur_step = 2; // define the backend is 'GPU' or 'Ascend' string backend = 3; // the full name of current node string cur_node = 4; // check if training is done. bool training_done = 5; // the number of total graphs int32 graph_num = 6; // the version number of mindspore string ms_version = 7; } message Chunk { bytes buffer = 1; bool finished = 2; } message EventReply { enum Status { OK = 0; FAILED = 1; PENDING = 2; } Status status = 1; oneof cmd { bool exit = 2; RunCMD run_cmd = 3; SetCMD set_cmd = 4; ViewCMD view_cmd = 5; bool version_matched = 6; } } message RunCMD { // step level or node level. "step", "node" or "recheck". string run_level = 1; oneof cmd { int32 run_steps = 2; // the next node full name string node_name = 3; } } message SetCMD { repeated WatchNode watch_nodes = 1; WatchCondition watch_condition = 2; bool delete = 3; int32 id = 4; } message ViewCMD { repeated TensorProto tensors = 1; } message WatchCondition { enum Condition { // nan won't be not used anymore, but the first enum value must be zero in proto3, so we keep this Enum member. nan = 0; overflow = 2; sd_gt = 11; sd_lt = 12; tensor_general_overflow = 13; tensor_initialization = 14; tensor_too_large = 15; tensor_too_small = 16; tensor_all_zero = 17; tensor_change_too_large = 18; tensor_change_too_small = 19; tensor_not_changed = 20; tensor_range = 21; } Condition condition = 1; float value = 2; message Parameter { string name = 1; bool disabled = 2; double value = 3; bool hit = 4; // Whether this parameter is hit when checking tensor. double actual_value = 5; } // The ID 3 has been used on the mindspore side repeated bool include=3, so skip 3 for backward compatibility. repeated Parameter params = 4; } message WatchNode { string node_name = 1; string node_type = 2; string graph_name = 3; int32 rank_id = 4; int32 device_id = 5; } message WatchpointHit { TensorProto tensor = 1; WatchCondition watch_condition = 2; int32 id = 3; int32 error_code = 4; }