kubeedge sig ai发布首个分布式协同ai benchmark调研-4008云顶国际网站

云容器大未来 发表于 2022/10/17 11:11:31 2022/10/17
【摘要】 人工智能技术已经在我们生活中的方方面面为我们提供服务,尤其是在图像、视频、语音、推荐系统等方面带来了突破性成果。ai benchmark旨在衡量ai模型的性能和效能。kubeedge sig ai成员张扬和张子阳博士就ai benchmark的困难与挑战,以及新兴的边缘计算领域的分布式协同ai benchmark发展现状进行了分析总结。

kubeedge sig  ai 成员:张扬,张子阳

人工智能技术已经在我们生活中的方方面面为我们提供服务,尤其是在图像、视频、语音、推荐系统等方面带来了突破性成果。ai benchmark旨在衡量ai模型的性能和效能。kubeedge sig ai成员张扬和张子阳博士就ai benchmark的困难与挑战,以及新兴的边缘计算领域的分布式协同ai benchmark发展现状进行了分析总结。

深度学习技术可以利用有限的数据逼近高维函数。但我们仍未掌握模型参数、系统配置对机器学习、深度学习算法的学习动态的影响。目前ai benchmark领域的困难与挑战总结如下:

1. 学习动态难解释深度学习技术一定程度上是一个高维非凸优化问题细微的变化会导致不同的优化路径严重依赖参数调整的经验

2. 成本高昂在我们开启一次训练之后我们必须完整的跑完整个训练过程完整训练一次gpt-3模型的成本约7500万人民币

3. 指标问题时间质量(time to quality, ttq)指标上时间质量严重依赖超参数的调整同时需要解耦架构系统和算法评估模块;在每秒浮点运算次数(floating-point operations per second, flops)上,有半精度浮点、单精度浮点、双精度浮点、多精度浮点、混合浮点等浮点类型。

4. 需求冲突:主要问题为1.组件基准(component benchmarks)无法在模拟器上运行,2.基准(micro benchmarks)可负担但不能模拟学习动态

5. 有效期问题人工智能模型的演变和变化往往会超过人工智能基准

6. 可拓展性问题:ai问题的规模是固定的,不可拓展

7. 可重复性问题基准测试要求测试是可复现的,神经网络的随机性会影响基准测试的复现性。神经网络中的随机性包括:随机种子、模型初始化、数据增强、数据shuffle、dropout等等。


随着边侧算力逐步强化,时代也正在见证边缘ai往分布式协同ai的持续演变。分布式协同ai技术是指基于边缘设备、边缘服务器、云服务器利用多节点分布式乃至多节点协同方式实现人工智能系统的技术。除了以上问题外,如果考虑到分布式协同ai,还存在如边侧算力不足、云边网络不稳定、数据孤岛等实际的约束和限制问题。


本章节首先总结当前学界与业界的分布式协同ai benchmark,接下来对各个benchmark展开简单描述。

发布者

名称

领域

负载类型

指标

现状

bench council

(中科院计算所)



aiot bench

边端推理

图像分类

每秒算力、吞吐量

不涉及云端,范式覆盖不足

ai bench

云端训练

目标检测、图像分类、图像生成、推荐系统、语音识别、机器翻译、3d目标重建

时间、算力、功率、性能

不涉及边侧,不涉及系统,范式覆盖不足

edge ai bench

边端推理

图像分类、目标检测人脸/语音识别、re-id

延迟、吞吐量、能耗、准确率

不涉及云端,范式覆盖不足

中国人工智能产业发展联盟(aiia)

aiia dnn benchmark

边/云推理

图像分类、目标检测、语义分割、超分辨率、机器翻译、语音识别、推荐系统

吞吐量、延迟、功耗比、每瓦算力比、精度损失比、芯片利用率、单价算力比

覆盖模型不涉及系统,

范式覆盖不足,

测评样本较少

百度

deepbench

云端训练

边端推理

1. 通用负载:gemm, conv, rnn

2. 应用负载:机器翻译、语音识别、计算机视觉、语言建模

延迟,每秒算力

社区不活跃,

测试样本老旧,范式覆盖不足

nvidia、harvard、stanford、google

