किसी जटिल मॉडल को बार-बार सेट करने के लिए एक जटिल मॉडल को फिट करने पर मैं कम्प्यूटेशनल दक्षता को कैसे अनुकूलित कर सकता हूं?


12

मैं MCMCglmmमिश्रित प्रभाव मॉडल को चलाने के लिए R में पैकेज का उपयोग करके प्रदर्शन समस्याएँ कर रहा हूं । कोड इस तरह दिखता है:

MC1<-MCMCglmm(bull~1,random=~school,data=dt,family="categorical"
, prior=list(R=list(V=1,fix=1), G=list(G1=list(V=1, nu=0)))
, slice=T, nitt=iter, ,burnin=burn, verbose=F)

डेटा में लगभग 20,000 अवलोकन हैं और लगभग 200 स्कूलों में इनका समूह बनाया गया है। मैंने डेटाफ्रेम से सभी अप्रयुक्त चर को हटा दिया है और चलाने से पहले मेमोरी से अन्य सभी वस्तुओं को हटा दिया है। मेरे पास समस्या यह है कि इसे चलाने में बहुत लंबा समय लगता है, जब तक कि मैं अस्वीकार्य रूप से छोटी संख्या में पुनरावृत्तियों को कम नहीं करता। 50,000 पुनरावृत्तियों के साथ, इसमें 5 घंटे लगते हैं और मेरे पास चलाने के लिए कई अलग-अलग मॉडल हैं। इसलिए मैं जानना चाहूंगा कि क्या कोड निष्पादन में तेजी लाने के तरीके हैं, या अन्य पैकेज जो मैं उपयोग कर सकता हूं। मैं उपयोग MCMCglmmकर रहा हूं क्योंकि मैं यादृच्छिक प्रभावों के लिए आत्मविश्वास अंतराल चाहता हूं।

दूसरी ओर, मैं इस साल के अंत में एक नया पीसी प्राप्त करने की उम्मीद कर रहा था, लेकिन थोड़ी किस्मत के साथ मैं इसे आगे लाने में सक्षम हो सकता हूं, इसलिए मैं सोच रहा हूं कि नए हार्डवेयर पर सीमित मात्रा में सबसे अच्छा पैसा कैसे खर्च किया जाए - अधिक RAM , तेज CPU आदि कार्य प्रबंधक को देखने से मुझे विश्वास नहीं होता कि RAM मुद्दा है (यह कभी भी भौतिक उपयोग के 50% से ऊपर नहीं जाता है), लेकिन सीपीयू का उपयोग 50% से अधिक नहीं मिलता है, जो मुझे उतना ही अजीब लगता है । मेरा वर्तमान सेटअप एक इंटेल कोर i5 2.66GHz, 4GB रैम, 7200rpm HDD है। क्या अतिरिक्त रैम की कीमत पर केवल सबसे तेज़ सीपीयू प्राप्त करना उचित है? मैंने इस तरह की सांख्यिकीय कंप्यूटिंग समस्याओं पर स्तर 3 सीपीयू कैश आकार के प्रभाव के बारे में सोचा?

अद्यतन: मेटा SO पर पूछे जाने के बाद मुझे सुपरसुसर पर प्रश्न और पोस्ट को फिर से लिखने की सलाह दी गई है। ऐसा करने के लिए मुझे MCMCglmm में "हुड के नीचे" क्या चल रहा है, इसके बारे में अधिक जानकारी देने की आवश्यकता है। क्या मैं यह सोचने में सही हूं कि गणना के समय का थोक अनुकूलन करने में खर्च किया जाता है - मेरा मतलब है कि कुछ जटिल फ़ंक्शन का अधिकतम पता लगाना? मैट्रिक्स उलटा और / या अन्य रैखिक बीजगणित संचालन भी एक सामान्य ऑपरेशन है जो अड़चन पैदा कर सकता है? सुपरयूजर समुदाय को मैं जो भी अन्य जानकारी दे सकता हूं, वह सबसे अधिक आभारी होगी।


मुझे नहीं लगता कि एमसीएमसी को इस तरह की समस्याओं पर लंबा समय लगना चाहिए। मुझे यकीन है कि इसे तेजी से चलाने के तरीके शायद हैं। लेकिन सही जवाब देने में अभी भी समय लगने वाला है।
माइकल आर। चेरनिक

