背景介绍
近年大数据以及人工智能的发展在推进城市安全、城市治理等现实民生问题的现实意义受到社会的广泛认可和期待。在Graphcore与升哲科技合作的应用中,我们将算法设计瞄准ESG,即Environmental(环境)、Social(社会),以及Governance(治理),对具体问题的处理则会覆盖气候变化、垃圾管控、动物福利、公民人身安全以及监控非法活动等方面。
在上述任务中,物体识别将会扮演不可缺少的核心算法角色。例如在非法渔钓检测中对非法人员的检测,流浪猫狗管制中对于智能摄像头范围内猫狗数量的计算等等,很多场景都需要以检测结果作为前置。
作为视觉算法中的重要一环,检测任务在深度学习时代也同样有着显著的发展。从R-CNN的发表开始,一系列的算法在任务细度,效率以及准确率上有了显著进步,而其中2015年推出的YOLO[1](You Only Look Once)在发布之初因其高效的特点获得了大批拥趸,并在后续发展中陆续快速迭代,成为了效率与准确两方面均衡的标杆,在庞大社区支持下开源了参数量不同的预训练模型,进一步为使用者在准确和效率的权衡中提供了选择,使其在商用中得到了较为广泛的成功。
采用Graphcore底层方案的灵活快速部署
在优秀深度学习算法的基础上,高效的硬件以及配套的软件优化在效率层面起到的作用甚至超过算法本身。Graphcore的IPU-M2000提供了260GB的Exchange Memory以及高达1 petaFlops的浮点算力[2],作为专业深度学习计算单元有着强大的硬件基础。
与此同时,作为IPU共同研发的底层SDK,Poplar[3]有着大量为IPU深度优化的算子。而基于其上的PopART(Poplar Advanced Run Time)以及XLA(Accelerated Linear Algebra)为开发者提供了对时下流行深度学习框架的便利接口。
图1. 围绕IPU的底层软件生态
ONNX(Open Neural Network Exchange)作为时下最流行的通用模型标准,可以快速使用在不同框架间得到的深度学习模型。在PopART的加持下,ONNX模型可以轻易在IPU上运行,因此特性,升哲智慧城市在检测任务以外的深度学习模型也可以在此框架下轻易展开。
端到端设计细节
除去模型推理,对于YOLOv3算法我们仍需要进行图片预处理以及对推理结果进行Non-Max Suppression[4]。在具体模型选择上经过对任务准确率要求的考量选择了YOLOv3,输入尺寸416x416,包含65M的参数量。
图2. 端到端YOLOv3检测任务流程
如图2中所示,YOLOv3的端到端任务将会包含所示5个主要阶段(其中蓝色框体为CPU计算单元,黄色框体为IPU计算单元):原始图片的获取,对原始图片进行预处理,将批量图片写入batch,模型推理以及对推理结果的后处理。
在整个端到端流程中,预处理和后处理为计算密集型任务,因此使用平行运算的方式提高效率。推理的部分使用batch size为4的YOLOv3模型。
实验
在具体实验中,基于IPU-M2000的测试平台在使用模拟数据的极限推理测试中(暨不考虑预处理后处理可能带来的瓶颈),达到了throughput 660每秒的表现。
在端到端的负载测试中,我们配合使用主频2.3hz的AMD EPYC 7742,使用1920 x 1080分辨率的JPEG格式图片,以模拟SENSORO智能摄像头的默认数值,使用Apache Benchmark作为工具发送十万次请求,在平均延迟250ms下得到QPS 450的吞吐量。
展望
在目前的实验结果中,我们取得了相当优秀的端到端YOLOv3推理成绩,在各类需求检测算法落地的场景中,可经济高效地为用户提供算力支持。后续的迭代中,我们也将会持续缩小端到端效率与IPU性能之间的差距。与此同时,部分耗时较多的部分也可以通过在Poplar中设计相应算子的方式,从而运用IPU的强大算力来提升整体效率。
参考
[1]https://arxiv.org/abs/1506.02640
[2]https://www.graphcore.ai/products/mk2/ipu-m2000-ipu-pod4
[3]https://www.graphcore.ai/products/poplar
[4]https://towardsdatascience.com/non-maximum-suppression-nms-93ce178e177c
获取更多Graphcore资讯,阅读深度技术文章,并与其他创新者们一起交流,请至中国官网graphcore.cn,以及关注Graphcore微信、微博和知乎创新社区。
Graphcore中国官网
Graphcore微信创新社区
Graphcore微博创新社区
Graphcore知乎创新社区
继续阅读
阅读原文