paint-brush
डीएनएन के लिए 2x एक्सेलेरेशन जारी करना: केवल 1 मिनट में इंटीग्रल न्यूरल नेटवर्क के साथ मॉडल को बदलनाद्वारा@thestage
1,192 रीडिंग
1,192 रीडिंग

डीएनएन के लिए 2x एक्सेलेरेशन जारी करना: केवल 1 मिनट में इंटीग्रल न्यूरल नेटवर्क के साथ मॉडल को बदलना

द्वारा TheStage AI6m2023/08/31
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

इस लेख में, हम आपको 4x छवि सुपर-रिज़ॉल्यूशन EDSR मॉडल को INN में बदलने की प्रक्रिया के माध्यम से मार्गदर्शन करेंगे, फिर दिखाएंगे कि मॉडल की संरचित छंटाई कैसे प्राप्त करें। अंत में, हम INN को वापस एक अलग DNN में बदल देंगे और कुशल अनुमान के लिए इसे Nvidia GPU पर तैनात करेंगे।
featured image - डीएनएन के लिए 2x एक्सेलेरेशन जारी करना: केवल 1 मिनट में इंटीग्रल न्यूरल नेटवर्क के साथ मॉडल को बदलना
TheStage AI HackerNoon profile picture
0-item
1-item


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


आईएनएन अनुप्रयोग. अनुमान के दौरान, कोई हार्डवेयर या डेटा स्थितियों के आधार पर गतिशील रूप से नेटवर्क का आकार बदल सकता है। आकार में कमी संरचित है और स्वचालित रूप से तंत्रिका नेटवर्क के संपीड़न और त्वरण की ओर ले जाती है।



TheStage.ai की टीम ने IEEE/CVF CVPR 2023 सम्मेलन में अपना पेपर, "इंटीग्रल न्यूरल नेटवर्क्स" प्रस्तुत किया। इस कार्य को इस आयोजन में प्रदर्शित केवल 12 'पुरस्कार उम्मीदवार' पत्रों में से एक के रूप में मान्यता दी गई थी। आईएनएन तंत्रिका नेटवर्क का एक नया वर्ग है जो बुनियादी परतों का प्रतिनिधित्व करने के लिए निरंतर मापदंडों और अभिन्न ऑपरेटरों को जोड़ता है। अनुमान चरण के दौरान, INN निरंतर भार से अलग नमूने द्वारा एक वेनिला DNN प्रतिनिधित्व में परिवर्तित हो जाते हैं। ऐसे नेटवर्क के पैरामीटर फ़िल्टर और चैनल आयामों के साथ निरंतर होते हैं जो उन आयामों के साथ पुन: विवेकीकरण द्वारा बिना फ़ाइन-ट्यूनिंग के संरचित छंटाई की ओर ले जाता है।


इस लेख में, हम आपको 4x छवि सुपर-रिज़ॉल्यूशन EDSR मॉडल को INN में बदलने की प्रक्रिया के माध्यम से मार्गदर्शन करेंगे, फिर दिखाएंगे कि मॉडल की संरचित छंटाई कैसे प्राप्त करें। अंत में, हम आईएनएन को वापस एक अलग डीएनएन में बदल देंगे और कुशल अनुमान के लिए इसे एनवीडिया जीपीयू पर तैनात करेंगे। यह लेख इस प्रकार आगे बढ़ेगा:


  1. आईएनएन का संक्षिप्त परिचय।
  2. सुपर-रिज़ॉल्यूशन कार्य के लिए ईडीएसआर नेटवर्क का अवलोकन।
  3. कोड की एक पंक्ति में इंटीग्रल ईडीएसआर प्राप्त करने के लिए टॉर्चइंटीग्रल फ्रेमवर्क एप्लिकेशन।
  4. आईएनएन फाइन-ट्यूनिंग (तेजी से पाइपलाइन) के बिना आईएनएन की संरचनात्मक छंटाई।
  5. एनवीडिया जीपीयू पर काटे गए मॉडल तैनात करें।


अधिक जानकारी और अपडेट के लिए, कृपया निम्नलिखित संसाधनों की जाँच करें:

आईएनएन परियोजना स्थल

आईएनएन परियोजना जीथूब

इस आलेख का समर्थन कोड


पृथक ईडीएसआर के फ़ीचर मानचित्र।


आईएनएन ईडीएसआर के फ़ीचर मानचित्र। यह देखना आसान है कि INN में चैनल लगातार व्यवस्थित होते हैं।


डीएनएन के लिए आईएनएन बिना फ़ाइन-ट्यूनिंग के काट-छाँट कर रहे हैं

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


इंटीग्रल पूर्णतः कनेक्टेड परत मूल्यांकन का अवलोकन।


EDSR 4x इमेज सुपर-रिज़ॉल्यूशन प्रूनिंग

इमेज सुपर-रिज़ॉल्यूशन एक प्रसिद्ध कंप्यूटर विज़न कार्य है जहां एक छवि को ज्ञात या अज्ञात डिग्रेडेशन ऑपरेटर के साथ बढ़ाया जाना चाहिए। हम डिग्रेडेशन ऑपरेटर के रूप में बाइक्यूबिक डाउनसैंपलिंग का उपयोग करते हुए क्लासिकल सुपर-रिज़ॉल्यूशन फॉर्म पर विचार करते हैं।


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


ईडीएसआर वास्तुकला. ईडीएसआर आर्किटेक्चर में अवशिष्ट ब्लॉकों का एक क्रम होता है, जिसके बाद एक अपसैंपल ब्लॉक होता है। यह अपसैंपल ब्लॉक कई कनवल्शन और अपसैंपल परतों से युक्त है।


बाएं: अवशिष्ट ब्लॉक आर्किटेक्चर। दाएं: 4x सुपर-रिज़ॉल्यूशन के लिए अपसैंपलिंग ब्लॉक, प्रत्येक अपसैंपलिंग परत में 2x स्केल होता है।


ईडीएसआर आर्किटेक्चर प्रूनिंग की विशिष्टताएँ

संरचित प्रूनिंग, जिसमें संपूर्ण फ़िल्टर या चैनल को हटाना शामिल है, के अवशिष्ट ब्लॉकों के लिए अद्वितीय निहितार्थ हैं, जो ईडीएसआर में प्राथमिक बिल्डिंग ब्लॉक के रूप में काम करते हैं। चूँकि प्रत्येक स्थिति को इनपुट में एक 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') 


बाएं। 4x बाइक्यूबिक अपस्केल्ड छवि। सही। INN का उपयोग करके 50% संपीड़ित EDSR मॉडल।


नमूना

आकार एफपी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 स्पीडअप प्राप्त हुआ।


अपने भविष्य के लेखों में, हम आईएनएन के अधिक अनुप्रयोग प्रस्तुत करेंगे और कुशल मॉडल परिनियोजन पर अधिक विवरण शामिल करेंगे। बने रहें:


आईएनएन परियोजना स्थल

आईएनएन परियोजना जीथूब

इस आलेख का समर्थन कोड


आपके ध्यान देने के लिए धन्यवाद!


यहाँ भी प्रकाशित किया गया है.