TensorFlow कोड में योगदान करें

चाहे आप हानि फ़ंक्शन जोड़ रहे हों, परीक्षण कवरेज में सुधार कर रहे हों, या किसी बड़े डिज़ाइन परिवर्तन के लिए RFC लिख रहे हों, योगदानकर्ता मार्गदर्शिका का यह भाग आपको आरंभ करने में मदद करेगा। TensorFlow को बेहतर बनाने में आपके काम और रुचि के लिए धन्यवाद।

आरंभ करने से पहले

इससे पहले कि आप TensorFlow प्रोजेक्ट में स्रोत कोड का योगदान करें, कृपया प्रोजेक्ट के GitHub रेपो में CONTRIBUTING.md फ़ाइल की समीक्षा करें। उदाहरण के लिए, कोर TensorFlow रेपो में CONTRIBUTING.md फ़ाइल देखें। सभी कोड योगदानकर्ताओं को एक योगदानकर्ता लाइसेंस समझौते (सीएलए) पर हस्ताक्षर करना आवश्यक है।

कार्य की नकल से बचने के लिए, कृपया वर्तमान या प्रस्तावित आरएफसी की समीक्षा करें और किसी गैर-तुच्छ सुविधा पर काम शुरू करने से पहले TensorFlow मंचों ( डेवलपर्स@tensorflow.org ) पर डेवलपर्स से संपर्क करें। नई कार्यक्षमता जोड़ने का निर्णय लेते समय हम कुछ हद तक चयनात्मक होते हैं, और परियोजना में योगदान देने और मदद करने का सबसे अच्छा तरीका ज्ञात मुद्दों पर काम करना है।

नए योगदानकर्ताओं के लिए मुद्दे

नए योगदानकर्ताओं को TensorFlow कोड बेस में पहला योगदान खोजते समय निम्नलिखित टैग देखना चाहिए। हम दृढ़तापूर्वक अनुशंसा करते हैं कि नए योगदानकर्ता पहले "अच्छे पहले मुद्दे" और "योगदान का स्वागत" परियोजनाओं से निपटें; इससे योगदानकर्ता को योगदान वर्कफ़्लो से परिचित होने में मदद मिलती है, और मुख्य डेवलपर्स को योगदानकर्ता से परिचित होने में मदद मिलती है।

यदि आप बड़े पैमाने की समस्या या नई सुविधा से निपटने में मदद के लिए एक टीम की भर्ती में रुचि रखते हैं, तो कृपया डेवलपर्स @ समूह को ईमेल करें और आरएफसी की हमारी वर्तमान सूची की समीक्षा करें।

को़ड समीक्षा

नई सुविधाएँ, बग समाधान और कोड आधार में कोई भी अन्य परिवर्तन कोड समीक्षा के अधीन हैं।

पुल अनुरोधों के रूप में प्रोजेक्ट में योगदान किए गए कोड की समीक्षा करना TensorFlow विकास का एक महत्वपूर्ण घटक है। हम किसी को भी अन्य डेवलपर्स द्वारा सबमिट किए गए कोड की समीक्षा शुरू करने के लिए प्रोत्साहित करते हैं, खासकर यदि सुविधा कुछ ऐसी है जिसका आप उपयोग करने की संभावना रखते हैं।

कोड समीक्षा प्रक्रिया के दौरान ध्यान में रखने योग्य कुछ प्रश्न यहां दिए गए हैं:

  • क्या हम इसे TensorFlow में चाहते हैं? क्या इसका उपयोग किये जाने की संभावना है? क्या आप, एक TensorFlow उपयोगकर्ता के रूप में, परिवर्तन को पसंद करते हैं और इसका उपयोग करने का इरादा रखते हैं? क्या यह परिवर्तन TensorFlow के दायरे में है? क्या किसी नई सुविधा को बनाए रखने की लागत उसके लाभों के लायक होगी?
  • क्या कोड TensorFlow API के अनुरूप है? क्या सार्वजनिक कार्यों, कक्षाओं और मापदंडों को अच्छी तरह से नामित और सहज रूप से डिज़ाइन किया गया है?
  • क्या इसमें दस्तावेज़ीकरण शामिल है? क्या सभी सार्वजनिक कार्यों, वर्गों, मापदंडों, रिटर्न प्रकारों और संग्रहीत विशेषताओं को TensorFlow सम्मेलनों के अनुसार नामित किया गया है और स्पष्ट रूप से प्रलेखित किया गया है? क्या नई कार्यक्षमता TensorFlow के दस्तावेज़ में वर्णित है और जब भी संभव हो, उदाहरणों के साथ चित्रित की गई है? क्या दस्तावेज़ीकरण ठीक से प्रस्तुत होता है?

  • क्या कोड मानव-पठनीय है? क्या इसमें अतिरेक कम है? क्या स्पष्टता या एकरूपता के लिए परिवर्तनीय नामों में सुधार किया जाना चाहिए? क्या टिप्पणियाँ जोड़ी जानी चाहिए? क्या किसी भी टिप्पणी को अनुपयोगी या अप्रासंगिक मानकर हटा दिया जाना चाहिए?

  • क्या कोड कुशल है? क्या इसे अधिक कुशलता से चलाने के लिए आसानी से दोबारा लिखा जा सकता है?

  • क्या कोड TensorFlow के पिछले संस्करणों के साथ बैकवर्ड संगत है?

  • क्या नया कोड अन्य पुस्तकालयों पर नई निर्भरताएँ जोड़ेगा?

परीक्षण करें और परीक्षण कवरेज में सुधार करें

