Универсальная объектная сериализация Python для интеграции с Docker

Я работаю над проектом с целью разделения процессов обучения и тестирования в проектах машинного обучения. Я разработал код, чтобы обернуть используемую модель, и под моделью я подразумеваю, например, классификатор в классе Model.

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

Затем я передаю объекты-функции, которые модель должна предоставить, используя список:

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

Теперь эту модель можно использовать, например, для классификации, создав ее с помощью объекта классификатора и передав ее функции в списке в addFunctions, чтобы я мог их вызывать. Затем я упаковываю модель и код в докер- контейнер. Чтобы упростить то, что он делает, это легкая виртуальная машина.

Цель разделения - просто передать обученную модель в контейнер докера после ее оптимизации без необходимости передавать весь код. Таким образом, возникает необходимость сохранения / сериализации модели Python.

Я пытался использовать pickle, а также jsonpickle, но оба они имели ограничения при сериализации определенных типов объектов. Я не смог найти альтернативы, достаточно универсальной для хранения и поиска объектов. Есть ли альтернативы?

1 ответ

Решение

И то и другое 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 в качестве основы параллельных и распределенных вычислений в статистических вычислениях и оптимизации, и использовал их для обеспечения параллельных методов машинного обучения. Я не пробовала docker объекты однако.

Другие вопросы по тегам