ps.proto 9.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
// 
// 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 = "proto2";
package paddle;
option cc_generic_services = true;
S
sneaxiy 已提交
18
option cc_enable_arenas=true;
19 20

message PSParameter {
S
sneaxiy 已提交
21 22 23 24 25 26 27 28
    optional string worker_class = 1;
    optional string server_class = 2;
    optional string instance_class = 3;
    optional string init_gflags = 4 [ default = "" ];
    optional WorkerParameter worker_param = 101;
    optional ServerParameter server_param = 102;
    repeated DownpourTrainerParameter trainer_param = 301;
    optional FsClientParameter fs_client_param = 501;
29 30 31
}

message WorkerParameter {
S
sneaxiy 已提交
32
    optional DownpourWorkerParameter downpour_worker_param = 1;
33 34 35
}

message ServerParameter {
S
sneaxiy 已提交
36
    optional DownpourServerParameter downpour_server_param = 1;
37 38 39
}

message DownpourWorkerParameter {
S
sneaxiy 已提交
40
    repeated TableParameter downpour_table_param = 1;
41 42 43
}

message DownpourTrainerParameter {
S
sneaxiy 已提交
44 45 46 47 48 49
    repeated DenseTableParameter dense_table = 1;
    repeated SparseTableParameter sparse_table = 2;
    optional int32 push_sparse_per_batch = 3;
    optional int32 push_dense_per_batch = 4;
    repeated string skip_op = 5;
    repeated ProgramConfig program_config = 6;
50 51 52
}

message ProgramConfig {
S
sneaxiy 已提交
53 54 55 56 57
    required string program_id = 1;
    repeated int32 push_sparse_table_id = 2;
    repeated int32 push_dense_table_id = 3;
    repeated int32 pull_sparse_table_id = 4;
    repeated int32 pull_dense_table_id = 5;
58 59 60
}

message DenseTableParameter {
S
sneaxiy 已提交
61 62 63 64
    optional int32 table_id = 1;
    repeated string dense_variable_name = 2;
    repeated string dense_gradient_variable_name = 3;
    optional int32 fea_dim = 4;
65 66 67
}

message SparseTableParameter {
S
sneaxiy 已提交
68 69 70 71 72
    optional int32 table_id = 1;
    optional int32 feature_dim = 2;
    repeated string slot_key = 3;
    repeated string slot_value = 4;
    repeated string slot_gradient = 5;
73 74 75
}

message DownpourServerParameter {
S
sneaxiy 已提交
76 77
    repeated TableParameter downpour_table_param = 1;
    optional ServerServiceParameter service_param = 2;
78 79 80
}

message ServerServiceParameter {
S
sneaxiy 已提交
81 82 83 84 85 86 87 88 89 90
    optional string server_class      = 1 [ default = "DownpourBrpcPsServer" ];
    optional string client_class      = 2 [ default = "DownpourBrpcPsClient" ];
    optional string service_class     = 3 [ default = "DownpourPsService"];
    optional uint32 start_server_port = 4 [ default = 0 ];  //will find a avaliable port from it
    optional uint32 server_thread_num = 5 [ default = 12 ];
}

enum TableType {
    PS_SPARSE_TABLE = 0;
    PS_DENSE_TABLE = 1;
91 92 93
}

message TableParameter {
S
sneaxiy 已提交
94 95 96 97 98 99 100 101 102 103 104 105
    optional uint64 table_id = 1;
    optional string table_class = 2;
    optional uint64 shard_num = 3 [ default = 1000 ];
    optional TableAccessorParameter accessor = 4;
    optional TableType type = 5;
    optional bool compress_in_save = 6 [default = false];
    //for cache model
    optional bool enable_sparse_table_cache = 7 [default = true];
    optional double sparse_table_cache_rate = 8 [default = 0.00055];
    optional uint32 sparse_table_cache_file_num = 9 [default = 16];
    optional double sparse_table_mem_cache_rate = 10 [default = 0.5];

106 107 108
}

