ইন্টিগ্রাল নিউরাল নেটওয়ার্ক (INN) হল নমনীয় আর্কিটেকচার যা একবার প্রশিক্ষিত হলে তা কোনো সূক্ষ্ম টিউনিং ছাড়াই নির্বিচারে ব্যবহারকারী-সংজ্ঞায়িত আকারে রূপান্তরিত হতে পারে। যেহেতু শব্দ তরঙ্গ (সংগীত) যেকোন পছন্দসই নমুনা হারে নমুনা করা যেতে পারে (শব্দের গুণমান) INN ডাটা এবং প্যারামিটারের আকার (DNN গুণমান) গতিশীলভাবে পরিবর্তন করতে পারে।
TheStage.ai- এর দল IEEE/CVF CVPR 2023 সম্মেলনে তাদের গবেষণাপত্র, "ইন্টিগ্রাল নিউরাল নেটওয়ার্কস" উপস্থাপন করেছে। এই কাজটি ইভেন্টে প্রদর্শিত শুধুমাত্র 12টি 'পুরষ্কার প্রার্থী' কাগজপত্রের একটি হিসাবে স্বীকৃত হয়েছিল। INN হল নিউরাল নেটওয়ার্কের একটি নতুন শ্রেণী যা মৌলিক স্তরগুলিকে উপস্থাপন করতে অবিচ্ছিন্ন পরামিতি এবং অবিচ্ছেদ্য অপারেটরকে একত্রিত করে। অনুমান পর্যায়ে, INNগুলি ক্রমাগত ওজন থেকে পৃথক নমুনা দ্বারা একটি ভ্যানিলা DNN উপস্থাপনায় রূপান্তরিত হয়। এই ধরনের নেটওয়ার্কগুলির প্যারামিটারগুলি ফিল্টার এবং চ্যানেলের মাত্রাগুলির সাথে অবিচ্ছিন্ন থাকে যা কেবলমাত্র সেই মাত্রাগুলির সাথে পুনরায় বিবেচ্যকরণের মাধ্যমে ফাইন-টিউনিং ছাড়াই কাঠামোগত ছাঁটাইয়ের দিকে পরিচালিত করে।
এই নিবন্ধে, আমরা আপনাকে একটি 4x চিত্রের সুপার-রেজোলিউশন EDSR মডেলকে একটি INN-এ রূপান্তরিত করার প্রক্রিয়ার মাধ্যমে গাইড করব, তারপরে মডেলটির কাঠামোগত ছাঁটাই কীভাবে অর্জন করা যায় তা দেখাব। অবশেষে, আমরা INN কে আবার একটি পৃথক DNN-এ রূপান্তর করব এবং দক্ষ অনুমানের জন্য এটি একটি Nvidia GPU-তে স্থাপন করব। এই নিবন্ধটি নিম্নলিখিত হিসাবে এগিয়ে যাবে:
আরও তথ্য এবং আপডেটের জন্য, অনুগ্রহ করে নিম্নলিখিত সংস্থানগুলি দেখুন:
INN-এ স্তরগুলি অখণ্ড অপারেটর দ্বারা প্রতিস্থাপিত হয়, কিন্তু অখণ্ড অপারেটরগুলির ব্যবহারিক মূল্যায়নের জন্য সংখ্যাসূচক একীকরণ পদ্ধতির ব্যবহারের জন্য ইনপুট সংকেতগুলির বিচক্ষণতা প্রয়োজন৷ দেখা যাচ্ছে যে INN-এর স্তরগুলিকে এমনভাবে ডিজাইন করা হয়েছে যাতে বিচক্ষণতার পরে ক্লাসিক্যাল DNN স্তরগুলির (সম্পূর্ণ-সংযুক্ত, কনভোলিউশন) সাথে মিলে যায়৷
ইমেজ সুপার-রেজোলিউশন হল একটি সুপরিচিত কম্পিউটার ভিশন টাস্ক যেখানে একটি ইমেজ একটি পরিচিত বা অজানা ডিগ্রেডেশন অপারেটরের সাথে উন্নত করা উচিত। আমরা বাইকিউবিক ডাউনস্যাম্পলিংকে অবক্ষয় অপারেটর হিসাবে ব্যবহার করে ক্লাসিক্যাল সুপার-রেজোলিউশন ফর্ম বিবেচনা করি।
ডিফিউশন মডেল এবং ট্রান্সফরমারের উপর ভিত্তি করে হাই-এন্ড নিউরাল নেটওয়ার্ক সহ চিত্রের সুপার-রেজোলিউশন কাজের জন্য অনেক আর্কিটেকচার ব্যবহার করা যেতে পারে। এই নথিতে, আমরা 4x EDSR আর্কিটেকচারে ফোকাস করব। EDSR আর্কিটেকচার আমাদের প্রদর্শনের জন্য উপযুক্ত কারণ এতে ResNet (যা অনেক গভীর শিক্ষার সমস্যায় ব্যাপকভাবে ব্যবহৃত হয়) এবং শেষে একটি 4x আপস্যাম্পলিং ব্লক রয়েছে। EDSR এর একটি পরিকল্পিত বিবরণ নিম্নলিখিত পরিসংখ্যানে পাওয়া যাবে।
স্ট্রাকচার্ড প্রুনিং, যার মধ্যে সম্পূর্ণ ফিল্টার বা চ্যানেল মুছে ফেলা জড়িত, অবশিষ্ট ব্লকগুলির জন্য অনন্য প্রভাব রয়েছে, যা EDSR-তে প্রাথমিক বিল্ডিং ব্লক হিসাবে কাজ করে। যেহেতু প্রতিটি স্টেট ইনপুটে একটি Conv -> ReLU -> Conv ব্লক যোগ করে আপডেট করা হয়, তাই ইনপুট এবং আউটপুট সিগন্যালে অবশ্যই একই সংখ্যক প্যারামিটার থাকতে হবে। এটি একটি ছাঁটাই নির্ভরতা গ্রাফ তৈরি করে TorchIntegral এ দক্ষতার সাথে পরিচালনা করা যেতে পারে। নীচের চিত্রটি ব্যাখ্যা করে যে প্রতিটি অবশিষ্ট ব্লকের দ্বিতীয় আবর্তন একটি একক গ্রুপ গঠন করে।
একটি অবশিষ্ট ব্লকে দ্বিতীয় কনভলিউশন ছাঁটাই করার জন্য, প্রতিটি অবশিষ্ট ব্লকের সমস্ত দ্বিতীয় কনভলিউশন ছাঁটাই করা প্রয়োজন। যাইহোক, আরও নমনীয় সেটআপের জন্য, আমরা প্রথম কনভলিউশনের ফিল্টার ছাঁটাই করি, এবং সেইজন্য দ্বিতীয় কনভোলিউশনের চ্যানেলগুলি, সমস্ত অবশিষ্ট ব্লকগুলিতে।
প্রাক-প্রশিক্ষিত DNN থেকে রূপান্তরের জন্য, আমরা আমাদের বিশেষ ফিল্টার-চ্যানেল পারমুটেশন অ্যালগরিদমকে আরও মসৃণ ইন্টারপোলেশনের সাথে ব্যবহার করি। ক্রমাগত ফাংশন থেকে DNN-এর ওজনকে নমুনার মতো দেখাতে গিয়ে পারমুটেশন অ্যালগরিদম মডেলের গুণমান রক্ষা করে।
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()
ইন্টিগ্রেশন গ্রিড টিউনিং হল এমন একটি অপারেশন যা মসৃণভাবে (SGD অপ্টিমাইজেশানের অধীনে) প্যারামিটার টেনসর নির্বাচন করে যার ফিল্টারগুলি ব্যবহারকারী-সংজ্ঞায়িত সংখ্যার জন্য নমুনা করা উচিত। ফিল্টার/চ্যানেল মুছে ফেলার পদ্ধতির বিপরীতে, INNগুলি এমন ফিল্টার তৈরি করে যা ইন্টারপোলেশন অপারেশনের কারণে বেশ কয়েকটি পৃথক ফিল্টারকে একত্রিত করতে পারে।
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। একটি একক Nvidia A4000-এর পরীক্ষাগুলি দেখায় যে সম্পূর্ণ Div2k ডেটাসেটে ইন্টিগ্রেশন গ্রিড টিউনিংয়ের জন্য 4 মিনিটের প্রয়োজন ৷ 4x A4000-এ একটি বিতরণ করা সেটআপ প্রায় 4x গতি প্রদর্শন করে, যার ফলে অপ্টিমাইজেশন সময় মাত্র 1 মিনিট ।
আমাদের পরীক্ষা-নিরীক্ষার সময়, আমরা দেখেছি যে 500টি চিত্র 4000টি চিত্রের একটি সম্পূর্ণ ট্রেন সেট Div2k হিসাবে একই ফলাফল দেয়।
ফলস্বরূপ INN মডেলটিকে সহজেই একটি পৃথক মডেলে রূপান্তরিত করা যেতে পারে এবং যেকোনো NVIDIA GPU-তে স্থাপন করা যেতে পারে। আমরা RTX A4000-এ 64x64 এর ইনপুট রেজোলিউশন সহ ফ্রেম পার সেকেন্ড (FPS) প্রদান করি। সংকুচিত মডেল প্রায় 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')
মডেল | আকার FP16 | FPS RTX A4000 | পিএসএনআর |
---|---|---|---|
EDSR মূল। | 75 এমবি | 170 | 30.65 |
INN EDSR 30% | 52 এমবি | 230 | 30.43 |
INN EDSR 40% | 45 এমবি | 270 | 30.34 |
INN EDSR 50% | 37 এমবি | 320 | 30.25 |
এই নিবন্ধে, আমরা CVPR2023 পুরষ্কার প্রার্থীর কাগজের একটি ওভারভিউ উপস্থাপন করেছি, "ইন্টিগ্রাল নিউরাল নেটওয়ার্কস"। এটি 4x EDSR মডেলের প্রশিক্ষণ-পরবর্তী ছাঁটাইয়ের জন্য প্রয়োগ করা হয়েছিল, কোডের একক লাইন এবং ইন্টিগ্রেশন গ্রিডের 1-মিনিট ফাইন-টিউনিং সহ প্রায় 2x গতি অর্জন করে।
আমাদের ভবিষ্যতের নিবন্ধগুলিতে, আমরা INN-এর আরও অ্যাপ্লিকেশন উপস্থাপন করব এবং দক্ষ মডেল স্থাপনার বিষয়ে আরও বিশদ কভার করব। সাথে থাকুন:
আপনার মনোযোগের জন্য আপনাকে ধন্যবাদ!
এছাড়াও এখানে প্রকাশিত.