লেখক(রা): সাই কৌশিক পোনেকান্তি
মূলত টুওয়ার্ডস এআই-তে পোস্ট করা হয়েছে।
প্রথমত, পূর্ববর্তী প্রবন্ধে, আমরা একটি স্টার্টআপ প্রতিষ্ঠা করেছি যার লক্ষ্য হল স্ক্যাম ইমেলগুলিতে লোকেদের জীবন সঞ্চয় হারানো থেকে বিরত রাখা। আমি মনে করি আমি বুঝতে পেরেছি কেন, আমরা হৃদয়ে প্রকৌশলী এবং যত তাড়াতাড়ি সম্ভব আমাদের হাত নোংরা করতে চাই এবং এভাবেই আমরা পণ্য সম্পর্কে চিন্তা শুরু করেছি।
এখন, কিছু গ্রাহক আগ্রহ দেখাচ্ছে এবং আমাদের একটি ব্র্যান্ড তৈরি করতে হবে। আমরা একটি অদ্ভুত, মজার এবং কল্পনাপ্রসূত নাম নিয়ে এসেছি “ফিশ অ্যান্ড চিপস” (যেমন আমাদের স্টার্টআপ স্প্যাম ইমেলগুলি সনাক্ত করে। সত্যিই দুর্দান্ত, ঠিক!)। আসুন এখানে একটু সময় নিয়ে ব্র্যান্ড তৈরির প্রথম পদক্ষেপ নেওয়ার জন্য নিজেদের অভিনন্দন জানাই।
এখন আমরা হাতে থাকা প্রসঙ্গে ফিরে যাব। আমরা 100,000 ইমেল সমন্বিত একটি ডেটাসেট দিয়ে কোম্পানি শুরু করেছি যেগুলি ইতিমধ্যেই “স্প্যাম” এবং “স্প্যাম নয়” হিসাবে প্রাক-শ্রেণীবদ্ধ ছিল। এখন পূর্ববর্তী নিবন্ধে, আমরা প্রশিক্ষণ কি সম্পর্কে কথা বলেছি
মডেলটিকে কিছু ডেটা দিন → এটি একটি ভবিষ্যদ্বাণী করতে দিন → এটি কতটা ভুল তা পরিমাপ করুন → ওজন সামঞ্জস্য করুন → পুনরাবৃত্তি করুন৷
কিন্তু আমরা প্রশ্ন করিনি।
“আমাদের মডেলটিতে থাকা 100,000 ইমেলগুলি কীভাবে আমরা পেতে পারি?”
প্রথমত, আপনি যখন এটি সম্পর্কে চিন্তা করেন, এটি এত বড় বা বড় প্রশ্ন নয়। আমি বলতে চাচ্ছি আপনি চিন্তা করতে পারেন যে কিভাবে একটি পার্থক্য ডান? কিন্তু আপনি দেখতে যাচ্ছেন, অবকাঠামো স্তরের ক্ষেত্রে এটি খুবই গুরুত্বপূর্ণ।
চলুন শুরু করা যাক.
বিকল্প 1
প্রথম যে জিনিসটি মনে আসে তা হল কেন সরাসরি 100,000 ইমেল সরাসরি প্রশিক্ষকের কাছে নিক্ষেপ করবেন না এবং সেগুলি একবারে প্রক্রিয়া করুন৷ আপনি ভুল হবে না. তাই পাইপ এই মত কিছু দেখায়.

