CPU vs GPU
在 Web 浏览器中运行机器学习模型的一个先决条件是通过 GPU 加速获得足够的计算能力。
在机器学习中,尤其是深度网络模型,广泛使用的操作是将大矩阵与向量相乘,再与另一个向量做加法。这种类型的典型操作涉及数千或数百万个浮点操作,而是它们通常是可并行化的。
以一个简单的向量相加为例,将两个向量相加可分为许多较小的运算,即每个索引位置相加。这些较小的操作并不相互依赖。尽管 CPU 对每个单独的加法所需的时间通常更少,随着计算量规模的变大,并发会逐渐显示出优势。
WebGPU
随着 Web 应用对可编程 3D 图形、图像处理和 GPU 访问需求的持续增强,为了在 WEB 中引入GPU 加速科学计算性能,W3C 在 2017 年提出了 WebGPU ,作为下一代 WEB 图形的的 API 标准,具有更低的驱动开销,更好的支持多线程、使用 GPU 进行计算。
WebAssembly
当终端设备没有 WebGL 支持或者性能较弱的时候,使用 CPU 的通用计算方案为 WebAssembly 。WebAssembly是一种新的编码方式,可以在现代的网络浏览器中运行,它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如C / C ++ 等语言提供一个编译目标,以便它们可以在 Web 上运行。
对于算法而言,通用的深度学习框架已然提供了若干的通用预训练模型,可以直接用来做推理,也可以在其基础上训练自己的数据集。模型的压缩与推理也可以使用现有的工具。 参考文献
[1] https://tech.taobao.org/news/2021-1-7-32.html
[2] https://juejin.cn/post/6844904152095539214
[3] Ma Y, Xiang D, Zheng S, et al. Moving deep learning into web browser: How far can we go?[C]//The World Wide Web Conference. 2019: 1234-1244.
[4] WebGPU: https://www.w3.org/TR/webgpu/
[5] Tensorflow.js: https://www.tensorflow.org/js?hl=zh-cn
[6] WebAssembly: https://developer.mozilla.org/zh-CN/docs/WebAssembly [7] Deep Learning with JavaScript https://www.manning.com/books/deep-learning-with-javascript
欢迎关注凹凸实验室博客:aotu.io
或者关注凹凸实验室公众号(AOTULabs),不定时推送文章。