message TableAccessorParameter {
S
sneaxiy 已提交
109 110 111 112 113 114 115 116 117 118 119
    optional string accessor_class = 1;
    optional SparseSGDRuleParameter sparse_sgd_param = 2;
    optional DenseSGDRuleParameter dense_sgd_param = 3;
    optional uint32 fea_dim = 4 [default = 11];
    optional uint32 embedx_dim = 5 [default = 8];
    optional uint32 embedx_threshold = 6 [default = 10];
    optional DownpourTableAccessorParameter downpour_accessor_param = 7;
    repeated TableAccessorSaveParameter table_accessor_save_param = 8;
    optional SparseCommonSGDRuleParameter sparse_commonsgd_param = 9;
    optional SparseCommonSGDRuleParameter embed_sgd_param = 10;
    optional SparseCommonSGDRuleParameter embedx_sgd_param = 11;
120 121 122
}

message DownpourTableAccessorParameter {
S
sneaxiy 已提交
123 124 125 126 127 128 129 130 131
    optional float nonclk_coeff = 1 [default = 0.1];             // to calculate show_click_score
    optional float click_coeff = 2 [default = 1];                // to calculate show_click_score
    optional float base_threshold = 3 [default = 1.5];           // show_click_score > base_threshold, this feature can be saved
    optional float delta_threshold = 4 [default = 0.25];         // delta_score > delta_threshold, this feature can be saved
    optional float delta_keep_days = 5 [default = 16];           // unseen_day < delta_keep_days, this feature can be saved
    optional float show_click_decay_rate = 6 [default = 0.98];   // show/click will update to show/click * show_click_decay_rate after a day
    optional float delete_threshold = 7 [default = 0.8];         // threshold to shrink a feasign
    optional float delete_after_unseen_days = 8 [default = 30];  // unseen_day > delete_after_unseen_days, this feature will be delete in shrink_model
    optional int32 ssd_unseenday_threshold = 9 [default = 1];    // threshold to save ssd
132 133 134
}

message TableAccessorSaveParameter {
S
sneaxiy 已提交
135 136 137
    optional uint32 param = 1;
    optional string converter = 2;
    optional string deconverter = 3;
138 139
}

S
sneaxiy 已提交
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
enum PsCmdID {
    PS_PULL_DENSE_TABLE                      = 0;
    PS_PUSH_DENSE_TABLE                      = 1;
    PS_PULL_SPARSE_TABLE                     = 2;
    PS_PUSH_SPARSE_TABLE                     = 3;
    PS_SHRINK_TABLE                          = 4;
    PS_SAVE_ONE_TABLE                        = 5;
    PS_SAVE_ALL_TABLE                        = 6;
    PS_LOAD_ONE_TABLE                        = 7;
    PS_LOAD_ALL_TABLE                        = 8;
    PS_CLEAR_ONE_TABLE                       = 9;
    PS_CLEAR_ALL_TABLE                       = 10;
    PS_PUSH_DENSE_PARAM                      = 11;
    PS_STOP_SERVER                           = 12;
    PS_SAVE_ONE_CACHE_TABLE                  = 13;
    PS_GET_CACHE_THRESHOLD                   = 14;
    PS_CACHE_SHUFFLE                         = 15;
    PS_COPY_TABLE                            = 16;
    PS_COPY_TABLE_BY_FEASIGN                 = 17;
    PS_PULL_SPARSE_TABLE_WITH_DEPENDENCY     = 18;
    PS_PUSH_SPARSE_TABLE_WITH_DEPENDENCY     = 19;
    PS_PRINT_TABLE_STAT                      = 20;
    PS_SAVE_ONE_TABLE_PREFIX                 = 21;
    PS_SAVE_MEM_CACHE_TABLE                  = 22;
    //pserver2pserver cmd start from 100
    PS_S2S_MSG                               = 101;
    //local_client2local_client cmd start from 200
    PS_C2C_PULL_SPARSE_TABLE                 = 201;
168 169
}

S
sneaxiy 已提交
170 171 172 173 174 175 176 177
message PsRequestMessage {
    required uint32 cmd_id = 1;
    optional uint32 table_id = 2;
    repeated bytes params = 3;
    optional int32 client_id = 4;
    optional bytes data = 5;
};

