ONNX.js是用于在浏览器和Node.js中运行ONNX模型的Javascript库。 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。