विशाल डेटा के लिए अजगर में टी-स्नेन कार्यान्वयन की गति में सुधार


18

मैं 200 आयामों ( doc2vec) के साथ लगभग 1 मिलियन वैक्टर पर आयामी कटौती करना चाहूंगा । मैं इसके लिए मॉड्यूल TSNEसे कार्यान्वयन का उपयोग कर रहा हूं sklearn.manifoldऔर प्रमुख समस्या समय जटिलता है। यहां तक ​​कि method = barnes_hut, संगणना की गति अभी भी कम है। कुछ समय के लिए भी यह मेमोरी से बाहर चला जाता है।

मैं इसे 130G रैम के साथ 48 कोर प्रोसेसर पर चला रहा हूं। क्या यह प्रक्रिया को गति देने के लिए इसे समानांतर रूप से चलाने या बहुतायत संसाधन का उपयोग करने की एक विधि है।


क्या आपने स्पार्क जैसे ढांचे में मैप-रिड्यूसिंग की कोशिश की?
Dawny33

नहीं .. यह कैसे काम करता है और क्या आप कृपया मुझे निर्देशित कर सकते हैं ..
यजीह

Pl के माध्यम से जाने स्पार्क के प्रलेखन :) यह समझने के लिए
Dawny33

1
देखें कि क्या यह स्पार्क कार्यान्वयन काम करता है।
एमेर

1
यह स्पार्क के लिए स्काला है। यदि आप एक अजगर कार्यान्वयन चाहते हैं तो आप इसका अनुवाद करने में सक्षम हो सकते हैं; स्पार्क अजगर पर भी चलता है।
Emre

जवाबों:



7

एफएफटी-त्वरित इंटरपोलेशन-आधारित टी-एसएनई ( पेपर , कोड और पायथन पैकेज ) देखें।

सार से:

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

पेपर में एक लाख अंक और 100 आयाम (ओपी की सेटिंग के समान) के साथ एक डेटासेट का एक उदाहरण भी शामिल है, और इसमें ~ 1 घंटा लगता है।


5

चूंकि, SO में कोई उत्तर नहीं है, इसलिए मैंने खुद को github पृष्ठ पर पूछा है और GaelVaroquaux द्वारा निम्नलिखित उत्तर को बताते हुए मुद्दा बंद कर दिया गया है।

यदि आप केवल वेक्टर ऑपरेशन को समानांतर बनाना चाहते हैं, तो आपको एमकेएल के साथ संकलित निर्माण का उपयोग करना चाहिए (इसे स्वयं करने का प्रयास न करें, यह चुनौतीपूर्ण है)।

एल्गोरिथ्म में ही उच्च-स्तरीय समानता के दृष्टिकोण हो सकते हैं, जिससे संभवतः बड़ा लाभ होगा। हालाँकि, कोड पर त्वरित नज़र डालने के बाद, मुझे ऐसा करने का कोई स्पष्ट तरीका नहीं दिखाई दिया।

मैं इस मुद्दे को आगे बढ़ाने और बंद करने जा रहा हूं, क्योंकि यह ब्लू-स्काई व्हिश सूची से अधिक है। मैं पूरी तरह से सहमत हूं, मैं TSNE को तेजी से जाना चाहूंगा, और यह बहुत अच्छा होगा कि समानांतरवाद आसान था। लेकिन वर्तमान स्थिति में, ऐसी स्थिति में अधिक काम करने की आवश्यकता होती है जहां हम ऐसी इच्छा सूची से निपट सकते हैं।


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