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

Generic Python Object Serialization for Docker Integration

我正在从事一个 objective 项目,该项目将机器学习项目中的训练和测试过程分开。我设计了代码来包装使用过的模型,我所说的模型是指 classifier,例如,在 class 模型中。

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

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

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

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

分离的目的是将训练好的模型优化后直接传递给docker容器,而不需要传递整个代码。因此,需要 saving/serializing Python 模型。

我尝试使用 pickle as well as jsonpickle,但它们在序列化某些类型的对象时都有局限性。我找不到任何足够通用的替代品来存储和检索对象。还有其他选择吗?

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

dill 可作为独立软件包在以下位置获得: https://github.com/uqfoundation/dill/

虽然 cloudpickle 几乎已经死了(它得到了 picloud 的支持,但他们已经商业化了......并且在他们自己的代码库中留下了 pyspark 和其他一些支持它的软件包): https://github.com/apache/spark/blob/master/python/pyspark/cloudpickle.py

我在统计计算和优化中使用dill作为并行和分布式计算的backbone,并用它来启用并行机器学习技术。但是我还没有尝试 docker 个对象。