/* ****************************************************************************** * * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at * https://www.apache.org/licenses/LICENSE-2.0. * * See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * 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. * * SPDX-License-Identifier: Apache-2.0 ******************************************************************************/ include "node.fbs"; include "config.fbs"; include "variable.fbs"; include "utils.fbs"; include "result.fbs"; include "request.fbs"; include "array.fbs"; namespace sd.graph; table UpdaterState { paramName:string; //Name of the parameter the updater state is for updaterStateKeys:[string]; //Name of the updater state key (for example: "M" or "V" for Adam updater) updaterStateValues:[FlatArray]; //Value of corresponding updater state key (for example: array for "M" updater state in Adam updater) } table FlatGraph { id:long; // id of the graph variables:[FlatVariable]; // list of variables nodes:[FlatNode]; // list of nodes outputs:[IntPair]; // list of output variables or nodes, in format of IntPair.first is node Id, IntPair.second is output index of the node configuration:FlatConfiguration; // optional execution configuration placeholders:[string]; //Placeholders. Used for SameDiff serialization/deserialization lossVariables:[string]; //Variables that are marked as losses. Used for training. trainingConfig:string; //JSON representation of training configuration. JSON used for custom functionality updaterState:[UpdaterState]; //Updater state } table FlatDropRequest { id:long; // id of the graph to be droppoed } table FlatResponse { status:int; // status of operation } rpc_service GraphInferenceServer { RegisterGraph(FlatGraph):FlatResponse; ForgetGraph(FlatDropRequest):FlatResponse; ReplaceGraph(FlatGraph):FlatResponse; InferenceRequest(FlatInferenceRequest):FlatResult; } root_type FlatGraph;