লেখক:
(1) ইয়াসন ওফিডিস, ইলেকট্রিক্যাল ইঞ্জিনিয়ারিং বিভাগ, এবং ইয়েল ইনস্টিটিউট ফর নেটওয়ার্ক সায়েন্স, ইয়েল ইউনিভার্সিটি, নিউ হ্যাভেন {সমান অবদান};
(2) ডিয়েগো কিডানস্কি, ইলেকট্রিক্যাল ইঞ্জিনিয়ারিং বিভাগ, এবং ইয়েল ইনস্টিটিউট ফর নেটওয়ার্ক সায়েন্স, ইয়েল ইউনিভার্সিটি, নিউ হ্যাভেন {সমান অবদান};
(3) Leandros TassiulasLevon Ghukasyan, Activeloop, Mountain View, CA, USA, ডিপার্টমেন্ট অফ ইলেকট্রিক্যাল ইঞ্জিনিয়ারিং, এবং ইয়েল ইনস্টিটিউট ফর নেটওয়ার্ক সায়েন্স, ইয়েল ইউনিভার্সিটি, নিউ হ্যাভেন।
একটি ডিপ লার্নিং মডেল প্রশিক্ষণের প্রক্রিয়ায়, ডেটাসেটটিকে মেমরি থেকে পড়তে হবে এবং এটিকে মডেলে ইনপুট হিসাবে পাঠানোর আগে প্রি-প্রসেস করা দরকার। এই অপারেশনের জন্য একবারে মেমরিতে ডেটা লোড করা প্রয়োজন৷ বেশিরভাগ ক্ষেত্রে এবং বিশেষত, বড় ডেটাসেটের সাথে, সিস্টেমে সীমিত পরিমাণে উপলব্ধ থাকার কারণে মেমরির ঘাটতি দেখা দেয়, যা সিস্টেমের প্রতিক্রিয়া সময়কেও খারাপ করে দেয়। এই বাধা প্রায়ই একটি তথাকথিত ডেটালোডার ব্যবহার করে গভীর শিক্ষার লাইব্রেরিতে প্রতিকার করা হয়। এই কাঠামোটি সমান্তরাল প্রক্রিয়াকরণ, প্রি-ফেচিং, ব্যাচিং এবং ডেটা লোডিং টাইম এবং মেমরি ওভারহেড যতটা সম্ভব কমাতে ব্যবহার করে ডেটাসেটের উপর পুনরাবৃত্তি করার একটি উপায় প্রদান করে (Paszke et al., 2019)।
একটি ডেটালোডারের প্রধান লক্ষ্য হল মডেলে খাওয়ানোর জন্য নমুনাগুলির একটি ব্যাচ তৈরি করার জন্য প্রশিক্ষণের জন্য প্রক্রিয়াকরণ ইউনিটগুলির সাথে সহ-অবস্থিত মেমরিতে স্টোরেজ অবস্থান থেকে ডেটা নমুনা স্থানান্তর করার জন্য দায়ী ক্রিয়াগুলি সম্পাদন করা। এই ক্রিয়াগুলি স্টোরেজ সিস্টেমের ব্যান্ডউইথ এবং বিশেষত এর I/O কার্যকারিতা দ্বারা সংযত হয়। এইভাবে, সিস্টেমের হার্ডওয়্যার স্পেসিফিকেশন, এটির ফাইল সিস্টেম এবং কম্পিউটিং ইউনিটের সাথে লিঙ্কের থ্রুপুট এর উপর নির্ভর করে, এটি প্রশিক্ষণ সম্পূর্ণ করার জন্য প্রয়োজনীয় মোট সময়ের উপর একটি বিশাল প্রভাব ফেলতে পারে।
ডেটালোডার উপাদানের নিম্নলিখিত স্পেসিফিকেশনটি মূলত PyTorch (torch.DataLoader() (PyTorch Core Team)) এর দিকে দৃষ্টি নিবদ্ধ করে, যখন এর TensorFlow কাউন্টারপার্ট (tf.Dataset() (Abadi et al., 2015)), যদিও একই নয়, মহান মিল বহন করে।
একটি ডেটালোডার নিয়োগ করার সময়, ইনপুটের জন্য ডেটাসেট প্রদান করা ছাড়াও, ব্যবহারকারীর কাছে তাদের চাহিদা এবং সংস্থান অনুসারে বেশ কয়েকটি হাইপারপ্যারামিটার কনফিগার করার বিকল্প থাকে। সমস্ত ডেটালোডারে পাওয়া সাধারণ একটি হল ব্যাচের আকার, যা আগে উল্লেখ করা হয়েছে, অভ্যন্তরীণ মডেল পরামিতি আপডেট করার আগে ব্যবহার করা হবে এমন নমুনার সংখ্যা নির্ধারণ করে। এই প্যারামিটারটি স্টোকাস্টিক গ্রেডিয়েন্ট ডিসেন্টে "মিনি-ব্যাচ" ধারণার সাথে অভ্যন্তরীণভাবে যুক্ত (হিন্টন এট আল।, 2012) এবং তাই, এটি প্রথম প্যারামিটারগুলির মধ্যে একটি যা সাধারণত ভাল-টিউনিংয়ের মধ্য দিয়ে যায় যখন একজনের ভাল প্রশিক্ষণের ফলাফল অর্জনের প্রয়োজন হয়। .
দ্বিতীয়ত, ব্যবহারকারী নমুনা পদ্ধতি সংজ্ঞায়িত করতে পারেন, যা ডেটাসেট থেকে নমুনা অঙ্কন এবং একটি ব্যাচে ঢোকানোর কৌশল নির্ধারণ করে। এটি নির্দিষ্ট মানদণ্ডের উপর ভিত্তি করে নমুনা নির্বাচন করার পাশাপাশি একটি সম্ভাব্যতা বন্টন অন্তর্ভুক্ত করতে পারে। এই ধাপে হাতবদল করার বিকল্প রয়েছে, যেখানে প্রতিটি ডেটাসেট পুনরাবৃত্তির আগে নমুনাগুলিকে পুনর্বিন্যাস করা যেতে পারে, যার লক্ষ্য সাধারণত প্রশিক্ষণ মডেলের সাধারণীকরণ উন্নত করা। আরেকটি প্যারামিটার হল কোলেট/প্যাডিং ফাংশন, যা মূলত একটি ব্যাচের ভিতরে সমস্ত পৃথক নমুনাকে একত্রে সংযুক্ত করার প্রক্রিয়াটি নির্দিষ্ট করে (একটি টেনসরে ভেক্টরকে স্ট্যাক করার কথা ভাবুন), যাতে প্রশিক্ষণ মডেলে ইনপুট হিসাবে খাওয়ানোর জন্য একটি একক উপাদান তৈরি করা যায়। . অধিকন্তু, ডেটালোডারটিকে পিন করা (পৃষ্ঠা-লক) মেমরিতে স্বয়ংক্রিয়ভাবে আনা ডেটা নমুনাগুলি সংরক্ষণ করার জন্য কনফিগার করা যেতে পারে, এইভাবে CUDA- সক্ষম ডিভাইসগুলিতে দ্রুত ডেটা স্থানান্তর সক্ষম করে৷
ডেটালোডাররা কর্মী নামে একটি উপাদান নিয়ে আসে, যার উদ্দেশ্য এই ডেটা স্থানান্তর প্রক্রিয়াটিকে অপ্টিমাইজ করা। কর্মীদের একটি অসিঙ্ক্রোনাস ফ্যাশনে ডেটা লোড করার জন্য দায়ী উপ-প্রক্রিয়া হিসাবে সংজ্ঞায়িত করা হয়। একটি ডেটালোডারের একটি উদাহরণ তৈরি করার সময়, ব্যবহারকারীর কাছে এই ক্রিয়াকলাপের নিয়ন্ত্রণে থাকা কর্মীদের সংখ্যা উল্লেখ করার বিকল্প রয়েছে। যদি কর্মীদের সংখ্যা শূন্যের সমান হয়, তাহলে কোনো উপ-প্রক্রিয়া তৈরি হবে না, যার অর্থ হল একই প্রক্রিয়ায় ডেটা আনয়ন সিঙ্ক্রোনাসভাবে ঘটে এবং এইভাবে, কম্পিউটিং ইউনিটগুলিকে (GPU) ডেটা লোড হওয়ার জন্য অপেক্ষা করতে হবে। সম্পূর্ণ করা হবে (PyTorch Core Team)। বিপরীতভাবে, কর্মীদের সংখ্যার সমান উপ-প্রক্রিয়া তৈরি করা হবে, যা ডেটা লোডিং সহ গণনা কোড ব্লক করা প্রতিরোধ করবে। প্রয়োজনের সময় প্রস্তুত হওয়ার জন্য আগাম ভবিষ্যতের ব্যাচগুলিকে প্রাক-আনয়নের মাধ্যমে এটি সম্পন্ন করা হয়।
এই কাগজটি CC 4.0 লাইসেন্সের অধীনে arxiv-এ উপলব্ধ ।