1

現在、私たちのMLモデル(sci-kit経由)を実行時に使用するように訓練した後、それらを '.pkl'ファイルとして保存し、サーバの起動時にメモリに読み込みます。私の質問は2つ折りです:多くの機械学習モデル - 保存と読み込み

  1. もっと良い方法がありますか?最高の圧縮を使用した後、1つの.pklファイルが500MBのサイズに達します。私のモデルを他のより良いフォーマットで保存できますか?

  2. これをどのようにスケールするのですか?私はこのような.pklファイルをたくさん持っています(たとえば、1つのタスクで異なる言語の20個のモデルがあり、同様に5〜20個のモデルが5個あります)。そのような.pklファイルをすべて同時にロードすると、サービスはOOMになります。要求ごとに各.pklファイルをロード/アンロードすると、APIが遅くなり、許容できなくなります。どのようにスケールアップするか、選択可能なソリューションをロードするだけですか?

ありがとう!

+1

どのScikit-Learnモデルタイプを使用していますか? 500MBのピクルスファイルの圧縮されていないサイズは? Scikitの内部 - ほとんどの場合、Numpy行列があります。それらが密な行列か疎行列かチェックしましたか? – user1808924

答えて

0

ランダムフォレストのプルーニングなど、パフォーマンスをあまり低下させずにサイズを縮小できるモデルはいくつかあります。それ以外に、モデル自体を変更することなく(つまり複雑さを減らすことなく)モデルのメモリ内のサイズに対して行うことができることはあまりありません。

私はpickleライブラリの代わりにjoblibライブラリを試してみることをお勧めします。そこでは、 "compress"パラメータを使用して圧縮の強さを制御できます(読み込みに時間がかかる)。

ご使用のモデルのタイプが適切で具体的なアドバイスを提供できる場合もあることにご注意ください。