用最简单直接的方法将机器学习模型部署上线

参考文章:

先看看这些痛点你有没有吧,有的话可以继续往下看

阅读这篇文章时,您可能已经知道或尝试过 torchserve、triton、seldon core、tf serving 甚至 kserve。 他们是很好的产品。 但是,如果您使用的不是非常简单的模型,或者您编写了许多代码,而模型只是其中的一部分,这个时候将您的代码与它们集成起来并不容易。

有的时候,如果你想简简单单的部署一个模型API服务,做prototype,做demo,或者临时有一个模型短时间需要尽快部署,上面的几个工具,也很难满足,毕竟只是在调试、修改代码来符合那些工具的要求,就要花掉不少时间了。

在这种轻量级的应用场景,大部分人会选择写个flask或者fastapi。不过,这其实也要花一些时间,而且对于网络编程经验不够多的开发者,代码实现质量可能并不高。对于不想做网络编程,或者说网络编程经验比较少的人,有没有什么工具,能让我们省下这些时间,还提供一个更高规范高质量的模型服务呢?

今天,给大家介绍另外一个选择:Pinferencia

Pinferencia是什么来头?
Pinferencia (python + inference) 的开发目标是提供一个直观又简单的方法来部署模型,同时不牺牲稳定性。虽然是一个年轻项目,已经提供了两套API(默认API和Kserve V1&V2 API),同时有着优秀的100%的测试覆盖率,并支持Python3.6-3.10以及任意框架模型的部署,可以看到这个项目是认真的。后续的功能相信也会稳步前进,维持这个水准。

大家可以先看看项目怎么自己调侃自己的:

简介

确实,很多场景其实用上面那些工具,有些小题大做,又带来了一个很大的黑盒子,调试部署都会花费不少时间,每次时隔几个月,又有新的模型了,前面的经验又都忘了,或者人家版本升级了,痛苦又要重来一遍。那么Pinferencia呢?有什么优势呢?

这个项目的特点有这么几个

1. 跟用户代码兼容很好,部署很快速,没什么学习成本

跟我们平时接触到的模型部署工具都不同,使用的是一种编程式的方法来定义服务,就是写几行代码,与自己的开发代码可以直接结合。

比如github主页给了几个例子:

一个是怎么部署huggingface的transformers,只需要加三行代码就行。

还有一个是说可以部署任何模型,也是很直观:

可以看到,这个设计跟前面提到的已有的工具,切入角度很不一样。
作者的设计目的就是让用户留在自己的python环境,充分使用用户自己的模型代码。因为整个项目也是基于python,所以尽量给用户一个熟悉的环境,这样感觉更透明,尽量避免黑盒子的感觉。

其实这个跟自己写flask感觉很像,就是感觉代码都是自己的(虽然flask是别人的),这种模式,给用户的融入感更好,不会让用户摸不清头脑。当然,debug也更简单。pinferencia也支持热加载,所以只要代码改了,立刻就能生效,打印日志找问题就很简单。相当于把写flask的体验带入了进来,同时呢,还不用你写那么多代码,已经给你准备好了高质量代码实现的接口(看首页代码质量评级是A+,覆盖率100%,那两个badge点进去链接的都是公认不错的标准,这些都是实打实的)。

2. 代码兼容Kserve API

这个对于使用triton,torchserve,tensorflow serving,kubeflow,seldon的用户挺重要的,文档里有这么个说法:

这个工具好用,那肯定愿意用,但是要是后面正式部署了,要换其他工具怎么办呢?

这里的考虑很周到,API兼容,那客户端的代码,从Pinferencia过度到其他工具,或者其他工具过度过来,切换成本就很低很低了。

这个项目是基于fastapi和starlette,其实也完全具备了生产化的基础(测试覆盖了也表明了项目的目标:fastapi和starlette的覆盖率也都是100%,这个项目追随了这个传统,就是要提供高稳定的代码实现,毕竟100%覆盖率同时保证代码评级A+,需要的不止是技术,更重要的还有态度)。对于大部分需求,其实不换工具都没什么问题。但即使真的要换了,这里也考虑了,消除了用户顾虑。

这个项目也是体现了一种比较open的态度:不是要替代其他工具,而是弥补其他工具的没有覆盖到的需求面,同时还能给用户方便切换其他工具。也就是说,即使你是打算最终用kubeflow,seldon core,triton这些,但是在模型的开发,服务测试,快速迭代,快速上线,我们现在这个agile流行的时代,也是值得先用pinferencia的。毕竟仅仅在快速部署,快速调试这些费时工作上,就能节省不少时间。

3. API 页面

这个不算是什么特色了,服务开始,就有一个可以交互的API页面,可以直接测试API。

项目还有不少没介绍的,这里一一说来有点啰嗦,大家可以收藏了项目有时间可以仔细看看,项目地址在:
Github: Pinferencia.

或者是 https://github.com/underneathall/pinferencia ,

或者github直接搜索 pinferencia 。

最后给大家看个彩蛋,选自pinferencia文档:

工具没有说高深还是浅显,量体裁衣,就像flask和django,flask的开发者肯定也能做出django,django的开发者肯定也能做出flask,但是大家目标不同,合适的才是好的。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值