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,但它们在序列化某些类型的对象时都有局限性。我找不到任何足够通用的替代品来存储和检索对象。还有其他选择吗?
dill
和 cloudpickle
都是非常健壮的序列化器,几乎可以序列化标准 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
个对象。
我正在从事一个 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,但它们在序列化某些类型的对象时都有局限性。我找不到任何足够通用的替代品来存储和检索对象。还有其他选择吗?
dill
和 cloudpickle
都是非常健壮的序列化器,几乎可以序列化标准 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
个对象。