EC2 का उपयोग करते समय उदाहरण बनाम कोर


12

जिसे अक्सर "मध्यम डेटा" प्रोजेक्ट कहा जा सकता था, उस पर काम करते हुए, मैं अपने कोड (ज्यादातर मॉडलिंग और पाइथन में भविष्यवाणी) के लिए 4 से 32 कोर तक कहीं भी एक ही सिस्टम पर समानांतर करने में सक्षम रहा हूं। अब मैं EC2 (शायद StarCluster / IPython के साथ, लेकिन साथ ही अन्य सुझावों के लिए खुला) पर क्लस्टर्स तक स्केलिंग देख रहा हूं, और एक क्लस्टर पर उदाहरणों बनाम डांस पर कोरस में काम का सामंजस्य स्थापित करने के तरीके से हैरान हूं।

क्या यह उदाहरणों के साथ-साथ प्रत्येक उदाहरण पर कोर के पार समानांतर करने के लिए भी व्यावहारिक है? यदि हां, तो क्या कोई व्यक्ति कुछ कोर के साथ कई उदाहरणों को चलाने के पेशेवरों + विपक्षों की त्वरित गति प्रदान कर सकता है? क्या प्रति उदाहरण कोर के लिए उदाहरणों का सही अनुपात चुनने के लिए अंगूठे का नियम है?

बैंडविड्थ और रैम मेरी परियोजनाओं में गैर-तुच्छ चिंताएं हैं, लेकिन यह आसान है जब उन अड़चनों और आसानी से पढ़े जाते हैं। यह बहुत कठिन है, मैं कल्पना करूँगा कि बार-बार परीक्षण किए बिना उदाहरणों के लिए कोर के सही मिश्रण को बेंचमार्क करना, और मेरी परियोजनाएं सभी परिस्थितियों पर लागू होने के लिए किसी भी एक परीक्षण के लिए बहुत भिन्न होती हैं। अग्रिम धन्यवाद, और अगर मैं अभी इसे ठीक से Google करने में विफल रहा हूं, तो मुझे कहीं और सही उत्तर देने के लिए स्वतंत्र महसूस करें!

जवाबों:


11

आईपीथॉन का उपयोग करते समय, आपको इसके बारे में चिंता करने की ज़रूरत नहीं है (दक्षता / अधिक संचार ओवरहेड के कुछ नुकसान की कीमत पर)। StarCluster में समानांतर IPython प्लगइन डिफ़ॉल्ट रूप से प्रत्येक नोड पर भौतिक कोर प्रति एक इंजन शुरू करेगा (मेरा मानना ​​है कि यह कॉन्फ़िगर करने योग्य है लेकिन निश्चित नहीं है कि कहां)। आप सिर्फ DirectView api (map_sync, apply_sync, ...) या% px मैजिक कमांड का उपयोग करके सभी इंजनों में जो कुछ भी चाहते हैं उसे चलाते हैं। यदि आप पहले से ही एक मशीन पर समानांतर में IPython का उपयोग कर रहे हैं, तो क्लस्टर पर इसका उपयोग करना अलग नहीं है।

आपके कुछ विशिष्ट प्रश्नों को संबोधित करते हुए:

"उदाहरण के लिए एक क्लस्टर पर उदाहरणों बनाम उदाहरणों में काम को वितरित करने के लिए कैसे सामंजस्य स्थापित करें" - आपको प्रति कोर एक इंजन मिलता है (कम से कम); काम सभी कोर और सभी उदाहरणों में स्वचालित रूप से वितरित किया जाता है।

"यह उदाहरणों के साथ-साथ प्रत्येक उदाहरण पर कोर के पार समानांतर करने के लिए भी व्यावहारिक है?" - हां :) यदि आप जो कोड चला रहे हैं वह शर्मनाक रूप से समानांतर है (कई डेटा सेट पर एक ही समान अहंकार) तो आप ज्यादातर अनदेखा कर सकते हैं जहां एक विशेष इंजन चल रहा है। यदि कोर को इंजनों के बीच बहुत अधिक संचार की आवश्यकता होती है, तो निश्चित रूप से आपको इसे संरचना करने की आवश्यकता है ताकि इंजन मुख्य रूप से उसी भौतिक मशीन पर अन्य इंजनों के साथ संवाद करें; लेकिन उस तरह की समस्या आइपीथॉन के लिए आदर्श रूप से अनुकूल नहीं है, मुझे लगता है।

