কম্পিউটার টিউটোরিয়াল

ফাইন-টিউন্ড LLM সার্ভারলেসে ডিপ্লয় করুন: পে-পার-টোকেন ইনফারেন্স দিয়ে খরচ কমানো

ভূমিকা

নতুন প্রজেক্টে AI ওয়ার্কফ্লো টিম들이 খরচ বাঁচাতে নিতে পারেন সবচেয়ে বড় ধাপों में একটি হলো উপযুক্ত হলে সার্ভারলেস ইনফারেন্সের সুবিধা নেওয়া। ঐতিহ্যগতভাবে, AI মডেলগুলো চালানোর জন্য একটি ডেডিকেটেড GPU লাগে যা ২৪/৭ আওয়ারলি রেটে পে করা হয়। সার্ভারলেস ইনফারেন্স এন্ডপয়েন্টের সাথে, টিমদের অনেক ওপেন সোর্স মডেল পে-পার-টোকেন বেসিসে ব্যবহার করার অপশন থাকে আওয়ারলি রেটে GPU-এর জন্য টাকা দিয়ে এবং সেটআপ ও মেইনটেনেন্স নিজেরা ম্যানেজ করার বদলে। এতে নতুন প্রোডাক্ট চালানোর খরচ কমে গেছে কারণ এটি টিমদের শুধু তাদের ব্যবহার জন্য টাকা দেয়া এবং প্রয়োজন অনুযায়ী স্কেল করার অনুমতি দেয়।

যদিও সার্ভারলেস আর্কিটেকচার কিছুক্ষণ ধরে বিদ্যমান, কাস্টম বা ফাইন-টিউন্ড মডেল वाली টিম‌ها এখনও প্রায়শই GPU ব্যবহারের জন্য আওয়ারলি রেট দেয়। কিন্তু ফাইন-টিউন্ড মডেল হোস্ট করা এবং সেগুলো সার্ভারলেস এন্ডপয়েন্টের মাধ্যমে পে-পার-টোকেন বিলিং দিয়ে ডেলিভার করা সম্ভব। আমরা আলোচনা করব কীভাবে ফাইন-টিউন্ড মডেল সার্ভারলেসে হোস্ট করা সম্ভব এবং এর সুবিধা ও অসুবিধা।

মূল বিন্দুগুলো

  • LoRA-এর মতো প্যারামিটার-দক্ষ ফাইন-টিউনিং পদ্ধতিগুলো ছোট অ্যাডাপ্টার ওয়েট তৈরি করে যেগুলো একটি শেয়ার্ড, ফ্রোজেন বেস মডেলের উপরে লেয়ার করা যায়। এর মানে প্ল্যাটফর্মগুলো একটি সিঙ্গেল GPU থেকে সैंकড়ো ফাইন-টিউন্ড ভেরিয়েন্ট সার্ভ করতে পারে, প্রতি মডেল ডেডিকেটেড ডিপ্লয়মেন্টের দরকার দূর করে।
  • বার্স্টি বা অনির্দিষ্ট ট্রাফিক वाली টিমরা সার্ভারলেস ফাইন-টিউন্ড এন্ডপয়েন্টে সোইচ করে ইনফারেন্স খরচ কমাতে পারে,runde-the-clock GPU চালানোর বদলে শুধু তাদের ব্যবহৃত টোকেনের জন্য টাকা দিয়ে। ডিপ্লয়মেন্টও দ্রুত, কারণ একটি ট্রেনড অ্যাডাপ্টার একটি ম্যানেজড প্ল্যাটফর্মে আপলোড করলে মিনিটের মধ্যে লাইভ API এন্ডপয়েন্ট তৈরি হয় কোনো ইনফ্রাস্ট্রাকচার সেটআপ ছাড়া।
  • ফাইন-টিউন্ড মডেলের সাথে সার্ভারলেস ইনফারেন্সের মূল ট্রেড-অফ হলো কোল্ড স্টার্ট, যেখানে একটি আইডল অ্যাডাপ্টার রিকোয়েস্ট সার্ভ করার আগে স্টোরেজ থেকে রিলোড হওয়া বাধ্য হয়, কিছু সয়েক মিলিসেকেন্ড লেটেন্সি যোগ করে। এটি পিরিয়ডিক কিপ-অ্যালাইভ রিকোয়েস্ট দিয়ে মিটিগেট করা যায়, এবং ডिले একটি ফুল মডেল কোল্ড স্টার্টের চেয়ে ছোট কারণ শুধু লাইটওয়েট অ্যাডাপ্টার ওয়েট ফেচ করতে হয়।

সমর্থিত ফাইন-টিউনিং পদ্ধতিসমূহ

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