mlperf

云端训练

边端推理

图像分类、目标检测、图像分割、语音识别、机器翻译、强化学习、推荐系统

吞吐量、达到一定精度所需要的时间

不涉及边侧性能测量,

范式覆盖不足

nvidia

jetson benchmarks

边端推理

目标检测、姿态估计、语义分割、nlp

吞吐量

不涉及云端, 范式覆盖不足

清华大学、鹏城实验室、中科院计算所

aiperf

云端训练边侧推理

图像分类

每秒算力、gpu/内存利用率

聚焦大规模ai集群,不涉及边侧,范式覆盖不足

kubeedge

ianvs

分布式协同推理、训练

1. 场景:目标检测、语义分割等

2. 范式:单任务学习、增量学习、多边协同推理、终身学习等

准确率、吞吐量等

聚焦在云边协同和分布式协同范式,孤立的端侧或边侧或云侧更多作为基线。分布式协同相关范式覆盖广,开源社区活跃。


aiot bench

bench council发布的aiot bench是一个基准套件,aiotbench专注于评估移动和嵌入式设备的推理能力,包含三个典型的重量级网络:resnet50、inceptionv3、densenet121以及三个轻量级网络:squeezenet、mobilenetv2、mnasnet。每个模型都由三个流行的框架实现:tensorflow lite、caffe2、pytorch mobile。对于tensorflow lite中的每个模型,还提供了三个量化版本:动态范围量化(dynamic range quantization)、全整数量化(full integer quantization)、float16量化(float16 quantization)。

1 aiotbench中使用模型的flops、parameters和准确率

在框架的选择上,aiotbench支持了三个流行和具有代表性的框架:tensorflow lite、caffe2、pytorch mobile。

最后,在指标上,aiotbench通过vips(valid images per second, 每秒有效图像)来反映得分。

2 aiotbench中vips计算

目前,bench council已经发布了android版本的aiotbench,它包含四个模块:

1. 配置模块用户可以配置模型文件的路径和数据集的路径。预处理参数由文件配置。我们在默认路径中提供了数据集、准备的模型和相应的预处理配置。添加新型号很方便。用户只需要i)准备模型文件并放入模型路径,ii)在配置文件中添加该模型的预处理设置。

2. 预处理模块读取和预处理图像。

3. 预测模块由于不同的框架有不同的推理api,aiotbench抽象了两个接口,并为三个框架实现它们:tensorflow lite、caffe2、pytorch mobile。prepare()接口负责加载和初始化模型,infer()接口负责执行模型推理当用户需要添加新的框架时,只需要根据新框架实现对应的两个api接口即可

4. 评分模块记录每次测试的准确性和推断时间,并计算最终的ai基准测试分数。


ai bench

ai bench是bench council在2018年提出的适用于数据中心、hpc、边缘和 aiot 的综合 ai 基准测试套件,提出了一种场景提取的基准测试方法论和企业级ai基准测试框架和套件。测试数据源有公共开源数据集和经过保密脱敏处理的合作机构的数据集。


ai bench框架分为数据输入、ai问题域、离线训练、在线推理四个部分。

数据输入(data input)模块负责将数据输入其他模块,支持结构化、半机构化、非结构化数据,例如表格、图形、文本、图像、音频、视频等等。同时,数据输入模块集成了各种开源数据存储系统,支持大规模数据生成和部署。

ai问题域ai bench确定了最重要的ai问题领域针对这些领域的ai算法的具体实现作为组件基准(component benchmarks)。并对组件基准中最密集的计算单元实现为一组微基准(micro benchmarks)组件基准和微基准可以自由组合每个基准也都可以独立运行

离线训练(offline training)和在线推理(online inference)模块构建端到端(end-to-end)的应用程序基准。首先,离线训练模块通过指定所需的基准id、输入数据和批量大小等执行参数,从ai问题域模块中选择一个或多个组件基准。然后离线训练模块训练一个模型并将训练好的模型提供给在线推理模块。在线推理模块将训练好的模型加载到推理服务中,与关键路径中的其他非ai模块协作,构建端到端应用程序基准。

