MegEngine (天元)是一个快速、可拓展、易于使用且支持自动求导的开源深度学习框架。拥有三大核心优势:训练推理一体、全平台高效支持、动静结合的训练能力。
在开源软件供应链点亮计划 - 暑期 2021 活动中,MegEngine 将提供以下项目任务,并搭配导师,帮助大家更好的完成项目。
MegEngine 官网:https://megengine.org.cn/
天元开发者交流 QQ 群:1029741705
-
项目标题:添加 RNN/LSTM 系列算子
-
项目描述:目前 MegEngine 对于 NLP 相关接口的支持比较少,较为经典的 RNN/LSTM 算子没有提供支持,希望能在 MegEngine 中提供支持
-
项目难度:高
-
项目社区导师:陈振寰
-
导师联系方式:[email protected]
-
项目产出要求:
- 在 megengine python 接口层面添加 RNN/LSTM 算子
- 参考内部文档在 c++层面实现 RNN/LSTMCell 算子,改进上层 python 接口,并达到与 pytorch 接近的性能
-
项目技术要求:python、pytorch、C++
-
相关的开源软件仓库列表:https://github.com/pytorch/pytorch
-
项目标题:x86 中添加并优化 local
-
项目描述:目前 MegEngine 中 naive 和 CUDA 中支持了 local 和 local share 算子,但是 x86 中并没有支持,因此这些算子在 x86 上运行只能使用 naive 的算子,速度很慢
-
项目难度:高
-
项目社区导师:陈其友
-
导师联系方式:[email protected]
-
项目产出要求:
- 在 x86 backend 下面完成 local 算子填加
- 算子计算结果和 naive 在所有 case 下结果完全一致
- 优化算子,使其逼近最佳性能
-
项目技术要求:C++,性能优化
-
相关的开源软件仓库列表:https://github.com/MegEngine/MegEngine/tree/master/dnn/src/naive/local
-
项目标题:x86 中添加并优化 local share 算子
-
项目描述:目前 MegEngine 中 naive 和 CUDA 中支持了 local 和 local share 算子,但是 x86 中并没有支持,因此这些算子在 x86 上运行只能使用 naive 的算子,速度很慢
-
项目难度:高
-
项目社区导师:陈其友
-
导师联系方式:[email protected]
-
项目产出要求:
- 在 x86 backend 下面完成 local share 算子填加
- 算子计算结果和 naive 在所有 case 下结果完全一致
- benchmark 并优化算子,使其逼近最佳性能
-
项目技术要求:C++,性能优化
-
相关的开源软件仓库列表:https://github.com/MegEngine/MegEngine/tree/master/dnn/src/naive/local_share
-
项目标题:web 上运行 mge 模型
-
项目描述:在 web 上跑起来简单的 mge 模型
-
项目难度:高
-
项目社区导师:柳俊杰
-
导师联系方式:[email protected]
-
项目产出要求:
在 web 上跑起来线性回归模型/手写字模型,要求提供 mge.js 和可运行的 model。
方案:
- 框架部分用 wasm 编译为 mge.js(需要能加载 dump 的 mge 模型,最好不要做模型转换)
- 缺的 kernel 可以参考 xnnpack 用 wasm 进行补充。(webgpu 当前效率不高,webgl 用于计算比较别扭,所以还是选支持 simd 的 wasm)
实现的效果分为 7 级:
- L0:可以加载模型和数据(可以不支持图优化/存储优化等各种优化,可以对现有的框架通过宏进行裁剪,甚至可以重写一个新框架,但必须保证模型的兼容性加载)
- L1:dense/matmul(必选)的前向 op 单测通过(要求 nchw 的 layout 下正确性ok)
- L2: 跑通线性回归模型前向
- L3: 跑通线性回归模型的后向和训练
- L4: 跑通 mnist 模型前向
- L5: 跑通 mnist 后向和训练
- L6: mnist 的 demo(参考 https://storage.googleapis.com/tfjs-examples/mnist/dist/index.html)
-
项目技术要求:js/wasm/c++/python
-
相关的开源软件仓库列表:
-
项目标题:一个对用户友好的 web profile 工具
-
项目描述:在 web 上提交 mge 模型,后端执行并反馈 profile 细节
-
项目难度:高
-
项目社区导师:柳俊杰
-
导师联系方式:[email protected]
-
项目产出要求:
一个对用户友好的 web profile 工具 C/S 结构,前端负责收集模型、可视化、打印 profile 结果。后端负责实际跑模型,后端的支持可以覆盖 x86/cuda/arm 等。
-
L0: 前端能提交 mge 模型,打印模型的执行延迟。后端支持X86,能接受前端的模型并反馈延迟结果。后端的执行可以包装l oad_and_run(需要能填充模型的输入数据,加载完模型后打印模型的输入输出 tensor)。
-
L1: 前端支持打印 profile 结果,后端反馈 profile 结果。后端的 profile 可以直接返回 load_and_run的profile json 结果,并提供过滤、排序、聚合等操作。反馈模型的输出 tensor name。
-
L2: 前端支持模型结构预览(加载完模型后即可预览),并可视化每层的耗时(profile 后可以看到耗时)
-
L3: 扩展后端范围,包括 cuda/arm。方便没有设备的用户能直接得到性能数据。
-
L4: 支持 megengine 的版本切换,支持上传 np 文件作为输入
-
-
项目技术要求:html/js/c++/python
-
项目标题:dnn backend 加入 apple NPU 的支持
-
项目描述:在 MACOS 上推理可用 APPLE np
-
项目难度:高
-
项目社区导师:张浩龙
-
导师联系方式:[email protected]
-
项目产出要求:
在 MACOS上 推理可用 APPLE npu,基于 CoreML API
-
L0: MegEngine 模型转换到 CoreML 可用格式, 能使用 CoreML API 把这个模型跑起来
-
L1: 参考 MegEngine/src/tensorrt/impl 实现 CoreML 在 MegEngine 下的 runtime opr
-
L2:最终在支持 CoreML 的平台上跑起来推理 MegEngine 并且利用 CoreML 加速
-
-
项目技术要求:c++, macos
-
相关的开源软件仓库列表:
-
项目标题:python whl 支持 apple ARM macos
-
项目描述:在 apple arm macos 上,可用 megengine python
-
项目难度:高
-
项目社区导师:张浩龙
-
导师联系方式:[email protected]
-
项目产出要求:
在 apple arm macos 上,可用 MegEngine python
-
L0: 本地编译通过
-
L1: 包具备分发性,可安装到其他 aarch64+ macbook 上,且能运行
-
L2: 能在基于 aarch64 + macbook 上训练一个模型
-
-
项目技术要求:c++, 编译,macos
-
相关的开源软件仓库列表:https://github.com/MegEngine/MegEngine
-
项目标题:python whl 支持 Android (限定在主流的ARM吧)
-
项目描述:在 Android arm 上,可用 megengine python
-
项目难度:高
-
项目社区导师:王博文
-
导师联系方式:[email protected]
-
项目产出要求:
在 Android aarch64 上(termux 环境),可用 MegEngine python
-
L0: NDK-x86 linux cross build aarch64 Android 编译通过
-
L1: 包具备分发性,可安装到其他 aarch64+ Android 上,且能运行
-
L2: 能在基于 aarch64 + Android + termux 训练一个小模型
-
-
项目技术要求:c++, 编译, Android
-
相关的开源软件仓库列表:https://github.com/MegEngine/MegEngine
-
项目标题:模型转换 - ONNX 转 MegEngine
-
项目描述:
背景:目前官方的 mgeconvert 仓库里面只提供了 MegEngine 模型转到其他框架的功能,反过来不行。 目标:完成 ONNX 模型到 MegEngine 的转换。
- 支持选择 ONNX/MegEngine 版本
- 转换并 dump 出 cpp model(可以用 MegEngine op graph 建图并 dump)
- 只支持推理,不支持训练。
-
项目难度:中
-
项目社区导师:熊鹏
-
导师联系方式:[email protected]
-
项目产出要求:
转换能力需覆盖 model hub 里的模型
方案:
- 完成 ONNX 模型的解析
- 实现 ONNX 与 MGE 各类算子的转换
- 根据 ONNX 模型中包含的算子搭建出完整的 MGE 模型
实现效果:转换出来的模型可以完成推理。
- L0:在特定版本上实现模型的转换
- L1:实现不同版本 ONNX 到 MGE 的转换
-
项目技术要求:Python、ONNX
-
相关的开源软件仓库列表: