/************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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.
*
*************************************************************/

package singa;

/*
 * To start a training job, all we need is a JobProto object.
 * It should contain following fields
 *  - Job Name (name)
 *      the name to identify the job
 *  - NeuralNet (neuralnet)
 *      the neural network structure contains a set of layers
 *  - Train One Batch (alg)
 *      the training algorithm
 *  - Updater (updater)
 *      the protocol for updating parameters at server side
 *  - Cluster Topology (cluster)
 *      the distributed topology of workers/servers
 *  - Training Steps (train_steps)
 *      the number of training iteration
 *  All other fields/functions are optional, e.g., test, checkpoint
 */

message JobProto {
  // job name, e.g., "cifar10-dcnn", "mnist-mlp"
  optional string name = 1;
  // neural net consits of a set of connected layers
  optional NetProto neuralnet = 3;
  // algorithm for computing gradients over one mini-batch
  optional AlgProto train_one_batch = 5;
  // configuration of SGD updater, including learning rate, etc.
  optional UpdaterProto updater = 7;
  // cluster toplogy conf
  optional ClusterProto cluster = 9;
  // total num of steps for training
  optional int32 train_steps = 16;
  // frequency of displaying training info
  optional int32 disp_freq = 17 [default = 0];
  // GPU device IDs for use, if fewer than workers per procs, some workers run
  // on GPU and the rest run on CPU.
  repeated int32 gpu = 18;

  // frequency of test, e.g., do test every 100 training steps
  optional int32 test_freq = 20 [default = 0];
  // total num of steps for testing all test data;
  // TODO(wangwei): set -1 for test forever
  optional int32 test_steps =  21 [default = 0];
  // frequency of validation, e.g., do validation every 100 training steps
  optional int32 validate_freq = 25 [default = 0];
  // total num of steps for validating all validation data
  optional int32 validate_steps = 26 [default = 0];
  // frequency of checkpoint
  optional int32 checkpoint_freq = 30 [default = 0];

  // for loading checkpoint files to init parameters
  repeated string checkpoint_path = 60;
  // send parameters to servers after training for this num of steps
  optional int32 warmup_steps = 61 [default = 0];
  // display debug info
  optional bool debug = 62 [default = false];
  // reset the version of params loaded from checkpoint file to step
  optional bool reset_param_version = 63 [default = true];
  // set num of threads used by openblas
  optional int32 num_openblas_threads = 64 [default = 1];

  // start checkpoint after this num steps
  optional int32 checkpoint_after = 80 [default = 0];
  // start display after this num steps
  optional int32 disp_after =  81[default = 0];
  // start test after this num steps
  optional int32 test_after = 82 [default = 0];
  // start validation after this num steps
  optional int32 validate_after = 83 [default = 0];

  // for internal use
  // users typically do not touch following fields

  // resume flag
  optional bool resume = 90 [default = false];
  // last snapshot step
  optional int32 step = 91 [default = 0];
  // job id allocated by zookeeper
  optional int32 id = 92 [default = -1];

  extensions 101 to 200;
}

// Protos used by JobProto
// -----------------------

message AlgProto {
  // algorithms calculating gradients for one mini-batch/iteration
  optional AlgType alg = 1 [default = kUserAlg];
  // user defined algorithm
  optional string user_alg = 2;
  // for setting CD fields
  optional CDProto cd_conf = 10;

  extensions 101 to 200;
}
message NetProto {
  repeated LayerProto layer = 1;
  // partitioning type for parallelism
  optional int32 partition_dim = 20 [default = 0];
  // Each layer corresponds to a group of unrolled layers, used in RNN models
  repeated LayerGroupProto layer_group = 21;
  optional int32 unroll_len = 22 [default = 1];
}

message LayerGroupProto {
  // name of the layers belong to the same group
  repeated string layer = 1;
}

