2015-07-31 4 views
5

मैं एक ऐसी साइट का निर्माण कर रहा हूं जो मशीन लर्निंग एल्गोरिदम के आउटपुट पर निर्भर करता है। साइट के उपयोगकर्ता के सामने वाले भाग के लिए आवश्यक सभी चीजें एल्गोरिदम (वस्तुओं के एक सेट के लिए कक्षा लेबल) का आउटपुट है, जिसे django मॉडल से आसानी से संग्रहीत और पुनर्प्राप्त किया जा सकता है। एल्गोरिदम दिन में एक बार चलाया जा सकता है, और उपयोगकर्ता इनपुट पर भरोसा नहीं करता है।django प्रोजेक्ट के विकास और उत्पादन भागों को अलग करना

तो साइट का यह हिस्सा केवल django और संबंधित पैकेज पर निर्भर करता है।

लेकिन विकास, ट्यूनिंग, और कलन विधि का मूल्यांकन का उपयोग करता है कई अन्य अजगर संकुल ऐसे scikit-learn, pandas, numpy, matplotlib, आदि के रूप यह भी वर्ग लेबल के कई अलग अलग सेट को सहेजने की आवश्यकता।

ये निर्भरता, जब heroku करने की तैनाती कुछ समस्याओं का कारण है क्योंकि numpyLAPACK/BLAS. की आवश्यकता है यह भी लगता है जैसे कि यह तैनात अनुप्रयोग में संभव के रूप में कुछ निर्भरता के लिए अच्छा अभ्यास हो जाएगा।

मैं मशीन-लर्निंग भाग को उपयोगकर्ता के सामने वाले हिस्से से अलग कैसे कर सकता हूं, लेकिन, अभी भी उन्हें पर्याप्त रूप से एकीकृत किया गया है कि एल्गोरिदम के परिणाम आसानी से उपयोग किए जाते हैं?

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

जहां तक ​​मैं समझता हूं, यह समस्या उत्पादन और विकास के लिए विभिन्न सेटिंग्स या डेटाबेस का उपयोग करने से थोड़ा अलग है, क्योंकि यह निर्भरताओं के विभिन्न सेटों के प्रबंधन के बारे में अधिक है।

+0

तुम्हें क्या लगता है डेटाबेस स्कीमा में निर्भरता और परिवर्तनों को प्रबंधित करना कोई समस्या है में से हर एक स्थापित करें? आपको वैसे भी उनके साथ सौदा करना है, है ना? –

+0

इसके अलावा, मुझे यकीन नहीं है कि आपका शीर्षक सटीक है या नहीं। साइट और एल्गोरिदम कोड दोनों की तरह लगता है उत्पादन में होगा। –

+0

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

उत्तर

3

बस ले जाने के क्या हम इस मामले में जवाब देने के लिए विचार-विमर्श किया लोगों को एक ही सवाल है, मेरा सुझाव है:

  1. कुछ समय को परिभाषित क्या आपकी साइट के लिए और कलन विधि कोड के लिए निर्भरता हैं बिताएं।

  2. निर्भरता सूची प्रत्येक प्रोजेक्ट के लिए requirements.txt में डंप करें।

  3. विभिन्न वातावरणों पर उन्हें तैनात करें ताकि विवाद न हो।

  4. Django Rest Framework या Tastypie का उपयोग करके अपनी साइट पर कुछ एपीआई अंतराल विकसित करें और एपीआई का उपयोग करके अपने एल्गोरिदम कोड को अपने मॉडल को अपडेट करने दें। अपने एल्गोरिदम कोड को नियमित रूप से चलाने और डेटा को धक्का देने के लिए cron का उपयोग करें।

1

प्रत्येक वातावरण के लिए एक आवश्यकता फ़ाइल बनाएं, और उन सभी संकुलों द्वारा साझा किए गए पैकेजों के लिए आधार आवश्यकता फ़ाइल बनाएं।

$ mkdir requirements 
$ pip freeze > requirements/base.txt 
$ echo "-r base.txt" > requirements/development.txt 
$ echo "-r base.txt" > requirements/production.txt 

फिर अपने विकास और उत्पादन निर्भरता समायोजित करने और उचित माहौल

#change to your development virtualenv 
#$source .virtualenvs/development/bin/activate 
$ pip install -r requirements/development.txt 

#change to your production virtualenv 
#$source .virtualenvs/production/bin/activate 
$ pip install -r requirements/production.txt 
संबंधित मुद्दे