2011-07-13 4 views
6

मुझे कुछ भारी मशीन सीखने की गणना करने की आवश्यकता है। मेरे पास एक लैन पर मशीनों की एक छोटी संख्या है। इन वितरित ढांचे के बिना एक मशीन पर चलने से हदूप/मैप्रिडस/माहाउट का उपयोग करके मेरे कंप्यूटेशंस को विचलित करने के लिए मुझे कितनी मशीनों की आवश्यकता होगी? यह कम्प्यूटेशनल ओवरहेड बनाम लाभ का व्यावहारिक प्रश्न है क्योंकि मैं केवल 2 मशीनों के बीच वितरण करना मानता हूं, समग्र समय वितरित करने और बस एक मशीन पर चलने से भी बदतर होगा (सिर्फ गणनाओं को वितरित करने के लिए शामिल सभी ओवरहेड के कारण)।प्रैक्टिस में, हडोप/मैपराइडस/महॉट के लिए बहुत समांतर कंप्यूटेशंस को गति देने के लिए आपको कितनी मशीनों की आवश्यकता है?

तकनीकी नोट: कुछ भारी गणना बहुत समानांतर हैं। उनमें से सभी तब तक हैं जब तक प्रत्येक मशीन में कच्चे डेटा की अपनी प्रति होती है।

+0

स्ट्रिंग का एक टुकड़ा कितना समय है? –

+0

@ शगी मेंढक, जेफ फोस्टर। क्षमा करें, मैं पहले स्पष्ट नहीं था। सवाल यह नहीं था कि "यह कितनी तेज़ी से जा सकता है", यह था कि "धीमे या बस तोड़ने के बजाए मुझे कितनी मशीनों की आवश्यकता होगी।" यही है, यह हैडूप, नक्शा कम करने, महोत्सव चलाने की कम्प्यूटेशनल लागत के बारे में था। अधिक स्पष्ट नहीं होने के लिए मेरी गलती। –

उत्तर

8

एक "सादा" जावा प्रोग्राम और एक हैडोप-आधारित, मैपरेडस-आधारित कार्यान्वयन बहुत अलग जानवर हैं और इसकी तुलना करना मुश्किल है। ऐसा नहीं है जैसे हडोप आपके कार्यक्रम का थोड़ा सा समानांतर है; यह एक पूरी तरह से अलग रूप में ऊपर से नीचे के रूप में लिखा गया है।

हैडोप का ओवरहेड है: नौकरी शुरू करने के ऊपर, और मैपर और रेड्यूसर जैसे श्रमिकों को शुरू करना। इसमें डेटा को क्रमबद्ध/deserializing खर्च, इसे स्थानीय रूप से लिखने, और इसे एचडीएफएस में स्थानांतरित करने में बहुत अधिक समय लगता है।

एक हडोप-आधारित कार्यान्वयन हमेशा अधिक संसाधनों का उपभोग करेगा। तो, यह तब तक बचने के लिए कुछ है जब तक आप इससे बच नहीं सकते। यदि आप एक मशीन पर एक गैर-वितरित गणना चला सकते हैं, तो सबसे सरल व्यावहारिक सलाह वितरित नहीं करना है। खुद को परेशानी बचाओ।

महाउट अनुशंसार्थियों के मामले में, मैं आपको बता सकता हूं कि बहुत ही क्रूरता से, एक हैडोप नौकरी एक ही डेटा पर एक गैर-वितरित कार्यान्वयन की तुलना में 2-4x अधिक गणना करता है। जाहिर है कि एल्गोरिदम और अल्गो ट्यूनिंग विकल्पों पर अत्यधिक निर्भर करता है। लेकिन आपको एक नंबर देने के लिए: मैं 4 से कम मशीनों के एक हडोप क्लस्टर से परेशान नहीं होगा।

