@高校学生开发者,为什么你一定要“上手”开源项目?
项目一:将 OneFlow 中的 CommNet 模块抽取为独立工程
将CommNet独立为工程,附带能正常构建的CMake文件
CommNet 的接口文档
一定的 C++ 代码阅读能力
对 CMake、Makefile 有一定了解
能在导师的指导下学习和理解项目中涉及的常见的设计模式
项目二:实现 einsum 算子
einsum 算子的 Python 前端
einsum 算子的 CUDA Kernel
einsum 算子的 CPU Kernel
einsum 的接口文档
einsum 的 Op 代码
einsum 所需要的简单语法解析器
熟练掌握 Python
熟练掌握 C++
能够在导师的指导下学习编译原理相关知识并实现相关的词法、语法分析等功能
能在导师的指导下学习CUDA编程并实现 CUDA Kernel
对计算优化和高性能计算库有一定了解或有兴趣了解
项目三:OneFlow 部署实现 C/C++ API
在导师指导下,去掉部署模块对 Python 解释器的依赖
相关 API 接口的技术文档
了解部署的流程,熟悉常见的部署框架的操作流程
具有 C/C++ 开发能力
了解常见的网络协议,接触过网络编程
项目四:为 OneFlow XRT 后端提供 TVM 支持
为 OneFlow XRT 提供 TVM 后端支持
相关的技术文档
熟悉深度学习编译技术及其相关的优化技术
熟练掌握 C/C++
熟悉常见的设计模式,能够在导师的指导下掌握 OneFlow XRT 的设计理念及代码及代码结构
项目五:为 OneFlow 添加新的前端语言
为 OneFlow 新增一种脚本语言支持
对应语言接口的 API 文档规范、准则
了解常见脚本语言与 Native 代码的交互机制
熟练掌握想移植的前端语言
掌握 C/C++
了解动态链接、多线程锁等技术或者有兴趣在导师指导下学习掌握
项目六:自动并行中的算力代价建模
实现基于算力代价的评估函数
在导师的指导下,相关研究结果整理为文档(根据产出质量,可考虑发论文或申请专利)
扎实的数理基础
了解或熟悉 C/C++ 开发
项目七:OneFlow 多设备类型支持
完全去除 Python 层对设备类型限制的假定
完善新增设备类型的注册机制
将多设备支持模块与分布式模块融合
将多设备支持模块与动态图模块融合
相关设计文档及接口文档
熟悉 C++
了解 OneFlow 或某一种深度学习框架的基本使用
项目八:为 OneFlow 的图编译后端提供获取网络权重的支持
重构相关 Python 端
重构 C++ 后端 Pass 模块的相关功能
相关的设计文档及 API 文档
相关的测试代码
在获取权重的基础上的新 Pass
熟悉 C++
了解深度学习编译技术(或者可以在导师指导下学习)
项目九:为 OneFlow 添加自动判断重计算区域功能
在导师指导下,对相关文献进行调研并形成文档
在 OneFlow 中实现自动判断重计算区域的相关功能
相关的设计文档及接口文档
熟悉 C++
了解亚线性优化技术或能在指导下学习
项目十:NVlabs imaginaire 仓库的模型复现
对选定的模型使用 OneFlow 进行重写
通过对比 loss 下降曲线等方法,完成模型的正确性验证
使用 OneFlow 完成相关模型的分布式训练,并形成可复用的脚本及文档
相关的预训练模型
熟悉深度学习常见算法及理论
熟悉 PyTorch,能独立阅读学习 NVlabs imaginaire 仓库源码
了解 OneFlow 的使用,可以在指导下完成分布式训练
项目十一:给 TVM 添加 OneFlow 前端
OneFlow 作为一个深度学习训练框架,将其训练的深度学习模型高效的部署到各个平台上也是重要的一环。但 OneFlow 目前没有提供通用的模型部署方案,因此本项目旨在为 TVM 添加 OneFlow 前端。使得 TVM 可以直接加载 OneFlow 训练的模型并转换为 TVM 的 Graph IR,然后在各种后端硬件上进行部署。另外,OneFlow 目前不仅支持 FP32 和 FP16 的训练,还很好的支持了 INT8 量化训练。所以本项目还期望在为 TVM 支持 OneFlow 前端的过程中,也可以实现部署 OneFlow 的 INT8 量化训练模型。
为TVM支持OneFlow前端,支持在 TVM 中直接加载 OneFlow 的模型并推理。
完善 TVM 支持 OneFlow 前端的文档和使用示例,提交 PR 给 TVM,合进 TVM 官方仓库,并负责输出一篇 TVM 如何添加 OneFlow 前端的文档。
基于 TVM 的 OneFlow 前端完成常见模型如 ResNet50、MobileNet、Transformer 等在 TVM 中的部署。测试精度速度并整理报告文档。
熟悉 Python,了解单元测试
了解 OneFlow 的使用,可以搭建常用模型进行推理
了解 TVM 的使用,有深度学习编译器相关经验更佳
了解深度学习模型量化训练