প্যারামিটার-দক্ষ ফাইন-টিউনিং (PEFT) সকল ওয়েট রি-ট্রেন না করে শুধু ওয়েটের একটি ছোট সাবসেট আপডেট করে, মূল মডেলকে ফ্রোজেন রাখে। এতে কাস্টমাইজেশন উপস্থাপনকারী অতিরিক্ত ওয়েটের একটি খুব ছোট সেট তৈরি হয়, যখন বড় বেস মডেল অপরিবর্তিত থাকে এবং অনেক ভিন্ন, অ-রিলেটেড ব্যবহারকারীদের শেয়ার করা যায়।

সবচেয়ে ব্যাপক ব্যবহৃত PEFT পদ্ধতি হলো Low-Rank Adaptation (LoRA)। ফ্রোজেন বেস মডেলের ওপর ছোট ট্রেনযোগ্য অ্যাডাপ্টার ম্যাট্রিক্স যোগ করে—LoRA মডেলের বিদ্যমান ওয়েট সরাসরি মডিফাই করে না। এই অ্যাডাপ্টারগুলো বেস মডেলের দশ বা শত গিগাবাইটের চেয়ে কয়েক মেগাবাইট ওয়েটে টাস্ক-স্পেসিফিক আচরণ ক্যাপচার করে। LoRA-এর কিছু ভেরিয়েন্টও রয়েছে, যেমন QLoRA, DoRA, এবং LoRA+, যেগুলো সার্ভারলেস ইনফারেন্স প্ল্যাটফর্মগুলো দ্বারা ব্যাপকভাবে সমর্থিত।

কারণ বেস মডেল ফ্রোজেন এবং সব ব্যবহারকারীর জন্য একই, একটি প্ল্যাটফর্ম এটিকে একবার GPU মেমরিতে লোড করে শেয়ার করতে পারে। প্রতিটি ব্যবহারকারীর LoRA অ্যাডাপ্টার তারপর রিকোয়েস্ট টাইমে সেটির উপরে লোড হয়, যা একটি সিঙ্গেল GPU থেকে সैंकড়ো ফাইন-টিউন্ড ভেরিয়েন্ট সার্ভ করা প্র্যাক্টিক্যাল করে তোলে। এটি লক্ষ্য করা গুরুত্বপূর্ণ যে প্ল্যাটফর্মগুলো যেগুলো ফাইন-টিউন্ড মডেলের ওপর সার্ভারলেস ইনফারেন্স সাপোর্ট করে, সেগুলো সাধারণত নির্দিষ্ট বেস মডেলের সাথে সাপোর্ট করে। তাই আপনার একটি LoRA অ্যাডাপ্টার থাকতে হবে যেটি তাদের সমর্থিত বেস মডেলের ওপর ট্রেন করা হয়েছে।

একাধিক LoRA অ্যাডাপ্টার ম্যানেজ করা

LoRA অ্যাডাপ্টার ওয়েটগুলো (সাধারণত ১০-১০০ MB প্রতিটি) ফাস্ট অবজেক্ট স্টোরেজ বা ইনফারেন্স সার্ভার দ্বারা ম্যানেজড একটি ইন-মেমরি ক্যাশে স্টোর করা হয়। যখন একটি নির্দিষ্ট অ্যাডাপ্টারের জন্য রিকোয়েস্ট আসে, সার্ভিং সিস্টেম সেগুলো ফেচ করে এবং ফরওয়ার্ড পাসে অন-দ-ফ্লাই ফিউজ করে।

এই ফিউশন প্রসেস লাইটওয়েট। প্রতিটি ট্রান্সফরমার লেয়ার যেখানে LoRA প্রয়োগ করা হয়েছে, সেখানে অ্যাডাপ্টার দুটি ছোট ম্যাট্রিক্স যোগ করে যা লেয়ারের আউটপুটে একটি লো-র‍্যাঙ্ক কোরেকশন তৈরি করে। ইনফারেন্স সময়ে, সার্ভার বেস লেয়ারের আউটপুট কম্পিউট করে, তারপর কয়েক এক্সট্রা CUDA অপারেশনে LoRA কোরেকশন যোগ করে। বেস ওয়েট কখনো মডিফাই হয় না, তাই রিকোয়েস্টের মধ্যে অ্যাডাপ্টার সোইচ করার জন্য শুধু সেই ছোট ম্যাট্রিক্স যুগলগুলো GPU রেজিস্টারে রিপ্লেস করা প্রয়োজন, বেস মডেল রিলোড বা CUDA কার্নেল রিস্টার্ট করার বদলে।

সিঙ্গেল ইনস্ট্যান্সে সैंकড়ো অ্যাডাপ্টার কাজ করার সাথে সাথে মেমরি ম্যানেজমেন্ট সবচেয়ে বড় চ্যালেঞ্জের একটি। ইনফারেন্স সার্ভারকে সবচেয়ে সম্প্রতি এবং সবচেয়ে ঘন ঘন ব্যবহৃত অ্যাডাপ্টার ওয়েটের একটি ছোট রেজিডেন্ট ক্যাশে VRAM-এ মেইনটেইন করতে হয়। অন্যান্য অ্যাডাপ্টার VRAM থেকে ইভিক্ট হয়ে CPU RAM বা অবজেক্ট স্টোরেজে চলে যায়, কিছু সয়েক মিলিসেকেন্ড রিলোড টাইম পেনাল্টি সৃষ্টি করে।

ব্যাচিং প্রসেস LoRA পদ্ধতি ব্যবহার করার উপর ভিত্তি করে ভিন্ন হতে পারে। যেসব রিকোয়েস্ট একটি অ্যাডাপ্টার শেয়ার করে সেগুলো সাধারণত সাব-ব্যাচে গ্রুপ করা হয় প্রতিটি সাব-গ্রুপের কোরেকশন চালানোর আগে, কিন্তু কিছু সিস্টেম, যেমন S-LoRA, ভিন্ন অ্যাডাপ্টার থেকে রিকোয়েস্ট একই ফরওয়ার্ড পাসে প্যাক করে এবং একটিভ অ্যাডাপ্টার একটি ইউনিফাইড মেমরি পুলে স্টোর করে, তারপর কাস্টম CUDA কার্নেল দিয়ে এড্রেস করে যা একই সাথে ভিন্ন সিকোয়েন্স পজিশনে ভিন্ন অ্যাডাপ্টার কোরেকশন প্রয়োগ করতে পারে। এই পদ্ধতিকে有時 LoRA মাল্টিপ্লেক্সিং বলা হয়। এটি GPU-কে স্যাচুরেটেড রাখে এমনকি যখন ট্রাফিক অনেক ফাইন-টিউন্ড ভেরিয়েন্টে ছড়িয়ে থাকে। vLLMও তাদের জন্য নেটিভলি LoRA মাল্টিপ্লেক্সিং সাপোর্ট করে যারা ঘণ্টার রেটে GPU ভাড়া নেয়।

KV-ক্যাশ এন্ট্রিগুলো সেই অ্যাডাপ্টার সাথে কাপল্ড যা সেগুলো তৈরি করেছে। একটি অ্যাডাপ্টার দিয়ে জেনারেট করা ক্যাশ এন্ট্রি অন্য অ্যাডাপ্টার ব্যবহার করা রিকোয়েস্টের জন্য রিইউজ করা যায় না। এর ফলে একটি মাল্টি-অ্যাডাপ্টার সেটিং-এ সিঙ্গেল-মডেল ডিপ্লয়মেন্টের চেয়ে কম KV-ক্যাশ হিট রেট হয়, এবং ইনফারেন্স সার্ভার ক্যাশ এন্ট্রিকে রিকোয়েস্টের প্রম্পট টোকেন এবং অ্যাডাপ্টার আইডেন্টিফায়ার দুটো দিয়ে কি করা বাধ্য হয়।

সার্ভারলেস ফাইন-টিউনিং ব্যবহার করার বাস্তব প্রভাব

সার্ভারলেস ফাইন-টিউনিংয়ের সুবিধাগুলো সেসব টিমের জন্য সবচেয়ে স্পষ্ট যারা নতুন সার্ভিস বিল্ড করছে যাদের অনিয়মিত বার্স্টি ট্রাফিক আছে এমনکه ২৪/৭ রিজার্ভড GPU চালানো জরুরি নয় বা খরচ-দক্ষ নয়। রাত भर আইডল আওয়ার্সের জন্য ফিক্সড GPU-আওয়ার রেট দেয়ার বদলে, আপনি শুধু আপনার রিকোয়েস্ট থেকে টোকেনের জন্য টাকা দেন। সার্ভারলেস আর্কিটেকচারে শিফ্ট করে, আপনি ইনফারেন্স খরচ এক আদেশেরjum magnitudes কমাতে পারেন।

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

ফাইন-টিউন্ড মডেল সার্ভারলেসে হোস্ট করার সবচেয়ে বড় অসুবিধা হলো কোল্ড স্টার্ট। যখন একটি অ্যাডাপ্টার একটি সময়ের জন্য কোনো ট্রাফিক পায় না, ইনফারেন্স প্ল্যাটফর্মগুলো সাধারণত এটিকে শূন্যে স্কেল করে, GPU মেমরি থেকে ওয়েট ইভিক্ট করে, এবং অন্য ব্যবহারকারীদের জন্য VRAM রিক্লেইম করে। এর মানে পরবর্তী ব্যবহারকারীকে অপেক্ষা করতে হয় যতক্ষণ সিস্টেম অবজেক্ট স্টোরেজ থেকে ওয়েট ফেচ করে, সেগুলো লোড করে, এবং ফরওয়ার্ড পাস শুরু করে। এটি সাধারণত কিছু সয়েক মিলিসেকেন্ড নেয়, কয়েক সেকেন্ড নয়, কারণ অ্যাডাপ্টারগুলো ছোট। একটা ক্যাভিয়াট: যদি বেস মডেলই ঘন ঘন ব্যবহার না হয় এবং সেটিও ইভিক্ট হয়ে যায়, যা কিছু আর্কিটেকচারে সম্ভব, কোল্ড স্টার্ট বেশি সময় নিতে পারে। কোল্ড স্টার্ট কেবল Time-to-First-Token (TTFT)-কে স্পাইক করে, Time-per-Output-Token বা প্রথম টোকেনের পর টোকেন জেনারেট হওয়ার রেটকে প্রভাবিত করে না। TTFT হলো वो মেট্রিক যা টিমরা দেখবে যারা স্ট্রিমিং লেটেন্সি মিনিমাইজ করতে চায়।

