晓查 发自 凹非寺
量子位 报道 | 公众号 QbitAI

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

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

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

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

无需依赖库

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

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

  1. 生产环境没有相应的语言,比如缺失Python runtime;
  2. 设备性能不够强大,比如微控制器(MCU),无法安装框架和依赖库,而且数据需要在本地计算,不能传回远程服务器;
  3. 对预测速度有要求,需要直接调用参数值而不是依赖库;

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

运行原理

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

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

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

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

使用方法

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

$ pip install m2cgen

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

from 

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

[--indent <indent>

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

m2cgen <path_to_file> --language java

然后它就变成了一串Java代码:

public 

传送门:

开源地址:

BayesWitnesses/m2cgen​github.com

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

nok/sklearn-porter​github.com

量子位 · QbitAI

վ'ᴗ' ի 追踪AI技术和产品新动态

戳右上角「+关注」获取最新资讯↗↗

如果喜欢,请分享or点赞吧~比心❤

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

  1. tensorflow 2.10.0安装所需依赖库版本确定方法

    tensorflow 2.10.0安装所需依赖库版本确定方法 1 依赖版本组合 2 系统环境 3 依赖版本确定方法 3.1推理法 3.1.1 TensorFlow依赖范围 3.1.2 显卡驱动支持范围 ...

  2. caffe安装 cuda安装 opencv安装 cudnn安装 python相关依赖库安装

    1安装cuda8.0 安装依赖库 #sudo apt-get install g++ #sudo apt-get install git #sudo apt-get install freeglut3 ...

  3. live555库安装_基于live555的rtsp播放器:开发环境配置

    一.MacOS Mojave 10.14 64位系统开发环境配置 1.安装brew brew是Mac下的一个包管理工具,作用类似于centos下的 yum.ubuntu下的apt-get brew可以 ...

  4. python json库安装_【Python基础】安装python第三方库

    pip命令行安装(推荐) 打开cmd命令行 安装需要的第三方库如:pip install numpy 在安装python的相关模块和库时,我们一般使用"pip install 模块名&quo ...

  5. Qt发布安装程序(打包依赖库+生成安装程序)

    目录 打包Qt依赖库 打包其它依赖库 生成安装程序 下载并安装Inno Setup 5 使用Inno Setup 5 Qt编译好的项目是不能直接被双击运行的,如下所示. 缺少了依赖的库,需要添加进去. ...

  6. 2022-3-15 安装fcl的依赖库ccd,动态链接库和静态链接库

    GitHub libccd 库 默认是静态链接库,cmake安装其为动态 To build libccd as a shared library, set the BUILD_SHARED_LIBS ...

  7. python安装random库_python 库安装方法及常用库

    python库安装方法: 方法一:setpu.py 1.下载库压缩包,解压,记录下路径:*:/**/--/ 2.运行cmd,切换到*:/**/--/目录下 3.运行setup.py build 4.然 ...

  8. python第三方库安装-python的第三方库安装

    什么是第三方库 别人写好的一些功能代码,我们可以拿过来直接用 第三方库安装方法 1.pip在线安装(100%推荐) 默认源:pip install 包名 国内源:pip install 包名 -i h ...

  9. python第三方库安装方法-Python第三方库安装

    Python有一个全球社区:https://pypi.org/,在这里我们可以搜索任何主题的Python第三方库.PyPI全称是Python Package Index,指的是Python包的索引,它 ...

最新文章

  1. 微信开源「派大星」:4000元游戏电脑能带动7亿参数GPT!
  2. Android深入理解Context(三)Context完全解析
  3. 简介struct cmsghdr结构
  4. python3 beautifulsoup 表格_[Python3爬虫]Beautiful Soup解析库
  5. 爬虫 | urllib入门+糗事百科实战
  6. 应用程序框架实战三十六:CRUD实战演练介绍
  7. Allegro 光绘文件快速导入
  8. idea conf文件_JavaWe商品项目保姆级解析IDEA版(配置篇)
  9. pipline中替换tag变量
  10. [NOI Online 2022 提高组] 丹钓战(单调栈 + 树状数组 / 主席树)
  11. 第十八期:闲鱼上哪些商品抢手?Python分析后告诉你
  12. python和revit_pyRevit系列教程1
  13. linux系统备份和恢复
  14. Workbench has not been created yet
  15. c语言中休眠的作用,使用C语言让Windows睡眠/休眠
  16. 51 nod 1405 树的距离之和
  17. tomcat-maven-plugin 2.0版本发布
  18. python界面制作和unity的有区别吗_由1~4人利用Sratch、Python、Unity或其它游戏开发工具设计与制作一个的教育类游戏。...
  19. 图片验证,滑块验证解决
  20. PLC梯形图编程入门

热门文章

  1. TCP三次握手和四次挥手的解释
  2. 难忘的一天——装操作系统(二)
  3. 【Sql Server】DateBase-SQL调整
  4. 提高期——SLA实践指导秘籍
  5. viterbi维特比算法和隐马尔可夫模型(HMM)
  6. Minkowski修剪
  7. MLIR多级中间表示概述
  8. Cocos creator加载场景、加载场景回调、预加载场景
  9. python 删除list 里面的一个空集合
  10. java面向过程和面向对象