ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ERNIE 3.0 轻量级模型推理性能 Benchmark 全解:CPU/GPU 环境下 FP32/FP16/INT8 与裁剪量化的加速效果

ERNIE 3.0 轻量级模型推理性能 Benchmark 全解:CPU/GPU 环境下 FP32/FP16/INT8 与裁剪量化的加速效果 人工智能深度学习计算机视觉NLP语音【免费下载链接】modelsOfficially maintained, supported by PaddlePaddle, including CV, NLP, Speech, Rec, TS, big models and so on.项目地址https://gitcode.com/gh_mirrors/mo/models点击查看免费下载本文是 PaddlePaddle 官方模型仓库中 ERNIE 3.0 轻量级模型ERNIE Tiny推理性能基准文档的深度解读与实战指南。文章完整继承原文档的测试环境、指标口径与全部 CPU/GPU 性能数据并结合仓库内的模型信息、下载说明与 FastDeploy 部署示例帮助读者理解 QPS 指标如何计算、FP32/FP16/INT8 及裁剪量化组合在三大中文 NLP 任务上的加速收益与精度代价以及如何在本地环境中复现同类推理测试。1. 背景被评测的对象 ERNIE 3.0 轻量级模型本次 Benchmark 的评测对象是ERNIE 3.0-Medium属于 PaddleNLP 开源的中文轻量级预训练模型系列 ERNIE Tiny。根据仓库 info.yaml 中的元数据该模型由百度发布采用 Apache 2.0 协议隶属于自然语言处理/预训练模型与文心大模型两个任务分类其技术原理对应论文ERNIE-Tiny: A Progressive Distillation Framework for Pretrained Transformer Compression即通过**渐进式蒸馏Progressive Distillation**从文心大模型 ERNIE 3.0 压缩而来。从 introduction_en.ipynb 可以看到该系列共开源五个不同规模的模型模型结构与 ERNIE 2.0 保持一致但中文效果更强模型结构参数量模型大小ERNIE 3.0-Base12-layer, 768-hidden, 12-heads117.9 M452.4 MBERNIE 3.0-Medium6-layer, 768-hidden, 12-heads75.4 M312.5 MBERNIE 3.0-Mini6-layer, 384-hidden, 12-heads26.9 M109.0 MBERNIE 3.0-Micro4-layer, 384-hidden, 12-heads23.4 M95.48 MBERNIE 3.0-Nano4-layer, 312-hidden, 12-heads17.9 M72.4 MB完整下载链接见 download_en.md本基准以体量适中的Medium75.4M 参数为对象评测其在三种典型中文任务上的推理性能并考察三种加速手段的组合效果FP32/FP16/INT8 精度切换与模型裁剪prune。2. 测试环境与方法论如何正确解读 QPS 数据原文档在给出任何数字之前先明确了严格的测试口径这也是所有性能数字可复现、可横向比较的前提2.1 软硬件环境项目配置计算卡NVIDIA T4、CUDA 11.2、CuDNN 8.2CPUIntel(R) Xeon(R) Gold 6271CPaddlePaddle 版本2.3PaddleNLP 版本2.3测试 CPU 性能时线程数固定设置为 12。2.2 QPS 的计算口径性能数据单位统一为QPSQueries Per Second每秒处理的样本数。计算方法为固定batch size 32记录测试运行总时间total_time计算QPS total_samples / total_time。也就是说表格中的性能数字都基于单批 32 个样本、连续跑满整个测试集的吞吐口径与 batch size 1 的纯时延口径不同。在做性能对比或容量规划时务必保持同样的 batch 设置否则数据不可比。2.3 精度指标定义三种任务使用各自的标准评估指标文本分类Text ClassificationAccuracy准确率序列标注Token Classification / NERF1-Score阅读理解Question AnsweringEMExact Match完全匹配率。2.4 测试数据集对应三个任务数据集选用 CLUE 系列中文数据集CLUE TNEWS新闻文本分类MSRA_NER中文命名实体识别序列标注CLUE CMRC2018中文机器阅读理解。需要指出的是原文档表格中 TNEWS 的精度数值如 FP32 基线 57.45与 introduction_en.ipynb 中 CLUE 验证集评测口径下的 TNEWS 得分58.26 附近存在差异原因在于本基准使用的是下游任务微调后的推理评测且精度数据同时受模型、任务适配与测试集划分影响读者应以本基准文档表内数值为准。3. CPU 性能基准INT8 与裁剪带来的吞吐提升在 CPU12 线程环境下性能与精度数据如下模型配置TNEWS 性能TNEWS 精度MSRA_NER 性能MSRA_NER 精度CMRC2018 性能CMRC2018 精度ERNIE 3.0-Medium FP32311.95 (1.0x)57.4590.91 (1.0x)93.0433.74 (1.0x)66.95ERNIE 3.0-Medium INT8600.35 (1.9x)56.57 (-0.88)141.00 (1.6x)92.64 (-0.40)56.51 (1.7x)66.23 (-0.72)ERNIE 3.0-Medium 裁剪 FP32408.65 (1.3x)57.31 (-0.14)122.13 (1.3x)93.27 (0.23)48.47 (1.4x)65.55 (-1.40)ERNIE 3.0-Medium 裁剪 INT8704.42 (2.3x)56.69 (-0.76)215.58 (2.4x)92.39 (-0.65)75.23 (2.2x)63.47 (-3.48)关键结论CPU仅做 INT8 量化TNEWS、MSRA_NER、CMRC2018 三个任务的加速比分别为 1.9x、1.6x、1.7x精度损失均在 1 个点以内。仅做裁剪FP32加速比 1.3x~1.4xMSRA_NER 的 F1 甚至小幅回升0.23说明裁剪在这类任务上几乎不损精度。裁剪 INT8 组合三个任务加速比达到2.2x~2.4x整体约 2.3 倍代价是精度损失有所放大CMRC2018 的 EM 下降 3.48 个点最明显。原文档明确指出经过相同压缩过程后三类任务分类、序列标注、阅读理解的加速比达到 2.3 左右。4. GPU 性能基准FP16 的显著红利与 3 倍加速在 T4 GPUCUDA 11.2 / CuDNN 8.2环境下性能与精度数据如下模型配置TNEWS 性能TNEWS 精度MSRA_NER 性能MSRA_NER 精度CMRC2018 性能CMRC2018 精度ERNIE 3.0-Medium FP321123.85 (1.0x)57.45366.75 (1.0x)93.04146.84 (1.0x)66.95ERNIE 3.0-Medium FP162672.41 (2.4x)57.45 (0.00)840.11 (2.3x)93.05 (0.01)303.43 (2.1x)66.95 (0.00)ERNIE 3.0-Medium INT83226.26 (2.9x)56.99 (-0.46)889.33 (2.4x)92.70 (-0.34)348.84 (2.4x)66.32 (-0.63)ERNIE 3.0-Medium 裁剪 FP321424.01 (1.3x)57.31 (-0.14)454.27 (1.2x)93.27 (0.23)183.77 (1.3x)65.92 (-1.03)ERNIE 3.0-Medium 裁剪 FP163577.62 (3.2x)57.27 (-0.18)1138.77 (3.1x)93.27 (0.23)445.71 (3.0x)65.89 (-1.06)ERNIE 3.0-Medium 裁剪 INT83635.48 (3.2x)57.26 (-0.19)1105.26 (3.0x)93.20 (0.16)444.27 (3.0x)66.17 (-0.78)关键结论GPUFP16 是免费的加速手段仅切换精度不改模型结构三任务加速 2.1x~2.4x而精度几乎零损失TNEWS 0.00、MSRA_NER 0.01、CMRC2018 0.00。对于 T4 这类支持 FP16 张量核心的 GPU这是性价比最高的优化选项。INT8 单独使用加速 2.4x~2.9x精度损失控制在 0.63 个点以内。裁剪 FP16 / 裁剪 INT8 组合三类任务加速比均达到3.0x~3.2x其中裁剪FP16 在 TNEWS 上达到 3577.62 QPS3.2x是表格中的峰值。原文档给出的总体结论是裁剪 量化后三类任务加速比均达 3 倍左右全任务平均精度损失可控制在 0.5 个点以内实际 0.46。值得注意的是GPU 上 FP16 组合3.2x与 INT8 组合3.2x的加速比基本持平但 FP16 的精度保持明显更好如 CMRC2018FP16 仅 -1.06INT8 为 -0.78TNEWSFP16 -0.18 vs INT8 -0.19因此在实际工程中若 GPU 支持 FP16裁剪 FP16 通常是比裁剪 INT8 更稳妥的组合。5. 数据背后的工程含义如何选择压缩策略综合 CPU 与 GPU 两张表可以归纳出清晰的决策规律场景推荐组合依据来自上表CPU 部署、对精度敏感INT8不裁剪加速 1.6x~1.9x精度损失 ≤ 0.88CPU 部署、追求极致吞吐裁剪 INT8加速约 2.3x但 CMRC2018 EM 损失 3.48GPU 部署、几乎零精度损失FP16加速 2.1x~2.4x精度损失 ≈ 0GPU 部署、追求 3 倍吞吐裁剪 FP16 或裁剪 INT8加速 3.0x~3.2x平均损失 0.46核心洞察裁剪主要贡献模型体积与访存开销的下降量化INT8主要贡献算子计算的加速两者叠加后收益接近相乘CPU 上 1.3x~1.4x 与 1.6x~1.9x 组合得到 2.2x~2.4xGPU 上 1.3x 与 2.4x 组合得到 3.0x~3.2x。而 FP16 由于 T4 张量核心的硬件支持单独即可获得接近 INT8 的加速收益且无需额外的量化校准流程。6. 复现与部署用 FastDeploy 落地同类推理任务本基准的性能测试在 PaddleNLP 的 ERNIE 3.0 模型库中完成PaddlePaddle 2.3 PaddleNLP 2.3。若希望在真实业务中落地上述推理加速仓库 fastdeploy_en.md 提供了基于FastDeploy的高性能部署路径其核心步骤与参数如下。6.1 安装与运行# 1. 安装 FastDeploy GPU 版 SDK示例为 nightly 版本源 pip install fastdeploy-gpu-python0.0.0 -f https://www.paddlepaddle.org.cn/whl/fastdeploy_nightly_build.html # 2. 下载微调后的 ERNIE 3.0-Medium 模型以 AFQMC 语义匹配任务为例 wget https://bj.bcebos.com/fastdeploy/models/ernie-3.0/ernie-3.0-medium-zh-afqmc.tgz tar xvfz ernie-3.0-medium-zh-afqmc.tgz # 3. CPU 部署 python seq_cls_infer.py --device cpu --model_dir ernie-3.0-medium-zh-afqmc # 4. GPU 部署 python seq_cls_infer.py --device gpu --model_dir ernie-3.0-medium-zh-afqmc运行完成后会输出每条样本的预测结果例如[INFO] fastdeploy/runtime.cc(469)::Init Runtime initialized with Backend::ORT in Device::CPU. Batch id:0, example id:0, sentence1:花呗收款额度限制, sentence2:收钱码对花呗支付的金额有限制吗, label:1, similarity:0.5819 Batch id:1, example id:1, sentence1:花呗支持高铁票支付吗, sentence2:为什么友付宝不支持花呗付款, label:0, similarity:0.99796.2 推理参数说明seq_cls_infer.py支持以下命令行参数其中--use_fp16与--backend的组合正是复现上文 GPU FP16 收益的关键参数说明--model_dir指定部署模型所在目录--batch_size最大可测 batch size默认 1--max_length最大序列长度默认 128--device运行设备可选[cpu, gpu]默认cpu--backend推理后端可选[onnx_runtime, paddle, openvino, tensorrt, paddle_tensorrt]默认onnx_runtime--use_fp16是否启用 FP16 推理仅在使用tensorrt或paddle_tensorrt后端时可开启默认 False--use_fast是否使用 FastTokenizer 加速分词阶段默认 TrueFastDeploy 支持 X86 CPU、NVIDIA GPU、ARM CPU、XPU、NPU、IPU 等多种硬件并可通过一行代码切换推理后端。若要在部署环境中复现本基准的量级加速实践要点是GPU 场景开启--use_fp16并配合 TensorRT 后端对应表格中 FP16 列的 2.1x~2.4x 收益CPU 场景则选择 INT8 量化模型配合多线程推理。7. 局限与注意事项本基准数据来自 PaddlePaddle 2.3 / PaddleNLP 2.3 与 T4 单卡环境不同框架版本、不同 GPU 型号如 A100、昇腾等与不同 batch size 下加速比与 QPS 绝对值都会变化应将其视为相对收益的参考而非绝对性能承诺。CPU 表格与 GPU 表格中的精度基线57.45 / 93.04 / 66.95对应的是同一组微调后模型因此跨表格的精度列可直接对照。裁剪 INT8 在 CMRC2018 上的 EM 损失CPU 3.48 个点是表中最大的精度代价对精度敏感的阅读理解类业务需谨慎选择该组合必要时可回退为裁剪 FP16。有关五档模型的完整中文评测CLUE 验证集 10 任务平均分与精度-时延图可进一步参考 introduction_en.ipynb中文版基准数据见 benchmark_cn.md。总结ERNIE 3.0-Medium 通过裁剪 量化可在 CPU 上获得约 2.3 倍、GPU 上约 3 倍的推理吞吐提升同时把平均精度损失控制在 0.5 个点以内而单纯切换 FP16 即可在 GPU 上以近乎零精度损失获得 2 倍以上的加速是成本最低、最值得优先采用的部署优化手段。赞分享人工智能深度学习计算机视觉NLP语音【免费下载链接】modelsOfficially maintained, supported by PaddlePaddle, including CV, NLP, Speech, Rec, TS, big models and so on.项目地址https://gitcode.com/gh_mirrors/mo/models点击查看免费下载相关推荐ERNIE 3.0 轻量级模型推理 Benchmark 全解析CPU/GPU 下的 FP32、FP16、INT8 量化与模型裁剪加速效果ERNIE 3.0 轻量级模型推理 Benchmark 全解析CPU/GPU 下的 FP32、FP16、INT8 量化与模型裁剪加速效果 本文基于 Paddl人工智能深度学习计算机视觉NLP语音FasterTransformer 中的 Vision TransformerViT推理实战从 FP32/FP16 到 INT8 量化加速FasterTransformer 中的 Vision TransformerViT推理实战从 FP32/FP16 到 INT8 量化加速 本文面向需要在推理引擎算子库大模型PaddleDetection 推理 Benchmark 实战指南环境搭建、测试方法、FP32/FP16 与 TensorRT 加速性能全解析PaddleDetection 推理 Benchmark 实战指南环境搭建、测试方法、FP32/FP16 与 TensorRT 加速性能全解析 本篇技术指南以人工智能深度学习计算机视觉上一篇GetQzonehistory一键备份你的QQ空间记忆时光机下一篇QQ空间历史说说备份指南GetQzonehistory让数字记忆永久留存创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表