কোল্ড স্টার্ট দুটিভাবে মিটিগেট করা যায়। প্রথম, আর্কিটেকচারকে সেট আপ করা যেতে পারে লো-ট্রাফিক সময়ে পিরিয়ডিক কিপ-অ্যালাইভ রিকোয়েস্ট পাঠাতে। দ্বিতীয়, LoRA অ্যাডাপ্টার ট্রেন করার সময় কিছু ধাপ নেওয়া যেতে পারে যাতে লোড করা দক্ষ হয়। ট্রেনিং সময়ে, একটি অ্যাডাপ্টারের আকার এবং এক্সপ্রেসিভনেস একটি হাইপারপ্যারামিটার দ্বারা কন্ট্রোল হয় যা র‍্যাঙ্ক বা 'r' বলা হয়। একটি র‍্যাঙ্ক-৮ অ্যাডাপ্টার একটি র‍্যাঙ্ক-১৬ অ্যাডাপ্টারের চেয়ে প্রায় অর্ধেক ট্রেনযোগ্য প্যারামিটার তৈরি করে। অন্যান্য সব সমান থাকলে একটি র‍্যাঙ্ক-৮ অ্যাডাপ্টার কোল্ড স্টার্ট থেকে দ্রুত TTFT দেবে। একছত্র, LoRA যেসব ট্রান্সফরমার লেয়ারে প্রয়োগ করা হয় সেটিও ফাইল সাইজ এবং ইনফারেন্স ওভারহেড পরিবর্তন করে। LoRA সাধারণত প্রতিটি অ্যাটেনশন ব্লকে কোয়েরি এবং ভ্যালু প্রজেকশন ম্যাট্রিক্সে প্রয়োগ করা হয়, কিন্তু MLP (মাল্টি-লেয়ার পারসেপট্রন) লেয়ারে প্রয়োগ করা ডোমেন-স্পেসিফিকভাবে মডেলকে অ্যাডাপ্ট করার চেষ্টা করলে কোয়ালিটি উন্নত করতে পারে।

উপসংহার

সম্ভবত সার্ভারলেস ফাইন-টিউন্ড ইনফারেন্স ভবিষ্যতে একটি ক্রমবর্ধমান জনপ্রিয় অফারিং হবে। বর্তমান LLM ল্যান্ডস্কেপ বড়, ভালো রিজনিং, মনোলিথিক মডেল স্কেল করার ওপর 헤ভি ফোকাস করছে। অনেক স্পেশালিস্ট মডেল একসাথে কাজ করার আর্কিটেকচারের ওপর কম মনোযোগ দেওয়া হয়েছে। অবশেষে, কমিউনিটি অনেক মডেল ম্যানেজ করার এবং এই ধরনের আর্কিটেকচার ভালো পারফর্ম করে এমন ইউজ কেস খুঁজে পাবে। যখন এটা হবে, LoRA মাল্টিপ্লেক্সিং যেসব টিম অনেক কাস্টম এজেন্ট যুক্তিসঙ্গত খরচে ম্যানেজ করতে চায় তাদের জন্য সাহায্যকারী হবে।

এখনও উত্তর খুঁজছেন?

ফাইন-টিউন্ড LLM সার্ভারলেসে ডিপ্লয় করুন: পে-পার-টোকেন ইনফারেন্স দিয়ে খরচ কমানোএই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন-ননকমার্শিয়াল- শেয়ারঅ্যালাইক ৪.০ আন্তর্জাতিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।


  1. HTML DOM getElementById() মেথড

  2. Selenium-এ HTML টেক্সট ইনপুটে এন্টার কী প্রেস করা অনুকরণ করা

  3. পাইথনে দুটি ট্রি নোড স왪 করায় সমান হয় কিনা যাচাই করা (Flip Equivalent Trees)

  4. অ্যান্ড্রয়েড TextView-এ ক্লিকযোগ্য লিংক তৈরি করার পদ্ধতি