इंटीग्रल न्यूरल नेटवर्क (आईएनएन) लचीले आर्किटेक्चर हैं जिन्हें एक बार प्रशिक्षित करने के बाद बिना किसी फाइन-ट्यूनिंग के मनमाने उपयोगकर्ता-परिभाषित आकार में बदला जा सकता है। चूँकि ध्वनि तरंगों (संगीत) को किसी भी वांछित नमूना दर (ध्वनि गुणवत्ता) पर नमूना किया जा सकता है, INN गतिशील रूप से डेटा और पैरामीटर आकार (DNN गुणवत्ता) को बदल सकते हैं।
TheStage.ai की टीम ने IEEE/CVF CVPR 2023 सम्मेलन में अपना पेपर, "इंटीग्रल न्यूरल नेटवर्क्स" प्रस्तुत किया। इस कार्य को इस आयोजन में प्रदर्शित केवल 12 'पुरस्कार उम्मीदवार' पत्रों में से एक के रूप में मान्यता दी गई थी। आईएनएन तंत्रिका नेटवर्क का एक नया वर्ग है जो बुनियादी परतों का प्रतिनिधित्व करने के लिए निरंतर मापदंडों और अभिन्न ऑपरेटरों को जोड़ता है। अनुमान चरण के दौरान, INN निरंतर भार से अलग नमूने द्वारा एक वेनिला DNN प्रतिनिधित्व में परिवर्तित हो जाते हैं। ऐसे नेटवर्क के पैरामीटर फ़िल्टर और चैनल आयामों के साथ निरंतर होते हैं जो उन आयामों के साथ पुन: विवेकीकरण द्वारा बिना फ़ाइन-ट्यूनिंग के संरचित छंटाई की ओर ले जाता है।
इस लेख में, हम आपको 4x छवि सुपर-रिज़ॉल्यूशन EDSR मॉडल को INN में बदलने की प्रक्रिया के माध्यम से मार्गदर्शन करेंगे, फिर दिखाएंगे कि मॉडल की संरचित छंटाई कैसे प्राप्त करें। अंत में, हम आईएनएन को वापस एक अलग डीएनएन में बदल देंगे और कुशल अनुमान के लिए इसे एनवीडिया जीपीयू पर तैनात करेंगे। यह लेख इस प्रकार आगे बढ़ेगा:
अधिक जानकारी और अपडेट के लिए, कृपया निम्नलिखित संसाधनों की जाँच करें:
आईएनएन में परतों को इंटीग्रल ऑपरेटरों द्वारा प्रतिस्थापित किया जाता है, लेकिन इंटीग्रल ऑपरेटरों के व्यावहारिक मूल्यांकन के लिए संख्यात्मक एकीकरण विधियों के उपयोग के लिए इनपुट संकेतों के विवेकीकरण की आवश्यकता होती है। यह पता चलता है कि INN में परतें इस तरह से डिज़ाइन की गई हैं कि विवेकीकरण के बाद शास्त्रीय DNN परतों (पूरी तरह से जुड़े, कनवल्शन) के साथ मेल खाती हैं।
इमेज सुपर-रिज़ॉल्यूशन एक प्रसिद्ध कंप्यूटर विज़न कार्य है जहां एक छवि को ज्ञात या अज्ञात डिग्रेडेशन ऑपरेटर के साथ बढ़ाया जाना चाहिए। हम डिग्रेडेशन ऑपरेटर के रूप में बाइक्यूबिक डाउनसैंपलिंग का उपयोग करते हुए क्लासिकल सुपर-रिज़ॉल्यूशन फॉर्म पर विचार करते हैं।
छवि सुपर-रिज़ॉल्यूशन कार्यों के लिए कई आर्किटेक्चर का उपयोग किया जा सकता है, जिसमें प्रसार मॉडल और ट्रांसफार्मर पर आधारित उच्च-स्तरीय तंत्रिका नेटवर्क भी शामिल हैं। इस दस्तावेज़ में, हम 4x EDSR आर्किटेक्चर पर ध्यान केंद्रित करेंगे। EDSR आर्किटेक्चर हमारे प्रदर्शन के लिए उपयुक्त है क्योंकि इसमें ResNet (जिसका व्यापक रूप से कई गहन शिक्षण समस्याओं में उपयोग किया जाता है) और अंत में एक 4x अपसैंपलिंग ब्लॉक शामिल है। ईडीएसआर का एक योजनाबद्ध विवरण निम्नलिखित आंकड़ों में पाया जा सकता है।
संरचित प्रूनिंग, जिसमें संपूर्ण फ़िल्टर या चैनल को हटाना शामिल है, के अवशिष्ट ब्लॉकों के लिए अद्वितीय निहितार्थ हैं, जो ईडीएसआर में प्राथमिक बिल्डिंग ब्लॉक के रूप में काम करते हैं। चूँकि प्रत्येक स्थिति को इनपुट में एक Conv -> ReLU -> Conv ब्लॉक जोड़कर अद्यतन किया जाता है, इसलिए इनपुट और आउटपुट सिग्नल में समान संख्या में पैरामीटर होने चाहिए। प्रूनिंग डिपेंडेंसी ग्राफ़ बनाकर इसे TorchIntegral में कुशलतापूर्वक प्रबंधित किया जा सकता है। नीचे दिया गया चित्र दर्शाता है कि प्रत्येक अवशिष्ट ब्लॉक का दूसरा कनवल्शन एक एकल समूह बनाता है।
किसी अवशिष्ट ब्लॉक में दूसरे कनवल्शन को काटने के लिए, प्रत्येक अवशिष्ट ब्लॉक में सभी दूसरे कनवल्शन को काटना आवश्यक है। हालाँकि, अधिक लचीले सेटअप के लिए, हम सभी अवशिष्ट ब्लॉकों में पहले कनवल्शन के फिल्टर और इसलिए दूसरे कनवल्शन के चैनलों की छँटाई करते हैं।
पूर्व-प्रशिक्षित DNNs से रूपांतरणों के लिए, हम अपने विशेष फ़िल्टर-चैनल क्रमपरिवर्तन एल्गोरिदम का उपयोग और अधिक सुचारू प्रक्षेप के साथ करते हैं। क्रमपरिवर्तन एल्गोरिथ्म मॉडल की गुणवत्ता को बरकरार रखता है जबकि डीएनएन के वजन को निरंतर कार्यों से नमूना जैसा दिखता है।
import torch import torchintegral as inn from super_image import EdsrModel # creating 4x EDSR model model = EdsrModel.from_pretrained("eugenesiow/edsr", scale=4).cuda() # Transform model layers to integral. # continous_dims and discrete dims define which dimensions # of parameters tensors should be parametrized continuously # or stay fixed size as in discrete networks. # In our case we make all filter and channel dimensions # to be continuous excluding convolutions of the upsample block. model = inn.IntegralWrapper(init_from_discrete=True)( model, example_input, continuous_dims, discrete_dims ).cuda()
एकीकरण ग्रिड ट्यूनिंग वह ऑपरेशन है जो सुचारू रूप से (एसजीडी अनुकूलन के तहत) पैरामीटर टेंसर का चयन करता है जिनके फिल्टर को उपयोगकर्ता-परिभाषित संख्याओं के लिए नमूना किया जाना चाहिए। फ़िल्टर/चैनल हटाने के तरीकों के विपरीत, INN ऐसे फ़िल्टर उत्पन्न करते हैं जो इंटरपोलेशन ऑपरेशन के कारण कई अलग-अलग फ़िल्टर को जोड़ सकते हैं।
आईएनएन फ़िल्टर और चैनल आयामों के साथ पैरामीटर के टेंसर पर सॉफ्ट चयन-दर-सूचकांक ऑपरेशन पेश करते हैं।
# Set trainable gird for each integral layer # Each group should have the same grid # During the sum of continuous signals # We need to sample it using the same set of points for group in model.groups: new_size = 224 if 'operator' in group.operations else 128 group.reset_grid(inn.TrainableGrid1D(new_size)) # Prepare model for tuning of integration grid model.grid_tuning() # Start training train(model, train_data, test_data)
इंटीग्रेशन ग्रिड ट्यूनिंग एक तेज़ अनुकूलन प्रक्रिया है जिसे छोटे अंशांकन सेट पर किया जा सकता है। इस अनुकूलन का परिणाम एक संरचनात्मक रूप से संपीड़ित DNN है। एकल एनवीडिया A4000 पर परीक्षण से पता चलता है कि पूर्ण Div2k डेटासेट पर एकीकरण ग्रिड ट्यूनिंग के लिए 4 मिनट की आवश्यकता होती है । 4x A4000 पर एक वितरित सेटअप लगभग 4x स्पीडअप प्रदर्शित करता है, जिसके परिणामस्वरूप अनुकूलन समय केवल 1 मिनट का होता है।
हमारे प्रयोगों के दौरान, हमने पाया कि 500 छवियां 4000 छवियों के पूर्ण ट्रेन सेट Div2k के समान परिणाम देती हैं।
परिणामी INN मॉडल को आसानी से एक अलग मॉडल में परिवर्तित किया जा सकता है और किसी भी NVIDIA GPU पर तैनात किया जा सकता है। हम आरटीएक्स ए4000 पर 64x64 के इनपुट रिज़ॉल्यूशन के साथ फ्रेम प्रति सेकंड (एफपीएस) प्रदान करते हैं। संपीड़ित मॉडल लगभग 2x स्पीडअप प्राप्त करता है। काटे गए INN मॉडल को एक अलग मॉडल में बदलने के लिए कोड की निम्नलिखित पंक्ति का उपयोग किया जा सकता है:
model = model.transform_to_discrete() # then model can be compiled, for instance # compilation can add an additional 1.4x speedup for inference model = torch.compile(model, backend='cudagraphs')
नमूना | आकार एफपी16 | एफपीएस आरटीएक्स ए4000 | पीएसएनआर |
---|---|---|---|
ईडीएसआर मूल. | 75 एमबी | 170 | 30.65 |
आईएनएन ईडीएसआर 30% | 52 एमबी | 230 | 30.43 |
आईएनएन ईडीएसआर 40% | 45 एमबी | 270 | 30.34 |
आईएनएन ईडीएसआर 50% | 37 एमबी | 320 | 30.25 |
इस लेख में, हमने CVPR2023 पुरस्कार उम्मीदवार पेपर, "इंटीग्रल न्यूरल नेटवर्क्स" का एक अवलोकन प्रस्तुत किया है। इसे 4x ईडीएसआर मॉडल के प्रशिक्षण के बाद की छंटाई के लिए लागू किया गया था, जिससे कोड की एक पंक्ति और एकीकरण ग्रिड की 1 मिनट की फाइन-ट्यूनिंग के साथ लगभग 2x स्पीडअप प्राप्त हुआ।
अपने भविष्य के लेखों में, हम आईएनएन के अधिक अनुप्रयोग प्रस्तुत करेंगे और कुशल मॉडल परिनियोजन पर अधिक विवरण शामिल करेंगे। बने रहें:
आपके ध्यान देने के लिए धन्यवाद!
यहाँ भी प्रकाशित किया गया है.