为了在大规模集群上轻松部署,框架提供了部署工具,提供了ansible和kuberneres的两个自动化部署模板。ansible主要提供的是在物理机或者虚拟机上的1 n复制模式,kubernetes需要提前构件好集群,在master节点上通过配置文件将配置下发至各个节点从而完成部署。


edge ai bench

edge ai bench是一个基于场景的基准套件,是ai bench场景基准的一部分,设置了4个典型的边缘ai场景:自动驾驶、icu患者监视器、智能家居、智能家居。edge ai bench提供了一个端到端的应用程序基准框架,包括训练、验证和推理阶段。

edge ai bench涵盖的场景、模型、数据集情况如下表所示。

名称

场景

模型

数据集

框架

车道检测

自动驾驶

lanenet

tusimple, culane

pytorch/caffe

交通标志检测

自动驾驶

capsule network

german traffic sign recognition

keras

死亡预测

icu患者监控

lstm

mimic-iii

tensorflow/keras

呼吸困难预测

icu患者监控

lstm

mimic-iii

tensorflow/keras

表型分类

icu患者监控

lstm

mimic-iii

tensorflow/keras

行人重识别

监控摄像头

dg-net

market-1501

pytorch

动作识别

监控摄像头

resnet18

ucf101

pytorch/caffe

人脸识别

智能家居

facenet/spherenet

lfw/casia-webface

tensorflow/caffe

语音识别

智能家居

deepspeech2

librispeech

tensorflow


aiia dnn benchmark

aiia dnn benchmark项目由中国人工智能产业发展联盟计算架构与芯片推进组发起。aiia dnn benchmark项目是用于测试具有机器学习处理能力的加速器或处理器硬件、软件以及服务的训练和推理性能的开源基准平台。它能帮助人工智能研究人员采用通用标准来衡量用于训练或推理任务的人工智能硬件、软件的最佳性能。旨在客观反映当前以提升深度学习处理能力的 ai 加速器现状,为芯片企业提供第三方评测结果,帮助产品市场宣传;同时为应用企业提供选型参考,帮助产品找到合适其应用场景的芯片。


aiia dnn benchmark系统架构如下:

aiia dnn benchmark依据行业应用,区分垂直应用场景对深度神经网络加速器/处理器展开基于真实应用场景的基准测试工作。

aiia dnn benchmark评测场景与指标如下:

场景

模型

测试指标

数据集

object classification

resnet50

resnet152

fps / top1 / top5 / latency / throughput /

power / (frame/sec/w)

imagenet

object detection

ssd

fps / map / latency / throughput / power /

(frame/sec/w)

pascal-voc

image segmentation

tbd

tbd

tbd

image super resolution

tbd

tbd

tbd

recommender systems

ncf

(samples/sec) / topn / coverage / latency / throughpu

movielens

machine translation

bert-base

bert-large

(sentences/sec) / bleu / latency / throughput / power / (sentences/sec/w)

wikipedia

speech recognition

tbd

tbd

tbd


deepbench

deepbench 的主要目的是在不同硬件平台上对深度学习很重要的操作进行基准测试。尽管深度学习背后的基本计算很容易理解,但它们在实践中的使用方式却出奇的多样化。例如,矩阵乘法可能是计算受限的、带宽受限的或占用受限的,这取决于被相乘的矩阵的大小和内核实现。由于每个深度学习模型都使用这些具有不同参数的操作,因此针对深度学习的硬件和软件的优化空间很大且未指定。

deepbench直接使用神经网络库(cudnn, mkl)对不同硬件上基本操作的性能进行基准测试。它不适用于为应用程序构建的深度学习框架或深度学习模型。


deepbench 由一组基本操作(密集矩阵乘法gemm、卷积conv)以及一些循环神经网络rnn类型组成。deepbench的测试包括七个硬件平台的训练结果,nvidia 的 titanx、m40、titanx pascal、titanxp、1080 ti、p100 和英特尔的 knights landing。推理结果包括三个服务器平台,nvidia 的 titanx pascal、titanxp 和 1080 ti。三款移动设备 iphone 6 和 7、raspberry pi 3 的推理结果也包括在内。

deepbench提供多种芯片的测试方法,共有以下5种类型:

