MindSporte WebAssembly后端

2020-06-02 08:11:14

实验注意事项:此项目仍处于实验阶段,仅作为在WebAssembly运行时运行MindSporte的概念验证。

WebAssembly是为了帮助解决javascript代码执行性能问题而提出的。WASM现在已经成为Web开发中广泛使用的事实上的运行时标准,特别是对于移动应用程序。

WASI是用于WebAssembly的模块化系统接口。正如本文所述,WebAssembly是概念性机器的汇编语言,因此它需要概念性操作系统的系统接口,而不是任何单一的操作系统。这样,它就可以在所有不同的操作系统上运行。

我们相信,随着WASI更加成熟,我们有可能拥有一个可以在所有场景(云/边缘/移动)中工作的通用后端操作员库。再加上我们最新开源的全场景深度学习框架MindSporate的WASM端口,WASI可以实现一个新的后端不可知、高度安全和高性能的堆栈,帮助用户和开发人员能够开发具有更好可移植性的新AI应用程序。

WASM还可以给联合学习等人工智能技术带来创新。与传统的基于容器的联合学习应用部署不同,基于WASM的解决方案可以带来良好的隔离性和较小的内存消耗,从而使MPC更加高效和安全。

TensorFlow社区最近在3月11日发布了一篇博文,称TF现在可以支持TensorFlow.js的WebAssembly(WASM)后端。TensorFlow WASM后台为用户在移动CPU上直接运行推理提供了新的选择。它还提供了性能增强和可移植性的良好组合。执行速度比javascript快2-10倍,对移动端的支持比WebGL更好。鉴于WASM社区对SIMD支持的最新发展,推理性能可以进一步提高。

这个项目应该被认为是试验性的在非常早期的阶段,所有丰富的功能都在积极开发中。以下是当前运营商支持列表:

注意:本项目目前仅在Ubuntu系统上测试,测试环境应为Ubuntu 16.04+。

如果您想在Web浏览器中使用ms-backend-wasm包,请确保已安装Node.js。

~#wasm-front end-hUsage:wam-front end[选项]选项:-c,--ms-backend-config file_path set wasm backend config file-o,--op-type value设置运算符类型,仅支持add、mul、argmax和EqualCount,默认值:add。-d,--data-type value设置数据类型,只支持FP32、INT32、INT8,默认值:FP32。-i,--input value设置输入数据-i,--input-data-file file_path set input data file-h,--help打印此帮助菜单。

目前操作符libs是纯手写的,向外扩展不够灵活,执行效率也不高。因此,我们正致力于在短期内增加TVM运行时支持。

正如TVM运行时教程中所展示的,TVM已经支持WASM作为可选的硬件后端,因此我们可以利用WebAssembly(可移植性、安全性)和TVM运行时(特定于域、优化)的特性来为MindSpores构建灵活的、自动优化的后端。

TOPI(TVM Operator Inventory)提供了比TVM抽象程度更高的Numpy风格的通用操作和调度,因此在TVM社区中添加具有WASM后端支持的TOPI包编译是非常必要的。

虽然在WebAssembly运行时只是一个运行MindSporter的PoC,但在以后的版本中,我们会驱动快速迭代,将集成发布到MindSporter前端。

在最新的稳定版本(v0.16.0)中,暂时从Wasmtime中删除了对接口类型的支持。因此,目前使用WebAssembly模块意味着它只能处理整数和浮点数,以及更丰富的类型(如字节数组、字符串、结构等)。不受支持。欲了解更多信息,请访问https://github.com/bytecodealliance/wasmtime/issues/677.。

如果您运行的是Windows,要安装Rust,请下载并运行rust-INIT.EXE,然后按照屏幕上的说明进行操作。

如果您是Linux用户,请在您的终端上运行以下命令,然后按照屏幕上的说明安装Rust。

sudo apt-get install-y npmsudo npm install n-gsudo n Stability#检查npm和nodenpm-vnode-v的版本。

如果您运行的是64位Windows,请下载并运行Wasmtime安装程序,然后按照屏幕上的说明进行操作。

如果您是Linux用户,请在您的终端上运行以下命令,然后按照屏幕上的说明安装wa mtime:

如果您运行的是64位Windows,请下载并运行wasm-pack-init.exe,然后按照屏幕上的说明进行操作。

如果您是Linux用户,请在您的终端上运行以下命令,然后按照屏幕上的说明安装wasm-pack: