2017-01-23 79 views
1

目前,在訓練我們的ML模型(通過sci-kit)以在運行時使用它們之後,我將它們保存爲'.pkl'文件並在服務器啓動時將其加載到內存中。我的問題是兩個褶皺:許多機器學習模型 - 保存和加載

  1. 有沒有更好的方法來做同樣的事情?一個.pkl文件在使用最高壓縮後達到500MB的大小。我能以其他更好的格式保存我的模型嗎?

  2. 我該如何擴展?我有很多這樣的.pkl文件(例如,一個任務的20種不同語言的模型,同樣我有5個這樣的任務,即〜5 * 20個模型)。如果我同時加載所有這些.pkl文件,服務將會進入OOM。如果我根據請求加載/卸載每個.pkl文件,則API變慢,這是不可接受的。我如何擴展或選擇加載唯一可能的解決方案?

謝謝!

+1

您正在使用什麼Scikit-Learn模型? 500MB pickle文件的未壓縮大小是多少? Scikit-Learn課程裏面大多是Numpy矩陣。你有沒有檢查他們是密集或稀疏矩陣? – user1808924

回答

0

有幾種類型的模型可以在不損害性能的情況下減小尺寸,例如修剪隨機森林。除此之外,您可以在不改變模型本身的情況下爲模型內存大小做許多事情(即降低其複雜性)。

我會建議嘗試joblib庫,而不是pickle庫,在那裏你可以使用「compress」參數來控制你的壓縮程度有多強(與花費較長的時間來加載)。

另請注意,鑑於您使用的模型類型,我們可能會給您提供更好的和具體的建議。