"यदि ऐसा है, तो क्या कोई भी कुछ कोर के साथ कई उदाहरणों को चलाने के पेशेवरों + विपक्षों का त्वरित रडाउन दे सकता है। कई कोर के साथ कुछ उदाहरण हैं? क्या प्रति उदाहरण कोर के लिए उदाहरणों का सही अनुपात चुनने के लिए अंगूठे का नियम है? " - कम्प्यूट-बाउंड के लिए सबसे बड़े c3 इंस्टेंस का उपयोग करें, और मेमोरी-बैंडविड्थ-बाउंड समस्याओं के लिए सबसे छोटा; संदेश-पास-बाउंड समस्याओं के लिए, सबसे बड़े उदाहरणों का भी उपयोग करें लेकिन समस्या को विभाजित करने का प्रयास करें ताकि प्रत्येक विभाजन एक भौतिक मशीन पर चले और अधिकांश संदेश गुजरना एक ही विभाजन के भीतर हो। 2N डबल c3 की तुलना में N चौगुनी c3 आवृत्तियों पर काफी धीमी गति से चलने वाली समस्याएं दुर्लभ हैं (एक कृत्रिम उदाहरण बड़ी संख्या में छवियों पर कई सरल फ़िल्टर चला सकता है, जहां आप प्रत्येक फ़िल्टर के बजाय सभी फ़िल्टर के लिए सभी छवियों के माध्यम से जाते हैं एक ही छवि)।


1
मुझे लगता है कि आपको ध्यान देना चाहिए कि किसी एक मशीन पर प्रक्रियाओं के लिए आप जॉबलिब / नेम्पी के साथ मानचित्र चर याद कर सकते हैं। आप विभिन्न मशीनों पर प्रक्रियाओं की क्षमता खो देते हैं।
गैलीन

11

अंगूठे का एक सामान्य नियम यह है कि जब तक आपको वितरित नहीं करना है। यह आमतौर पर उस क्षमता के 2N सर्वरों की तुलना में एक निश्चित क्षमता के एन सर्वर के लिए अधिक कुशल है। अधिक डेटा एक्सेस स्थानीय होगा, और इसलिए पूरे नेटवर्क में मेमोरी बनाम फास्ट।

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

अमेज़ॅन पर विशेष रूप से हालांकि, प्रत्येक उदाहरण प्रकार का अर्थशास्त्र बहुत भिन्न हो सकता है यदि आप स्पॉट मार्केट इंस्टेंस का उपयोग कर रहे हैं। डिफ़ॉल्ट मूल्य निर्धारण अधिक या कम का मतलब है कि संसाधन की समान मात्रा का उदाहरण की परवाह किए बिना उसी के बारे में खर्च होता है, जो बहुत भिन्न हो सकते हैं; बड़े उदाहरण छोटे लोगों की तुलना में सस्ते हो सकते हैं, या एन छोटे उदाहरण समकक्ष संसाधनों के साथ एक बड़ी मशीन की तुलना में बहुत सस्ते हो सकते हैं।

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

आप एक क्लस्टर में काम वितरित करने का विकल्प चुन सकते हैं, भले ही विश्वसनीयता के लिए एक नोड और गैर-वितरित प्रतिमान आपके लिए काम करते हैं। यदि एक भी नोड विफल रहता है, तो आप सभी संगणना खो देते हैं; एक वितरित संगणना संभावित रूप से पुनर्प्राप्त हो सकती है और खोए हुए अभिकलन के हिस्से को पूरा कर सकती है।


6

सभी चीजों को समान माना जाता है (लागत, सीपीयू परफेक्ट, आदि) आप सबसे छोटा उदाहरण चुन सकते हैं जो स्मृति और स्केल में मेरे सभी डेटासेट को पकड़ सकता है। उस तरफ

  • आप यह सुनिश्चित करते हैं कि नेटवर्क संचार के कारण अनावश्यक विलंबता उत्पन्न न करें, और
  • आप अपनी प्रक्रियाओं के लिए अधिकतम उपलब्ध मेमोरी बैंडविड्थ को अधिकतम करते हैं।

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

यदि आपका डेटा एक सिस्टम की मेमोरी में फिट नहीं होता है, तो निश्चित रूप से आपको इंस्टेंसेस को वितरित करना होगा। फिर यह नेटवर्क विलंबता (कम उदाहरणों के साथ बेहतर) के साथ मेमोरी लेटेंसी (कई उदाहरणों के साथ बेहतर) को संतुलित करने की बात है, लेकिन ईसी 2 की प्रकृति को देखते हुए मैं शर्त लगाता हूं कि आप अक्सर कुछ वसा उदाहरणों के साथ काम करना पसंद करेंगे।

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