项目信息

项目名称

web 上运行 mge 模型 (210040016)

方案描述

使用WebAssembly将MegEngine与Web建立联系。

我的实现将保留大部分C++源代码,使用Typescript重写Python的部分,最后使用WebAssembly将Typescript和C++连接起来。

这样做的好处是,复用MegEngine中的运算符,甚至包括模型的定义和序列化方法,可以保证Megjs与MegEngine最大程度的兼容。

时间安排

  1. L0 加载模型和数据 7.1-7.15

    复用MegEngine核心代码,读取MegEngine模型。

  2. op前向单测通过 7.16 - 8.1

    将MegEngine中的算子(Naive)实现编译成WASM,然后使用ts编写接口,进行模型前向计算。

  3. L2 - L3 线性回归模型 8.1 - 8.15

    使用Tensor直接计算,完成线性回归模型

  4. L4 - L5 mnist模型 8.16 - 8.30

    使用High Level的模型实现Mnist

  5. L6 mnist web demo 9.1 - 9.30

    完成整个项目展示

为什么需要 Megengine.js ?

造轮子之前,最好先明确这个轮子的价值,避免重复造轮子。而 Megengine.js 的价值主要体现在两个方面:

端上运算需求增大

深度学习不断发展,用户对于自己隐私数据的保护意识也逐渐增强,如果应用需要将一些敏感数据(身份证照片等)上传到服务器,那用户一定会心有疑虑。边缘设备的计算能力不断增加,也让端上运算变得可行。除了系统层面调用 API 来计算,像微信小程序这类需要运行在另一个程序内部,无法直接接触系统 API 的应用,并没有比较合适的方法来计算,许多深度学习应用小程序依然需要将数据发送到服务器上进行计算,在高风险场景下是行不通的。

Web 端需求增大