पायथन मशीन लर्निंग मॉडल को स्टोर करने के लिए सर्वोत्तम अभ्यास


24

मशीन लर्निंग मॉडल को बचाने, स्टोर करने और साझा करने के लिए सबसे अच्छे अभ्यास क्या हैं?

पायथन में, हम आमतौर पर अचार या जॉबलिब का उपयोग करके मॉडल के द्विआधारी प्रतिनिधित्व को संग्रहीत करते हैं। मॉडल, मेरे मामले में, ~ 100 बड़ा हो सकता है। इसके अलावा, जॉबलिब एक मॉडल को कई फाइलों में सेव कर सकती है जब तक कि आप सेट न करेंcompress=1 ( /programming/33497314/sklearn-dumping-model-use-joblib-dumps-multiple-files-which-one-is-the- corre ) का प्रयोग करें।

लेकिन फिर, यदि आप मॉडल के उपयोग के अधिकार को नियंत्रित करना चाहते हैं, और विभिन्न मशीनों से मॉडल का उपयोग करने में सक्षम हैं, तो उन्हें संग्रहीत करने का सबसे अच्छा तरीका क्या है?

मेरे पास कुछ विकल्प हैं:


क्या आपको ऐसा करने का एक कुशल तरीका मिला?
INet

जवाबों:



2

मैंने कई वर्षों तक इस समस्या का सामना किया (और आज भी इसका सामना करता हूं)। मैं वास्तव में बात करता हूं, यदि आप विस्तृत आवश्यकताओं को प्रदान नहीं करते हैं, तो आप एक गंभीर जवाब की उम्मीद नहीं कर सकते। मैं अपने काम के उदाहरणों के साथ खुद को समझाता हूं:

  • मैं नियमित रूप से एक ही मॉडल के कई रूपों को खोजने की कोशिश करता हूं कि कौन सा पैरामीटर सबसे अच्छा काम करता है। एक एकल मॉडल को प्रशिक्षित करने में कई दिन लगते हैं जो कुछ आउटपुट का उत्पादन करता है जिसे बाद में मूल्यांकन के लिए उपयोग किया जाता है। ऐसा करने के लिए, मैं मॉडल का एक सरल NumPy डंप बनाता हूं क्योंकि यह सर्वर, या सहकर्मियों के बीच साझा करना आसान है। आपको अचार से बचना चाहिए क्योंकि यह आपके मॉडल द्वारा सीखे गए मापदंडों की तुलना में बहुत अधिक (वर्ग, पुस्तकालयों ...) के उदाहरणों को संग्रहीत करता है। यदि पायथन वातावरण थोड़ा भिन्न होता है तो मॉडल को दूसरी मशीन पर आयात करना काम नहीं कर सकता है।

  • जब एक मॉडल को उत्पादन में धकेल दिया जाता है, तो मुझे 1) मॉडल के एक संस्करण की आवश्यकता होती है जिसे मैं सर्वर ब्रेकडाउन के मामले में तेजी से लोड कर सकता हूं (आम तौर पर एक द्विआधारी प्रारूप, केवल एक आवश्यक स्टोरिंग जैसे कि एक तंत्रिका नेटवर्क का वजन) और 2) एपीआई अनुरोध के साथ जल्दी से निपटने के लिए मॉडल-रैम रखने का तरीका।

दो अलग-अलग उद्देश्यों के लिए, मुझे तीन अलग-अलग स्वरूपों की आवश्यकता है। फिर, अधिक आम तौर पर बोलना, प्रारूप का विकल्प आपके द्वारा उपयोग किए जाने वाले उपकरणों पर निर्भर करता है। उदाहरण के लिए, यदि आप TensorFlow के साथ काम करते हैं, तो आप उनके TensorFlow सर्विंग सिस्टम में रुचि रख सकते हैं


1

मैं 2 और दृष्टिकोण सुझाना चाहूंगा।

  1. उन्हें डॉक्यूमेंट स्टोरेज में स्टोर करें (जैसे। mongoDB) - यह तरीका तब सुझाया जाता है जब आपकी मॉडल फाइलें कम होती हैं तब 16Mb (या जॉबलिब शार्क) होती हैं, तब आप मॉडल को बाइनरी डेटा के रूप में स्टोर कर सकते हैं। इसके अलावा, कुछ ML लाइब्रेरीज़ json (उदा। LightGBM) में मॉडल एक्सपोर्ट और इम्पोर्ट का समर्थन करती हैं, जो इसे डॉक्यूमेंट स्टोरेज में स्टोरेज के लिए एक आदर्श उम्मीदवार बनाती है। लाभ : मॉडल निर्माण की आसान ट्रैकिंग और आसान पहुंच, नुकसान : मॉडल ऑब्जेक्ट बहुत बड़ा होने पर चीजें गड़बड़ हो जाएंगी।

  2. अपने मॉडल को ऑब्जेक्ट स्टोरेज पर स्टोर करें (उदाहरण के लिए अमेज़ॅन एस 3) - यदि आपके मॉडल बहुत बड़े हैं, तो यह तरीका अच्छा है, इस मामले में आपको असीमित स्टोरेज और काफी आसान एपीआई मिलती है, आप अधिक भुगतान करते हैं, यह सुनिश्चित करने के लिए है। लाभ : असीमित स्थान और मनमाने फ़ाइल स्वरूपों को संग्रहीत करने की क्षमता। नुकसान : लागत, और तथ्य यह है कि इसे सही करने के लिए आपको अपना स्वयं का ट्रैकिंग सिस्टम विकसित करना होगा।

सौभाग्य!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.