distributed_cn.rst 5.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 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 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241

分布式
==================


communicator_fake_rpc
**********************
(始于1.5.0)

当设为True时,通信器不会实际进行rpc调用,因此速度不会受到网络通信的影响。该flag用于调试。

取值范围
---------------
Bool型,缺省值为False。

示例
-------
FLAGS_communicator_fake_rpc=True - 启用通信器fake模式。

注意
-------
该flag仅用于paddlepaddle的开发者,普通用户不应对其设置。


communicator_independent_recv_thread
**************************************
(始于1.5.0)

使用独立线程以从参数服务器接收参数。

取值范围
---------------
Bool型,缺省值为True。

示例
-------
FLAGS_communicator_independent_recv_thread=True - 使用独立线程以从参数服务器接收参数。

注意
-------
开发者使用该flag进行框架的调试与优化,普通用户不应对其设置。


communicator_max_merge_var_num
**************************************
(始于1.5.0)

要通过通信器合并为一个梯度并发送的最大梯度数。训练器将所有梯度放入队列,然后通信器将从队列中取出梯度并在合并后发送。

取值范围
---------------
Int32型,缺省值为20。

示例
-------
FLAGS_communicator_max_merge_var_num=16 - 将要通过通信器合并为一个梯度并发送的最大梯度数设为16。

注意
-------
该flag和训练器线程数有着密切关联,缺省值应和线程数一致。


communicator_merge_sparse_grad
*******************************************
(始于1.5.0)

在发送之前,合并稀疏梯度。

取值范围
---------------
Bool型,缺省值true。

示例
-------
FLAGS_communicator_merge_sparse_grad=true - 设置合并稀疏梯度。

注意
-------
合并稀疏梯度会耗费时间。如果重复ID较多,内存占用会变少,通信会变快;如果重复ID较少,则并不会节约内存。


communicator_min_send_grad_num_before_recv
*******************************************
(始于1.5.0)

在通信器中,有一个发送线程向参数服务器发送梯度,一个接收线程从参数服务器接收参数,且它们之间彼此独立。该flag用于控制接收线程的频率。 仅当发送线程至少发送communicator_min_send_grad_num_before_recv数量的梯度时,接收线程才会从参数服务器接收参数。

取值范围
---------------
Int32型,缺省值为20。

示例
-------
FLAGS_communicator_min_send_grad_num_before_recv=10 - 在接收线程从参数服务器接收参数之前,发送线程发送的梯度数为10。

注意
-------
由于该flag和训练器的训练线程数强相关,而每个训练线程都会发送其梯度,所以缺省值应和线程数一致。


communicator_send_queue_size
*******************************************
(始于1.5.0)

每个梯度的队列大小。训练器将梯度放入队列,然后通信器将其从队列中取出并发送出去。 当通信器很慢时,队列可能会满,训练器在队列有空间之前被持续阻塞。它用于避免训练比通信快得多,以致太多的梯度没有及时发出的情况。

取值范围
---------------
Int32型,缺省值为20。

示例
-------
FLAGS_communicator_send_queue_size=10 - 设置每个梯度的队列大小为10。

注意
-------
该flag会影响训练速度,若队列大小过大,速度会变快但结果可能会变差。


communicator_send_wait_times
*******************************************
(始于1.5.0)

合并数没有达到max_merge_var_num的情况下发送线程等待的次数。

取值范围
---------------
Int32型,缺省值为5。

示例
-------
FLAGS_communicator_send_wait_times=5 - 将合并数没有达到max_merge_var_num的情况下发送线程等待的次数设为5。


communicator_thread_pool_size
*******************************************
(始于1.5.0)

设置用于发送梯度和接收参数的线程池大小。

取值范围
---------------
Int32型,缺省值为5。

示例
-------
FLAGS_communicator_thread_pool_size=10 - 设置线程池大小为10。

注意
-------
大部分情况下,用户不需要设置该flag。


dist_threadpool_size
*******************************************
(始于1.0.0)

控制用于分布式模块的线程数。如果未设置,则将其设置为硬线程。

取值范围
---------------
Int32型,缺省值为0。

示例
-------
FLAGS_dist_threadpool_size=10 - 将用于分布式模块的最大线程数设为10。


rpc_deadline
*******************************************
(始于1.0.0)

它控制rpc通信的deadline超时。

取值范围
---------------
Int32型,缺省值为180000,单位为ms。

示例
-------
FLAGS_rpc_deadline=180000 - 将deadline超时设为3分钟。


rpc_disable_reuse_port
*******************************************
(始于1.2.0)

rpc_disable_reuse_port为True时,grpc的 GRPC_ARG_ALLOW_REUSEPORT会被设置为False以禁用SO_REUSEPORT。

取值范围
---------------
Bool型,缺省值为False。

示例
-------
FLAGS_rpc_disable_reuse_port=True - 禁用SO_REUSEPORT。


rpc_get_thread_num
*******************************************
(始于1.0.0)

它控制用于从参数服务器获取参数的线程数。

取值范围
---------------
Int32型,缺省值为12。

示例
-------
FLAGS_rpc_get_thread_num=6 - 将从参数服务器获取参数的线程数设为6。


rpc_send_thread_num
*******************************************
(始于1.0.0)

它控制用于发送rpc的线程数。

取值范围
---------------
Int32型,缺省值为12。

示例
-------
FLAGS_rpc_send_thread_num=6 - 将用于发送的线程数设为6。


rpc_server_profile_path
*******************************************
since(v0.15.0)

设置分析器输出日志文件路径前缀。完整路径为rpc_server_profile_path_listener_id,其中listener_id为随机数。 

取值范围
---------------
String型,缺省值为"./profile_ps"。

示例
-------
FLAGS_rpc_server_profile_path="/tmp/pserver_profile_log" - 在"/tmp/pserver_profile_log_listener_id"中生成配置日志文件。