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

启动服务并压测

以DeepFM模型为例,首先获取DeepFM模型,之后用TF-Serving部署DeepFM模型,最后创建Docker容器并使用perf_analyzer进行压测。

下载模型

  1. 进入“/path/to/models”目录。
    1
    cd /path/to/models
    
  2. 获取DeepFM模型。
    1
    git clone https://gitee.com/openeuler/sra_benchmark.git -b v0.1.0
    
  3. 查看是否存在DeepFM模型。
    1
    ls sra_benchmark/models/
    

启动TF-Serving服务

  1. 进入“/path/to/tfserving/serving”目录。
    1
    cd /path/to/tfserving/serving
    
  2. 设置环境变量,开启XLA功能。
    1
    export TF_XLA_FLAGS="--tf_xla_auto_jit=2 --tf_xla_cpu_global_jit"
    
  3. 启动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新型号处理器(开启超线程)。

    表1 TF-Serving服务启动命令参数说明

    参数项

    说明

    --port

    gRPC服务端口。

    --rest_api_port

    HTTP服务端口。

    --model_base_path

    模型路径。

    --model_name

    模型名称。

    --tensorflow_intra_op_parallelism

    算子内并行度。

    --tensorflow_inter_op_parallelism

    算子间并行度。

    --xla_cpu_compilation_enabled

    是否开启XLA。

客户端压测

  1. 使用PuTTY工具,另外开启一个session,以root用户登录服务器。
  2. 创建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新型号处理器(开启超线程)。

    表2 压测命令参数说明

    参数项

    说明

    --concurrency-range

    客户端并发数范围。

    -m

    压测模型。

    --service-kind

    服务端推理框架。

    -i

    通信协议。

    -u

    服务端口,需与TF-Serving对应端口保持一致。

    -b

    模型batch size。

    --percentile

    延时要求。

    --input-data

    发送随机数据。