• 环境变量FLAGS
    • allocator_strategy
      • 取值范围
      • 示例
    • benchmark
      • 取值范围
      • 示例
    • check_nan_inf
      • 取值范围
      • 示例
    • communicator_fake_rpc
      • 取值范围
      • 示例
      • 注意
    • communicator_independent_recv_thread
      • 取值范围
      • 示例
      • 注意
    • communicator_max_merge_var_num
      • 取值范围
      • 示例
      • 注意
    • communicator_merge_sparse_grad
      • 取值范围
      • 示例
      • 注意
    • communicator_min_send_grad_num_before_recv
      • 取值范围
      • 示例
      • 注意
    • communicator_send_queue_size
      • 取值范围
      • 示例
      • 注意
    • communicator_send_wait_times
      • 取值范围
      • 示例
    • communicator_thread_pool_size
      • 取值范围
      • 示例
      • 注意
    • conv_workspace_size_limit
      • 取值范围
      • 示例
    • cpu_deterministic
      • 取值范围
      • 示例
    • cudnn_batchnorm_spatial_persistent
      • 取值范围
      • 示例
      • 注意
    • cudnn_deterministic
      • 取值范围
      • 示例
      • 注意
    • cudnn_exhaustive_search
      • 取值范围
      • 示例
    • dist_threadpool_size
      • 取值范围
      • 示例
    • eager_delete_scope
      • 取值范围
      • 示例
    • eager_delete_tensor_gb
      • 取值范围
      • 示例
      • 注意
    • enable_cublas_tensor_op_math
      • 取值范围
      • 示例
    • enable_inplace_whitelist
      • 取值范围
      • 示例
    • enable_parallel_graph
      • 取值范围
      • 示例
    • enable_rpc_profiler
      • 取值范围
      • 示例
    • fast_eager_deletion_mode
      • 取值范围
      • 示例
    • fraction_of_gpu_memory_to_use
      • 取值范围
      • 示例
      • 注意
    • free_idle_memory
      • 取值范围
      • 示例
    • fuse_parameter_groups_size
      • 取值范围
      • 示例
    • fuse_parameter_memory_size
      • 取值范围
      • 示例
    • init_allocated_mem
      • 取值范围
      • 示例
    • initial_cpu_memory_in_mb
      • 取值范围
      • 示例
    • initial_gpu_memory_in_mb
      • 取值范围
      • 示例
      • 注意
    • inner_op_parallelism
      • 取值范围
      • 示例
      • 注意
    • limit_of_tmp_allocation
      • 取值范围
      • 示例
    • max_body_size
      • 取值范围
      • 示例
    • memory_fraction_of_eager_deletion
      • 取值范围
      • 示例
    • multiple_of_cupti_buffer_size
      • 取值范围
      • 示例
    • paddle_num_threads
      • 取值范围
      • 示例
    • pe_profile_fname
      • 取值范围
      • 示例
    • print_sub_graph_dir
      • 取值范围
      • 示例
    • reader_queue_speed_test_mode
      • 取值范围
      • 示例
      • 注意
    • reallocate_gpu_memory_in_mb
      • 取值范围
      • 示例
      • 注意
    • rpc_deadline
      • 取值范围
      • 示例
    • rpc_disable_reuse_port
      • 取值范围
      • 示例
    • rpc_get_thread_num
      • 取值范围
      • 示例
    • rpc_send_thread_num
      • 取值范围
      • 示例
    • rpc_server_profile_path
      • 取值范围
      • 示例
    • selected_gpus
      • 取值范围
      • 示例
      • 注意
    • sync_nccl_allreduce
      • 取值范围
      • 示例
    • times_excess_than_required_tmp_allocation
      • 取值范围
      • 示例
    • tracer_profile_fname
      • 取值范围
      • 示例
    • use_mkldnn
      • 取值范围
      • 示例
      • 注意
    • use_ngraph
      • 取值范围
      • 示例
      • 注意
    • use_pinned_memory
      • 取值范围
      • 示例

    环境变量FLAGS

    allocator_strategy

    (始于1.2)

    用于选择PaddlePaddle的分配器策略。 分配器策略正在开发中,且非legacy分配器尚未稳定。

    取值范围

    String型,[‘legacy’, ‘naive_best_fit’]中的一个。缺省值为’legacy’。

    示例

    FLAGS_allocator_strategy=legacy - 使用legacy分配器。

    FLAGS_allocator_strategy=naive_best_fit - 使用新设计的分配器。

    benchmark

    (始于0.12.0)

    用于基准测试。设置后,它将使局域删除同步,添加一些内存使用日志,并在内核启动后同步所有cuda内核。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_benchmark=True - 同步以测试基准。

    check_nan_inf

    (始于0.13.0)

    用于调试。它用于检查Operator的结果是否含有Nan或Inf。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_check_nan_inf=True - 检查Operator的结果是否含有Nan或Inf。

    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。

    conv_workspace_size_limit

    (始于0.13.0)

    用于选择cuDNN卷积算法的工作区限制大小(单位为MB)。cuDNN的内部函数在这个内存限制范围内获得速度最快的匹配算法。通常,在较大的工作区内可以选择更快的算法,但同时也会显著增加内存空间。用户需要在内存和速度之间进行权衡。

    取值范围

    Uint64型,缺省值为4096。即4G内存工作区。

    示例

    FLAGS_conv_workspace_size_limit=1024 - 将用于选择cuDNN卷积算法的工作区限制大小设置为1024MB。

    cpu_deterministic

    (始于0.15.0)

    该flag用于调试。它表示是否在CPU侧确定计算结果。 在某些情况下,不同求和次序的结果可能不同,例如,a+b+c+d 的结果可能与 c+a+b+d 的结果不同。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_cpu_deterministic=True - 在CPU侧确定计算结果。

    cudnn_batchnorm_spatial_persistent

    (始于1.4.0)

    表示是否在batchnorm中使用新的批量标准化模式CUDNN_BATCHNORM_SPATIAL_PERSISTENT函数。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_cudnn_batchnorm_spatial_persistent=True - 开启CUDNN_BATCHNORM_SPATIAL_PERSISTENT模式。

    注意

    此模式在某些任务中可以更快,因为将为CUDNN_DATA_FLOAT和CUDNN_DATA_HALF数据类型选择优化路径。我们默认将其设置为False的原因是此模式可能使用原子整数缩减(scaled atomic integer reduction)而导致某些输入数据范围的数字溢出。

    cudnn_deterministic

    (始于0.13.0)

    cuDNN对于同一操作有几种算法,一些算法结果是非确定性的,如卷积算法。该flag用于调试。它表示是否选择cuDNN中的确定性函数。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_cudnn_deterministic=True - 选择cuDNN中的确定性函数。

    注意

    现在,在cuDNN卷积和池化Operator中启用此flag。确定性算法速度可能较慢,因此该flag通常用于调试。

    (始于1.2.0)

    表示是否使用穷举搜索方法来选择卷积算法。在cuDNN中有两种搜索方法,启发式搜索和穷举搜索。穷举搜索尝试所有cuDNN算法以选择其中最快的算法。此方法非常耗时,所选择的算法将针对给定的层规格进行缓存。 一旦更改了图层规格(如batch大小,feature map大小),它将再次搜索。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_cudnn_exhaustive_search=True - 使用穷举搜索方法来选择卷积算法。

    dist_threadpool_size

    (始于1.0.0)

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

    取值范围

    Int32型,缺省值为0。

    示例

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

    eager_delete_scope

    (始于0.12.0)

    同步局域删除。设置后,它将降低GPU内存使用量,但同时也会减慢销毁变量的速度(性能损害约1%)。

    取值范围

    Bool型,缺省值为True。

    示例

    FLAGS_eager_delete_scope=True - 同步局域删除。

    eager_delete_tensor_gb

    (始于1.0.0)

    表示是否使用垃圾回收策略来优化网络的内存使用。如果FLAGS_eager_delete_tensor_gb >= 0,则启用垃圾回收策略,并在运行网络时回收内存垃圾,这有利于节省内存使用量。它仅在您使用Executor运行程序、编译程序或使用并行数据编译程序时才有用。如果FLAGS_eager_delete_tensor_gb < 0,则禁用垃圾回收策略。垃圾回收器直到垃圾的内存大小达到FLAGS_eager_delete_tensor_gb GB时才会释放内存垃圾。

    取值范围

    Double型,单位为GB,缺省值为-1.0。

    示例

    FLAGS_eager_delete_tensor_gb=0.0 - 一旦不再使用即释放内存垃圾。

    FLAGS_eager_delete_tensor_gb=1.0 - 垃圾占用内存大小达到1.0GB时释放内存垃圾。

    FLAGS_eager_delete_tensor_gb=-1.0 - 禁用垃圾回收策略。

    注意

    建议用户在训练大型网络时设置FLAGS_eager_delete_tensor_gb=0.0以启用垃圾回收策略。

    enable_cublas_tensor_op_math

    (始于1.2.0)

    该flag表示是否使用Tensor Core,但可能会因此降低部分精确度。

    取值范围

    Bool型,缺省值为False。

    示例

    enable_cublas_tensor_op_math=True - 使用Tensor Core。

    enable_inplace_whitelist

    (始于1.4)

    该flag用于调试,在某些ops中禁止内存原位复用。设置后,一些ops不会执行原位复用优化以节省内存。这些Ops包括:sigmoid, exp, relu, tanh, sqrt, ceil, floor, reciprocal, relu6, soft_relu, hard_sigmoid, batch_norm, batch_norm_grad, sum, sum_grad, scale, reshape, elementwise_add, and elementwise_add_grad。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_enable_inplace_whitelist=True - 在特定op上禁止内存原位复用优化。

    enable_parallel_graph

    (始于1.2.0)

    该flag用于ParallelExecutor以禁用并行图执行模式。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_enable_parallel_graph=False - 通过ParallelExecutor强制禁用并行图执行模式。

    enable_rpc_profiler

    (始于1.0.0)

    是否启用RPC分析器。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_enable_rpc_profiler=True - 启用RPC分析器并在分析器文件中记录时间线。

    fast_eager_deletion_mode

    (始于1.3)

    是否使用快速垃圾回收策略。如果未设置,则在CUDA内核结束时释放gpu内存。否则gpu内存将在CUDA内核尚未结束的情况下被释放,从而使垃圾回收策略更快。仅在启用垃圾回收策略时有效。

    取值范围

    Bool型,缺省值为True。

    示例

    FLAGS_fast_eager_deletion_mode=True - 启用快速垃圾回收策略。

    FLAGS_fast_eager_deletion_mode=False - 禁用快速垃圾回收策略。

    fraction_of_gpu_memory_to_use

    (始于1.2.0)

    表示分配的内存块占GPU总内存大小的比例。将来的内存使用将从该内存块分配。 如果内存块没有足够的gpu内存,将从gpu请求分配与内存块同样大小的新的内存块,直到gpu没有足够的内存为止。

    取值范围

    Uint64型,大于0,表示初始分配的内存块占GPU内存的比例。

    示例

    FLAGS_fraction_of_gpu_memory_to_use=0.1 - 分配总GPU内存大小的10%作为初始GPU 内存块。

    注意

    Windows系列平台会将FLAGS_fraction_of_gpu_memory_to_use默认设为0.5,Linux则会默认设为0.92。

    free_idle_memory

    (始于0.15.0)

    是否在运行时释放从系统预分配的空闲内存。设置后,如果预分配的分配器中有太多空闲内存,则释放空闲内存。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_free_idle_memory=True - 空闲内存太多时释放。

    FLAGS_free_idle_memory=False - 不释放空闲内存。

    fuse_parameter_groups_size

    (始于1.4.0)

    FLAGS_fuse_parameter_groups_size表示每一组中参数的个数。缺省值是一个经验性的结果。如果fuse_parameter_groups_size为1,则表示组的大小和参数梯度的数目一致。 如果fuse_parameter_groups_size为-1,则表示只有一个组。缺省值为3,这只是一个经验值。

    取值范围

    Int32型,缺省值为3。

    示例

    FLAGS_fuse_parameter_groups_size=3 - 将单组参数的梯度大小设为3。

    fuse_parameter_memory_size

    (始于1.5.0)

    FLAGS_fuse_parameter_memory_size表示作为通信调用输入(例如NCCLAllReduce)的单组参数梯度的上限内存大小。默认值为-1.0,表示不根据memory_size设置组。单位是MB。

    取值范围

    Double型,缺省值为-1.0。

    示例

    FLAGS_fuse_parameter_memory_size=16 - 将单组参数梯度的上限大小设为16MB。

    init_allocated_mem

    (始于0.15.0)

    是否对分配的内存进行非零值初始化。该flag用于调试,以防止某些Ops假定已分配的内存都是初始化为零的。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_init_allocated_mem=True - 对分配的内存进行非零初始化。

    FLAGS_init_allocated_mem=False - 不会对分配的内存进行非零初始化。

    initial_cpu_memory_in_mb

    (始于0.14.0)

    初始PaddlePaddle分配器的CPU内存块大小,单位为MB。分配器将FLAGS_initial_cpu_memory_in_mb和FLAGS_fraction_of_cpu_memory_to_use*(总物理内存)的最小值作为内存块大小。

    取值范围

    Uint64型,缺省值为500,单位为MB。

    示例

    FLAGS_initial_cpu_memory_in_mb=100 - 在FLAGS_fraction_of_cpu_memory_to_use*(总物理内存)大于100MB的情况下,首次提出分配请求时,分配器预先分配100MB内存,并在预分配的内存耗尽时再次分配100MB。

    initial_gpu_memory_in_mb

    (始于1.4.0)

    分配一块指定大小的GPU内存块。之后的内存使用将从该内存块分配。如果内存块没有足够的gpu内存,将从gpu请求大小为FLAGS_reallocate_gpu_memory_in_mb的内存块,直到gpu没有剩余内存为止。

    取值范围

    Uint64型,大于0,为初始GPU内存大小,单位为MB。

    示例

    FLAGS_initial_gpu_memory_in_mb=4096 - 分配4GB作为初始GPU内存块大小。

    注意

    如果设置该flag,则FLAGS_fraction_of_gpu_memory_to_use设置的内存大小将被该flag覆盖。如果未设置该flag,PaddlePaddle将使用FLAGS_fraction_of_gpu_memory_to_use分配GPU内存。

    inner_op_parallelism

    (始于1.3.0)

    大多数Operators都在单线程模式下工作,但对于某些Operators,使用多线程更合适。 例如,优化稀疏梯度的优化Op使用多线程工作会更快。该flag用于设置Op内的线程数。

    取值范围

    Int32型,缺省值为0,这意味着operator将不会在多线程模式下运行。

    示例

    FLAGS_inner_op_parallelism=5 - 将operator内的线程数设为5。

    注意

    目前只有稀疏的adam op支持inner_op_parallelism。

    limit_of_tmp_allocation

    (始于1.3)

    FLAGS_limit_of_tmp_allocation表示temporary_allocation大小的上限,单位为字节。如果FLAGS_limit_of_tmp_allocation为-1,temporary_allocation的大小将没有限制。

    取值范围

    Int64型,缺省值为-1。

    示例

    FLAGS_limit_of_tmp_allocation=1024 - 将temporary_allocation大小的上限设为1024字节。

    max_body_size

    (始于1.0.0)

    控制BRPC中的最大消息大小。

    取值范围

    Int32型,缺省值为2147483647。

    示例

    FLAGS_max_body_size=2147483647 - 将BRPC消息大小设为2147483647。

    memory_fraction_of_eager_deletion

    (始于1.4)

    垃圾回收策略释放变量的内存大小百分比。如果FLAGS_memory_fraction_of_eager_deletion = 1.0,则将释放网络中的所有临时变量。如果FLAGS_memory_fraction_of_eager_deletion = 0.0,则不会释放网络中的任何临时变量。如果0.0<FLAGS_memory_fraction_of_eager_deletion<1.0,则所有临时变量将根据其内存大小降序排序,并且仅释放具有最大内存大小的FLAGS_memory_fraction_of_eager_deletion比例的变量。该flag仅在运行并行数据编译程序时有效。

    取值范围

    Double型,范围为[0.0, 1.0],缺省值为1.0。

    示例

    FLAGS_memory_fraction_of_eager_deletion=0 - 保留所有临时变量,也就是禁用垃圾回收策略。

    FLAGS_memory_fraction_of_eager_deletion=1 - 释放所有临时变量。

    FLAGS_memory_fraction_of_eager_deletion=0.5 - 仅释放50%比例的占用内存最多的变量。

    multiple_of_cupti_buffer_size

    (始于1.4.0)

    该flag用于分析。它表示CUPTI设备缓冲区大小的倍数。如果在profiler过程中程序挂掉或者在chrome://tracing中加载timeline文件时出现异常,请尝试增大此值。

    取值范围

    Int32型,缺省值为1。

    示例

    FLAGS_multiple_of_cupti_buffer_size=1 - 将CUPTI设备缓冲区大小的倍数设为1。

    paddle_num_threads

    (始于0.15.0)

    控制每个paddle实例的线程数。

    取值范围

    Int32型,缺省值为1。

    示例

    FLAGS_paddle_num_threads=2 - 将每个实例的最大线程数设为2。

    pe_profile_fname

    (始于1.3.0)

    该flag用于ParallelExecutor的调试。ParallelExecutor会通过gpertools生成配置文件结果,并将结果存储在FLAGSpe_profile_fname指定的文件中。仅在编译选项选择 _WITH_PRIFILER=ON 时有效。如果禁用则设为empty。

    取值范围

    String型,缺省值为empty (“”)。

    示例

    FLAGS_pe_profile_fname=”./parallel_executor.perf” - 将配置文件结果存储在parallel_executor.perf中。

    print_sub_graph_dir

    (始于1.2.0)

    该flag用于调试。如果程序中转换图的某些子图失去连接,则结果可能会出错。我们可以将这些断开连接的子图打印到该flag指定的文件中。如果禁用则设为empty。

    取值范围

    String型,缺省值为empty (“”)。

    示例

    FLAGS_print_sub_graph_dir=”./sub_graphs.txt” - 将断开连接的子图打印到”./sub_graphs.txt”。

    reader_queue_speed_test_mode

    (始于1.1.0)

    将pyreader数据队列设置为测试模式。在测试模式下,pyreader将缓存一些数据,然后执行器将读取缓存的数据,因此阅读器不会成为瓶颈。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_reader_queue_speed_test_mode=True - 启用pyreader测试模式。

    注意

    仅当使用py_reader时该flag才有效。

    reallocate_gpu_memory_in_mb

    (始于1.4.0)

    如果耗尽了分配的GPU内存块,则重新分配额外的GPU内存块。

    取值范围

    Int64型,大于0,单位为MB。

    示例

    FLAGS_reallocate_gpu_memory_in_mb=1024 - 如果耗尽了分配的GPU内存块,重新分配1GB。

    注意

    如果设置了该flag,PaddlePaddle将重新分配该flag指定大小的gpu内存。否则分配FLAGS_fraction_of_gpu_memory_to_use指定比例的gpu内存。

    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”中生成配置日志文件。

    selected_gpus

    (始于1.3)

    设置用于训练或预测的GPU设备。

    取值范围

    以逗号分隔的设备ID列表,其中每个设备ID是一个非负整数,且应小于您的机器拥有的GPU设备总数。

    示例

    FLAGS_selected_gpus=0,1,2,3,4,5,6,7 - 令0-7号GPU设备用于训练和预测。

    注意

    使用该flag的原因是我们希望在GPU设备之间使用聚合通信,但通过CUDA_VISIBLE_DEVICES只能使用共享内存。

    sync_nccl_allreduce

    (始于1.3)

    如果FLAGSsync_nccl_allreduce为True,则会在allreduce_op_handle中调用 _cudaStreamSynchronize(nccl_stream) ,这种模式在某些情况下可以获得更好的性能。

    取值范围

    Bool型,缺省值为True。

    示例

    FLAGSsync_nccl_allreduce=True - 在allreduce_op_handle中调用 _cudaStreamSynchronize(nccl_stream)

    times_excess_than_required_tmp_allocation

    (始于1.3)

    FLAGS_times_excess_than_required_tmp_allocation表示TemporaryAllocator可以返回的最大大小。例如,如果所需的内存大小为N,且times_excess_than_required_tmp_allocation为2.0,则TemporaryAllocator将返回大小范围为N~2*N的可用分配。

    取值范围

    Int64型,缺省值为2。

    示例

    FLAGS_times_excess_than_required_tmp_allocation=1024 - 设置TemporaryAllocator可以返回的最大大小为1024*N。

    tracer_profile_fname

    (始于1.4.0)

    FLAGS_tracer_profile_fname表示由gperftools生成的命令式跟踪器的分析器文件名。仅在编译选项选择WITH_PROFILER = ON时有效。如果禁用则设为empty。

    取值范围

    String型,缺省值为(“gperf”)。

    示例

    FLAGS_tracer_profile_fname=”gperf_profile_file” - 将命令式跟踪器的分析器文件名设为”gperf_profile_file”。

    use_mkldnn

    (始于0.13.0)

    在预测或训练过程中,可以通过该选项选择使用Intel MKL-DNN(https://github.com/intel/mkl-dnn)库运行。“用于深度神经网络的英特尔(R)数学核心库(Intel(R) MKL-DNN)”是一个用于深度学习应用程序的开源性能库。该库加速了英特尔(R)架构上的深度学习应用程序和框架。Intel MKL-DNN包含矢量化和线程化构建建块,您可以使用它们来实现具有C和C ++接口的深度神经网络(DNN)。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_use_mkldnn=True - 开启使用MKL-DNN运行。

    注意

    FLAGS_use_mkldnn仅用于python训练和预测脚本。要在CAPI中启用MKL-DNN,请设置选项 -DWITH_MKLDNN=ON。英特尔MKL-DNN支持英特尔64架构和兼容架构。该库对基于以下设备的系统进行了优化:英特尔SSE4.1支持的英特尔凌动(R)处理器;第4代,第5代,第6代,第7代和第8代英特尔(R)Core(TM)处理器;英特尔(R)Xeon(R)处理器E3,E5和E7系列(原Sandy Bridge,Ivy Bridge,Haswell和Broadwell);英特尔(R)Xeon(R)可扩展处理器(原Skylake和Cascade Lake);英特尔(R)Xeon Phi(TM)处理器(原Knights Landing and Knights Mill);兼容处理器。

    use_ngraph

    (始于1.4.0)

    在预测或训练过程中,可以通过该选项选择使用英特尔nGraph(https://github.com/NervanaSystems/ngraph)引擎。它将在英特尔Xeon CPU上获得很大的性能提升。

    取值范围

    Bool型,缺省值为False。

    示例

    FLAGS_use_ngraph=True - 开启使用nGraph运行。

    注意

    英特尔nGraph目前仅在少数模型中支持。我们只验证了[ResNet-50](https://github.com/PaddlePaddle/models/blob/develop/PaddleCV/image_classification/README_ngraph.md)的训练和预测。

    use_pinned_memory

    (始于0.12.0)

    是否使用pinned memory。设为True后,CPU分配器将调用mlock来锁定内存页。

    取值范围

    Bool型,缺省值为True。

    示例

    FLAGS_use_pinned_memory=True - 锁定分配的CPU内存页面。