এটা শালীন দেখায় আমি বলতে হবে.
যে কোনো কোম্পানি সফল হওয়ার জন্য, কোনো সমস্যা আছে কিনা তা দেখার জন্য আমাদের ধারণাগুলো ভেঙে ফেলার চেষ্টা করতে হবে। আমরা আমাদের পণ্য এবং আমাদের কোম্পানির উপর আস্থা রাখি এবং আমরা সফল হওয়ার আশা করি। একবার আমাদের গ্রাহক বেস বাড়তে শুরু করলে, আমাদের 100,000 ইমেলও বাড়বে। সুতরাং আগামীকাল এটি 10 মিলিয়ন এবং সত্যি বলতে ভবিষ্যতে বিলিয়ন হতে পারে। তাহলে সামগ্রিক প্রশিক্ষণকে মডেলের মধ্যে ফেলে দিয়ে আমরা কী সমস্যার মুখোমুখি হব?
পুরুষ
আমাদের GPU-তে শুধুমাত্র সীমিত পরিমাণে মেমরি থাকে এবং সত্যি কথা বলতে, প্রশিক্ষণের ডেটাই একমাত্র জিনিস নয় যা সেই মেমরি ব্যবহার করে। মডেল নিজেই কিছু মেমরি নেয় এবং প্রশিক্ষণের সময় আমাদের মধ্যবর্তী ফলাফল, গ্রেডিয়েন্ট ইত্যাদির জন্য মেমরির প্রয়োজন হয়।
উপসংহার
এক শটে সমগ্র ডেটাসেট প্রক্রিয়াকরণ ডেটাসেট বাড়ার সাথে সাথে বাড়বে না।
বিকল্প 2
পরের জিনিসটি যা অবিলম্বে মনে আসে তা হল আমরা যদি একবারে 1 প্রক্রিয়া করার চেষ্টা করি তাহলে কী হবে। আপনি ভাবতে পারেন যে এটি অতিমাত্রায় হতে পারে এবং আপনি সঠিক হবেন তবে আসুন প্রথমে সম্ভাবনাটি নিয়ে যাই। সুতরাং, পাইপ এই মত দেখায়.

তারপর আমরা ইমেল 2, তারপর ইমেল 3, এবং তাই 100,000 পর্যন্ত. আসুন এই পদ্ধতির সাথে সমস্যাগুলি কী তা দেখার চেষ্টা করি।
GPU বর্জ্য
জিপিইউ সমান্তরালভাবে অনুরূপ গণনা সম্পাদনে খুব ভাল। এই পদ্ধতির সাথে, আমরা আক্ষরিক অর্থে এক সময়ে 1 GPU ইমেল করছি। আমরা GPU গুলোকে যথেষ্ট কাজ দিচ্ছি না। সুতরাং, আমরা আমাদের মূল্যবান জিপিইউগুলিকে তাদের শক্তি নষ্ট করতে দিচ্ছি।
সংকেত
যেহেতু আমরা একবারে একটি ইমেল প্রক্রিয়া করছি, আসুন এই দৃশ্যটি বিবেচনা করি। আমরা যে ইমেলটি প্রক্রিয়া করছি তা একটি পরিষ্কার “স্প্যাম” ইমেল। মডেলটি একটি ভবিষ্যদ্বাণী করে, ক্ষতির হিসাব করে এবং এই ইমেলের উপর ভিত্তি করে ওজন আপডেট করে। এখন, নিম্নলিখিত ইমেল এসেছে. এটি প্রথম ইমেল থেকে সম্পূর্ণ আলাদা দেখতে পারে। তাই ওজন আবার পরিবর্তিত হয়। আপনি দেখতে পাচ্ছেন, একবারে এক মাইল প্রক্রিয়াকরণ একটি খুব শোরগোল সংকেত দেয় যে মডেলটি কোন দিকে যাচ্ছে।
উপসংহার
অতএব, একবারে একটি ইমেল প্রক্রিয়া করা অদক্ষ।
বিকল্প 3
এটি আমাদের পরবর্তী বিকল্পের দিকে নিয়ে যায়, কেন মাঝখানে কোথাও দেখা হবে না। আমরা একবারে 100টি ইমেল প্রসেস করলে কেমন হয়।

এটাকে আমরা কমবেশি ক বলি দল. এটিকে আরও আনুষ্ঠানিক সংজ্ঞায় রাখার জন্য। একটি ব্যাচ হল প্রশিক্ষণের নমুনার একটি সেট যা আমরা মডেলটিতে আপডেট করার আগে একসাথে প্রক্রিয়া করি এবং ব্যাচের আকার বলা হয় ব্যাচ আকার
সুতরাং আপনি যদি এটি দেখেন, আমরা পুরো ডেটাসেট মেমরিতে ফিট করার চেষ্টা করছি না এবং আমরা GPU-কে একবারে একটি নির্দিষ্ট পরিমাণ কাজ দেওয়ার চেষ্টা করছি।
মঞ্চ
অন বিকল্প 3, যদি কেউ প্রশ্ন জিজ্ঞাসা করে যে “ওজন কখন আপডেট করা হয়?”, আপনি একটি ব্যাচ প্রক্রিয়া করার পরেই স্পষ্টভাবে উত্তর দিতে পারেন। এটাকেই বলা হয় ক মঞ্চ.

