Python makine öğrenme modellerini saklamak için en iyi yöntemler


24

Makine öğrenimi modellerini kaydetmek, saklamak ve paylaşmak için en iyi uygulamalar nelerdir?

Python'da genel olarak turşu veya joblib kullanarak modelin ikili gösterimini saklıyoruz. Modeller, benim durumumda, ~ 100Mo büyük olabilir. Ayrıca, joblib ayarlanmadıkça bir modeli birden fazla dosyaya kaydedebilir compress=1( /programming/33497314/sklearn-dumping-model-using-joblib-dumps-multiple-files-which-one-is-the- kore ).

Ancak, modellere erişim haklarını kontrol etmek ve farklı makinelerden modelleri kullanabilmek istiyorsanız, bunları depolamanın en iyi yolu nedir?

Birkaç seçeneğim var:


Bunu yapmak için etkili bir yol buldunuz mu?
iNet,

Yanıtlar:



2

Yıllarca bu problemle (ve bugün hala yüzleşerek) karşılaştım. Gerçekten, ayrıntılı gereklilikler sağlamazsanız, ciddi bir cevap bekleyemeyeceğiniz bir şey. Kendimi işimden örneklerle açıklıyorum:

  • Hangi parametrelerin en iyi sonucu verdiğini bulmak için düzenli olarak aynı modelin birden fazla varyasyonunu deniyorum. Daha sonra değerlendirme için kullanılan bir çıktı üreten tek bir modeli eğitmek birkaç gün sürer. Bunu yapmak için, modelden basit bir NumPy dökümü yapıyorum, çünkü sunucular veya iş arkadaşları arasında paylaşılması kolay. Sadece modeliniz tarafından öğrenilen parametrelerden çok daha fazlasını (sınıf örnekleri, kütüphaneler ...) depoladığı için zor durumdan kaçınmalısınız. Python ortamı biraz farklılık gösterirse, modeli başka bir makineye almak işe yaramayabilir.

  • Üretimde bir modeli iterken, 1) bir sunucu arızası durumunda hızlı bir şekilde yükleyebileceğim bir model sürümüne ihtiyacım var (tipik olarak ikili bir biçim, yalnızca sinir ağının ağırlıkları gibi gerekli olanı depolar) ve 2) API istekleri ile hızlı bir şekilde başa çıkmak için model RAM içinde tutmak için bir yol.

İki farklı amaç için üç farklı formata ihtiyacım var. Sonra, daha genel olarak konuşursak, formatın seçimi kullandığınız araçlara bağlıdır. Örneğin, TensorFlow ile çalışıyorsanız, TensorFlow Sunum sistemi ile ilgilenebilirsiniz.


1

2 tane daha yaklaşım önermek istiyorum.

  1. Bunları doküman deposunda (örn. MongoDB) saklayın - bu yöntem, model dosyalarınız 16 MB'den (veya joblib parçaları) daha küçük olduğunda önerilir, ardından modeli ikili veri olarak depolayabilirsiniz. Buna ek olarak, bazı ML kütüphaneleri json (örn. LightGBM) içinde model ihracat ve ithalatını destekler, bu da onu belge depolamada depolamak için mükemmel bir aday yapar. Avantajlar : model oluşturma ve kolay erişimin kolay izlenmesi, Dezavantajlar : model nesnesi çok büyükse işler karışır.

  2. Modelinizi nesne deposunda saklayın (örn. Amazon S3) - Bu yöntem, eğer modelleriniz çok büyükse, bu durumda sınırsız depolama ve oldukça kolay API elde ederseniz, daha fazla ödersiniz, bu kesin. Avantajları : Sınırsız alan ve rastgele dosya formatlarını saklama yeteneği. Dezavantajları : maliyet ve doğru şekilde yapabilmek için kendi takip sisteminizi geliştirmeniz gerekir.

iyi şanslar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.