Apple Neural Engine: Architecture, Programming, and Performance
यह शोध पत्र कई चिप पीढ़ियों में एप्पल के न्यूरल इंजन (ANE) का एक व्यापक रिवर्स-इंजीनियरिंग प्रस्तुत करता है, जो आधिकारिक दस्तावेज़ों की कमी के बावजूद ऑन-डिवाइस अनुसंधान के लिए एक आधारभूत संसाधन प्रदान करने हेतु प्रत्यक्ष यूजर-स्पेस एक्सेस और डीकंपाइलेशन के माध्यम से इसके आर्किटेक्चर, सॉफ्टवेयर स्टैक और प्रदर्शन विशेषताओं का विवरण देता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
आधुनिक दुनिया में, हमारे स्मार्टफोन और कंप्यूटर विशिष्ट समस्याओं को तेजी से हल करने के लिए डिज़ाइन किए गए विशेष उपकरणों से भरे हुए हैं। जबकि केंद्रीय प्रोसेसर सामान्य कार्यों को संभालता है और ग्राफिक्स प्रोसेसर छवियों को रेंडर करता है, एक तीसरा, अक्सर छिपा हुआ घटक सीधे डिवाइस पर आर्टिफिशियल इंटेलिजेंस चलाने के लिए आवश्यक बन गया है। यह घटक एक समर्पित इंजन है जिसे बड़ी संख्या में सरल गणितीय गणनाओं, विशेष रूप से संख्याओं को गुणा करने और जोड़ने के लिए बनाया गया है, जो एक फोटो में चेहरा पहचानने या वॉयस कमांड को ट्रांसक्राइब करने का मूल कार्य है। वर्षों तक, यह इंजन एक 'ब्लैक बॉक्स' रहा है; जबकि सॉफ्टवेयर डेवलपर्स कंप्यूटर से इसका उपयोग करने के लिए कह सकते थे, उनके पास यह देखने का कोई तरीका नहीं था कि यह कैसे काम करता है, यह वास्तव में क्या कर सकता है, या एक जटिल मध्यस्थ के बिना सीधे इससे कैसे बात की जाए।
एक शोधकर्ता ने अब उस ब्लैक बॉक्स को खोल दिया है। एप्पल के उपकरणों पर चलने वाले सॉफ्टवेयर का सावधानीपूर्वक परीक्षण करके और स्वयं हार्डवेयर को मापकर, उन्होंने पूरे सिस्टम का मानचित्र तैयार किया है, भौतिक सिलिकॉन चिप्स से लेकर उन्हें चलाने वाले अदृश्य निर्देशों तक। उनका काम यह प्रकट करता है कि यह इंजन एक सामान्य-उद्देश्य वाला कंप्यूटर नहीं है, बल्कि एक अत्यधिक विशिष्ट मशीन है जिसे अत्यधिक गति और कम बिजली के उपयोग के साथ एक विशिष्ट प्रकार के गणित को संभालने के लिए बनाया गया है। उन्होंने पाया कि हालांकि यह इंजन कुछ कार्यों में अविश्वसनीय रूप से तेज़ है, लेकिन इसकी गणना करने की क्षमता और संख्याओं को संभालने के तरीके पर सख्त सीमाएँ हैं। यह समझ डेवलपर्स को बेहतर एप्लिकेशन बनाने की अनुमति देती है जो तेज़ चलते हैं और कम बैटरी का उपयोग करते हैं, लेकिन यह यह भी दिखाता है कि यह इंजन हर समस्या के लिए जादुई समाधान नहीं है; यह एक सटीक उपकरण है जिसका एक विशिष्ट कार्य है, और इसका सही उपयोग करने के लिए इसके अद्वितीय नियमों को समझना आवश्यक है।
शोधकर्ता ने उन मानक सॉफ्टवेयर परतों को बायपास करके शुरुआत की जो आमतौर पर इंजन को उपयोगकर्ताओं से छिपाकर रखती हैं। किसी उच्च-स्तरीय एप्लिकेशन से यह तय करने के लिए पूछने के बजाय कि कार्य कहाँ चलाना है, उन्होंने इंजन तक एक सीधा रास्ता खोजा, जिससे वे कमांड भेज सके और परिणामों को पूर्ण नियंत्रण के साथ माप सके। उन्होंने इंजन को एक स्वतंत्र मशीन के रूप में माना जो निर्देशों का एक सेट प्राप्त करती है, उन्हें चलाती है, और फिर काम पूरा होने पर संकेत देती है। उन्होंने पाया कि इंजन एक मानक कंप्यूटर की तरह एक-एक करके निर्देशों को प्रोसेस नहीं करता है; इसके बजाय, यह डेटा मूवमेंट और गणनाओं के एक पूर्व-नियोजित अनुक्रम को निष्पादित करता है जो काम शुरू होने से पहले ही निर्धारित होता है। इसका अर्थ है कि इंजन काम के दौरान प्रोसेस किए जा रहे डेटा के आधार पर निर्णय नहीं ले सकता; पथ को पहले से ही बिछाया जाना चाहिए।
सबसे महत्वपूर्ण निष्कर्षों में से एक यह है कि इंजन संख्याओं को कैसे संभालता है। यह अपनी गणना करने के लिए 'हाफ-प्रिसिजन' (half-precision) नामक प्रारूप का उपयोग करता है, जो अधिकांश कंप्यूटरों द्वारा उपयोग किए जाने वाले मानक प्रारूप की तुलना में संख्या को स्टोर करने के लिए कम बिट्स का उपयोग करता है। यह विकल्प इंजन को डेटा बहुत तेज़ी से स्थानांतरित करने और कम ऊर्जा का उपयोग करने की अनुमति देता है, लेकिन इसके साथ सटीकता का समझौता भी आता है। शोधकर्ता ने पाया कि इंजन इस कमी की भरपाई करने के लिए अपनी गणनाओं के कुल योग (running total) को रखने के लिए एक बहुत ही विस्तृत आंतरिक रजिस्टर का उपयोग करता है। यह विस्तृत रजिस्टर एक सुरक्षा जाल की तरह कार्य करता है, यह सुनिश्चित करता है कि अंतिम परिणाम सटीक रहे, भले ही व्यक्तिगत चरण छोटी संख्याओं का उपयोग करते हों। हालांकि, इस प्रणाली की एक सीमा है। यदि किसी गणना में एक बड़ी धनात्मक संख्या को एक बड़ी ऋणात्मक संख्या के साथ रद्द करना शामिल है ताकि एक सूक्ष्म अंतर निकाला जा सके, तो इंजन सटीकता खो देता है क्योंकि प्रारंभिक बड़ी संख्याओं की राउंडिंग (rounding) में वह छोटा अंतर खो जाता है। इन विशिष्ट मामलों में, इंजन का उपयोग नहीं किया जा सकता है, और कार्य को कंप्यूटर के दूसरे हिस्से को सौंपना पड़ता है।
अध्ययन ने यह भी मानचित्रित किया कि इंजन कौन से ऑपरेशन कर सकता है। यह विजन और स्पीच को शक्ति देने वाले कार्यों के लिए उत्कृष्ट है, जैसे कि छवि में आकृतियों को पहचानना या ध्वनि तरंगों को प्रोसेस करना। यह जटिल पैटर्न जैसे कि 'कन्वोल्यूशन' (convolutions) को संभाल सकता है, जो छवि में किनारों और विशेषताओं का पता लगाने के लिए उपयोग किए जाने वाले गणितीय ऑपरेशन हैं। हालांकि, शोधकर्ता ने पाया कि इंजन सब कुछ नहीं कर सकता। कुछ प्रकार की गणनाएं, जैसे कि तीन-आयामी डेटा या विशिष्ट प्रकार के मेमोरी अपडेट से जुड़ी गणनाएं, हार्डवेयर द्वारा समर्थित नहीं हैं। उन्होंने यह भी पाया कि इंजन की क्षमताएं विशिष्ट चिप पीढ़ी के आधार पर बदल जाती हैं। उदाहरण के लिए, पुराने चिप्स केवल स्थान बचाने के लिए डेटा को कुछ तरीकों से कंप्रेस कर सकते हैं, जबकि नए चिप्स अधिक प्रारूपों में डेटा को कंप्रेस कर सकते हैं, जिससे वे जानकारी को तेज़ी से स्थानांतरित करने और कम बिजली का उपयोग करने में सक्षम होते हैं।
प्रदर्शन माप ने दिखाया कि जब इंजन का सही प्रकार के काम के लिए उपयोग किया जाता है, तो यह ग्राफिक्स प्रोसेसर की तुलना में नाटकीय रूप से तेज़ और अधिक कुशल होता है, जिसका उपयोग अक्सर समान कार्यों के लिए किया जाता है। एक विशिष्ट प्रकार के इमेज प्रोसेसिंग कार्य पर, इंजन ग्राफिक्स प्रोसेसर की तुलना में लगभग चार गुना तेज़ पाया गया और इसने बहुत कम ऊर्जा का उपयोग किया। यह दक्षता इंजन के डिज़ाइन के कारण है, जो अनावश्यक रुकावटों के बिना मेमोरी और गणना इकाइयों के बीच सीधे डेटा को स्थानांतरित करता है। हालांकि, यह गति इस बात से सीमित है कि मुख्य मेमोरी से डेटा कितनी तेज़ी से प्राप्त किया जा सकता है। यदि किसी कार्य को उस डेटा की आवश्यकता है जो इंजन की छोटी, तेज़ आंतरिक मेमोरी में समा नहीं सकता, तो प्रदर्शन गिर जाता है क्योंकि इंजन को डेटा आने का इंतज़ार करना पड़ता है।
शोधकर्ता ने यह भी उजागर किया कि इंजन अपनी मेमोरी और स्टेट (state) को कैसे प्रबंधित करता है। यह कार्यों के बीच कुछ डेटा, जैसे कि बातचीत की स्मृति या प्रशिक्षण प्रक्रिया की स्थिति, को अपने भीतर संग्रहीत रख सकता है। इसका अर्थ है कि चरणों के एक अनुक्रम के लिए, इंजन को डेटा को मुख्य कंप्यूटर में वापस भेजने की आवश्यकता नहीं है, जिससे बहुत सारा समय बचता है। उन्होंने पाया कि इंजन इस डेटा को कई चरणों में बनाए रख सकता है, जिससे वह बिना किसी व्यवधान के सूचना के प्रवाह को निरंतर प्रोसेस कर सकता है। यह क्षमता वास्तविक समय के भाषा अनुवाद या टेक्स्ट जनरेशन जैसे अनुप्रयोगों के लिए महत्वपूर्ण है, जहाँ इंजन को यह तय करने के लिए कि आगे क्या कहना है, यह याद रखने की आवश्यकता होती है कि उसने अभी क्या कहा था।
अपनी शक्ति के बावजूद, यह इंजन एक सार्वभौमिक समाधान नहीं है। शोधकर्ता ने एक बार में डेटा को प्रोसेस करने के आकार पर एक कठोर सीमा की पहचान की। यदि किसी कार्य के लिए डेटा का वर्किंग सेट दो मेगाबाइट से अधिक है, तो इंजन रुक जाता है क्योंकि वह अपनी तेज़ मेमोरी में आवश्यक जानकारी को नहीं रख सकता। यह सीमा डेवलपर्स को बड़े कार्यों को छोटे टुकड़ों में तोड़ने के लिए मजबूर करती है, जिससे सॉफ्टवेयर की जटिलता बढ़ जाती है। इसके अलावा, इंजन एक सामान्य-उद्देश्य वाला प्रोसेसर नहीं है; यह मनमाने प्रोग्राम नहीं चला सकता। यह केवल विशिष्ट, पूर्व-संकलित (pre-compiled) निर्देशों को निष्पादित करता है जो इसके हार्डवेयर के लिए सावधानीपूर्वक अनुकूलित किए गए हैं। इसका मतलब है कि इंजन के लिए डिज़ाइन किए गए सॉफ्टवेयर को इसकी विशिष्ट बाधाओं को ध्यान में रखकर बनाया जाना चाहिए, और यह किसी मौजूदा प्रोग्राम को सीधे लेकर उसे तेज़ नहीं चला सकता।
अध्ययन ने यह भी खुलासा किया कि इंजन के चारों ओर जटिल सुरक्षा और एक्सेस नियंत्रण कैसे काम करते हैं। हालांकि शोधकर्ता ने इसे सीधे बात करने का एक तरीका खोजा, उन्होंने पाया कि यह पथ आधिकारिक तौर पर डिवाइस निर्माता द्वारा समर्थित नहीं है। इंजन एक ऐसी प्रणाली द्वारा सुरक्षित है जिसमें किसी भी कोड को चलाने से पहले सॉफ्टवेयर का हस्ताक्षरित (signed) और सत्यापित होना आवश्यक है, जिससे यह सुनिश्चित होता है कि केवल विश्वसनीय प्रोग्राम ही हार्डवेयर तक पहुँच सकें। यह सुरक्षा मॉडल अनधिकृत कोड को इंजन पर चलने से रोकता है, लेकिन इसका मतलब यह भी है कि शोधकर्ता द्वारा उपयोग किया गया सीधा पथ नाजुक है और किसी भी सॉफ्टवेयर अपडेट के साथ टूट सकता है। इंजन एक सुरक्षित, अलग घटक के रूप में डिज़ाइन किया गया है, और हालांकि वहां तक पहुँचना संभव है, लेकिन ऐसा करने के लिए अनुमतियों और हस्ताक्षरों के एक जटिल परिदृश्य को पार करना आवश्यक है।
अंत में, यह कार्य एक शक्तिशाली लेकिन विशिष्ट मशीन की स्पष्ट तस्वीर प्रदान करता है। एप्पल न्यूरल इंजन अब कोई रहस्यमय ब्लैक बॉक्स नहीं है; यह ज्ञात शक्तियों और कमजोरियों वाला एक सुस्पष्ट घटक है। यह आधुनिक आर्टिफिशियल इंटेलिजेंस को चलाने वाले विशिष्ट गणितीय कार्यों के लिए उत्कृष्ट है, जो ऐसी गति और दक्षता प्रदान करता है जो सामान्य-उद्देश्य वाले प्रोसेसरों के पास नहीं है। हालांकि, यह कोई जादुई छड़ी नहीं है जो हर समस्या को हल कर सके। इसकी गणना करने की क्षमता, डेटा संभालने का आकार और सटीकता बनाए रखने की सीमाएं सख्त हैं। इन सीमाओं को समझकर, डेवलपर्स ऐसे बेहतर एप्लिकेशन बना सकते हैं जो इंजन की प्राकृतिक क्षमताओं के विरुद्ध लड़ने के बजाय उनके साथ तालमेल बिठाकर काम करें। शोध से पता चलता है कि ऑन-डिवाइस इंटेलिजेंस का भविष्य इंजन को अधिक सामान्य बनाने में नहीं, बल्कि ऐसे सॉफ्टवेयर डिजाइन करने में है जो इसके विशिष्ट डिज़ाइन में पूरी तरह फिट बैठता हो।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।