1. nvidia benchmarks指定mpi_pathcuda_pathcudnn_pathnccl_pathgpu数量精度类型,通过编译后,可以运行基准测试

2. baidu benchmarks需指定mpi_pathcuda_pathbaidu_allreduce_pathgpu数量等参数之后使用mpirun运行baidu all-reduce基准测试

3. intel benchmarks需要指定intel工具icc、mkl、mpi路径,可以进行gemm、conv、all-reduce等基准测试。

4. arm benchmarks:需要在64位arm v8处理器上编译和运行arm benchmarks可以进行gemmconv稀疏gemm基准测试

5. amd benchmarks需要支持rocm的平台、rocblasmiopen等组件可以进行convrnngemm基准测试


mlperf

mlperf是一个由来自学术界、研究实验室和行业的人工智能领导者组成的联盟。

mlperf的训练测试由八个不同的工作负载组成,涵盖了各种各样的用例,包括视觉、语言、推荐和强化学习。

训练阶段项目

模型

数据集

图像分类

resnet v1.5

imagenet

物体检测(轻量级)

ssd

coco 2017

物体检测(重量级)

mask r-cnn

coco 2014

医学图像分割

unet-3d

kits1

语音自动识别

rnn-t

librispeech

自然语言处理

bert

wikipedia 2020/01/01

推荐系统

dlrm

criteo 1 tb

强化学习

mini go


mlperf推理测试七种不同神经网络的七个不同用例。其中三个用例用于计算机视觉,一个用于推荐系统,两个用于自然语言处理,一个用于医学成像。

推理阶段项目

模型

数据集

图像分类

resnet v1.5

imagenet

物体检测(轻量级)

ssd-mobilenet-v1ss

coco 2017

物体检测(重量级)

mask r-cnn, 1.44 mp

coco 2014

医学图像分割

unet-3d

brats 2019

语音自动识别

rnn-t

librispeech

自然语言处理

bert

squad v.1.1

推荐系统

dlrm

criteo 1 tb


jetson benchmarks

jetson benchmarks是通过高性能推理将各种流行的dnn模型和ml框架部署到边缘侧jetson设备中,以实时分类和对象检测、姿势估计、语义分割和自然语言处理(nlp)等任务作为工作负载,检测边缘侧jetson设备性能的基准测试工具。

针对各类jetson设备,jetson benchmarks的脚本会自动运行如下配置的基准测试,并得到测试结果(fps)

names : input image resolution

inception v4 : 299x299

resnet-50 : 224x224

openpose : 256x456

vgg-19 : 224x224

yolo-v3 : 608x608

super resolution : 481x321


aiperf

aiperf benchmark由鹏城实验室、清华大学等团队联合提出。aiperf benchmark基于微软nni开源框架,以自动化机器学习(automl)为负载,使用network morphism进行网络结构搜索和tpe进行超参搜索。

aiperf官方提供四种数据集: flowers、cifar-10、mnist、imagenet-2012 前三个数据集数据量小,直接调用相关脚本自动会完成下载、转换(tfrecord格式)的过程。

aiperf为了保证基准测试结果有效,要求测试需要满足如下条件:

1. 测试运行时间应不少于1小时;

2. 测试的计算精度不低于fp-16;

3. 测试完成时所取得的最高正确率应大于70%;

aiperf的工作流如下:

1. 用户通过ssh登陆主节点,收集集群内replica nodes的信息并创建slurm配置脚本

2. 主节点通过slurm将工作负载分派到对应于请求和可用资源的replica nodes中,分发的过程是并行且异步的

3. 各个replica nodes接收工作负载并执行架构搜索和模型训练

4. replica nodes上的cpu根据当前历史模型列表搜索新架构,其中包含详细的模型信息和测试数据集的准确性,然后将候选架构存储在缓冲区(如nfs)中以供后续训练

5. replica nodes上的ai加速器加载候选架构和数据集,利用数据并行性和hpo一起训练,然后将结果存储在历史模型列表中

6. 一旦满足条件(如达到用户定义的时间),运行终止,根据记录的指标计算最终结果后得出基准测试报告

3aiperf工作流示意图


kubeedge-ianvs

