2015-04-07 78 views
0

我正在開發一個項目,目標是分離機器學習項目中的培訓和測試過程。我設計了代碼來包裝使用過的模型,並且我的意思是類模型中的分類器。Docker集成的通用Python對象序列化

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

然後我通過函數對象的模型使用列表提供:

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

現在可以通過分類對象構建它用於分類的實例模型並將其函數傳遞給列表以添加函數,以便我可以調用它們。然後我將模型和代碼打包在一個容器中。爲了簡化它的功能,它是一個輕量級的虛擬機。

分離的目的是在不需要傳遞整個代碼的情況下將經過訓練的模型傳遞給碼頭集裝箱,然後對其進行優化。因此,需要保存/序列化Python模型。

我嘗試使用pickle以及jsonpickle,但它們在序列化某些類型的對象時都有侷限性。我找不到任何通用的對象存儲和檢索的替代方法。有沒有其他的選擇?

回答

2

dillcloudpickle都是非常健壯的序列化器,並且可以序列化標準python中的幾乎任何對象。 (我是dill作者,順便說一句。)

dill可作爲一個獨立的包在: https://github.com/uqfoundation/dill/

cloudpickle已經幾乎死亡(它是由picloud他們去商業支持,但是......並有左pyspark和支持它自己的代碼庫中其他幾個包):在統計計算和optimizat https://github.com/apache/spark/blob/master/python/pyspark/cloudpickle.py

我用dill作爲並行的骨幹和分佈式計算離子,並用它來啓用並行機器學習技術。但是我沒有嘗試docker對象。