उच्च गुणवत्ता वाली इकाई परीक्षण TensorFlow विकास प्रक्रिया की आधारशिला है। इस उद्देश्य के लिए, हम डॉकर छवियों का उपयोग करते हैं। परीक्षण कार्यों को उचित रूप से नामित किया गया है, और वे एल्गोरिदम की वैधता के साथ-साथ कोड के विभिन्न विकल्पों की जांच करने के लिए जिम्मेदार हैं।

सभी नई सुविधाओं और बग फिक्स में पर्याप्त परीक्षण कवरेज शामिल होना चाहिए । हम नए परीक्षण मामलों के योगदान या मौजूदा परीक्षणों में सुधार का भी स्वागत करते हैं। यदि आपको पता चलता है कि हमारे मौजूदा परीक्षण पूरे नहीं हुए हैं - भले ही वह वर्तमान में बग का कारण नहीं बन रहा हो - कृपया एक समस्या दर्ज करें और, यदि संभव हो तो, एक पुल अनुरोध दर्ज करें।

प्रत्येक TensorFlow प्रोजेक्ट में परीक्षण प्रक्रियाओं के विशिष्ट विवरण के लिए, GitHub पर प्रोजेक्ट रेपो में README.md और CONTRIBUTING.md फ़ाइलें देखें।

पर्याप्त परीक्षण में विशेष चिंताएँ:

  • क्या प्रत्येक सार्वजनिक समारोह और कक्षा का परीक्षण किया जाता है?
  • क्या मापदंडों, उनके मूल्यों, मूल्य प्रकारों और संयोजनों का उचित सेट परीक्षण किया गया है?
  • क्या परीक्षण सत्यापित करते हैं कि कोड सही है , और यह वही कर रहा है जो दस्तावेज़ कहता है कि कोड करने का इरादा है?
  • यदि परिवर्तन बग फिक्स है, तो क्या गैर-प्रतिगमन परीक्षण शामिल है?
  • क्या परीक्षण निरंतर एकीकरण बिल्ड को पास करते हैं ?
  • क्या परीक्षण कोड की प्रत्येक पंक्ति को कवर करते हैं? यदि नहीं, तो क्या अपवाद उचित और स्पष्ट हैं?

यदि आपको कोई समस्या मिलती है, तो कृपया योगदानकर्ता को उन समस्याओं को समझने और उनका समाधान करने में मदद करने पर विचार करें।

त्रुटि संदेश या लॉग सुधारें

हम उन योगदानों का स्वागत करते हैं जो त्रुटि संदेशों और लॉगिंग में सुधार करते हैं।

योगदान कार्यप्रवाह

कोड योगदान—बग समाधान, नया विकास, परीक्षण सुधार—सभी GitHub-केंद्रित वर्कफ़्लो का पालन करते हैं। TensorFlow विकास में भाग लेने के लिए, एक GitHub खाता स्थापित करें। तब:

  1. जिस रेपो पर आप काम करने की योजना बना रहे हैं उसे फोर्क करें। प्रोजेक्ट रेपो पेज पर जाएं और फोर्क बटन का उपयोग करें। यह आपके उपयोगकर्ता नाम के अंतर्गत रेपो की एक प्रति बनाएगा। (रिपॉजिटरी को फोर्क करने के तरीके के बारे में अधिक जानकारी के लिए यह गाइड देखें।)

  2. रेपो को अपने स्थानीय सिस्टम पर क्लोन करें।

    $ git clone git@github.com:your-user-name/project-name.git

  3. अपना काम संभालने के लिए एक नई शाखा बनाएं।

    $ git checkout -b new-branch-name

  4. अपने नए कोड पर काम करें. परीक्षण लिखें और चलाएँ.

  5. अपने परिवर्तन प्रतिबद्ध करें.

    $ git add -A

    $ git commit -m "commit message here"

  6. अपने परिवर्तनों को अपने GitHub रेपो में पुश करें।

    $ git push origin branch-name

  7. एक पुल अनुरोध (पीआर) खोलें। GitHub पर मूल प्रोजेक्ट रेपो पर जाएँ। आपकी हाल ही में शुरू की गई शाखा के बारे में एक संदेश आएगा, जिसमें पूछा जाएगा कि क्या आप पुल अनुरोध खोलना चाहेंगे। संकेतों का पालन करें, सभी रिपॉजिटरी में तुलना करें और पीआर सबमिट करें। यह कमिटर्स को एक ईमेल भेजेगा। अधिक दृश्यता के लिए आप मेलिंग सूची में एक ईमेल भेजने पर विचार कर सकते हैं। (अधिक जानकारी के लिए, पीआरएस पर GitHub गाइड देखें।

  8. अनुरक्षक और अन्य योगदानकर्ता आपके पीआर की समीक्षा करेंगे। कृपया बातचीत में भाग लें और कोई भी अनुरोधित परिवर्तन करने का प्रयास करें। एक बार पीआर स्वीकृत हो जाने पर, कोड का विलय कर दिया जाएगा।

अपने अगले योगदान पर काम करने से पहले , सुनिश्चित करें कि आपका स्थानीय भंडार अद्यतित है।

  1. अपस्ट्रीम रिमोट सेट करें. (आपको इसे प्रति प्रोजेक्ट केवल एक बार करना होगा, हर बार नहीं।)

    $ git remote add upstream git@github.com:tensorflow/project-repo-name

  2. स्थानीय मास्टर शाखा पर स्विच करें.

    $ git checkout master

  3. परिवर्तनों को अपस्ट्रीम से नीचे खींचें.

    $ git pull upstream master

  4. अपने GitHub खाते में परिवर्तन पुश करें। (वैकल्पिक, लेकिन एक अच्छा अभ्यास।)

    $ git push origin master

  5. यदि आप नया काम शुरू कर रहे हैं तो एक नई शाखा बनाएं।

    $ git checkout -b branch-name

अतिरिक्त git और GitHub संसाधन:

योगदानकर्ता चेकलिस्ट