命题一
支持动态图的AI编译器设计
动态的特征在当前的深度学习网络,特别是自然语言处理领域里,有许多体现,比如:动态的控制流,动态的算子参数及动态的数据张量尺寸等。而现有的神经网络编译器,进行编译优化时往往只能针对静态的模型。如何处理动态模型的编译优化,是当前AI编译器适应当前AI模型发展的重要需求,也是面临的重大挑战。
在深度学习编译器领域,MLIR(Multi-Level Intermediate Representation)是近年来备受关注的通用AI编译器框架,已有许多影响力较大的基于MLIR的开源项目,例如torch-mlir、circt等。MLIR定义了多级中间表示的架构,包含Dialect,Operation,Attribute,Type,Context等组成部分,同时提供一些通用的程序形成标准库,便于用户基于此架构进行编译器开发,尤其是AI编译器。
本赛题主要要求参赛者基于MLIR开发一款支持动态图的AI编译器,并设计一款支持动态图的AI加速器,采用该编译器将一些动态图网络编译到自行设计的加速器上运行。
本赛题将分为两个阶段,初赛和决赛。
2.1 初赛
初赛主要要求参赛者基于MLIR开发实现支持动态图的AI编译器,前端框架为Pytorch;并设计一款支持动态图的AI加速器,加速器支持FP32类型的计算(不考虑量化);采用该编译器完成动态图网络在加速器上的前向推理,功能正确。
开发实现:
1)基于MLIR实现支持动态图表达的方言(中间层)。
2)将Pytorch框架上的动态图模型解析到中间层。
3)利用MLIR/LLVM生态,验证转换后的中间层代码的正确性。
方案及报告:
针对以上3条开发内容,提供完整设计报告,验证及测试报告(以上可以采用已有的开源项目代码,但需要对所用项目深入理解,了解其基本实现原理和代码结构,并在报告中体现)。参赛选手可采用附录中的任意一个或多个模型作为示例以验证编译器的正确性。参赛选手可以在完成上述3项的基础上完成以下附加项。如果参赛者在初赛中完成不同的附加项,那么将会在决赛中对参赛选手提出不同的要求,具体要求见下一小节。
1)(附加,加分项)设计一款指令驱动的支持动态图的AI加速器,该加速器不要求完成电路设计,可以使用软件搭建行为级的仿真模型。
2)(附加,加分项)完成动态图到加速器指令的编译过程,即将MLIR表示的动态图的中间层一步步下降到加速器的指令序列,并将指令序列在加速器仿真模型上的运行结果和框架上的结果比较,验证编译器和加速器设计的正确性。
2.2 决赛
决赛赛题要求参赛选手将编译器进行算子扩展以支持更多的网络模型。决赛时,将提供给参赛选手若干动态图网络模型,选手需要对编译器进行算子扩展来支持这些网络。决赛的具体要求取决于参赛选手初赛时的附加项完成情况,详见下表:
|
初赛附加项 完成情况 |
决赛要求 |
|
未完成任何附加项 |
将提供的若干动态图网络模型下降到中间层,并利用MLIR/LLVM生态验证正确性 |
|
只完成了附加项1 |
1)将提供的若干动态图网络模型下降到中间层,并利用MLIR/LLVM生态验证正确性 2)将提供的若干动态图算子通过手工编译得到指令,并利用仿真模型验证正确性 |
|
完成全部附加项 |
将提供的若干动态图网络模型通过编译器以及运行时部署到仿真模型上运行,并验证正确性 |
2.3 输出要求
初赛
1)书面报告。
2) 软件工程:
支持动态图的AI编译器;
支持动态图的AI加速器行为级仿真模型;
决赛
1) 答辩PPT。
2) 软件工程:
支持所给动态图网络模型的AI编译器
支持所给动态图网络模型的AI加速器行为级仿真模型
2.4 附录
1)MLIR代码链接:https://github.com/llvm/llvm-project/tree/main/mlir
2)一些动态图网络模型下载链接:
drl4vrp:
https://github.com/mveres01/pytorch-drl4vrp
SCNN:
https://github.com/Turoad/lanedet/blob/main/lanedet/models/aggregators/scnn.py
DETR:
https://github.com/lyuwenyu/RT-DETR
SuperGlue:
https://github.com/magicleap/SuperGluePretrainedNetwork
初赛阶段的报告模板至少应该包括以下部分:
1)团队介绍(团队成员与职责分工)
2)整体设计方案,包括设计理念与思路
3)编译器的整体结构,以及各模块的设计介绍
4)加速器的整体结构,以及各模块的设计介绍
5)编译器的可扩展性设计的思路和方法
6)实现过程中的工作
7)最终模型运行的结果
初赛评分细则如下:
|
内容 |
标准 |
分数 |
|
基于MLIR实现支持动态图表达的方言(中间层) |
算子个数;对动态图的支持 |
20 |
|
实现Pytorch上动态图的解析 |
功能正确 |
20 |
|
利用MLIR/LLVM生态验证中间层的正确性 |
功能正确 |
20 |
|
实现支持动态图的AI加速器行为级仿真模型 |
功能正确 |
30 |
|
实现动态图的编译和运行过程 |
优化效果;优化方法;结果分析 |
30 |
|
报告 |
完整性;简洁准确、逻辑清晰;创新性 |
20 |
|
合计 |
140 |
|
5.1 参赛队伍要求
每支参赛队伍控制在5人以内。
5.2 赛事流程
培训事宜将根据后期具体情况另行通知。
|
阶段 |
内容 |
|
初赛 |
根据本赛题要求完成并提交相应设计和书面报告 确定决赛队伍 |
|
培训 |
对进入决赛的队伍进行相应培训 |
|
决赛 |
统一上机决赛 |
|
答辩 |
决赛答辩,确定名次与奖项 |
注:具体安排以组委会通知为主。
命题二
基于定位数据模型的多通道
快速识别算法的设计与实现
近年来,电子围栏、移动支付等相关新需求拓展了用户识别服务的应用场景。相较于传统的NFC、二维码、人脸识别的方式,精确定位技术可以给用户带来更好的使用体验,实现真正的无感通过。基于此,本赛题以无感通过闸机通道为题,开展核心算法研究,并要求参赛者实现一套基于锚点与标签精确测距数据为基础的闸机自动开门程序。
基于标签与锚点间实时测距数据设计算法,对用户通过闸机的行为进行判定,确定开门时机,并要求使用C++语言开发程序实现算法。
赛方会向参赛者提供一个静态库,包含初始化,获取围栏中所有标签与锚点距离,控制闸机开门和生成计费凭证的四个函数,其中获得标签与锚点距离的函数可以根据调用时间实时更新标签与锚点距离。每组给定的数据包括多个标签分别到每个锚点的距离,参赛者基于该数据构建模型。
定位锚点可以放置在闸机前端(如下述章节示意图),参赛选手亦可自行改变锚点位置,但锚点须在闸机上。
2.1 单通道方案
单通道参考方案如上图所示,闸机通道宽度为60CM,通道长度为200CM,闸门在通道中间位置,单个闸机宽度20CM。
在单通道模型中,同时最多有5位携带标签的用户(假定每位用户携带一枚标签),闸门一次只能允许一位用户通过。
参赛者通过调用静态库中的距离函数获取用户与锚点之间的距离,并根据给定的距离数据建立模型,当用户靠近闸机前30-50CM时,参赛者需调用闸机开门函数模拟开启闸门动作,则本次过闸行为判定成功,否则即判定失败。
2.2 四通道方案
四通道参考方案如上图所示,闸机通道宽度为60CM,通道长度为200CM,闸门在通道中间位置,单个闸机宽度20CM。
在四通道模型中,同时最多有20位用户,每个闸门一次只能允许一位用户通过。
如前所述,当用户靠近闸机时准确开启闸门,则过闸行为判定成功,否则即判定失败。
2.3 算法实现
包括算法的逻辑描述与代码实现:
1. 逻辑描述:用户(标签)在特定时间点内(五分钟),距各锚点的距离,以250ms(频率)间隔不断的变化,前面一个用户没有走过闸门,后面一个用户不能调闸机开门函数;请设计一个算法通过处理拿到的定位数据(向接口获取),计算出用户是否在开闸机区域,如满足调开闸机函数开门,当用户通过闸门后进入计费区域时,根据用户信息调用生成计费凭证函数生成结果。
2. 位置数据说明:表示用户(标签)行进特征,每秒步行速度:1-1.5米,方向是不确定的,单通道范围为:闸机前方3*6米矩形区域内,多通道为:闸机前方5.4*6米矩形区域内;考生根据考方提供的数据定义准备代码调试阶段的数据,(详细参照数据定义附件),评审阶段的位置数据由考方提供。
3. 代码实现:使用C++编程语言,各个闸机可以每隔250ms独立调用给定的静态库接口获取闸机前方定位数据(获取数据有20ms开销),经过算法处理后,当用户距离闸机前30-50CM时,再调用给定的开门接口打开闸机,持续跟踪用户过闸轨迹,当用户进入计费区域时,根据用户信息调用生成计费凭证函数生成结果;当有多个用户同时在某个闸机前30-50cm区域内时,闸门不能打开;每个锚点上的代码独立模拟,且为单核运行模式。
该赛题总分100分,评分标准分为以下几部分,下面简述评分分制和评判标准。参赛队伍可参考前述要求实现算法。
|
项目 |
主要内容 |
分数 |
|
代码可读性 |
统一命名格式、代码单元易于理解、可重构 |
5 |
|
算法软件实现可行性 |
算法可行性分析,包含算法完成性、创新性、运算效率和负载 |
5 |
|
算法硬件实现可行性 |
基于单核实现算法、可应用于嵌入式硬件 |
10 |
|
程序复杂度 |
初赛(单通道进出,最多同时出现5人);复赛(四通道进出,最多同时出现20人) |
15 |
|
算法准确率 |
依据相同时间内通过闸门用户数判定,及出现错误判断的次数综合判断 |
20 |
|
报告
|
团队介绍、算法实现说明、心得体会 |
20 |
|
答辩 |
15 |
|
|
合计 |
100 |
|
4.1 参赛队伍要求
参赛团队人数要求控制在1-3人。
4.2 赛前培训/需求澄清
通过即时通信软件讲述该系统需求和赛题要求,澄清需求中的疑问和评分标准等。
4.3 初赛阶段
根据题目工作量组织团队,进行算法设计开发及实现,完成2.3章节的任务要求,基于算法进行软件实现,并应用于测试数据验证。评审委员根据提交的材料进行初审,决定答辩/决赛队伍。
4.4 决赛阶段/答辩
最终答辩:结合运行结果,对算法方案进行讲解和验证;讲解算法的设计思路和创新点。
注:具体安排以组委会通知为主。
文件链接:
https://pan.baidu.com/s/1bHbZDqaYWuIpjiIP9LuVOg?pwd=g8ia 提取码: g8ia
赛事联络平台
第六届复微杯赛事联络QQ群:794853590
群名:复微杯电子设计大赛4群
本群主要用于赛事通知,建议所有参赛者加群
“复微杯大学生电子设计大赛”公众号是“复微杯”指定唯一官方发布平台。
请长按二维码关注“复微杯”,第一时间获取大赛资讯。
“复旦微电子集团”B站号是“复微杯”指定唯一B站官方发布平台。
请各位及时关注,后续将在此平台进行赛题解析及指导。