message UpdaterProto {
  // built-in updater type
  optional UpdaterType type = 1 [default = kUserUpdater];
  // user-defned updater type
  optional string user_type = 2;

  // configuration for RMSProp algorithm
  optional RMSPropProto rmsprop_conf = 3;
  // congiguration for AdaDelta algorithm
  optional AdaDeltaProto adadelta_conf = 4;
  // congiguration for Adam algorithm
  optional AdamProto adam_conf = 5;
  // congiguration for AdamMax algorithm
  optional AdamMaxProto adammax_conf = 6;

  // learning rate generator
  optional LRGenProto learning_rate = 11;
  optional float momentum = 31 [default = 0];
  optional float weight_decay = 32 [default = 0];

  // used to avoid divide by 0, i.e. x/(y+delta)
  optional float delta = 35 [default = 0.00000001];

  optional float clip_low = 36 [default = 0];
  optional float clip_high = 37 [default = 0];

  extensions 101 to 200;
}

message ClusterProto {
  optional int32 nworker_groups = 1 [default = 1];
  optional int32 nserver_groups = 2 [default = 1];
  optional int32 nworkers_per_group = 3 [default = 1];
  optional int32 nservers_per_group = 4 [default = 1];
  optional int32 nworkers_per_procs = 5 [default = 1];
  optional int32 nservers_per_procs = 6 [default = 1];
  // local workspace for checkpoint files and vis files
  //required string workspace = 10;
  optional string workspace = 10;

  // servers and workers in different processes?
  optional bool server_worker_separate = 20 [default = false];

  // sync frequency between server groups
  optional int32 sync_freq = 21 [default = 1];

  // port number used by ZeroMQ
  optional int32 start_port = 60 [default = 6723];
  // share memory space between worker groups in one procs
  optional bool share_memory = 62 [default = true];

  // poll time in milliseconds
  optional int32 poll_time = 81 [default = 100];
}

message CDProto {
  //number of steps for gibbs sampling
  optional int32 cd_k = 1 [default = 1];
}

message LayerProto {
  // the layer name used for identification
  required string name = 1;
  // source layer names
  repeated string srclayers = 3;
  // parameters, e.g., weight matrix or bias vector
  repeated ParamProto param = 12;
  // all layers are included in the net structure for training phase by default.
  // some layers like data layer for loading test data are not used by training
  // phase should be removed by setting the exclude field.
  repeated Phase exclude = 15;
  // exclude field is deprecated, please use include field instead!!!
  // some layers like data layer for loading test data are not used by training
  // in this case, only test phase should be included by setting the include field.
  repeated Phase include = 14;
  // type of built-in layer
  optional LayerType type = 20 [default = kUserLayer];
  // type of user layer
  optional string user_type = 21;
  // share data and grad blob with the single src layer, e.g., relu layer can
  // share blobs from conv layer. It is useful for saving memory space.
  optional bool share_src_blobs = 22 [default = false];
  // for unrolling layers in RNN model
  optional int32 unroll_len = 23 [default = 1];
  optional int32 unroll_index = 24 [default = 0];
  repeated UnrollConnType unroll_conn_type = 25;
  repeated int32 shift = 26;

  // overrides the partition dimension for neural net
  optional int32 partition_dim = 60 [default = -1];
  // names of parameters shared from other layers
  optional int32 partition_id = 90 [default = 0];
  // num of partitions for this layer
  optional int32 num_partitions = 91 [default = 1];

  // layer specific configuration
  // configuration for input layers, id range [100, 200)
  optional StoreProto store_conf = 100;
  optional DataProto lmdbdata_conf = 190;
  optional MnistProto mnist_conf = 192;
  optional RGBImageProto rgbimage_conf = 193;
  optional DataProto sharddata_conf = 194;
  optional CharRNNProto char_rnn_conf = 195;
  optional OnehotProto onehot_conf = 196;

  // configuration for neuron layers id range [200, 300)
  optional ActivationProto activation_conf = 200;
  optional ConvolutionProto convolution_conf = 201;
  optional DropoutProto dropout_conf = 203;
  optional DummyProto dummy_conf = 204;
  optional InnerProductProto innerproduct_conf = 205;
  optional LRNProto lrn_conf = 206;
  optional PoolingProto pooling_conf = 207;
  optional RBMProto rbm_conf = 209;
  optional ReLUProto relu_conf = 211;
  optional SoftmaxProto softmax_conf = 214;
  optional GRUProto gru_conf = 215;
  optional EmbeddingProto embedding_conf = 216;
  optional BMProto bm_conf = 217;

  // configuration for loss layers, id range [300, 400)
  optional SoftmaxLossProto softmaxloss_conf = 301;

  // configuration for output layers id range [400, 500)
  optional ArgSortProto argsort_conf = 401;

  // configuration for connection layers, id range [501, )
  optional ConcateProto concate_conf = 502;
  optional SliceProto slice_conf = 503;
  optional SplitProto split_conf = 504;
  optional RNNDummyProto rnn_dummy_conf = 505;

  extensions 1001 to 1100;
}