সুতরাং, আসুন আমাদের 100,000 ইমেলের মূল প্রশিক্ষণ সেটে ফিরে যাই। একবারে 100টি ইমেল প্রসেস করার ফলে 100,000/100 → 1000টি ধাপ হবে৷
এর কিছু ব্যতিক্রম আছে তবে চলুন সেখানে যাই না। আমরা যখন সেখানে পৌঁছব তখন আমরা ব্রিজ পার হব।
সময়কাল
আমি জানি আমি অনেক পরিভাষা ছুঁড়ে দিচ্ছি কিন্তু বিশ্বাস করুন এটাই শেষ। আমরা স্বীকার করেছি যে একবারে 100টির 100,000 ইমেল প্রক্রিয়াকরণের ফলে আমাদের মডেলকে 1000টি ধাপে প্রশিক্ষণ দেওয়া হয়। তাই 1000টি পদক্ষেপের পরে, আমাদের মডেলটি আমাদের 100,000 ইমেলের প্রত্যেকটি দেখা উচিত ছিল৷ এটাকেই বলা হয় একটি সময়কাল
প্রশিক্ষণ ব্যবস্থায় 1 সময়কাল → 1 সম্পূর্ণ রূপান্তর।
এখন আপনি প্রশ্ন জিজ্ঞাসা করতে পারেন, “এটা কি মডেলের প্রশিক্ষণের শেষ নয়। মানে একবার মডেলটি সমস্ত ইমেল প্রক্রিয়া করে, আমরা কি মডেলটিকে কোশার হিসাবে বিবেচনা করতে পারি না?”
যে একটি মহান প্রশ্ন হবে.
এর উত্তর হবে, সম্পূর্ণ নয়। প্রতিটি ইমেল একবার প্রক্রিয়াকরণের অর্থ এই নয় যে মডেলটি সবকিছু শিখেছে কারণ প্রতিটি পদক্ষেপের পরে, আমরা শুধুমাত্র ওজনগুলিকে সামান্য আপডেট করি। সুতরাং এক সময়ের পরে, আমাদের মডেলটি যেখান থেকে শুরু হয়েছিল তার চেয়ে ভাল হতে পারে, তবে এর অর্থ এই নয় যে এটি দুর্দান্ত।
তাহলে আমরা কি করব? আমরা বারবার প্রশিক্ষণ সেট মাধ্যমে যেতে.
আমরা কখন থামব
আমরা একটি সম্মত শর্তে না পৌঁছা পর্যন্ত অনুশীলন চালিয়ে যাচ্ছি
- হয়তো মডেলের কর্মক্ষমতা উল্লেখযোগ্যভাবে উন্নতি করা বন্ধ করে দেয়
- হয়তো মডেলের কর্মক্ষমতা খারাপ হচ্ছে
- হয়তো আমরা ঠিক করেছি N বয়সের পরে আমরা থামব
আসল চা
আমরা এলোমেলোভাবে 100টি বেছে নিয়েছি, আপনারা কেউ কেউ হয়তো 1000 ভেবেছেন। কেন নয়?
পুরুষ
বড় দলগুলি আরও মেমরি ব্যবহার করতে পারে। আমি যদি একবারে 100টি ইমেল প্রসেস করি, আমার কিছু মেমরি দরকার। যদি আমি 1000 বা এমনকি 10,000 প্রসেস করছি, আমার আরও অনেক কিছু প্রয়োজন। তাই যদি আমি ব্যাচের আকার বাড়াই, কোন এক সময়ে, আমি ওওএম (মেমরির বাইরে) সমস্যায় পড়তে পারি।
GPU ক্ষমতা
ছোট ব্যাচ GPU ক্ষমতা নষ্ট করে। যেমনটি আমরা আগে আলোচনা করেছি, একটি ছোট ব্যাচ GPU যথেষ্ট সমান্তরাল কাজ নাও দিতে পারে। যখন আমরা জিপিইউ কিনেছিলাম, তখন আমাদের এটি নিয়োগ করতে হবে।
প্রশিক্ষণ
যেমনটি আমরা আগে আলোচনা করেছি, ছোট ব্যাচগুলি শোরগোল আপডেট তৈরি করে। বৃহত্তর গোষ্ঠীগুলি সাধারণত স্থিতিশীল গোষ্ঠীগুলি তৈরি করে। অবশ্যই, এখানে অনেক কিছু আছে যা আমরা এখনও পাচ্ছি না।
এলোমেলো
ধরা যাক আমাদের প্রশিক্ষণ সেটের ইমেলগুলি “স্প্যাম” এবং “নন-স্প্যাম” দ্বারা সাজানো হয়েছে। সুতরাং, প্রথম 50,000 ইমেলগুলি “স্প্যাম” এবং বাকি 50,000টি “অ-স্প্যাম”। এর মানে হল যে প্রথম 500টি ব্যাচে শুধুমাত্র স্প্যাম রয়েছে এবং পরবর্তী 500টি ব্যাচে শুধুমাত্র নন-স্প্যাম রয়েছে৷
আপনি কল্পনা করতে পারেন, এটি মডেলকে প্রশিক্ষণ দেওয়ার একটি দুর্দান্ত উপায় নয় কারণ সে একটি ভাল মডেল হবে না। কেন আমরা নিম্নলিখিত নিবন্ধে পেতে হবে.
আমরা আরো এলোমেলো কিছু চাই. সুতরাং, প্রথম যুগের জন্য, আমরা এলোমেলোভাবে ডেটা এলোমেলো করে ফেলি এবং যখন এটি পরবর্তী যুগে আসে, তখন আমরা ডেটা আবার এলোমেলো করে ফেলি। তাই আমরা এমন কিছু চালু করেছি যা সময় লাগবে, এলোমেলো
আমি প্রতিশ্রুতি দিচ্ছি যে কেন প্রশিক্ষণের ডেটা অন্য নিবন্ধে মিশ্রিত করা উচিত তা আমরা জানতে পারব।
ইনফ্রার চোখ
এখন আমরা বুঝি যে ব্যাচ কী, যুগ কী, কেন আমরা মিশে যাই। অবকাঠামোর চোখ থেকে দেখে নেওয়া যাক।
আমাদের পাইপ এই মত কিছু দেখায়.