ianvs是 sig ai孵化的开源分布式协同ai基准测试套件帮助算法开发者快速测试分布式协同ai算法性能,促进更高效更有效的开发。借助单机就可以完成分布式协同ai前期研发工作。项目地址:

ianvs项目包括如下内容:

基于典型的分布式协同ai范式和应用,提供跨设备、边缘节点、云节点的端到端基准测试套件。

  • 测试环境管理工具:在测试环境(算法、系统配置)中支持crud操作等
  • test cases管理工具:包括范式模板、仿真测试工具、基于超参数的辅助工具等
  • 基准演示工具:生成排行榜和测试报告等

与其他组织和社区合作,例如在kubeedge sig ai中,建立全面的基准并开发相应的应用,包括但不限于如下内容:

  • 数据集收集、重组和发布
  • 形式化规范
  • 举办竞赛获编码活动
  • 为商业用途维护4008云顶国际网站的解决方案排行榜或认证

ianvs的目标用户包括分布式协同ai算法开发者和终端用户。算法开发者可以借助ianvs高效地构建和发布分布式协同ai4008云顶国际网站的解决方案;终端用户则可以借助ianvs快速分析比较各分布式协同ai方案的效能。

1、 针对业务数据集难以获取,数据采集与处理成本高的痛点ianvs提供丰富ai生态,做到开箱即用。ianvs开源数据集与5 配套算法,覆盖预处理、预训练、训练、推理、后处理全流程,零改造开箱即用。

2、 针对封闭测试环境难以跟上各类新业务孵化的痛点,ianvs提供可扩展开放工具链测试环境管理实现自定义动态配置测试数据集、测试指标,告别封闭守旧的测试环境。

3、 针对全场景多范式测试成本高的痛点,ianvs提供全场景灵活切换ianvs测试用例管理统一不同场景及其ai算法架构与接口,能够用一套工具同时兼容多种ai范式。

4、 针对个性化场景的测试用例准备繁琐的痛点,ianvs提供低代码生成测试用例。ianvs测试用例管理基于网格搜索等辅助生成测试用例,比如一个配置文件即可实现多个超参测试,降低超参搜索时的繁琐重复编程。

ianvs同步发布一个新的工业质检数据集pcb-aoi。pcb-aoi 数据集是首个面向印刷电路板aoi焊点表面缺陷的开源数据集,是开源分布式协同 ai 基准测试项目 kubeedge-ianvs 的一部分。工作组将pcb-aoi 公共数据集同时也放在 kaggle和云服务上方便开发者下载。

pcb-aoi数据集由kubeedge sig ai 来自中国电信和瑞斯康达的成员发布。在这个数据集中,收集了 230 多个板,图像数量增加到 1200 多个。具体来说,数据集包括两部分,即训练集和测试集。训练集包括 173 个板,而测试集包括 60 个板。也就是说,就 pcb 板而言,train-test 比率约为 3:1。进行了数据增强,将图像方面的训练测试比率提高到 1211:60(约 20:1)。 train_data 和 test_data 的两个目录都包含索引文件,用于关联原始图像和注释标签。

ianvs只需一台机器即可运行架构图如上图所示,关键组件包括:

testenvironmentmanager:为全局使用服务的测试环境的crud

testcasecontroller:管理控制各个test case运行时的行为,比如生成和删除实例

  • generationassistant:根据一定的规则或约束,例如参数的范围,帮助用户生成测试用例
  • simulationcontroller:控制分布式协同ai的仿真过程,包括仿真容器实例的生成和删除。note:在v0.5之前的早期版本不包括仿真工具。

storymanager:测试用例的输出管理和展示,包括排行榜和测试报告生成


kubeedge-ianvs项目规划路标如下图:

也欢迎关注ianvs项目,持续获得第一手独家公开数据集与完善基准测试配套。社区也持续募集在ianvs项目上的4008云顶国际集团的合作伙伴,共同孵化开源项目、研究报告及行业标准等。开源项目github地址:


参考文献

aiot bench

ai bench

edge ai bench

aiia dnn benchmark

deepbench

mlperf

jetson benchmarks

aiperf

kubeedge-ianvs


添加小助手微信putong3333进入社区交流群

【4008云顶国际集团的版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。