// weight matrix should be defined before bias vector
// TODO(wangwei): separate conf for diff init method
message ParamProto {
  // used for identifying the same params from diff models and display deug info
  optional string name =  1 [default = ""];
  // for built-in Param
  optional ParamType type = 3 [default = kParam];
  // for user-defined Param
  optional string user_type = 4;

  optional ParamGenProto init =5;
    // multiplied on the global learning rate.
  optional float lr_scale = 15 [default = 1];
  // multiplied on the global weight decay.
  optional float wd_scale = 16 [default = 1];

  // name of the owner param from which this param shares the values
  optional string share_from = 60;

  // used interally
  optional int32 id = 90;
  // used internally
  optional int32 owner = 91 [default = -1];
  // partition dimension, -1 for no partition
  optional int32 partition_dim = 92;
  // usually, the program will infer the param shape
  repeated int32 shape = 93;

  extensions 101 to 200;
}

// ---------------------------
// protos for different layers
// ---------------------------
// learning rate generator proto
message LRGenProto {
  // user-defined change method
  optional ChangeMethod type = 1 [default = kUserChange];
  optional string user_type = 2;

  optional float base_lr = 3 [default = 0.01];

  optional FixedStepProto fixedstep_conf = 40;
  optional StepProto step_conf = 41;
  optional LinearProto linear_conf = 42;
  optional ExponentialProto exponential_conf = 43;
  optional InverseProto inverse_conf = 44;
  optional InverseTProto inverset_conf = 45;

  extensions 101 to 200;
}

message ParamGenProto {
  optional InitMethod type = 1 [default = kUserInit];
  optional string user_type =2;
  // constant init
  optional float value = 3 [default = 1];
  // for gaussian sampling
  optional float mean = 4 [default = 0];
  optional float std = 5 [default = 1];
  // for uniform sampling
  optional float low = 8 [default = -1];
  optional float high = 9 [default = 1];

  extensions 101 to 200;
}

enum ActivationType {
  RELU = 1;
  SIGMOID = 2;
  TANH = 3;
  STANH = 4;
}

message ActivationProto {
  optional ActivationType type = 1 [default = RELU];
}

message OnehotProto {
  optional int32 vocab_size = 1 [default = 0];
}

message RGBImageProto {
  // scale factor for each pixel
  optional float scale = 1 [default = 1.0];
  // size after cropping
  optional int32 cropsize = 2 [default = 0];
  // mirror the image
  optional bool mirror = 3 [default = false];
  // meanfile path
  optional string meanfile = 4 [default = ""];
}

message SplitProto {
  optional int32 num_splits = 1 [default = 1];
}

message StoreProto {
  optional string backend = 1;
  optional string path = 2;
  optional string separator = 3 [default = ","];
  optional string mean_file = 4;
  optional string std_file = 5;
  optional float mean_value = 6;
  optional float std_value = 7;
  repeated int32 batchsize = 8;
  repeated int32 shape = 9;
  optional bool encoded = 10 [default = false];
  optional int32 random_skip = 11 [default = 0];
  optional bool has_label = 12 [default = true];
  optional bool prefetching = 13 [default = false];
}

message CharRNNProto {
  optional string path = 1;
  optional string vocab_path = 2;
  // num of chars to read per instance,  should = NetProto::unroll_len
  optional int32 unroll_len = 3 [default = 50];
  optional int32 batchsize = 4 [default = 1];
}

