鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

使用说明

鲲鹏BoostKit线程调度优化通过命令行提供了算子批量调度和线程亲和性隔离两个特性开关,用户可根据实际场景自行配置。

使用TF Serving启动推理压测指导请参见《TensorFlow Serving推理部署框架 移植指南》的“启动服务并压测”章节。

算子批量调度

TF Serving命令行接口

--batch_op_scheduling

接口功能

使能算子调度优化和XLA线程池管理优化特性。

参数类型

bool

取值范围

true/false。true为真,表示开启特性,默认为false。

推荐场景

单核推理时延可满足业务要求,可配置该选项提升推理并发能力和吞吐量。

推荐配置

  • --tensorflow_intra_op_parallelism=1,算子内并行度设置为1;
  • --tensorflow_inter_op_parallelism=80,算子间并行度设置为CPU核数;
  • --batch_op_scheduling=true,开启算子批量调度特性。

使用示例

1
/path/to/tensorflow_model_server  --port=8850 --rest_api_port=8851 --model_base_path=/path/to/saved_model/ --model_name=model --tensorflow_intra_op_parallelism=1 --tensorflow_inter_op_parallelism=80 --batch_op_scheduling=true

线程亲和性隔离

TF Serving命令行接口

--task_affinity_isolation

接口功能

使能线程亲和性隔离特性,有两种隔离方式:

  • 顺序绑核,TensorFlow计算线程绑定到前K个核,TF Serving通信线程绑定到其余核。
  • 交叉绑核,适用于开启超线程的场景,将TensorFlow线程绑定到物理核,TF Serving通信线程绑定到虚拟核。

参数类型

std::string。

参数格式

mode;m-n;k,默认0。

取值范围

请参见表1

推荐场景

  • 使用TensorFlow调度方式运行时,推荐设置为顺序绑核;
  • 与--batch_op_scheduling选项同时使能,并开启超线程时,推荐设置为交叉绑核。

使用示例

一台160个物理核的服务器,开启超线程共320个核心,4个NUMA,每个NUMA上80个核心。

  • 如果使用TensorFlow调度方式运行,运行参数可参考:
    1
    numactl -C 0-79 -m 0 /path/to/tensorflow_model_server  --port=8850 --rest_api_port=8851 --model_base_path=/path/to/saved_model/ --model_name=model --tensorflow_intra_op_parallelism=75 --tensorflow_inter_op_parallelism=75 --task_affinity_isolation="1;0-79;75"
    
  • 如果使能了--batch_op_scheduling选项,--tensorflow_inter_op_parallelism参数推荐设置为物理核数量,其他运行参数可参考:
    1
    numactl -C 0-79 -m 0 /path/to/tensorflow_model_server  --port=8850 --rest_api_port=8851 --model_base_path=/path/to/saved_model/ --model_name=model --tensorflow_intra_op_parallelism=1 --tensorflow_inter_op_parallelism=40 --batch_op_scheduling=true --task_affinity_isolation="2;0-79"
    
表1 线程亲和性隔离参数格式取值说明

参数

取值范围

含义

约束

mode

0、1、2

  • 0:OFF,不使能线程亲和。
  • 1:ORDER,按顺序绑核。
  • 2:INTERVAL,交叉绑核。

mode=0时,m-n、k两个参数无效(可不填)。

m-n

可用的CPU核

绑核范围[m, n]

m <= n

k

可用的CPU核

分配给TensorFlow线程的核数。

k <= n - m + 1,即不大于绑核总数;mode=2时,参数k无效(可不填)。

numactl是一个在Linux系统上用于控制和管理NUMA(非统一内存访问,Non-Uniform Memory Access)架构的工具。可通过yum工具安装:

1
yum install -y numactl numactl-devel

numactl -C 0-79 -m 0是限定TF Serving服务运行在NUMA 0对应的核上,以该方式启动可以充分利用CPU资源,-C指定NUMA 0对应的核,-m指的是使用NUMA 0对应的内存。