একটি লার্জ ল্যাঙ্গুয়েজ মডেলকে প্রশিক্ষণ দেওয়ার সময় মূল চ্যালেঞ্জ থাকে কম্পিউট বা গণনার গতি (Compute-Bound)। কিন্তু যখন সেই মডেল ব্যবহারকারীর প্রশ্নের উত্তর তৈরি করে, তখন পরিস্থিতি সম্পূর্ণ উল্টে যায়: তখন গতি নির্ধারিত হয় মেমরি ব্যান্ডউইডথের মাধ্যমে (Memory-Bandwidth Bound)। প্রতিটি টোকেন তৈরির জন্য জিপিইউকে তার বিলিয়ন বিলিয়ন ওজন প্যারামিটার এবং অতীতের সমস্ত ইতিহাসের মেমরি পড়তে হয়। আধুনিক এলএলএম সার্ভিংয়ের সবচেয়ে বড় যুদ্ধক্ষেত্র হলো এই কি-ভ্যালু (KV) ক্যাশ এবং বার্কলের উদ্ভাবিত PagedAttention (vLLM) আর্কিটেকচার।
১. প্রিফিল বনাম ডিকোড পর্ব
ইনফারেন্স দুটি ধাপে সম্পন্ন হয়:
- প্রিফিল (Prefill): ব্যবহারকারীর সম্পূর্ণ প্রম্পট একসাথে সমান্তরালভাবে পড়ে। এটি কম্পিউট-বাউন্ড এবং জিপিইউর টেনসর কোর পূর্ণ গতিতে ব্যবহার করে।
- ডিকোড (Decode): একটি একটি করে নতুন টোকেন তৈরি করে। প্রতিটি ধাপে নতুন টোকেনটির সাথে অতীতের সমস্ত টোকেনের সম্পর্ক নির্ণয় করতে হয়। অতীতের মানগুলো পুনরায় হিসাব না করার জন্য মেমরিতে জমিয়ে রাখা হয়—যাকে বলে KV Cache।
২. কেভি ক্যাশের ভয়াবহ মেমরি আকার
একটি ৭০ বিলিয়ন প্যারামিটারের LLaMA মডেলে ৩২ জন ব্যবহারকারী যদি ৪০০০ টোকেন করে টেক্সট জেনারেট করেন, তবে তাদের KV ক্যাশের আকার দাঁড়ায় প্রায় ৩৪৪ গিগাবাইট! এটি মডেলের মূল ওজনের (১৪০ জিবি) চেয়েও দ্বিগুণের বেশি এবং চারটি ৮০ জিবি A100 জিপিইউর মেমরি একাই গ্রাস করে ফেলে।
৩. চিরায়ত মেমরির বিশৃঙ্খলা ও অপচয়
আগের সার্ভিং সিস্টেমে প্রতিটি ব্যবহারকারীর জন্য সর্বোচ্চ দৈর্ঘ্যের (যেমন ২০৪৮ টোকেন) মেমরি অগ্রিম বরাদ্দ রাখা হতো। বাস্তব জীবনে অধিকাংশ উত্তর ছোট হওয়ায় ৬০% থেকে ৮০% জিপিইউ মেমরি সম্পূর্ণ অব্যবহৃত পড়ে থাকত।
৪. পেজড-অ্যাটেনশন (PagedAttention) ও vLLM
২০২৩ সালে ইউসি বার্কলের গবেষকরা অপারেটিং সিস্টেমের ভার্চুয়াল মেমরি পেজিং ধারণা প্রয়োগ করে PagedAttention উদ্ভাবন করেন। এটি কেভি ক্যাশকে ১৬ বা ৩২ টোকেনের ক্ষুদ্র ফিজিক্যাল ব্লকে ভাগ করে। মেমরিতে ধারাবাহিক জায়গা না থাকলেও ব্লক টেবিলের মাধ্যমে তথ্য যুক্ত থাকে। এর ফলে মেমরি অপচয় ৪%-এর নিচে নেমে আসে এবং একই সার্ভারে ২ থেকে ৪ গুণ বেশি মানুষের অনুরোধ একসঙ্গে প্রসেস করা সম্ভব হয়।