message EmbeddingProto {
  optional int32 vocab_size = 1 [default = 0];
  optional int32 feature_dim = 2 [default = 100];

}

message BMProto {
}

message SoftmaxLossProto {
  // computing accuracy against topk results
  optional int32 topk = 1 [default = 1];
  // loss scale factor
  optional float scale = 30 [default = 1];
}

message ArgSortProto {
  // keep labels with topk scores
  optional int32 topk = 1 [default = 1];
}

message ConcateProto {
  optional int32 concate_dim = 1 [default = 0];
  optional int32 num_concates = 2 [default = 1];
}

message ConvolutionProto {
  // The number of outputs for the layer
  optional int32 num_filters = 1;
  // the kernel height/width
  optional int32 kernel = 2 [default = 3];
  // The padding height/width
  optional int32 pad = 30 [default = 0];
  // the stride
  optional int32 stride = 31 [default = 1];

  optional int32 kernel_x = 41 [default = 3];
  optional int32 kernel_y = 42 [default = 3];

  optional int32 pad_x = 44 [default = 0];
  optional int32 pad_y = 45 [default = 0];

  optional int32 stride_x = 47 [default = 1];
  optional int32 stride_y = 48 [default = 1];

  // cudnn workspace size in MB
  optional int32 workspace_byte_limit = 50 [default = 512];
}

message DataProto {
  // path to the data file/folder, absolute or relative to the workspace
  required string path = 2;
  // batch size.
  required int32 batchsize = 4;
  // skip [0,random_skip] records
  optional int32 random_skip = 30 [default = 0];
}

message MnistProto {
  // normalization x/norm_a
  required float norm_a = 1 [default = 1];
  // normalization x-norm_b
  required float norm_b = 2 [default = 0];

  // elastic distortion
  optional int32 kernel = 30 [default = 0];
  optional float sigma = 31 [default = 0];
  optional float alpha = 32 [default = 0];
  // rotation or horizontal shearing
  optional float beta = 33 [default = 0];
  // scaling
  optional float gamma = 34 [default = 0];
  // scale to this size as input for deformation
  optional int32 resize = 35 [default = 0] ;
  optional int32 elastic_freq = 36 [default = 0];
}

message DummyProto {
  // shape of data and grad blobs
  optional bool input = 1 [default = false];
  optional bool output = 2 [default = false];
  repeated int32 shape = 3;
}

message RNNDummyProto {
  optional string dynamic_srclayer = 1;
  // if shape set, random generate the data blob
  repeated int32 shape = 2;
  // if integer is true, generate integer data
  optional bool integer = 3 [default = false];
  // range of the random generation
  optional float low = 4 [default = 0];
  optional float high = 5 [default = 0];
}

// Message that stores parameters used by DropoutLayer
message DropoutProto {
  // dropout ratio
  optional float dropout_ratio = 30 [default = 0.5];
}

message RBMProto {
  required int32 hdim = 1; // The number of outputs for the layer
  optional bool bias_term = 2 [default = true]; // whether to have bias terms
  optional bool gaussian = 3 [default = false]; // use gaussian sampling or not
}

// Message that stores parameters used by GRULayer
message GRUProto {
  // dimension of hidden state for the layer
  required int32 dim_hidden = 1;
  // use bias vector or not
  optional bool bias_term = 2 [default = true];
}


// Message that stores parameters used by InnerProductLayer
message InnerProductProto {
  // number of outputs for the layer
  required int32 num_output = 1;
  // use bias vector or not
  optional bool bias_term = 30 [default = true];
  // transpose or not
  optional bool transpose = 31 [default = false];
}

message LRNProto {
  // local response size
  required int32 local_size = 1 [default = 5];
  // scale factor
  optional float alpha = 31 [default = 1.0];
  // exponential number
  optional float beta = 32 [default = 0.75];
  // offset
  optional float knorm = 34 [default = 1.0];
}