আসুন একটি নির্বিচারে উদাহরণ বিবেচনা করি যেখানে আমাদের প্রশিক্ষণের ধাপ 50ms লাগে এবং আমাদের সিস্টেম একটি ব্যাচ প্রস্তুত করতে 100s লাগে।

তাই কি হবে যখন একটি GPU একটি প্রশিক্ষণ পর্ব শেষ করে, এটি পরবর্তী ব্যাচ খাওয়ানোর জন্য অপেক্ষা করে। পরবর্তী ব্যাচটি একবার প্রবেশ করলে, এটি প্রশিক্ষণের ধাপটি পুনরায় গণনা করে এবং আবার অপেক্ষা করে।
সমস্যা
পরবর্তী ব্যাচের জন্য অপেক্ষা করার সময় ব্যয়বহুল GPU নিষ্ক্রিয় থাকে। ফিশ অ্যান্ড চিপস প্রচুর অর্থ অপচয় করে এবং জিপিইউগুলিকে নিষ্ক্রিয় করে তোলে।
এখন, আমরা বুঝতে পেরেছি যে শুধুমাত্র প্রশিক্ষণের তথ্য পাওয়া যথেষ্ট নয়, তবে আমাদের এমন একটি সিস্টেম দরকার যা করতে পারে
- ডেটা পড়ুন
- তাদের মিশ্রিত করুন
- প্রয়োজন মত তাদের উল্টানো
- গ্রুপ তৈরি করুন
- এগুলিকে দ্রুত GPU-তে পাঠাতে থাকুন যাতে GPU নিষ্ক্রিয় না থাকে।
এটা ঠিক কি”ডেটা লোড হচ্ছে“সে
আমি মনে করি আমি এই নিবন্ধটি আমার ইচ্ছার চেয়ে দীর্ঘ করেছি। তাহলে চলুন পরবর্তী বিভাগের জন্য ডেটা লোডিং সংরক্ষণ করা যাক।
টুওয়ার্ডস এআই এর মাধ্যমে পোস্ট করা হয়েছে