比赛链接:https://aistudio.baidu.com/aistudio/competition/detail/674/0/task-definition
赛题背景
近年来基于Transformer模型结构的预训练语言模型技术快速发展,并在NLP领域取得了巨大成功。百度搜索引擎依托与深厚的AI技术积累,搭建了超大规模的模型推理异构加速集群,通过落地Ernie文心模型,为用户带来了显著的搜索体验提升。而在百度搜索Ernie模型的工业化部署实践中,针对复杂Ernie模型结构的高性能推理对于保障亿万用户流畅的搜索体验、控制算力成本开销至关重要。 在业界针对GPU进行复杂模型的异构推理加速也是一个火热的研究话题,多种优秀的技术方案不断涌现。其中既有百度推出灵活易用的PaddlePaddle深度学习全流程工具,也有NVIDIA推出的针对深度学习模型推理极致优化的TensorRT框架。
本赛题会提供一个典型的搜索场景的ERNIE模型,希望参赛者通过各种优化技术,挑战最优的模型推理性能。
任务概述
模型推理优化任务采用相对开放的设定,可自行选用各种模型推理框架,挖掘GPU加速硬件特性,通过异构算子优化、模型量化压缩等各种优化手段,追求最优的模型推理性能(推荐深入应用NVIDIA TensorRT优化技术)。参赛队员请用飞桨AI Studio配置的NVIDIA A100完成参赛作品。
排名计算
初步排名计算: 1)所有参赛选手提交比赛方案与代码至AI Studio,在满足模型效果标准的前提下,由AI Studio评测系统自动评选模型性能指标前N名 2)以标准评测机器上的测试集推理运行时间进行排序。如果运行时间非常接近,在测量误差内,则视为成绩相同。 3)对于AI Studio打榜成绩相同的选手,按提交时间早晚排序。 终选排名计算:评审人员基于创新性打分,结合初步排名技术指标最终确定获奖队伍。
任务定义
给出已经训练好的模型文件,模型结构以ERNIE结构为主,提供PaddlePaddle和ONNX两种模型格式;同时给定一批搜索线上模型推理测试数据,包括用户的实际query、候选文档等,所有数据均已ID化。针对测试集中的数据,要求参评系统完成从测试数据读入、模型加载、模型推理、结果输出的全流程。
数据集
A榜测试集为公开数据集,包含带label数据以及无label数据,总计数千条样本 B榜测试集为非公开数据集,包含数万条样本
数据样例 模型输入:每条样本数据一行,不同域数据和模型多个输入之间均以";“分隔,模型输入的shape维度和数据ID之间用”:“分隔,具体的数据ID以” "分隔。 样例如下:
代码语言:javascript复制qid:1;label:3;1 128 1:1 12 13 1557 40574 40997 22553 2 1571 40574 1569 42562 1557 40997 22553 1886 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;1 128 1:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;1 128 1:0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;1 128 1:1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
样本数据以";“分割成多列,其中第一列为样本标识qid,第二列为label(无label数据此处为”-“),自第三列以后表示模型的多个输入。在模型的多个输入均以”:"分割成tensor的shape信息和数值value。如示例数据中,模型的第一个输入shape为[1,128,1],第一个输入的数据是[1 12 13 1557 40574 40997…],第二个输入的维度是[1,128,1],数据是[0 1 2 3 4 5…],模型的多个输入依次类推。 对于模型输入的shape信息[1,128,1]表示该样本batch_size=1,输入序列长度为128;如[10,70,1]则表示该样本batch_size=10,输入序列长度为70;选手需注意带label的样本数据输入序列长度均padding到128,不带label数据均padding到了batch内的最长序列长度。 本赛题中所有样本数据batch_size<=10,样本输入序列长度<=128,标识几个特殊ID,0=[PAD],1=[CLS],2=[SEP],3=[MASK],4=[UNK]
评价指标
评估模型精度指标: 1)模型效果:模型效果以效果指标评估损失3%以内,可通过脚本local_evaluate.py根据带label测试数据评估模型的效果指标 2)模型性能:测试集完成推理的耗时评估 考虑真实应用场景,本赛题不可在batch维度上进行单样本拆分或多样本合并推理