178
message SparseSGDRuleParameter {
S
sneaxiy 已提交
179 180 181 182
    optional double learning_rate = 1 [default = 0.05];
    optional double initial_g2sum = 2 [default = 3.0];
    optional double initial_range = 3 [default = 0.0001];
    repeated float weight_bounds = 4;
183 184 185
}

message SparseCommonSGDRuleParameter {
S
sneaxiy 已提交
186 187 188 189
    optional string name = 1;
    optional SparseNaiveSGDRuleParameter naive = 2;
    optional SparseAdagradSGDRuleParameter adagrad = 3;
    optional SparseAdamSGDParameter adam = 4;
190 191 192
}

message SparseNaiveSGDRuleParameter {
S
sneaxiy 已提交
193 194 195
    optional double learning_rate = 1 [default = 0.05];
    optional double initial_range = 2 [default = 0.0001];
    repeated float weight_bounds = 3;
196 197 198
}

message SparseAdagradSGDRuleParameter {
S
sneaxiy 已提交
199 200 201 202
    optional double learning_rate = 1 [default = 0.05];
    optional double initial_g2sum = 2 [default = 3.0];
    optional double initial_range = 3 [default = 0.0001];
    repeated float weight_bounds = 4;
203 204 205
}

message SparseAdamSGDParameter {
S
sneaxiy 已提交
206 207 208 209 210 211
    optional double learning_rate = 1 [default = 0.001];
    optional double initial_range = 2 [default = 0.0001];
    optional double beta1_decay_rate = 3 [default = 0.9];
    optional double beta2_decay_rate = 4 [default = 0.999];
    optional double ada_epsilon = 5 [default = 1e-08];
    repeated float weight_bounds = 6;
212 213 214
}

message DenseSGDRuleParameter {
S
sneaxiy 已提交
215 216 217 218 219
    optional string name = 1;
    optional AdamSGDParameter adam = 2;
    optional NaiveSGDParameter naive = 3;
    optional SummarySGDParameter summary = 4;
    optional MovingAverageRuleParameter moving_average = 5;
220 221 222
}

message AdamSGDParameter {
S
sneaxiy 已提交
223 224 225 226 227
    optional double learning_rate = 1 [default = 5e-06];         // \u5B66\u4E60\u7387
    optional double avg_decay_rate = 2 [default = 0.999993];     // avg_weight\u7684\u8870\u51CF\u7CFB\u6570
    optional double ada_decay_rate = 3 [default = 0.9999];
    optional double ada_epsilon = 4 [default = 1e-08];
    optional double mom_decay_rate = 5 [default = 0.99];
228 229 230
}

message NaiveSGDParameter {
S
sneaxiy 已提交
231 232
    optional double learning_rate = 1 [default = 0.0002];
    optional double avg_decay_rate = 2;
233 234 235
}

message SummarySGDParameter {
S
sneaxiy 已提交
236
    optional double summary_decay_rate = 1 [default = 0.999999];     // \u6743\u91CD\u7684\u8870\u51CF\u7CFB\u6570
237 238 239
}

message MovingAverageRuleParameter {
S
sneaxiy 已提交
240
    optional double momentum = 1;
241 242 243
}

message PsResponseMessage {
S
sneaxiy 已提交
244 245 246 247
    required int32 err_code = 1 [default = 0];
    required string err_msg = 2 [default = ""];
    optional bytes data = 3;
};
248 249

service PsService {
S
sneaxiy 已提交
250 251 252 253 254 255 256 257 258 259 260 261 262 263 264
    rpc service(PsRequestMessage) returns (PsResponseMessage);
};

message FsClientParameter {
    enum FsApiType {
         HDFS = 0;
         AFS = 1;
    }
    optional FsApiType fs_type      = 1 [default = HDFS];
    optional string    uri          = 2;                  //such as afs://tianqi.afs.baidu.com:9902
    optional string    user         = 3;                  //user_name to access fs
    optional string    passwd       = 4;                  //password
    optional int32     buffer_size  = 5;                  //buffer for read/write
    optional string hadoop_bin = 51;
    optional string afs_conf = 101;
265
}