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
这个页面对您有帮助吗?
有用
有用
无用
无用