首页
首页 >> 科技咖 >> 正文

没有依赖库也能跑机器学习模型!推荐一个强大工具m2cgen

日期:2019-03-07 10:01:31 来源:互联网 编辑:小狐 阅读人数:607

晓查 发自 凹非寺

m2cgen(Model 2 Code Generator)是一个轻量级代码生成器,它可以将训练好的机器学习模型转换成无需依赖库的本地代码。目前支持为PythonJavaC三种语言。

比如你用PyTorch训练了一个机器学习模型,但是需要把它部署在一台没有安装或者不兼容PyTorch的设备上,应该怎么办?这时候m2cgen能帮你解决问题。

没有依赖库也能跑机器学习模型!推荐一个强大工具m2cgen(图1)

有人说,这不就是另一种形式的ONNX嘛?No!

ONNX能做的是将PyTorch训练的模型转换到Caffe2上,代码只是换了一种依赖库。而m2cgen生成的代码不需要在本地安装任何依赖库

无需依赖库

那么给计算机安装上依赖库不就好了吗,为何还要这么麻烦?

如果你在实际中遇到以下几种情况:

生产环境没有相应的语言,比如缺失Python runtime。

设备性能不够强大,比如微控制器(MCU)无法安装框架和依赖库,而且数据需要在本地计算,不能传回远程。

对预测速度有要求,需要直接调用参数值而不是依赖库。

这时候m2cgen就能派上用场,只要设备能运行Python、C、Jave当中的任何一种语言,你就能直接部署训练好的机器学习模型。

运行原理

理论上,训练好的模型已经有了拟合参数的数值,运行起来也只需要矩阵乘法和一些激活函数。可是为了运行它们,却要先安装体积超过GB的框架和依赖库。

m2cgen项目的实质,是以某种方式将模型的权重、偏置分解为一个额外的依赖或文件,在非常大的模型上实现“代码”和“数据”之间的分离。

总的来说,替代方法就是使用底层的编程语言库,来做一些矩阵数算。

目前m2cgen支持的模型种类包括:

没有依赖库也能跑机器学习模型!推荐一个强大工具m2cgen(图2)

使用方法

m2cgen的安装非常方便,直接用pip:

$pip install m2cgen

在转换Python代码前,需要用import导入m2cgen:

fromsklearn.datasetsimportload_boston

fromsklearnimportlinear_model

importm2cgenasm2c

X, y = boston.data, boston.target

estimator.fit(X, y)

code = m2c.export_to_java(estimator)

在终端用m2cgen命令转换代码:

$m2cgen --language 【--indent 】

--class_name --package_name

--recursion-limit

pickle_file是你要转换的源代码文件,必填选项—language后面填入你的目标语言,比如上面的Python代码,你想转换成Java,就输入:

$m2cgen --language java

它就变成了一串Java代码:

publicclassModel

publicstaticdoublescore(double input)

传送门:

与m2cgen类似的代码转换项目sklearn porter,能将训练好的scikit-learn模型转换成Java、C、Java、Go、Ruby代码:

本文相关词条概念解析:

依赖

依靠别人或事物而不能自立或自给。俗称成瘾。外来物质进入人体引起的一种心理生理过程的依赖性。依赖思想不仅会使人丧失独立生活的能力和精神,还会使人缺乏生活的责任感,造成人格上的缺陷,只想过不劳而获的生活,贪图享受,就不能适应社会生活,甚至危害社会和他人,走上违法犯罪的道路。要克服依赖习惯、增强自信心、树立奋发自强精神、培养独立的人格。

网友评论
  • championsb
    从上述的例子中,我们可以看出,模型越复杂并没有产生更好的效果
    2019-05-18 12:12 49
  • lifan123
    因为以过来人的身份看,高中,课本真题参考书完全够用了,根本用不到手机APP来学习
    2019-05-16 16:15 45
  • 9秒前
    KNN回归算法什么是KNN
    2019-05-16 14:06 12
  • 恋得不要太
    鉴于此,推荐考虑两种算法来做模型
    2019-05-19 03:47 42
  • 风吹随风飘
    用机器学习算法给汽车做定价模型,一般推荐用什么算法?
    2019-05-18 10:10 36
  • 红尘紫陌上
    所以我们需要针对不同的问题,来设计不同的模型复杂度
    2019-05-21 12:42 46
  • 二郎家丫头
    真的控制不住自己的双手,毕竟抖音那么好看
    2019-05-16 02:26 39
  • 6625352
    可能扯的有点远了,说的不对之处请谅解
    2019-05-19 11:51 12
  • 我不是xy
    回归算法回归算法算是机器学习模型中最简单,最直观,最常用,也是最好解释的算法了
    2019-05-15 17:29 12
  • baobaojinh
    机器学习中,模型越复杂越好吗?
    2019-05-19 16:05 1
  • 大眼睛球球
    高三学生,有哪些可以推荐的学习工具APP?
    2019-05-17 12:32 2