使用WebAssembly提高模型部署的速度和可移植性


使用WebAssembly提高模型部署的速度和可移植性文章插图
在最近几个月中 , 我们已经帮助许多公司在各种环境中部署其AI / ML模型 。我们为医疗行业的模型部署做出了贡献 , 在过去的几个月中 , 我们已经帮助多家公司将经过训练的模型转移到不同类型的IoT设备上 。特别是在IoT设备情况下 , 要求通常很严格:计算周期数和可用内存通常都受到限制 。
在本文中 , 我阐明了如何确保使用标准ML库(例如PyTorch , Scikit-learn和Tensorflow)训练的模型可以有效地部署在各种边缘设备上 。为了使事情变得切实 , 我们将研究简单的逻辑回归模型的训练和部署 。但是 , 我们在这里讨论的大多数内容都直接转移到更复杂的模型上 。
模型训练为了说明模型训练与部署之间的区别 , 让我们首先模拟一些数据 。下面的代码根据以下简单模型生成1000个观测值:图片发布
使用WebAssembly提高模型部署的速度和可移植性文章插图
【使用WebAssembly提高模型部署的速度和可移植性】import numpy as npnp.random.seed(66)# Set seed for replication# Simulate Data Generating Processn = 1000# 1000 observationsx1 = np.random.uniform(-2,2,n)# x_1 其中一个原因是 , 我们可能希望有效地部署模型 , 而不会在每次做出预测时浪费能源 。 但是 , 一个小的内存占用和快速的执行也是很吸引人的 , 因为这正是我们在将模型投入生产的边缘所需要的:好运部署你的Docker容器(例如 , )在ESP32 MCU板上 。 使用WebAssembly , 这是小菜一碟 。
综上所述 , 你一定对WebAssembly十分感兴趣 , 那么看看这个代码吧 , 它包含了本文的所有内容
作者:Maurits Kaptein
deephub翻译组