用于Docker集成的通用Python对象序列化

我正在进行一个项目,目标是分离机器学习项目中的培训和testing过程。 我devise的代码来包装使用的模型,并通过模型我的意思是分类,例如,类模型。

class Model: def init(self, newModel): self.model = newModel

然后我使用一个列表传递模型必须提供的函数对象:

def addFunctions(self,functions): for function in functions: self.functions[function.__name_ _] = function

现在,模型可以用于分类,例如通过用分类器对象构造它并将其函数传递给列表中的addFunctions,以便我可以调用它们。 然后,我将模型和代码打包在一个docker容器中。 为了简化它的function,它是一个轻量级的虚拟机。

分离的目的是在不需要传递整个代码的情况下,将经过训练的模型传递给docker集装箱。 因此,需要保存/序列化Python模型。

我尝试使用pickle以及jsonpickle ,但是当序列化某些types的对象时,它们都有局限性。 我找不到任何通用的对象存储和检索的替代品。 有没有其他的select?

dillcloudpickle都是非常强大的序列化器,并且可以序列化标准python中的几乎任何对象。 (我是dill作者,顺便说一句)

dill是作为一个独立的包在: https : //github.com/uqfoundation/dill/

cloudpickle已经死了很多(这是由picloud支持,但他们去商业…并已离开pyspark和一些其他包支持它们在自己的codebase): https : //github.com/apache/spark/blob/master /python/pyspark/cloudpickle.py

我使用dill作为并行计算和分布式计算的主干,并用它来实现并行机器学习技术。 我没有尝试docker对象。

Interesting Posts