微软宣布开源ONNX.js,可在浏览器上运行ONNX模型
ONNX.js是一个Javascript库,用于在浏览器和Node.js上运行ONNX模型。ONNX.js采用了WebAssembly和WebGL技术,为CPU和GPU提供优化的ONNX模型推理runtime。
为何选择ONNX模型
在开放式神经网络交换(Open Neural Network Exchange ,ONNX)是一个开放的标准,代表机器学习模型。ONNX的最大优势在于它允许跨不同开源AI框架的互操作性,这本身为AI框架的采用提供了更大的灵活性。
为何选择ONNX.js
借助ONNX.js,Web开发人员可以直接在浏览器上对预先训练好的ONNX模型进行评分,从而减少服务器,客户端通信和保护用户隐私,并提供免安装和跨平台的浏览器机器学习体验。
ONNX.js可以在CPU和GPU上运行。为了在CPU上运行,采用WebAssembly以接近原生的速度执行模型。此外,ONNX.js利用Web Workers提供“多线程”环境来并行化数据处理。经验评估显示,通过充分利用WebAssembly和Web Workers,CPU可以获得非常有前途的性能提升。对于在GPU上运行,这是一种用于访问GPU功能的流行标准——采用WebGL。ONNX.js进一步采用了几种新颖的优化技术来减少CPU和GPU之间的数据传输,以及一些减少GPU处理周期以进一步提高性能的技术。
基准
针对同一市场中最著名的开源解决方案进行了基准测试。以下是在一台示例计算机上为Chrome和Edge浏览器收集的结果(计算在CPU和GPU上运行):
如图,Keras.js不支持Edge上的WebGL使用,Keras.js和TensorFlow.js不支持在任何浏览器上使用WebAssembly。