message PoolingProto {
  // The kernel size (square)
  optional int32 kernel= 1 [default = 3];
  enum PoolMethod {
    MAX = 0;
    AVG = 1;
  }
  // The pooling method
  optional PoolMethod pool = 30 [default = MAX];
  // The padding size
  optional uint32 pad = 31 [default = 0];
  // The stride
  optional uint32 stride = 32 [default = 2];

  optional int32 kernel_x = 41 [default = 3];
  optional int32 kernel_y = 42 [default = 3];

  optional int32 pad_x = 44 [default = 0];
  optional int32 pad_y = 45 [default = 0];

  optional int32 stride_x = 47 [default = 2];
  optional int32 stride_y = 48 [default = 2];
}

message ReLUProto {
  // Ref. Maas, A. L., Hannun, A. Y., & Ng, A. Y. (2013).
  // Rectifier nonlinearities improve neural network acoustic models.
  // In ICML Workshop on Deep Learning for Audio, Speech, and Language Processing.
  optional float negative_slope = 1 [default = 0];
}

message SliceProto {
  optional int32 slice_dim = 1 [default = 0];
  optional int32 num_slices = 2 [default = 1];
}

message SoftmaxProto {
  // Can be used to do softmax over each channel of one image by setting it to
  // be the size of the second dimension (the first dimension is batchsize).
  optional int32 num_softmax_per_instance = 1 [default = 1];
}

message RMSPropProto {
 // history=history*rho_+(1-rho_)*(grad*grad_scale);
  required float rho = 1;
}
message AdaDeltaProto {
  required float rho = 1 [default = 0.9];
}
message AdamProto {
  required float beta1 = 1 [default = 0.9];
  required float beta2 = 2 [default = 0.999];
}
message AdamMaxProto {
  required float beta1 = 1 [default = 0.9];
  required float beta2 = 2 [default = 0.999];
}

message FixedStepProto {
  repeated int32 step = 28;
  // lr = step_lr[i] if current step >= step[i]
  repeated float step_lr = 29;
}

message StepProto {
  // lr = base_lr * gamma^(step/change_freq)
  required float gamma = 35 [default = 1];
  // lr = base_lr * gamma^(step/change_freq)
  required int32 change_freq = 40;
}

message LinearProto {
  // lr = (1 - step / freq) * base_lr + (step / freq) * final_lr
  required int32 change_freq= 40;
  // lr = (1 - step / freq) * base_lr + (step / freq) * final_lr
  required float final_lr = 39;
}

message ExponentialProto {
  // lr = base / 2^(step/change_freq)
  required int32 change_freq = 40;
}

message InverseTProto {
  // lr = base_lr / (1+step/final_lr)
  required float final_lr = 39;
}
message InverseProto {
  // lr = base_lr*(1+gamma*step)^(-pow)
  required float gamma = 1 [default = 1];
  // lr = base_lr*(1+gamma*step)^(-pow)
  required float pow = 2 [default = 0];
}
message UniformProto {
  optional float low = 1 [default = -1];
  optional float high = 2 [default = 1];
}
message GaussianProto {
  optional float mean = 1 [default = 0];
  optional float std = 2 [default = 1];
}

// --------------
// All Enum Types
// --------------

enum AlgType {
  // Back-propagation algorithm for feed-forward models, e.g., CNN and RNN
  kBP = 1;
  // Contrastive Divergence algorithm for RBM, DBM, etc.
  kCD = 2;
  // BPTT for training RNN models
  kBPTT = 3;
  // For user defined algorithm.
  kUserAlg = 104;
}

enum LayerType {
  /*
   * Input layers
   *  - Load records from file, database
   */
  kCSVInput = 100;
  kImagePreprocess = 101;
  kRecordInput = 103;
  kLMDBData = 190;  // deprecated
  kLabel = 191;  // deprecated
  kMnist = 192;  // deprecated
  kRGBImage = 193;  // deprecated
  kShardData = 194;  // deprecated
  kCharRNN = 195;
  kRNNLabel = 196;
  kOneHot = 197;

  /*
   * Neuron layers
   *  - Feature transformation
   */
  kConvolution = 201;
  kCConvolution = 202;
  kDropout = 203;
  kDummy = 204;
  kInnerProduct = 205;
  kLRN = 206;
  kPooling = 207;
  kCPooling = 208;
  kRBMHid = 209;
  kRBMVis = 210;
  kReLU = 211;
  kSTanh = 212;
  kSigmoid = 213;
  kSoftmax = 214;
  kGRU = 215;
  kEmbedding = 216;
  kActivation = 217;
  kBM = 218;

