配置信息

环境变量

HB_NN_LOG_LEVEL // 设置NN模块日志等级,值为0、1、2、3、4、5、6,分别对应Trace、Debug、Info、Warning、Error、Critical、Never,默认为Warning。 HB_NN_HBIR_GPU_ENABLE // 设置NN模块是否使用GPU加速,true为使用。 HB_NN_ENABLE_MEM_LRU_CACHE // 设置NN模块是否使用内存LRU缓存,true为使用,默认不使用。 HB_NN_MEM_LRU_CACHE_CLEAN_INTERVAL // 设置NN模块清理LRU缓存的时间间隔,单位为毫秒,默认为1000ms。

日志等级设置说明

  • 日志等级:

    NN 模块中的日志主要分为7个等级:

    log等级可设置为0、1、2、3、4、5、6,分别对应Trace、Debug、Info、Warning、Error、Critical、Never,默认为Warning。

  • 日志等级设置规则:

    • 若发生的log等级 >= 设置的等级,则该log可以被打印,反之被屏蔽。
    • 设置的log等级越小,打印信息越多。例如:设置log等级为3,即为Warning级别,则3、4、5等级的log均可以被打印。NN 模块默认log等级为Warning级别,即以下log级别的信息可以被打印:Warning、Error、Critical。

HBIR模型推理说明

DNN支持X86环境下推理HBIR模型,由于您的环境中可能不存在GPU,因此默认不使用GPU加速。

若您的机器上存在GPU,可以通过设置环境变量 HB_NN_HBIR_GPU_ENABLEtrue 来使用GPU加速。

注解
  • 使用GPU加速时,应确保您的机器上已安装了相应的GPU驱动和CUDA环境,环境要求请参考环境部署

  • 使用GPU加速时,应确保 libhbdnn.soLD_LIBRARY_PATH 所设置的目录下。

  • 使用GPU加速时,可以设置控制参数中的 deviceId 来指定GPU进行计算,应确保设置的值在 [0, gpu_dvice_count) 范围内。

内存LRU缓存说明

BPU内存在BPU实际使用前,NN模块内部需要对该块内存进行特殊处理才能够正常使用,对内存的频繁处理会导致CPU负载变大,从而可能会引发性能问题。

为了解决这个问题,推理库提供了内存LRU缓存功能,通过设置环境变量 HB_NN_ENABLE_MEM_LRU_CACHEtrue 来使用。设置方式如下:

export HB_NN_ENABLE_MEM_LRU_CACHE=true
注解
  • NN模块内部基于LRU(最近最少使用原理)对输入输出内存进行管理,因此使用缓存功能时,您申请的内存在调用释放接口后,不会立即释放,直到缓存被清理后才会实际释放内存。可以通过设置 HB_NN_MEM_LRU_CACHE_CLEAN_INTERVAL 环境变量来控制缓存清理的时间间隔。

  • 场景约束:您申请的内存在反复使用的情况才有收益。

  • 该缓存功能只适用于NN模块。

L2M模型推理支持说明

UCP侧L2 Cache采用静态映射方案,需要您使用环境变量 HB_DNN_USER_DEFINED_L2M_SIZES 配置分配给每个BPU核心的L2 Cache大小。每个核的Size间使用 : 分割,单位为 MB ,Size值仅支持整数。 UCP会在推理准备阶段按照您的配置分配所有核心的L2 Cache。如下是几种配置示例及说明:

export HB_DNN_USER_DEFINED_L2M_SIZES=6:6:6:6 # 4个核心,每个核心分配6MB export HB_DNN_USER_DEFINED_L2M_SIZES=0:6:0:0 # 4个核心,核1分配6MB,其他核不分配 export HB_DNN_USER_DEFINED_L2M_SIZES=12:0:0:12 # 4个核心,核0分配12MB,核3分配12MB,其他核不分配
注意
  1. 启用L2 Cache优化时,不支持推理优先级设置为抢占。

  2. 多进程环境下,不同进程间L2 Cache相互独立,故需要保证各进程配置的L2 Cache总和不能超过硬件最大L2 Cache大小。

  3. 最大L2 Cache大小可以通过命令 cat /sys/kernel/debug/ion/heaps/custom 进行查看。