You need to enable JavaScript to run this app.
文档中心
云服务器

云服务器

复制全文
下载 pdf
AIGC实践
基于g4i实例部署优化后WDL推理模型
复制全文
下载 pdf
基于g4i实例部署优化后WDL推理模型
本文主要介绍如何在ecs.g4i规格的实例中部署、优化WDL模型,通过硬件加速推理过程,提升推理效率。
功能特色
本实践使用了火山引擎第4代云服务器通用型g4i,该规格实例采用火山引擎自研最新DPU架构并搭载了第六代英特尔® 至强® 可扩展处理器(Granite Rapids),结合新一代硬件AI加速指令AMX-BF16与AMX-FP16(Intel Advanced Matrix Extensions)优化,实现了系统级优化方案加速WDL模型推理效率。
背景信息
Wide & Deep Learning(WDL)模型,是一种结合了线性模型(Wide)和深度神经网络(Deep)的混合模型架构,该模型主要用于解决点击率预估(CTR Prediction)问题,广泛应用于推荐、排序搜索、在线广告等领域。由于WDL模型中,Wide部分主要处理高度稀疏的特征,计算量小且非计算密集型,而CPU处理稀疏特征和不规则内存访问模式的能力较强。对于中小规模推理场景,在CPU实例中部署优化后的WDL推理模型较在GPU实例中部署,可以提供了更好的性价比。
  • Wide模型:擅长记忆高频特征组合,但无法泛化到未出现过的特征交互。
  • Deep模型:通过嵌入向量泛化低频特征,但对高频组合的学习效率低。
操作步骤
  1. 购买ecs.g4i规格实例。本节采用的实例配置如下:
  • 实例规格:ecs.g4i.16xlarge
  • 镜像:Ubuntu 22.04 64 bit
  • 网络:分配弹性公网IP
  1. 执行如下命令,安装依赖。
  • apt update
    apt install docker.io
  1. 执行如下命令,获取基于ecs.g4i规格实例优化后的WDL模型镜像。
  • 华北2(北京)
    华东2(上海)
    华南1(广州)
    亚太东南(柔佛)
    wget https://iaas-debug-beijing.tos-cn-beijing.ivolces.com/tool/cpu-serving/saved_model.tar
  1. (可选)按需调整模型推理过程中的批处理参数,本文保持默认。
  1. 执行如下命令,打开batching_config.txt文件。
  1. i键进入编辑模式,按需调整批处理参数配置。
  • max_batch_size { value: 4096 }
    batch_timeout_micros { value: 5000 }
    num_batch_threads { value: 64 }
    max_enqueued_batches { value: 204800 }
  • 参数说明:
  • max_batch_size:单次批处理的最大样本数量,默认为4096
  • batch_timeout_micros:批处理超时时间(微秒),默认为5000
  • num_batch_threads:批处理线程数,默认为64
  • max_enqueued_batches:最大排队批次数,默认为204800
  1. esc键退出编辑,输入:wq按回车键,保存并退出文件。
  1. 执行如下命令,运行镜像。
  • docker run -t --name server \
    --rm --network host \
    -v /data00/saved_model:/models/wdl \
    -v /data:/data \
    cr-for-diting-nodelete-cn-beijing.cr.volces.com/practice-images/tensorflow-serving:tf2.15-cpu-fp16 \
    --model_name=wdl \
    --model_base_path=/models/wdl \
    --enable_batching=true \
    --batching_parameters_file=/models/wdl/batching_config.txt \
    --grpc_channel_arguments=grpc.max_concurrent_streams=5000000 \
    --enable_profiler=true \
    --grpc_max_threads=1000 \
    --rest_api_num_threads=1000 \
    --mixed_precision=bfloat16
说明
  • 请将/data00/saved_model修改为WDL模型实际存储路径。
  • --rest_api_num_threads:用于设置REST API服务的最大线程数。本文配置为1000
  • --mixed_precision:配置混合精度计算类型,通过FP16(float16)或BF16(bfloat16)数据精度时,可启用CPU的AMX(高级矩阵扩展)指令集,提升推理性能。本文配置为bfloat16
  1. 进行压力测试。
  1. 执行如下命令,创建压测脚本。
  • vim grpc_client.py
  1. i键进入编辑模式,复制如下内容至脚本文件。
  • 脚本内容
  1. esc键退出编辑模式,输入:wq按回车键,保存并退出文件。
  1. 执行如下命令,进行压力测试。
  • python3 grpc_client.py \
    --request-rate 80 \
    --duration 30 \
    --num-requests 6000 \
    --max-concurrency 90 \
    --batch-size 2048 \
    --server 192.168.0.2:8500
测试结论
本节展示了在ecs.g4i.16xlarge规格实例中部署、运行WDL模型,开启AMX加速前后模型的最大吞吐信息。
批处理线程数
数据精度
BF16(启用AMX加速)
FP32(未启用AMX加速)
2048
161.23
16.18
1024
390.91
86.43
512
824.03
226.61
因此,在追求性价比、丰富实例资源场景下,您可以使用搭载第六代英特尔® 至强® 可扩展处理器(Granite Rapids)的实例规格(例如通用型g4i)代替GPU实例,通过系统级加速方案获取最优性价比的WDL模型推理服务。
最近更新时间:2025.12.08 16:00:12
这个页面对您有帮助吗?
有用
有用
无用
无用