স্পেকুলেশনের মাধ্যমে Sonar-কে ত্বরান্বিত করা
স্পেকুলেটিভ ডিকোডিং ড্রাফট মডেল যাচাইকরণের মাধ্যমে Sonar LLMs-কে ত্বরান্বিত করে
স্পেকুলেটিভ ডিকোডিং একটি দ্রুত এবং ছোট ড্রাফট মডেল ব্যবহার করে লার্জ ল্যাঙ্গুয়েজ মডেলগুলির (LLMs) টোকেন তৈরির গতি বাড়ায়, যা বড় টার্গেট মডেল দ্বারা যাচাই করা সমাপ্তির প্রার্থী তৈরি করে। এই স্কিমের অধীনে, ব্যয়বহুল টার্গেটের একক টোকেন তৈরির পরিবর্তে, একক ধাপে একাধিক টোকেন নির্গত হয়। এখানে আমরা Sonar মডেলে ইন্টার-টোকেন লেটেন্সি কমাতে Perplexity-তে প্রয়োগ করা বিভিন্ন ধরণের স্পেকুলেটিভ ডিকোডিংয়ের বাস্তবায়নের বিবরণ উপস্থাপন করছি।
স্পেকুলেটিভ ডিকোডিং
স্পেকুলেটিভ ডিকোডিং টোকেন তৈরির গতি বাড়াতে প্রাকৃতিক ভাষার গঠন এবং ট্রান্সফরমারের অটো-রিগ্রেসিভ প্রকৃতিকে কাজে লাগায়। Llama-70B-এর মতো বড় মডেলগুলিতে Llama-1B-র মতো ছোট মডেলগুলির তুলনায় বেশি জ্ঞান থাকলেও, কিছু সহজ টাস্কে তারা একইভাবে পারফর্ম করে। এই ওভারল্যাপটি পরামর্শ দেয় যে নির্দিষ্ট সিকোয়েন্সগুলি কম ব্যয়বহুল মডেলগুলি দ্বারা আরও ভালভাবে তৈরি করা হয়, জটিল সমস্যাগুলি বড়গুলির জন্য রেখে দেওয়া হয়। চ্যালেঞ্জটি হলো নির্ধারণ করা যে কোন সমাপ্তিগুলি ভাল এবং ছোট মডেলের তৈরি কোয়ালিটি বড় মডেলের সমান কি না।
সৌভাগ্যবশত, LLMs হলো অটো-রিগ্রেসিভ ট্রান্সফরমার: যখন একটি টোকেন সিকোয়েন্স দেওয়া হয়, তখন তারা পরবর্তী টোকেনের প্রোবাবিলিটি ডিস্ট্রিবিউশন আউটপুট করে। উপরন্তু, ইনপুট সিকোয়েন্সের টোকেনগুলির সাথে যুক্ত ইন্টারমিডিয়েট ফিচারগুলি থেকে প্রাপ্ত লগিটগুলিও মডেলটির ঠিক সেই টোকেনগুলি জারি করার সম্ভাবনা কতখানি তা নির্দেশ করে। এই বৈশিষ্ট্যটি স্পেকুলেশন সক্ষম করে: যদি ইনপুট প্রিফিক্স থেকে শুরু করে একটি ছোট মডেল দ্বারা টোকেনের একটি সিকোয়েন্স তৈরি করা হয়, তবে এটি টার্গেট মডেলের সাথে কতটা মিলে যায় তা নির্ধারণ করার জন্য এটি বড় মডেলের মাধ্যমে চালানো যেতে পারে। প্রার্থীদের প্রতিটি প্রিফিক্স একটি প্রোবাবিলিটি দিয়ে স্কোর করা হয় এবং অ্যাকসেপ্টেন্স থ্রেশহোল্ডের উপরে থাকা দীর্ঘতম প্রিফিক্সটি বেছে নেওয়া হয়। বোনাস হিসেবে, টার্গেট মডেল পরবর্তী একটি টোকেন বিনামূল্যে প্রদান করে: যদি একটি ড্রাফট মডেল n টি টোকেন তৈরি করে, তবে এক ধাপে n + 1 টি পর্যন্ত নির্গত হতে পারে।
ইনফারেন্সের সময়, স্পেকুলেটিভ স্যাম্পলিং প্রক্রিয়াটিকে মোটামুটি ৪টি পর্যায়ে বিভক্ত করা যেতে পারে:
প্রিফিল: কেভি ক্যাশ (KV cache) এন্ট্রিগুলি পপুলেট করার জন্য ইনপুট সিকোয়েন্সে টার্গেট এবং ড্রাফট উভয় মডেলই অবশ্যই চালাতে হবে। যদিও Medusa-র মতো কিছু স্কিম অনুমানের জন্য সহজ ডেন্স লেয়ার ব্যবহার করে, তবে এই পোস্টে আমরা ট্রান্সফরমার-ভিত্তিক ড্রাফটগুলির উপর ফোকাস করি যেগুলির নিজস্ব কেভি ক্যাশের প্রয়োজন হয়।
ড্রাফট জেনারেশন: নির্দিষ্ট সংখ্যক টোকেন তৈরি করতে ড্রাফট মডেলটি পুনরাবৃত্তি করে। ড্রাফট সিকোয়েন্সটি লিনিয়ার হতে পারে বা মডেলটি একটি নির্দিষ্ট গভীরতা পর্যন্ত ট্রি-এর মতো কাঠামো অন্বেষণ করতে পারে (EAGLE, Medusa)। এখানে, আমরা লিনিয়ার সিকোয়েন্সের উপর ফোকাস করি।
গ্রহণ (Acceptance): প্রতিটি ড্রাফট টোকেনের সাথে সংশ্লিষ্ট লগিট তৈরি করে টার্গেট মডেলটি ড্রাফট সিকোয়েন্সে চলে। দীর্ঘতম গ্রহণযোগ্য সিকোয়েন্সের দৈর্ঘ্য নির্ধারিত হয়।
টার্গেট জেনারেশন: যেহেতু টার্গেট লগিট তৈরি করেছে, তাই অমিল হওয়া অবস্থানে বা সিকোয়েন্সের লেজের প্রান্তে লগিটগুলি পরবর্তী টোকেনের সাথে মিলে যায়। সিকোয়েন্সটিকে শেষ করতে টার্গেট থেকে একটি শক্তিশালী টোকেন প্রদান করতে এই লগিটগুলি স্যাম্পল করা যেতে পারে।
স্পেকুলেটিভ ডিকোডিং বাস্তবায়নের জন্য বিভিন্ন পদ্ধতি বিদ্যমান। এই পোস্টে, আমরা ইন-হাউস 1B মডেল ব্যবহার করে Sonar মডেলগুলির গতি বাড়াতে যে স্কিমগুলি ব্যবহার করেছি, সেইসাথে DeepSeek-এর স্কেলে মডেলগুলির গতি বাড়াতে আমরা যে প্রিকশন মেকানিজম তৈরি করছি সেগুলির উপর ফোকাস করব।
টার্গেট-ড্রাফট
প্রার্থী সিকোয়েন্স তৈরি করতে টার্গেট মডেলের সাথে ড্রাফট মডেল হিসাবে একটি বিদ্যমান ছোট LLM যুক্ত করে স্পেকুলেটিভ ডিকোডিং অর্জন করা যেতে পারে। উৎপাদনে, আমরা টার্গেটের মতো একই ডেটাসেটে ফাইন-টিউন করা Llama-1B মডেল ব্যবহার করে Sonar-কে ত্বরান্বিত করেছি। যদিও এই পদ্ধতির জন্য স্ক্র্যাচ থেকে একটি ড্রাফট প্রশিক্ষণের প্রয়োজন ছিল না, তবুও ছোট মডেলটি উল্লেখযোগ্য কেভি ক্যাশ ক্ষমতা ব্যবহার করে এবং একটি সামান্য প্রিফিল ওভারহেড প্রবর্তন করে, যা TTFT বৃদ্ধি করে।
এই স্কিমের অধীনে, ডিকোডার শুধুমাত্র ডিকোড-অনলি ব্যাচগুলিতে স্পেকুলেট করে, প্রিফিল-এ বা মিশ্র প্রিফিল-ডিকোডের ব্যাচগুলিতে স্ট্যান্ডার্ড স্যাম্পলিংয়ের মাধ্যমে টোকেন তৈরি করে। প্রিফিল পর্যায়ে, ড্রাফটের কেভি ক্যাশে নতুন তৈরি টোকেনটি প্রিফিল করার জন্যও টার্গেট লগিটগুলি তাৎক্ষণিকভাবে স্যাম্পল করা হয়। ড্রাফটটি এখনও স্যাম্পল করা হয় না, তবে এটি যে লগিটগুলি তৈরি করে তা ডিকোড পর্যায়ে বহন করা হয়।
ডিকোডে, ড্রাফট মডেলটি এগিয়ে চলে, প্রতিটি পর্যায়ে শীর্ষ টোকেন স্যাম্পল করে। পছন্দসই ড্রাফট দৈর্ঘ্য পৌঁছে যাওয়ার পর, টোকেনগুলি টার্গেট মডেলের মধ্য দিয়ে চালানো হয় যার ভিত্তিতে সংগ্রাহক (sampler) গৃহীত সিকোয়েন্সের দৈর্ঘ্য শনাক্ত করে লগিট তৈরি করে। ড্রাফট এবং টার্গেটের সম্পূর্ণ প্রোবাবিলিটি ডিস্ট্রিবিউশন তুলনা করে গ্রহণ নির্ধারণ করা হয়। যেহেতু টার্গেট সর্বদা গৃহীত ড্রাফট সিকোয়েন্সের পরে লগিটগুলির একটি সেট আউটপুট করে, তাই অতিরিক্ত আউটপুট তৈরি করতে এটি স্যাম্পল করা হয়। যেহেতু ড্রাফট মডেলটি এখনও সেই গৃহীত টোকেনটি দেখেনি, তাই পরবর্তী ডিকোড ধাপের প্রস্তুতির জন্য এর সংশ্লিষ্ট কেভি ক্যাশ এন্ট্রিগুলি পপুলেট করতে এটি পুনরায় চালানো হয়, এবং লগিটগুলিকে আবার বহন করে।
EAGLE
EAGLE হলো একটি স্পেকুলেটিভ ডিকোডিং স্কিম যা সম্ভাব্য ড্রাফট টোকেনের ট্রি-এর মতো ট্রাভার্সালের মাধ্যমে তৈরি একাধিক ড্রাফট সিকোয়েন্স অন্বেষণ করে। লিনিয়ার সিকোয়েন্সে সর্বোচ্চ স্কোরিং টোকেন অনুসরণ করার পরিবর্তে প্রতিটি নোডে Top-K প্রার্থীদের বিবেচনা করে একটি নির্দিষ্ট (EAGLE) বা গতিশীল আকৃতির (EAGLE-2) ট্রি অন্বেষণ করা হয়। সিকোয়েন্সগুলি তখন স্কোর করা হয় এবং টার্গেট থেকে একটি অতিরিক্ত টোকেন যুক্ত করে চালিয়ে যাওয়ার জন্য দীর্ঘতম উপযুক্ত সিকোয়েন্সটি নির্বাচন করা হয়।
আরও নির্ভুল পূর্বাভাস অর্জনের জন্য, একটি EAGLE ড্রাফট মডেল শুধুমাত্র টোকেনের উপর ভিত্তি করে নয়, বরং টার্গেট মডেলের টার্গেট ফিচার (শেষ লেয়ারের হিডেন স্টেট) ব্যবহার করেও পূর্বাভাস দেয়। EAGLE-এর অসুবিধা হল কাস্টম, ছোট ড্রাফট মডেলগুলিকে প্রশিক্ষণ দেওয়ার প্রয়োজনীয়তা যা কম লেটেন্সি বাজেটের মধ্যে উপযুক্ত প্রার্থী তৈরি করার জন্য যথেষ্ট নির্ভুল। সাধারণত, একটি ড্রাফট মডেল হল আসল মডেলের ডিকোডার লেয়ারের মতো একটি একক ট্রান্সফরমার লেয়ার, যা এর এমবেডিং এবং lm_head প্রজেকশনের সাথে আবদ্ধ হয়ে টার্গেটের সাথে নিবিড়ভাবে যুক্ত থাকে। যেহেতু এর জন্য কম কেভি ক্যাশ ক্ষমতা প্রয়োজন, তাই EAGLE-এর মেমরি ফুটপ্রিন্ট কম।
টার্গেট মডেলে ট্রি-এর মতো সিকোয়েন্স যাচাই করতে, কাস্টম অ্যাটেনশন মাস্ক ব্যবহার করতে হবে। দুর্ভাগ্যবশত, একটি পুরো সিকোয়েন্সের জন্য কাস্টম অ্যাটেনশন মাস্ক ব্যবহার করা বাস্তবসম্মত ইনপুট দৈর্ঘ্যের জন্য অ্যাটেনশনকে উল্লেখযোগ্যভাবে ধীর করে দেয় (৫০% পর্যন্ত), যা স্পেকুলেশনের মাধ্যমে অর্জনযোগ্য কিছু গতি কমিয়ে দেয়। এই কারণে আমরা এখনও উৎপাদনে সম্পূর্ণ ট্রি অন্বেষণ স্থাপন করিনি, পরিবর্তে DeepSeek-V3 টেকনিক্যাল রিপোর্টে উপস্থাপিত MTP-এর মতো স্কিমের মাধ্যমে একক-টোকেন পূর্বাভাসের বিশেষ ক্ষেত্রে ফোকাস করছি।
MTP
এই স্কিমটি ড্রাফট-টার্গেট ডিকোডিংয়ের অনুরূপ, তবে পূর্বাভাসের জন্য টোকেনের পাশাপাশি হিডেন স্টেট ব্যবহারের ব্যতিক্রম রয়েছে। নিয়মিত ড্রাফট-টার্গেট স্পেকুলেশনের তুলনায় প্রিফিল এবং ডিকোড উভয় পর্যায়েই সামান্য বেশি কাজ করতে হবে। ড্রাফট মডেলটি টোকেন এবং হিডেন স্টেট উভয়ই ব্যবহার করে: টোকেন t_{i+1} টোকেন t_i-এর সাথে সংশ্লিষ্ট লগিট L_i থেকে স্যাম্পল করা হয়, যা আবার হিডেন স্টেট H_i থেকে উদ্ভূত হয়। ফলস্বরূপ, ইনপুট টোকেন বাফারগুলিকে টার্গেট দ্বারা আউটপুট করা হিডেন স্টেট ভেক্টরের সাপেক্ষে বাম দিকে এক ধাপ সরাতে হবে। নীচের চিত্রটি প্রশিক্ষণের জন্য ব্যবহৃত চিঠিপত্রগুলির পাশাপাশি ইনফারেন্সের সময় শিফট চিহ্নিত করে।
ডিকোডিং প্রবাহটি ড্রাফট-টার্গেট ডিকোডিংয়ের বেশ অনুরূপ, তবে হিডেন স্টেট এবং লগিট উভয়ই বহন করার ব্যতিক্রম রয়েছে। আমাদের বাস্তবায়ন সমস্ত সম্পর্কিত স্যাম্পলিং এবং লগিট প্রসেসিং লগিট ভাগ করে নেয়, শুধুমাত্র মডেল ফরওয়ার্ড ইনভোকেশনকে বিশেষায়িত করে। যখন একাধিক টোকেনের পূর্বাভাস দেওয়া হয়, তখন ড্রাফট মডেল পূর্বাভাসের জন্য ড্রাফট হিডেন স্টেট ব্যবহার করে, এর নিজস্ব ফিচারের উপর ভিত্তি করে কেভি ক্যাশ এন্ট্রিগুলিও পপুলেট করে। দীর্ঘ মেয়াদে, এটি নির্ভুলতা হ্রাস করতে পারে। পরবর্তীতে, টার্গেট পূর্বাভাসের জন্য কেভি ক্যাশ এন্ট্রি পপুলেট করতে ড্রাফট মডেলটি চালানোর সময়, আমরা আরও নির্ভুল টার্গেট হিডেন স্টেটগুলিকে ইনপুট হিসাবে নিয়ে পুরো সিকোয়েন্সে এটি চালাই। যেহেতু এই ড্রাফট মডেলগুলি ছোট, অতিরিক্ত টোকেন প্রসেস করার যোগ করা খরচ নগণ্য।
MTP হেড প্রশিক্ষণ
MTP থেকে উপকৃত হওয়ার জন্য, আমরা Perplexity-র ডেটাসেটে আমাদের ফাইন-টিউন করা মডেলগুলির সাথে সংযুক্ত MTP হেড প্রশিক্ষণের জন্য প্রয়োজনীয় পরিকাঠামো তৈরি করেছি, যা 8xH100 ডিভাইস সহ একটি নোডে চলছে। প্রায় একদিনে, আমরা Llama-1B থেকে Llama-70B এবং DeepSeek V2-Lite পর্যন্ত মডেলগুলির জন্য হেড তৈরি করতে পারি। বড় মডেলগুলির জন্য, আমরা ফাইন-টিউনিং প্রক্রিয়া চলাকালীন তৈরি MTP হেডের উপর নির্ভর করি।
MTP প্রশিক্ষণের লক্ষ্য হল ড্রাফট হিডেন স্টেটগুলিকে মেলানো এবং টার্গেটের পরবর্তী টোকেন লগিট এবং হিডেন স্টেটে টার্গেট হিডেন স্টেট থেকে এক্সট্রাপোলেট করা লগিট। যেহেতু হিডেন স্টেটের জন্য ইনফারেন্স ব্যয়বহুল, আমরা প্রশিক্ষণের সময় ব্যবহারের জন্য টার্গেট মডেলের আমাদের ইনফারেন্স-অপ্টিমাইজড বাস্তবায়ন ব্যবহার করে সেগুলি প্রি-কম্পিউট করি। যাইহোক, ইনফারেন্স MTP বাস্তবায়ন যাচাই করতে এবং নিশ্চিত করতে যে কোয়ান্টাইজেশন বা অপ্টিমাইজেশনের কারণে সংখ্যাসূচক পার্থক্য ফলাফলকে বাধাগ্রস্ত করে না, ভ্যালিডেশন লস এবং নির্ভুলতা অনুমানের জন্য আমরা টার্গেট এবং ড্রাফট উভয় মডেলের ইনফারেন্স বাস্তবায়ন সম্পূর্ণরূপে পুনরায় ব্যবহার করি।
মূল পেপারে ব্যবহৃত ShareGPT ডেটাসেট থেকে বড় নমূনাগুলিতে স্কেল করার সময়, আমরা লক্ষ্য করেছি যে EAGLE পেপারে রূপরেখা দেওয়া এবং বাস্তবায়িত MTP হেড আর্কিটেকচার 70B-মাপের মডেলগুলির জন্য প্রশিক্ষণ দিতে ব্যর্থ হয়েছে। ShareGPT-এর বিপরীতে যাতে অল্প দৈর্ঘ্যের সিকোয়েন্সের সংখ্যা বেশি ছিল, আমরা উল্লেখযোগ্যভাবে দীর্ঘ প্রম্পটের কিছুটা ছোট সংখ্যায় প্রশিক্ষণ দিই। যেহেতু আসল EAGLE হেডগুলির গঠন একটি সাধারণ ট্রান্সফরমার থেকে সামান্য আলাদা ছিল, তাই আমরা কিছু RMS নরমালাইজেশন লেয়ার পুনরায় চালু করেছি যেগুলি বাদ দেওয়া হয়েছিল। আমরা দেখতে পেয়েছি যে এটি কেবল প্রশিক্ষণকে কনভার্জ করতে দেয়নি, এটি কয়েক শতাংশ পয়েন্ট দ্বারা হেডের নির্ভুলতাও বাড়িয়েছে।
শুধু লেয়ার নর্মগুলো প্রশিক্ষণকে সহজ করে না, নর্মগুলো আবার যুক্ত করাও গাণিতিকভাবে স্বতঃস্ফূর্ত। MTP হেডগুলো টার্গেট মডেলের এম্বেডিং এবং লগিট প্রজেকশনগুলো পুনঃব্যবহার করে, কারণ এগুলোর আকার যথেষ্ট বড় হতে পারে (Llama 70B-এর ক্ষেত্রে প্রায় 2 GB)। প্রশিক্ষণের সময় এগুলো ফ্রিজ করা থাকে, এবং প্রত্যাশা হলো MTP লেয়ার এমন পূর্বাভাস এম্বেড করতে শিখবে, যা মূল মডেলের প্রজেকশন লেয়ার প্রশিক্ষণের সময় যা শিখেছিল তার একই ভেক্টর স্পেসে থাকে। নর্মগুলো বাদ দিলে, একটি একক MLP-এর কাছ থেকে প্রত্যাশা করা হয় যে সেটি নর্ম-সহ একটি MLP-এর সমান ফাংশন শিখবে, যা ড্রাফট ও টার্গেট মডেলের হিডেন স্টেটগুলোর মধ্যে সামঞ্জস্যকে বাধাগ্রস্ত করে।
স্পেকুলেটিভ ডিকোডিং সহ ইনফারেন্স
ইনফারেন্স ইঞ্জিনে, ইনপুট সিকোয়েন্সের জন্য টোকেন তৈরি করতে, সেগুলিকে প্রথমে যুক্তিসঙ্গত আকারের ব্যাচে গ্রুপ করতে হবে, তারপরে পরবর্তী টোকেনগুলির জন্য কেভি ক্যাশে পেজ বরাদ্দ করতে হবে। ইনপুট টোকেন এবং কেভি পেজ তথ্য তখন মডেল চালানো সমস্ত সমান্তরাল র্যাঙ্কে ব্রডকাস্ট করা একটি বাফারে প্যাক করা হয়। অবশেষে, মেটাডেটা জিপিইউ মেমরিতে অনুলিপি করা হয় এবং পরবর্তী টোকেনটি যেখান থেকে স্যাম্পল করা হয় সেই লগিট তৈরি করতে মডেলটি কার্যকর করা হয়।
কিছু বাস্তবায়নের বিপরীতে যা একটি র্যাপারের মাধ্যমে একটি ড্রাফট এবং টার্গেট ইনফারেন্স সার্ভারকে আলগাভাবে যুক্ত করে যা তাদের মধ্যে অনুরোধগুলি অর্কেস্ট্রেট করে, আমাদের ড্রাফট-টার্গেট জোড়গুলি নিবিড়ভাবে যুক্ত এবং একযোগে প্রজন্ম জুড়ে ধাপ ফেলে। সমস্ত ধরণের স্পেকুলেটিভ ডিকোডিংয়ের জন্য মডেলগুলির মধ্যে ব্যাচ সময়সূচী এবং কেভি পেজ বরাদ্দ শেয়ার করা হয়: এটি একটি মডেলকে সামগ্রিক ইনফারেন্স সার্ভারের সাথে সংযোগকারী লজিককে একীভূত করে, কারণ তারা সবাই একই ইন্টারফেস প্রকাশ করে।
Perplexity-তে ইনফারেন্স রানটাইমটি FlashInfer-এর চারপাশে তৈরি করা হয়েছে, যা অ্যাটেনশন কার্নেল কনফিগার এবং সময়সূচী করার জন্য যে মেটাডেটা তৈরি করতে হবে তা নির্ধারণ করে। ব্যাচ গঠনকারী কিছু ইনপুট সিকোয়েন্স দেওয়া হলে, প্রিফিল, ডিকোড বা যাচাইকরণের জন্য, মধ্যবর্তী বাফার বরাদ্দ করতে এবং অ্যাটেনশনে ব্যবহৃত নির্দিষ্ট ধ্রুবক বাফারগুলি পপুলেট করতে CPU-সাইডের কাজ অবশ্যই করতে হবে। এই কাজটি ব্যাচ সময়সূচী এবং কেভি পেজ বরাদ্দের খরচের অতিরিক্ত, যা জিপিইউ ব্যবহার সর্বাধিক করার জন্য লেটেন্সি লুকিয়ে রাখতে হবে।
স্পেকুলেশন ছাড়াই ইনফারেন্সের জন্য আমরা যখন CPU-সাইড এবং GPU-সাইডের কাজ সম্পূর্ণ সমান্তরাল করেছি, তখন আমরা দেখতে পেয়েছি যে স্পেকুলেটিভ ডিকোডিংয়ের জন্য CPU-GPU ভারসাম্য আরও জটিল। প্রধান চ্যালেঞ্জটি এই সত্য থেকে উদ্ভূত হয় যে গৃহীত টোকেনের সংখ্যা পরবর্তী রানের জন্য সিকোয়েন্সের দৈর্ঘ্য নির্ধারণ করে, যা এড়ানো কঠিন একটি GPU-to-CPU সিঙ্ক্রোনাইজেশন পয়েন্ট প্রবর্তন করে। CPU কাজের লেটেন্সি সবচেয়ে ভালো লুকিয়ে রাখতে আমরা বিভিন্ন সময়সূচী স্কিম নিয়ে পরীক্ষা করেছি।
ড্রাফট-টার্গেট সময়সূচী
টার্গেট মডেলের চেয়ে ছোট হওয়া সত্ত্বেও, যখন একটি সম্পূর্ণ LLM ড্রাফট হিসাবে ব্যবহৃত হয়, তখন এটি এখনও জিপিইউ-তে যথেষ্ট লেটেন্সি প্রবর্তন করে, ব্যয়বহুল CPU অপারেশনগুলি লুকিয়ে রাখতে কিছু হেডরুম প্রদান করে। যেহেতু ছোট মডেলগুলি টেনসর প্যারালালিজম থেকে উপকৃত হয় না, তাই একটি টার্গেট এবং একটি ড্রাফট যেগুলির মধ্যে র্যাংক শার্ড করা হয় তার সংখ্যার মধ্যে একটি অমিল রয়েছে। আমাদের বাস্তবায়নে, ড্রাফট মডেলটি শুধুমাত্র একটি TP গ্রুপের লিডার র্যাঙ্কে চলে।
পূর্বে নির্দেশিত হিসাবে, একটি ডিকোড ধাপ পরবর্তী রানে লগিট বহন করে। এটি আমাদের CPU-সাইড ব্যাচ শিডিউলিং কাজের সাথে ড্রাফট মডেলের একটি এক্সিকিউশন ওভারল্যাপ করতে দেয়। ব্যাচটি একত্রিত হওয়ার পরে, সংগ্রাহক এবং ড্রাফটে বারবার কল করা ড্রাফট টোকেন তৈরি করে। সমান্তরালভাবে, যাচাইকরণের জন্য ব্যাচটি টার্গেট মডেলের জন্য একত্রিত করা হয় এবং সমান্তরাল কর্মীদের সাথে সিঙ্ক্রোনাইজ করা হয়। গৃহীত সিকোয়েন্সের দৈর্ঘ্য নির্ধারণ করতে টার্গেট লগিটগুলি যাচাই এবং স্যাম্পল করা হয়। এই বিন্দুতে, পরবর্তী সিকোয়েন্সের দৈর্ঘ্য নির্ধারণ করতে GPU-to-CPU সিঙ্ক্রোনাইজেশন প্রয়োজন। যেহেতু ড্রাফট মডেলটি শুধুমাত্র লিডার নোডে চালানো হয়, তাই এর ব্যাচটি ক্রমানুসারে সেট আপ করা হয় এবং টার্গেট তৈরি করা অতিরিক্ত টোকেনের সাথে এর কেভি ক্যাশ এন্ট্রিগুলি পপুলেট করার জন্য এর এক্সিকিউশন শুরু করা হয়। বর্তমান রানে এই ড্রাফট রান দ্বারা উৎপাদিত লগিটগুলি পরবর্তী রানে প্রথম ড্রাফট টোকেন স্যাম্পল করতে ব্যবহার করা হবে। সবচেয়ে গুরুত্বপূর্ণভাবে, ড্রাফট চলার সময়, পরবর্তী ব্যাচ শিডিউল করা যেতে পারে।
একটি একক টোকেনের জন্য MTP সময়সূচী
রানটাইম এখনও Eagle-স্টাইলের ড্রাফট ট্রি অন্বেষণ প্রদান না করলেও, আমরা এই স্কিমের একটি বিশেষ কেস বাস্তবায়ন করেছি, একক ট্রান্সফরমার ডিকোডার লেয়ারের আকারের মডেল দ্বারা উত্পাদিত ড্রাফট টোকেনের একটি লিনিয়ার সিকোয়েন্স বিবেচনা করে। DeepSeek R1-এর ওপেন-সোর্স ওজন ব্যবহার করে ড্রাফট পূর্বাভাসের জন্য এই স্কিমটি ব্যবহার করা যেতে পারে। একক টোকেনের পূর্বাভাস দেওয়ার উপ-কেসটি আকর্ষণীয়, কারণ বড় MTP লেয়ারগুলি তাদের ওভারহেডকে ন্যায্যতা দেওয়ার জন্য যথেষ্ট উচ্চ গ্রহণযোগ্যতা হার অর্জন করে।
MTP সময়সূচী কিছুটা বেশি জটিল, কারণ ড্রাফট মডেলটি অনেক দ্রুত, কম CPU-সাইড লেটেন্সি লুকায়। উপরন্তু, ড্রাফটটি টার্গেট মডেলের পাশাপাশি শার্ড করা হয়, ব্যাচ তথ্যের জন্য শেয়ার্ড মেমরি স্থানান্তরের প্রয়োজন হয়। আগের স্কিমের মতো, ব্যাচ তথ্য স্থানান্তর করে এবং ক্যারি-ওভার লগিট থেকে প্রথম টোকেন স্যাম্পল করে একটি রান শুরু হয়। পরবর্তীতে, টোকেন যাচাই করতে টার্গেট চালানো হয়, 2 * D টোকেন প্রসেস করে, যেখানে D হলো ডিকোড ব্যাচ সাইজ। InfiniBand-এর মতো ধীরগতির ইন্টারকানেক্টে মিক্সচার-অফ-এক্সপার্টস (MoE) মডেলে মাইক্রো-ব্যাচিংয়ের জন্য এটি আদর্শ, কারণ ব্যাচটি সমানভাবে দুটি অর্ধে বিভক্ত হয়। টার্গেটের হিডেন স্টেট পরবর্তী ড্রাফট রানে বহন করে, অন্যদিকে যাচাইকরণের জন্য লগিটগুলি সংগ্রাহকে পাস করা হয়।
জিপিইউ-তে সীমিত পরিমাণ অতিরিক্ত কাজ সম্পাদন করে, আমরা ড্রাফট সিকোয়েন্স গ্রহণের পরে CPU-to-GPU সিঙ্ক্রোনাইজেশন এড়িয়ে চলি। লক্ষ্যগুলির ইনপুট টোকেনগুলি স্থানান্তরিত হওয়ার পরে, একটি কার্নেল পরবর্তী টার্গেট টোকেনগুলিকে তাদের সংশ্লিষ্ট অবস্থানে প্লাগ করে। তারপরে ড্রাফটটি টার্গেটের মতো একই ব্যাচ তথ্য দিয়ে পুনরায় চালানো হয়, কেভি ক্যাশ এন্ট্রি পপুলেট করে এবং পরবর্তী রানের জন্য লগিট এবং হিডেন স্টেট তৈরি করে, যে টোকেনগুলি গৃহীত হয়নি সেগুলিতে কিছু অপ্রয়োজনীয় কাজ করে। এই পরিস্থিতিতে, ড্রাফট মডেলের ছোট আকারের কারণে অব্যবহৃত কাজের লেটেন্সি সবেমাত্র পরিমাপযোগ্য। ড্রাফট রানের সমান্তরালভাবে, সিপিইউ-তে সিকোয়েন্সের দৈর্ঘ্য নির্ধারণ করা হয় এবং জিপিইউ কাজ শেষ হওয়ার জন্য অপেক্ষা না করেই পরবর্তী ব্যাচের সময়সূচী শুরু করা হয়।
অ্যাটেনশনে ড্রাফট লেয়ারে অতিরিক্ত কাজের ওভারহেড লক্ষণীয় নয়, তবে MLP লেয়ারগুলি আরও সমস্যাযুক্ত। যেহেতু ম্যাট্রিক্স গুণন নির্দেশাবলী টোকেনের সংখ্যার মাত্রা বরাবর 64 এর সীমানায় প্যাড করে, যদি দ্বিগুণ করার জন্য উল্লেখযোগ্যভাবে আরও ব্লকের প্রয়োজন না হয়, তবে ওভারহেড লুকানো থাকে। দীর্ঘ ড্রাফট সিকোয়েন্সের জন্য ওভারহেড বেশি ব্যয়বহুল এবং নিয়মিত ড্রাফট-টার্গেট মডেলের জন্য ব্যবহৃত স্কিমটি আরও ভাল কাজ করে।
রেফারেন্স
স্পেকুলেটিভ ডিকোডিংয়ের মাধ্যমে ট্রান্সফরমার থেকে দ্রুত ইনফারেন্স
EAGLE: স্পেকুলেটিভ স্যাম্পলিংয়ের জন্য ফিচার অনিশ্চয়তা পুনর্বিবেচনা করা প্রয়োজন
EAGLE-2: ডায়নামিক ড্রাফট ট্রি সহ ল্যাঙ্গুয়েজ মডেলের দ্রুততর ইনফারেন্স
EAGLE-3: ট্রেনিং-টাইম টেস্টের মাধ্যমে লার্জ ল্যাঙ্গুয়েজ মডেলের ইনফারেন্স ত্বরণ স্কেলিং
Medusa: একাধিক ডিকোডিং হেড সহ সাধারণ LLM ইনফারেন্স অ্যাকসিলরেশন ফ্রেমওয়ার্ক
FlashInfer: LLM ইনফারেন্স পরিবেশনের জন্য দক্ষ এবং কাস্টমাইজযোগ্য অ্যাটেনশন ইঞ্জিন
DeepSeek-V3 টেকনিক্যাল রিপোর্ট
উদ্ধৃতি
@online{perplexity2025AcceleratingSonarThroughSpeculation,
author = {{Perplexity} and Nandor Licker and Erin McKnight},
title = {{Accelerating Sonar through speculation}},
date = {2025-06-10},
url = {https://perplexity.coolkeypoint.com/hub/blog/accelerating-sonar-through-speculation}
}