tf内存泄露这件事的确很尴尬,在这个bug没有修复之前,HanLP就不可能直接依赖tf做生产环境,除非用户跳过tf的dataset自己写data loader。所以,beta版会发布PyTorch的backend。
感谢你的贡献,你在web方面肯定比我强,所以服务端的实现我想交给包括你在内的开源社区去自由实现,我提供简约的API约定(传什么参返回什么json)。毕竟我只想专注算法的开发,没有足够的人力分配在服务运维上。而且服务这块设计的技术栈特别多,Flask、Django、wsgi、容器、安全性等等,肯定不是一两个人能搞定的。即使这一两个人搞定了,也未必符合大部分用户的需求。比如,有的企业可能更偏好另一种框架,有的企业会加入权限控制等等。HanLP的服务比bert-as-service复杂很多,服务端可能不适合官方做,而是协调整个开源社区自由做。
我设想的方式是这样的:
- 我出一套客户端的API约定,包括接口命名、参数返回值定义等,大概率就只有一个
process
接口,非常简单。客户端官方提供Python和Java的实现,基本就是request一下服务器的process
接口。
- 开源社区按照这个简单的约定,挑选自己喜欢的技术栈,实现这一接口。可能大概率是套用
pipeline(text)
等。
- 服务器地址以参数的形式传入客户端的构造函数。这样用户可以用同一套客户端适配不同的服务器,无论服务器是公共的还是私有的,比较灵活。
至于GPU服务器,费用非常高,可能不太会有很多公益服务器,但一定会有相当多的企业内部服务器运行我们的服务端。我个人有一台GPU服务器,未来会拿出来做公益服务。总之,各方面的设想还算可行,欢迎你和任何有志人士反馈意见、参与开源。