@ मिचेल चेरिक, धन्यवाद - मुझे पता है कि इसमें अभी भी समय लगेगा। मैं बस इसे जितना संभव हो कम से कम करना चाहूंगा, बस इतना ही। मेरे पिता के पास अपने काम में एक Oracle SPARC T4 है और यह MCMC काफी तेज चलता है;)
जो राजा

3
@JoeKing, मैंने आपके शीर्षक को अधिक वर्णनात्मक होने के लिए संपादित किया है और शायद अधिक उपयोगकर्ताओं को आकर्षित करता है जो आपकी सहायता कर सकते हैं। मैंने यह भी पाया है कि lmer()बड़े डेटा सेट के लिए फिटिंग मॉडल में काफी समय लग सकता है, खासकर यदि आपको इसे कई बार करने की आवश्यकता होती है। आपके प्रश्न का उत्तर समानांतर कंप्यूटिंग में हो सकता है, हालांकि अन्य उपयोगकर्ता (जैसे @DirkEddelbuettel) मेरे साथ इससे कहीं अधिक सहायक होंगे। वहाँ भी एक मौका है कि आप stackoverflow पर बेहतर जवाब मिल सकता है।
मैक्रों

मैक्रो, मददगार संपादन के लिए धन्यवाद। मैंने भी इस्तेमाल किया है glmer(जैसा कि आप मेरी अन्य पोस्ट्स से जानते हैं) और इसमें लगभग 20 सेकंड लगते हैं, लेकिन समस्या यह है कि यह आत्मविश्वास अंतराल या मानक त्रुटियां नहीं देता है, और जो मैं एक मेलिंग सूची पर पढ़ता हूं वह लेखक के संग्रह को प्रकाशित करता है। lme4पैकेज का कहना है कि यादृच्छिक प्रभावों का नमूना वितरण बहुत तिरछा हो सकता है, इसलिए उन आंकड़ों की सूचना नहीं है। वास्तव में मैंने MCMCglmmअभी तक पाया है कि मेरे मामले में वे सामान्य रूप से संपर्क कर रहे हैं (यह नहीं कि इससे बहुत मदद मिलती है - मैं सिर्फ कह रहा हूं)। क्या बेहतर होगा कि मैं इसे एसओ को स्थानांतरित करने का अनुरोध करूं?
जो राजा

1
मैं mcmcglmm की बारीकियों को नहीं जानता, लेकिन MCMC विधियों का भरपूर उपयोग किया है। MCMC के बारे में अच्छी बात यह है कि यह शर्मनाक समानांतर रूप से है (यह एक तकनीकी शब्द है!)। यदि आपके पास एक से अधिक कोर हैं, तो आप प्रत्येक पर स्वतंत्र श्रृंखला चलाते हैं और परिणाम पूल करते हैं। यह है कि मैं MCMC कैसे चलाता हूं, लेकिन मैंने इसे करने के लिए अपने समानांतर C ++ कोड (MPI का उपयोग करके) लिखा है। हार्डवेयर सलाह के संदर्भ में, संभव के रूप में कई कोर के साथ कुछ के लिए जाना। यह मानता है कि जो भी उपकरण आप उपयोग कर रहे हैं वह कई कोर का लाभ उठा सकता है। अपने प्रश्न में एसयू देने के लिए जानकारी के संदर्भ में, पता करें कि क्या आप कोर का उपयोग कर सकते हैं।
बोगदानोविस्ट

जवाबों:


3

इसे अमेज़न के EC2 क्लाउड-कंप्यूटिंग सेवा या ऐसी ही किसी सेवा पर क्यों नहीं चलाया जाता ? MCMCpackयदि मुझे सही ढंग से याद है, तो ज्यादातर सी में लागू किया गया है, इसलिए यह बहुत तेज़ी से नहीं चल रहा है जब तक कि आप अपने मॉडल की जटिलता, पुनरावृत्तियों आदि को कम नहीं करते हैं, ईसी 2 या इसी तरह के क्लाउड-कंप्यूटिंग सेवाओं के साथ, आप जो भी हो उस पर कई उदाहरण हो सकते हैं आपकी इच्छा के अनुसार चश्मा, और एक बार में अपने सभी मॉडल चलाएं।


इसका एक संशोधन: m2.4xlarge (68.7GB RAM विकल्प) पर चलना यह गारंटी देने का एकमात्र तरीका है कि आपको पूर्ण मशीन मिल रही है, ताकि आप VM कैशिंग (वर्चुअल मशीन) पर होने वाली RAM कैशिंग समस्याओं से न टकराएं। / एएमआई) जो मशीन के एक अंश पर चलते हैं।
अपराह्न
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.