जाहिर है, अगर आपकी गणना आपके मशीनों में से किसी एक पर फिट नहीं हो सकती है, तो आपके पास वितरित करने के अलावा कोई विकल्प नहीं है। फिर ट्रेडऑफ किस तरह की दीवार घड़ी का समय है जिससे आप बना सकते हैं कि आप कितनी कंप्यूटिंग शक्ति समर्पित कर सकते हैं। अमाहल के कानून का संदर्भ सही है, हालांकि यह हडोप के महत्वपूर्ण उपरांत पर विचार नहीं करता है। उदाहरण के लिए, एन तरीकों को समानांतर करने के लिए, आपको कम से कम एन मैपर/रेड्यूसर की आवश्यकता होती है, और प्रति-मैपर/रेड्यूसर ओवरहेड एन बार लेना पड़ता है। कुछ निश्चित स्टार्टअप/शटडाउन समय भी है।

6

देखें Amdahl's Law

Amdahl का कानून धारावाहिक एल्गोरिथ्म के लिए एक एल्गोरिथ्म रिश्तेदार के parallelized कार्यान्वयन की उम्मीद speedup के बीच के रिश्ते, इस धारणा के तहत के लिए एक मॉडल है कि इस समस्या का आकार एक ही रहता है जब parallelized। उदाहरण के लिए, यदि किसी दिए गए समस्या के आकार के लिए एल्गोरिदम का समानांतर कार्यान्वयन एल्गोरिदम के संचालन के 12% को मनमाने ढंग से जल्दी चला सकता है (जबकि शेष 88% संचालन समानांतर नहीं हैं), अमाहल के कानून में कहा गया है कि समांतर संस्करण की अधिकतम गति गैर-समांतर कार्यान्वयन के रूप में तेज़ी से 1/(1 - 0.12) = 1.136 गुना है।

Picture of Equation

बारीकियों के बिना यह एक अधिक विस्तृत जवाब देने के लिए मुश्किल है।

1

मुझे पता है कि इसका पहले से ही उत्तर दिया गया है, लेकिन मैं अपनी टोपी अंगूठी में फेंक दूंगा। मैं आपको अंगूठे का सामान्य नियम नहीं दे सकता।प्रदर्शन वृद्धि वास्तव में कई कारकों पर निर्भर करती है:

  1. समांतर/परस्पर अनन्य सभी घटकों/एल्गोरिदम/हैं।
  2. डाटासेट
  3. डाटासेट [बंटवारे/मानचित्रण सहित, और कम करने/concatinating]
  4. नेटवर्क ट्रैफ़िक पहले और बाद के प्रसंस्करण के आकार

आप की तरह एक अत्यधिक जुड़ा एल्गोरिथ्म है एक बेयस नेट, तंत्रिका जाल, मार्कोव, पीसीए, और ईएम तो हैडूप प्रोग्राम के बहुत सारे समय को संसाधित, विभाजित और पुन: संयोजित करने के उदाहरण मिलेंगे। [मान लीजिए कि आपके पास प्रति उदाहरण बड़ी संख्या में नोड्स हैं (1 से अधिक मशीन संभाल सकते हैं)। यदि आपके पास ऐसी स्थिति है तो नेटवर्क यातायात एक समस्या से अधिक हो जाएगा।

यदि आपके पास पथ खोज, या नकली एनीलिंग जैसे एगोरिदम हैं, तो अपने स्वयं के मानचित्र में अलग-अलग उदाहरणों को आसान करना/नौकरी कम करना आसान है। इस प्रकार के एल्गोरिदम बहुत जल्दी हो सकते हैं।

0

एक और पहलू यह है कि आप बाधाएं हैं जो आपको मैड्रिडस का उपयोग करने के लिए मजबूर करती हैं। यदि आपके पास अपनी एकल मशीन में उचित डेटा आकार अच्छा है और आप केवल गति बढ़ाने की जांच करते हैं तो आप GPU कार्यान्वयन का उपयोग करना पसंद कर सकते हैं। वे आशाजनक परिणामों के साथ एक मशीन में भी सेटअप और उपयोग करना आसान है।

संबंधित मुद्दे

 संबंधित मुद्दे