  kCudnnConv = 250;
  kCudnnPool = 251;
  kCudnnLRN = 252;
  kCudnnSoftmax = 253;
  kCudnnActivation = 254;
  kCudnnBM = 255;

  /*
   * Loss layers
   *  - Compute objective loss
   */
  kEuclideanLoss = 300;
  kSoftmaxLoss = 301;
  // cudnn v3
  kCudnnSoftmaxLoss = 350;

  /*
   * Output layers
   *  - Write results to file, database
   */
  kAccuracy = 400;
  kArgSort = 401;
  kCSVOutput = 402;
  kRecordOutput = 403;
  kCharRNNOutput = 404;

  /*
   * Connection layers
   *  - Connect layers when neural net is partitioned
   */
  kBridgeDst = 500;
  kBridgeSrc = 501;
  kConcate = 502;
  kSlice = 503;
  kSplit = 504;
  kRNNDummy = 505;

  /*
   * User defined layer
   *  - users should configure user_type
   */
  kUserLayer = 600;
}

enum UpdaterType {
  // noraml SGD with momentum and weight decay
  kSGD = 1;
  // adaptive subgradient, http://www.magicbroom.info/Papers/DuchiHaSi10.pdf
  kAdaGrad = 2;
  // http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf
  kRMSProp = 3;
  // Nesterov first optimal gradient method
  kNesterov = 4;
  // AdaDelta
  kAdaDelta = 5;
  // Adam
  kAdam = 6;
  // AdamMax
  kAdamMax = 7;
  // For user defined updater
  kUserUpdater = 105;
}

enum Phase {
  kUnknown = 0;
  kTrain = 1;
  kVal = 2;
  kTest= 4;
  // postivie phase for contrastive divergence algorithm
  kPositive = 8;
  // negative phase for contrastive divergence algorithm
  kNegative = 16;
  kForward = 32;
  kBackward = 64;
  kLoss = 128;
  kDeploy = 256;

  // used for aggregate parameter gradients when Param is shared
  kAggGrad = 512;
}

enum ParamType {
  // built-in Param
  kParam = 0;
  // user-defined Param
  kUser = 103;
}

enum ChangeMethod {
  kFixed = 0;
  kInverseT = 1;
  kInverse = 2;
  kExponential = 3;
  kLinear = 4;
  kStep = 5;
  kFixedStep = 6;
  // For user defiend change method
  kUserChange = 100;
}

enum InitMethod {
  // fix the values of all parameters  a constant in the value field
  kConstant = 0;
  // sample gaussian with std and mean
  kGaussian = 1;
  // uniform sampling between low and high
  kUniform = 2;
  // from Toronto Convnet, let a=1/sqrt(fan_in), w*=a after generating from
  // Gaussian distribution
  kGaussianSqrtFanIn = 4;
  // from Toronto Convnet, rectified linear activation, let
  // a=sqrt(3)/sqrt(fan_in), range is [-a, +a]; no need to set value=sqrt(3),
  // the program will multiply it.
  kUniformSqrtFanIn = 5;
  // from Theano MLP tutorial, let a=sqrt(6/(fan_in+fan_out)). for tanh
  // activation, range is [-a, +a], for sigmoid activation, range is
  // [-4a, +4a], put the scale factor to value field.
  // <a href="http://deeplearning.net/tutorial/mlp.html"> Theano MLP</a>
  kUniformSqrtFanInOut = 6;

  // For user defined init method
  kUserInit = 101;
}

enum UnrollConnType {
  // i-th unrolled layer <- (i - shift)-th src unrolled layer
  kUnrollOneToOne = 1;
  // i-th unrolled layer <- all src unrolled layers
  kUnrollOneToAll = 2;
  // i-th unrolled layer <- last unrolled src layer
  kUnrollFirstToLast = 3;
  // customized connection type defined by src_conn
  kUnrollCustomized = 4;
}
