启动服务并压测
以DeepFM模型为例,首先获取DeepFM模型,之后用TF-Serving部署DeepFM模型,最后创建Docker容器并使用perf_analyzer进行压测。
下载模型
- 进入“/path/to/models”目录。
1
cd /path/to/models
- 获取DeepFM模型。
1
git clone https://gitee.com/openeuler/sra_benchmark.git -b v0.1.0
- 查看是否存在DeepFM模型。
1
ls sra_benchmark/models/
启动TF-Serving服务
- 进入“/path/to/tfserving/serving”目录。
1
cd /path/to/tfserving/serving
- 设置环境变量,开启XLA功能。
1
export TF_XLA_FLAGS="--tf_xla_auto_jit=2 --tf_xla_cpu_global_jit"
- 启动TF-Serving服务,以绑定NUMA 2为例。启动命令相关参数如表1所示。
1
numactl -m 2 -C 160-239 ./bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server --port=8869 --rest_api_port=8870 --model_base_path=/path/to/models/sra_benchmark/models/model_DeepFM_1730799407 --model_name=deepfm --tensorflow_intra_op_parallelism=51 --tensorflow_inter_op_parallelism=27 --xla_cpu_compilation_enabled=true
运行结果如下:
此处numactl -m 2 -C 160-239是限定TF-Serving服务运行在NUMA 2对应的核上,以该方式启动可以充分利用CPU资源,-m指的是使用NUMA 2对应的内存,-C指定NUMA 2对应的核。
对应机型为:鲲鹏920新型号处理器(开启超线程)。
客户端压测
- 使用PuTTY工具,另外开启一个session,以root用户登录服务器。
- 创建Docker容器并使用perf_analyzer进行压测。压测命令参数说明如表2所示。
1
docker run -it --rm --net host nvcr.io/nvidia/tritonserver:24.05-py3-sdk perf_analyzer --concurrency-range 28:28:1 -p 8561 -f perf.csv -m deepfm --service-kind tfserving -i grpc --request-distribution poisson -b 660 -u localhost:8869 --percentile 99 --input-data=random
运行结果如下:
回显信息中的Throughput是衡量服务器处理请求能力的一个指标,表示每秒钟可以处理的查询或事务的数量。
如使用本文配置的参数,其值应与图中的值大体一致,几K误差在浮动范围内(BIOS为默认配置,开启超线程)。
该压测数据对应机型为:鲲鹏920新型号处理器(开启超线程)。