ভূমিকা: “সহজ” চ্যাট ফ্রেমওয়ার্কগুলির কথা
ডেভেলপার সরঞ্জামগুলির মধ্যে যেগুলি নিজেদেরকে “সহজ” বলে দাবি করে, সেগুলি সাধারণত তেমনটা হয় না। এগুলি ততটাই সহজ, যতটা এয়ারলাইন্সের বোর্ডিং “সহজ” হয়ে থাকে। সারি, জোন এবং একটি বোর্ডিং পাস যা আপনি খুঁজে পাচ্ছেন না, কারণ অ্যাপটি গেটে আপনাকে সাইন আউট করে দিয়েছে। FastChat, ওপেন-সোর্স চ্যাট ফ্রেমওয়ার্ক, যা লোকেরা LLM-এর সাথে যুক্ত করে, এটিকে প্রায়শই সহজ বলা হয়। বাস্তবে? আপনি যদি ঠিক কী করছেন তা জানেন তবে এটি সহজ। যদি না জানেন, তবে এটি পোর্ট, মডেল এবং GPU গণিতের একটি জট, যা ক্রিস্টোফার নোলানের প্লট টুইস্টের জন্য অডিশন দেওয়ার মতো দেখায়।
এই গাইডটি হল FastChat ব্যবহার করার বিষয়ে আমার সরল ভাষায় আলোচনা, আপনার সপ্তাহান্তটিকে ডিবাগিংয়ের পিছনে ব্যয় না করে। আমরা দেখব কীভাবে স্থানীয়ভাবে FastChat ব্যবহার করতে হয়, কীভাবে মডেল সার্ভ করতে হয়, কীভাবে একটি OpenAI-এর সাথে সামঞ্জস্যপূর্ণ এন্ডপয়েন্ট যুক্ত করতে হয় এবং কীভাবে একটি UI চালাতে হয় যা বাস্তবতার সংস্পর্শে আসা মাত্রই ভেঙে না যায়। আমি উল্লেখ করব কোনটি ভঙ্গুর, কোনটি দ্রুত এবং কোনটিকে দ্রুত হিসাবে বাজারজাত করা হচ্ছে (এগুলি প্রায়শই তিনটি ভিন্ন জিনিস)।
FastChat আসলে কী?
FastChat হল লার্জ ল্যাঙ্গুয়েজ মডেলগুলির সাথে সার্ভ করা এবং চ্যাট করার জন্য একটি ওপেন-সোর্স সিস্টেম। “OpenAI API ক্লোন” হিসাবে ভাবুন, তবে মডেলগুলি আপনার নিজের। এটির মধ্যে রয়েছে:
- একটি কন্ট্রোলার (ট্র্যাফিক পুলিশ),
- এক বা একাধিক মডেল কর্মী (যে ব্যক্তি আসলে কাজটি করছে),
- একটি OpenAI-এর সাথে সামঞ্জস্যপূর্ণ REST API লেয়ার,
- একটি ওয়েব UI যা কিছু না থাকার চেয়ে ভাল, তবে উদ্দেশ্য-নির্মিত যেকোনো কিছুর চেয়ে খারাপ।
আপনি যদি কখনও একটি ওয়ান-লাইনার দিয়ে একটি স্থানীয় LLM চালান এবং ভেবে থাকেন: এটি প্রোডাকশন-রেডি হওয়ার কোনও উপায় নেই—আপনি ঠিকই ধরেছেন। FastChat হল এর বিপরীত: এটি প্রোডাকশন-ইশ হতে চায়। আপনি LEGO Duplo-র চেয়ে LEGO Technic-এর মতো করে কম্পোনেন্টগুলিকে একসাথে যুক্ত করেন। এর ফল হল নমনীয়তা। এর জন্য আপনাকে জানতে হবে আপনি কী করছেন।
কীভাবে FastChat ব্যবহার করবেন: সংক্ষিপ্ত সংস্করণ
- FastChat এবং এর নির্ভরতাগুলি ইনস্টল করুন (পাইথন, CUDA যদি আপনি গতি নিয়ে আগ্রহী হন, মডেল ওয়েট)।
- কমপক্ষে একটি মডেল কর্মী শুরু করুন এবং এটিকে কন্ট্রোলারের দিকে নির্দেশ করুন।
- (ঐচ্ছিক কিন্তু দরকারী) OpenAI-এর সাথে সামঞ্জস্যপূর্ণ API সার্ভার শুরু করুন।
- (ঐচ্ছিক কিন্তু পরিস্থিতি বাঁচানোর মতো) ওয়েব UI শুরু করুন।
- OpenAI-স্টাইল API বা বিল্ট-ইন UI-এর মাধ্যমে অনুরোধ পাঠান। যতক্ষণ না আপনি গালি দেওয়া বন্ধ করেন, ততক্ষণ পর্যন্ত পুনরাবৃত্তি করতে থাকুন।
এটিই মূল বিষয়। বাকিটা আপনার GPU বা আপনার ধৈর্য না হারিয়ে এটি করার বিষয়ে।
সেট আপ: বিরক্তিকর অংশ যা আপনাকে পরে কয়েক ঘণ্টা বাঁচায়
- পাইথন: একটি ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার করুন যা আপনি নষ্ট করবেন না। FastChat সংস্করণ সম্পর্কে খুঁতখুঁতে। খুঁতখুঁতে সফ্টওয়্যার ক্ষমা চায় না।
- GPU: যদি আপনার NVIDIA হার্ডওয়্যার থাকে, তবে একটি CUDA টুলকিট ইনস্টল করুন যা আপনার ড্রাইভারের সাথে মেলে। যদি না মেলে, আপনি CPU-তে চালাবেন, যা Pike’s Peak-এর উপরে একটি মিনিভ্যান চালানোর মতো—সম্ভব, আপনি যা ভাবেন তার চেয়ে ধীর, এবং আপনি ভাববেন কেন চেষ্টা করেছিলেন।
- মডেল: FastChat মডেলের সাথে আসে না। আপনি মডেল ওয়েটের দিকে নির্দেশ করেন—Llama ভেরিয়েন্ট, Mistral, Qwen ইত্যাদি। আপনার GPU VRAM যদি “ডেটা সেন্টার”-এর চেয়ে “MacBook”-এর মতো হয় তবে আপনি কোয়ান্টাইজড মডেলও চালাতে পারেন।
বেসিক ইনস্টল: এটিকে পরিষ্কার রাখা
- একটি নতুন পাইথন venv তৈরি করুন।
- pip install fastchat। আপনার যদি CUDA-সক্ষম PyTorch-এর প্রয়োজন হয়, তবে প্রথমে সেটি ইনস্টল করুন। আপনি যদি না জানেন আপনার এটির প্রয়োজন আছে কিনা, তবে সম্ভবত আছে।
- যাচাই করুন টর্চ আপনার GPU দেখতে পায় কিনা: যদি না পায়, FastChat-কে দোষ দেওয়ার আগে সেটি ঠিক করুন। ড্রাইভারের অভাবে ফ্রেমওয়ার্ককে দোষ দেওয়া হল শীতের জন্য থার্মোস্ট্যাটকে দোষ দেওয়ার মতো।
কন্ট্রোলার শুরু করুন: এয়ার ট্র্যাফিক টাওয়ার
কন্ট্রোলার চালান। এটি মডেল কর্মীদের ট্র্যাক করে এবং অনুরোধ রুট করে। এটি ছাড়া, কিছুই একে অপরের সাথে কথা বলে না। এটিকে আপনার ইনফারেন্স ফার্মের জন্য DNS হিসাবে ভাবুন। বিরক্তিকর, অপরিহার্য, যখন এটি কাজ করে তখন অদৃশ্য।
একটি মডেল কর্মী শুরু করুন: যেখানে ম্যাজিক আসলে ঘটে
- একটি মডেল বেছে নিন যা আপনি VRAM-এ বহন করতে পারেন। FP16-এ একটি 7B প্যারামিটার মডেল এখনও একটি সাধারণ GPU-কে নষ্ট করতে পারে। আপনার সীমাবদ্ধতা থাকলে 4-বিট বা 8-বিট কোয়ান্টাইজেশন চেষ্টা করুন।
- একজন কর্মী শুরু করুন, এটিকে কন্ট্রোলারের দিকে নির্দেশ করুন এবং মডেল পাথ সেট করুন। যদি এটি লোড হতে ব্যর্থ হয়, তবে সাধারণত এর কারণ হল মডেল প্রিসিশন মেলে না বা টোকেনাইজার বেমানান। লগগুলি পড়ুন। সেগুলি সার্জনের মতো স্পষ্ট করে বলা থাকে।
OpenAI-এর সাথে সামঞ্জস্যপূর্ণ API: দরকারী অংশ
FastChat একটি OpenAI-স্টাইল API প্রকাশ করে। এর মানে হল আপনার বিদ্যমান স্ক্রিপ্ট এবং সরঞ্জাম যা OpenAI এন্ডপয়েন্টের প্রত্যাশা করে, সেগুলি তাত্ত্বিকভাবে কাজ করতে পারে। বাস্তবে, আপনি বেস URL সামঞ্জস্য করবেন এবং মডেলটি করতে পারে না এমন বৈশিষ্ট্যগুলির জন্য নজর রাখবেন (ফাংশন কলিং, চিত্রের ইনপুট), যদি না আপনার কর্মী সেগুলি সমর্থন করে। তবে জিনিসটির আকার—JSON, চ্যাট/কমপ্লিশন এন্ডপয়েন্ট—একই থাকে। এটি একটি সপ্তাহান্তের প্রোজেক্ট এবং এমন কিছুর মধ্যে পার্থক্য যা আপনি একটি সার্ভিসে যুক্ত করতে পারেন।
ওয়েব UI: কারণ কখনও কখনও আপনি ক্লিক করতে চান
বিল্ট-ইন UI পরীক্ষার জন্য ঠিক আছে। এটি কোনও প্রোডাক্ট নয়; এটি একটি উইন্ডো। আপনি যদি শুধুমাত্র আপনার মস্তিষ্কের জন্য একটি ডেভ কনসোল চান, তবে এটি যথেষ্ট। আপনি যদি ওয়ার্কস্পেস, থ্রেড, মাল্টিমোডাল ইনপুট বা চিন্তা করে তৈরি করা জীবনযাত্রার মান উন্নত করার বৈশিষ্ট্য চান, তবে আপনাকে নিজের র্যাপার লিখতে হবে—অথবা এমন একটি ক্লায়েন্ট ব্যবহার করতে হবে যা ইতিমধ্যে প্রান্তিক সমস্যাগুলি খুঁজে বের করেছে।
স্থানীয় ডেভেলপমেন্টের জন্য কীভাবে FastChat ব্যবহার করবেন
- আলাদা টার্মিনালে কন্ট্রোলার এবং একজন কর্মী চালু করুন। যতক্ষণ না আপনি তাদের বিশ্বাস করেন ততক্ষণ পর্যন্ত তাদের tmux-এ লুকিয়ে রাখবেন না।
- OpenAI-এর সাথে সামঞ্জস্যপূর্ণ এন্ডপয়েন্টে হিট করার জন্য কার্ল বা একটি ছোট পাইথন স্ক্রিপ্ট ব্যবহার করুন: একটি ছোট এবং দ্ব্যর্থহীন পরীক্ষার প্রম্পট পাঠান।
- জেনারেশন প্যারামিটারগুলি ডায়াল করুন: তাপমাত্রা, top_p, max_tokens। রক্ষণশীলভাবে শুরু করুন। লোকেরা অতিরিক্ত র্যান্ডমনেস টিউন করে এবং তারপরে হ্যালুসিনেশন সম্পর্কে অভিযোগ করে যেন মডেলটি দুষ্টুমি করার জন্য জেগে উঠেছে।
- নিশ্চিত করুন টোকেনাইজেশন আচরণ আপনার প্রত্যাশার সাথে মেলে। আপনি যদি প্রায়শই মডেল অদলবদল করেন, তবে আপনি প্রান্তিক সমস্যাগুলি খুঁজে পাবেন। এটি FastChat-এর দোষ নয়। এটি হল “LLM অদ্ভুত”।
টিম প্রোটোটাইপিংয়ের জন্য কীভাবে FastChat ব্যবহার করবেন
- একটি স্থিতিশীল হোস্টে কন্ট্রোলার চালান।
- একটি পুল অনুকরণ করার জন্য একই মডেলের সাথে একাধিক কর্মী চালান, অথবা সক্ষমতা অনুসারে মডেল মিশ্রিত করুন।
- অভ্যন্তরীণভাবে OpenAI-এর সাথে সামঞ্জস্যপূর্ণ এন্ডপয়েন্ট প্রকাশ করুন। আপনার দলকে একটি একক URL এবং একটি API কী দিন।
- লগিং যোগ করুন। নতুন কিছু নয়, তবে যে সংখ্যক দল না দেখে কাজ করছে, তাতে ভেগাসের স্পোর্টসবুকও লজ্জা পাবে। ডিবাগিংয়ের জন্য আপনার প্রম্পট এবং প্রতিক্রিয়া প্রয়োজন; প্রয়োজন হলে সংবেদনশীল অংশগুলি সরিয়ে দিন।
পারফরম্যান্স: “দ্রুত” মানে আপনার উপর নির্ভর করে
FastChat আপনাকে দ্রুত হওয়ার জন্য যথেষ্ট সুযোগ দেয়—অথবা অতিরিক্ত উচ্চাভিলাষী কনফিগারেশনের সাথে নিজেকে শেষ করার সুযোগ দেয়। বাস্তবতার পরীক্ষা:
- VRAM: আপনার যদি যথেষ্ট না থাকে তবে কোয়ান্টাইজ করুন। এখনও যদি না হয় তবে ছোট মডেল ব্যবহার করুন। কোনও ফ্রেমওয়ার্ক পদার্থবিদ্যা ঠিক করতে পারবে না।
- ব্যাচ সাইজ: থ্রুপুটের জন্য ভাল, প্রায়শই লেটেন্সির জন্য খারাপ। একটি বেছে নিন। আপনার যদি উভয়ের প্রয়োজন হয় তবে আপনার আরও কর্মী প্রয়োজন।
- KV ক্যাশে: আপনার কর্মী সমর্থন করলে এটি পুনরায় ব্যবহার করুন। অন্যথায় আপনি সেই কনটেক্সটের জন্য অর্থ প্রদান করছেন যার জন্য আপনি ইতিমধ্যে অর্থ প্রদান করেছেন।
- টোকেন স্যাম্পলিং: আপনার বেস মডেলের গুণমান সীমাবদ্ধ হওয়ার পরে অভিনব ডিকোডিং স্কিমগুলি কম ফল দেয়।
সুরক্ষা: এটি কোনও খেলনা নয়
আপনি যদি FastChat এমন একটি সার্ভারে রাখেন যেখানে অন্য মানুষেরা এটি ব্যবহার করতে পারে:
- অথ যোগ করুন। এমনকি একটি সাধারণ API কী “আশা”-র চেয়ে ভাল।
- রেট লিমিট করুন। আপনার ভবিষ্যতের আপনি আপনাকে ধন্যবাদ জানাবে যখন একটি স্ক্রিপ্ট রাত ২টায় পুনরাবৃত্তিমূলক হয়ে যাবে।
- আপনি যদি লাইসেন্সকৃত ওয়েটগুলিকে ওপেন ওয়েটের সাথে মিশ্রিত করেন তবে সর্বজনীন এবং ব্যক্তিগত মডেলের মধ্যে ট্র্যাফিক ভাগ করুন। আইনজীবীরা অস্পষ্টতা পছন্দ করেন; তাদের সেই সুযোগ দেবেন না।
কীভাবে আসল সরঞ্জামের সাথে FastChat ব্যবহার করবেন
- নোটবুক: FastChat বেস URL-এ আপনার OpenAI ক্লায়েন্টকে নির্দেশ করুন এবং শুরু করুন। ডেটা বিজ্ঞানীদের জন্য এটি সবচেয়ে কম বিরক্তিকর উপায়।
- CLI: স্মোক টেস্টের জন্য একটি ছোট স্ক্রিপ্ট হাতের কাছে রাখুন। আপনি যদি 10 সেকেন্ডের মধ্যে একটি যুক্তিসঙ্গত প্রতিক্রিয়া না পান তবে থামুন এবং পাইপলাইনটি ঠিক করুন।
- ওয়েব অ্যাপ: FastChat-কে একটি অভ্যন্তরীণ মাইক্রোসার্ভিসের মতো ব্যবহার করুন। স্বাস্থ্য পরীক্ষা, পুনরায় চেষ্টা, টাইমআউট। এটি করার জন্য আপনার কোনও বইয়ের দরকার নেই—আপনার শৃঙ্খলা দরকার।
মডেল নির্বাচন: যে বিষয়ে সবাই তর্ক করে
দায়িত্বের সাথে FastChat ব্যবহার করা মডেল নির্বাচনের মাধ্যমে শুরু হয়। কিছু দ্রুত হিউরিস্টিকস:
- সংক্ষিপ্ত উত্তরের সাথে ছোট আকারের চ্যাট: ছোট আকারের নির্দেশ-টিউনড মডেলগুলি প্রায়শই তাদের ক্ষমতার চেয়ে বেশি ভাল কাজ করে।
- কোড-ভারী প্রম্পট: এমন মডেল ব্যবহার করুন যা আসলে অনুমতিমূলক লাইসেন্স সহ কোডের উপর প্রশিক্ষিত। “কাছাকাছি” যথেষ্ট নয়।
- দীর্ঘ কনটেক্সট: আপনার যদি 32K+ টোকেনের প্রয়োজন হয় তবে প্রথমে আপনার হার্ডওয়্যারের পরিকল্পনা করুন। তারপরে আপনার প্রত্যাশা কম করুন।
- মাল্টিমোডাল: FastChat-এর সামঞ্জস্যতা বিভিন্ন। আপনার যদি ছবি বা অডিওর প্রয়োজন হয়, তবে এমন একজন কর্মী এবং মডেল বেছে নিন যা স্পষ্টভাবে এটি সমর্থন করে, অথবা এমন ভান করবেন না।
OpenAI-সামঞ্জস্যতার ফাঁদ
OpenAI-এর সাথে সামঞ্জস্যপূর্ণ API-এর ভাল দিক হল আপনি ব্যাক এন্ডগুলি অদলবদল করতে পারেন। খারাপ দিক হল লোকেরা সমস্ত মডেলকে একই রকম মনে করতে শুরু করে। তারা তা নয়। একটি অভিন্ন দেখতে এন্ডপয়েন্ট মডেল জুড়ে সম্পূর্ণ ভিন্ন আচরণ করতে পারে—যুক্তি, বাচালতা, সুরক্ষা ফিল্টার, পুরো ব্যক্তিত্ব। আপনার অ্যাপটি কেবল JSON স্কিমা মেলে বলেই জাদুভাবে মানিয়ে নেবে না। আপনি যে মডেলগুলি চালাবেন সেগুলির সাথে পরীক্ষা করুন। তারপরে কিছু পরিবর্তন করার পরেও আবার পরীক্ষা করুন।
পর্যবেক্ষণযোগ্যতা: আপনি যা দেখতে পারেন না, তা ঠিক করতে পারবেন না
- প্রম্পট, প্যারামিটার এবং লেটেন্সি লগ করুন।
- টোকেন গণনা ট্র্যাক করুন এবং আপনার বাজেট নষ্ট করে এমন প্রম্পটগুলি প্রত্যাখ্যান করুন।
- মডেল প্রতি ড্যাশবোর্ড রাখুন। হ্যাঁ, এটি একটি “চ্যাট সার্ভারের” জন্য অনেক বেশি। এটি স্থিতিশীলতা এবং ভাইবের মধ্যে পার্থক্যও তৈরি করে।
ব্যর্থতার ধরণ: যেখানে FastChat কামড় বসায়
- কর্মী OOM-এর অধীনে মারা যায়: আপনি নির্ভুলতার বিষয়ে একটু বেশিই অনুমান করেছিলেন। এটি কম করুন বা আরও VRAM সহ একটি GPU পান—কোনও জাদু FP16 13B-কে 8GB-এর মধ্যে নির্ভরযোগ্যভাবে সংকুচিত করতে পারবে না।
- কন্ট্রোলার কর্মীদের ট্র্যাক হারায়: নেটওয়ার্কিং সমস্যা। পুনরায় চেষ্টা করার অপশন যোগ করুন এবং কফি শপের LAN পার্টির মতো একই দুর্বল Wi-Fi-এর উপর সবকিছু স্থাপন করবেন না।
- ভয়ঙ্কর লেটেন্সি স্পাইক: আপনার ব্যাচ খুব উচ্চাভিলাষী, অথবা আপনার CPU টোকেনাইজেশনকে বাধা দিচ্ছে। তত্ত্ব দেওয়ার আগে প্রোফাইল করুন।
এক সপ্তাহ না হারিয়ে RAG-এর জন্য কীভাবে FastChat ব্যবহার করবেন
লোকেরা FastChat-কে রিট্রিভাল পাইপলাইনের সাথে যুক্ত করে এবং মডেলটি উদ্ধৃতি দেওয়ার পরিবর্তে অন্য কিছু করলে অবাক হয়। টিপস:
- অন্য কোথাও পরিষ্কারভাবে রিট্রিভাল করুন (ভেক্টর DB, এম্বেডিং) এবং মডেলটিকে সংক্ষিপ্ত, স্ট্রাকচার্ড কনটেক্সট দিন।
- প্রম্পটগুলিকে নিয়মের মধ্যে রাখুন। “উদ্ধৃতি সহ উত্তর দিন” কোনও মন্ত্র নয়; এটি একটি পরামর্শ। আপনার যদি উদ্ধৃতির প্রয়োজন হয় তবে পোস্ট-প্রসেসিংয়ে কাঠামো প্রয়োগ করুন বা এমন একটি মডেল ব্যবহার করুন যা আচরণ করার জন্য প্রশিক্ষিত।
- পুনরাবৃত্তিমূলক প্রশ্নের উত্তর ক্যাশে করুন। বেশিরভাগ “ডায়নামিক” জ্ঞানের ভিত্তি বিভিন্ন দৃষ্টিকোণ থেকে আসা 80% একই ছয়টি প্রশ্ন।
খরচ: সময় হল সবচেয়ে দামি অংশ
স্থানীয়ভাবে FastChat চালানো কাগজে সস্তা এবং মনোযোগের দিক থেকে ব্যয়বহুল। আপনার লক্ষ্য যদি শেখা হয় তবে ভাল। আপনার লক্ষ্য যদি কিছু পাঠানো হয় তবে বিবেচনা করুন আপনার সময় কোথায় যাচ্ছে: প্যাকেজিং, আপগ্রেড, মনিটরিং, ফলব্যাক। যদি আপনার কাজের মূল্যায়ন “একটি চ্যাট সার্ভার চালানো” ছাড়া অন্য কিছু হয়, তবে একটি পরিচালিত পরিষেবা ব্যবহার করতে দ্বিধা করবেন না।
কোথায় Sider.AI ফিট করে—এবং কোথায় করে না আপনি যদি একটি যুক্তিসঙ্গত ক্লায়েন্ট অভিজ্ঞতা চান—থ্রেড, প্রম্পট ম্যানেজমেন্ট, স্থানীয় এবং ক্লাউড মডেলের মধ্যে দ্রুত স্যুইচিং—Sider.AI তিনটি YAML ফাইল প্রথমে না পড়েই কাজ করে। আপনি এটিকে একটি OpenAI-এর সাথে সামঞ্জস্যপূর্ণ এন্ডপয়েন্টে (যেমন FastChat) নির্দেশ করতে পারেন অথবা যখন আপনার GPU দুর্বল হতে শুরু করে তখন হোস্ট করা মডেল ব্যবহার করতে পারেন। এটি FastChat-এর প্রতিস্থাপন নয়; এটি সেই অংশ যা আপনার অগোছালো প্রান্তগুলিকে এমন কিছুতে পরিণত করে যা লোকেরা কাছাকাছি কোনও ডেভেলপার ছাড়াই ব্যবহার করতে পারে। আপনার অগ্রাধিকার যদি কর্মী এবং কন্ট্রোলারের সাথে টিঙ্কারিং করা হয় তবে FastChat-এ থাকুন। যদি আসল কাজ করা হয় তবে আপনার FastChat এন্ডপয়েন্টের উপরে Sider হল সেই অংশ যা নিয়ে আপনি আফসোস করবেন না। কীভাবে ধাপে ধাপে FastChat ব্যবহার করবেন (হাত না নেড়ে)
- নির্ভরতা ইনস্টল করুন: পাইথন, CUDA যদি প্রযোজ্য হয়, CUDA সহ PyTorch।
- একটি নতুন পরিবেশে FastChat ইনস্টল করুন।
- একটি অনুমানযোগ্য পোর্টে কন্ট্রোলার শুরু করুন।
- এমন একটি মডেল ডাউনলোড করুন যা আপনি আসলে চালাতে পারেন। একজন কিশোর প্রথম গাড়ি বেছে নেওয়ার মতো লিডারবোর্ডের সবচেয়ে বড় জিনিস দিয়ে শুরু করবেন না।
- সেই মডেলের সাথে একজন কর্মী চালু করুন। VRAM ব্যবহার এবং প্রথম টোকেন নিশ্চিত করুন।
- OpenAI-এর সাথে সামঞ্জস্যপূর্ণ API সার্ভার শুরু করুন।
- আপনার স্থানীয় বেস URL-এ সেট করা আপনার OpenAI ক্লায়েন্ট ব্যবহার করে একটি পরিচিত-ভাল প্রম্পট দিয়ে পরীক্ষা করুন।
- ডিকোডিং প্যারামিটার সামঞ্জস্য করুন, যুক্তিসঙ্গত ডিফল্ট সেট করুন এবং কনফিগে লক করুন।
- অন্য কেউ এটি স্পর্শ করার আগে লগিং, বেসিক অথ এবং রেট লিমিট যোগ করুন।
- ঐচ্ছিক: ওয়েব UI শুরু করুন অথবা Sider.AI-এর মতো একটি ভাল ক্লায়েন্ট সংযোগ করুন।
সাধারণ সমস্যা যা আপনি একবারের জন্য অনুভব করবেন (যদি আপনি এটি পড়েন)
- মিশ্র CUDA/PyTorch সংস্করণ: প্রথম আসল লোড না হওয়া পর্যন্ত এটি ঠিকঠাক মনে হবে। উদ্দেশ্য করে সংস্করণ মেলান।
- টোকেনাইজার অমিল: Hugging Face মডেল বনাম টোকেনাইজার ড্রিফট সূক্ষ্ম বাজে কথা তৈরি করে। তাদের সিঙ্ক করে রাখুন।
- অত্যধিক দীর্ঘ সিস্টেম প্রম্পট: আপনি পেপ টকের জন্য টোকেন দিচ্ছেন। সিস্টেম প্রম্পটকে সংক্ষিপ্ত, নির্দিষ্ট এবং বিরক্তিকর করুন।
- স্ট্রিমিং উপেক্ষা করা: প্রতিক্রিয়াশীলতার জন্য স্ট্রিমিং চালু করুন। শেষ ব্যবহারকারীরা “দ্রুত টাইপ করা শুরু করে” মানে “স্মার্ট” মনে করে এবং সত্যি বলতে তারা ভুলও নয়।
স্কেলিং: যখন একজন কর্মী যথেষ্ট নয়
- অনুভূমিক কর্মী: কন্ট্রোলারের কাছে নিবন্ধিত একাধিক কর্মী। এটি রকেট বিজ্ঞান নয়, তবে প্রতিটি মেশিনে মডেল ওয়েটের জন্য আপনার একটি পরিকল্পনা দরকার।
- মিশ্র মডেল: ছোট উত্তরের জন্য ছোট মডেলগুলিতে রুট করুন; কঠিন প্রশ্নগুলি ভারী হিটারের কাছে পাঠান। আপনার রুটিং যুক্তির প্রয়োজন হবে; কন্ট্রোলার আপনার অ্যাপের অভিভাবক হবে না।
- ক্যাশিং: সাধারণ প্রম্পটগুলি মুখস্থ করুন। আপনি ইতিমধ্যে যে কাজটি করেছেন তা এড়িয়ে যাওয়ার চেয়ে দ্রুত আর কিছুই মনে হয় না।
অন্যান্য ফ্রেমওয়ার্কের পরিবর্তে কেন FastChat?
কারণ আপনি পুরো ক্যাথেড্রাল তৈরি না করে নিয়ন্ত্রণ চান। কন্ট্রোলার/কর্মীর বিভাজন যুক্তিসঙ্গত। OpenAI-এর সাথে সামঞ্জস্যপূর্ণ API বাস্তবসম্মত। এবং এটি যতটা তার চেয়ে বেশি হওয়ার ভান করে না। আপনি যদি আপনার উচ্চাকাঙ্ক্ষা থার্মোডাইনামিক্সের আইনের মধ্যে রাখেন তবে আপনি একটি বিকেলে “ধারণা” থেকে “ব্যবহারযোগ্য” পর্যায়ে যেতে পারেন।
তবে নিজেকে বোকা বানাবেন না
ভালভাবে FastChat ব্যবহার করার অর্থ হল আপস মেনে নেওয়া:
- আপনি নমনীয়তার জন্য কিছু মসৃণতা ত্যাগ করবেন।
- আপনি লগগুলি পড়বেন এবং সেগুলি অন্তত একবার দুর্বোধ্য হবে।
- আপনি বেঞ্চমার্ক ড্রাগনদের তাড়া করতে প্রলুব্ধ হবেন। প্রতিরোধ করুন। বেশিরভাগ ব্যবহারিক কাজের জন্য মডেল পছন্দ ফ্রেমওয়ার্কের চেয়ে বেশি গুরুত্বপূর্ণ।
আপনি যদি শুধুমাত্র পাঁচটি জিনিস মনে রাখেন
- ছোট করে শুরু করুন। ছোট মডেল, ছোট কনফিগারেশন, কম চলমান অংশ।
- OpenAI-এর সাথে সামঞ্জস্যপূর্ণ API-এর মাধ্যমে তাড়াতাড়ি পরীক্ষা করুন। যদি সেই পথটি কাজ করে তবে বাকিটা নদীর জল।
- স্থিতিশীলতার সাথে আপস করার আগে কোয়ান্টাইজ করুন। OOM আপনাকে দ্রুত করে না।
- পরে আপনি যা অনুমান করতে চান না, তা সবকিছু লগ করুন।
- একটি ভাল ক্লায়েন্ট ব্যবহার করুন। সঠিক UI মাঝারি মডেলগুলিকে সক্ষম এবং ভাল মডেলগুলিকে দুর্দান্ত বোধ করায়। Sider.AI এখানে একটি কঠিন, ঝামেলা-মুক্ত স্তর।
সমাপ্তি: সৎ মতামত
FastChat হল সেই জিনিস যা ঘটে যখন ওপেন সোর্স একটি SaaS হওয়ার ভান না করে দরকারী হওয়ার জন্য যথেষ্ট বড় হয়। এটি মডুলার, বাস্তববাদী এবং স্পষ্টভাবে আপনার হাত ধরে চলতে আগ্রহী নয়। FastChat কীভাবে ব্যবহার করতে হয়, তা মূলত যেকোনো সরঞ্জাম ব্যবহার করার মতোই যা আনুষ্ঠানিকতার চেয়ে নমনীয়তাকে বেশি মূল্য দেয়: একটি স্পষ্ট লক্ষ্য দিয়ে শুরু করুন, ন্যূনতম কার্যকর পাইপলাইন তৈরি করুন এবং যখন এটি কাজ করে তখন থামুন। বাকিটা—ড্যাশবোর্ড, বিতরণ করা কর্মী, মডেল চিড়িয়াখানা—কেউ আপনার কাছে আপটাইম নম্বর না চাওয়া পর্যন্ত অপেক্ষা করতে পারে।
বেশিরভাগ লোকের জন্য, স্মার্ট পদক্ষেপ হল FastChat-কে এমন একটি ক্লায়েন্টের পিছনে চালানো যা আপনার মনোযোগ নষ্ট করে না। টিঙ্কারারদের জন্য, এটি ধারালো প্রান্তযুক্ত একটি খেলার মাঠ। সবার জন্য: আপনি এটিকে দ্রুত করলে এটি দ্রুত, আপনি এটিকে সহজ রাখলে এটি সহজ এবং এটি আপনার মডেল পছন্দের মতোই ভাল। সফ্টওয়্যার যেমন হওয়া উচিত, এবং যেমনটি খুব কমই হয়।
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
প্রশ্ন ১: আমি কীভাবে একটি OpenAI-এর সাথে সামঞ্জস্যপূর্ণ ক্লায়েন্টের সাথে FastChat ব্যবহার করব?
আপনার ক্লায়েন্টের বেস URL-কে FastChat API সার্ভারে নির্দেশ করুন এবং একই চ্যাট/কমপ্লিশন স্কিমা রাখুন। এন্ডপয়েন্ট মেলে, তবে মডেল আচরণ করবে না—তাই আপনি যে মডেলটি চালাবেন তার বিপরীতে প্রম্পট এবং প্যারামিটার পরীক্ষা করুন।
প্রশ্ন ২: একটি একক GPU-তে FastChat চালানোর সেরা উপায় কী?
আপনার VRAM-এর সাথে মানানসই একটি মডেল বেছে নিন, অতিরিক্ত জায়গার সাথে, আরামের জন্য আদর্শভাবে কোয়ান্টাইজড (4-8 বিট)। একজন কর্মী শুরু করুন, টোকেন স্ট্রিম করুন এবং আপনি যদি লেটেন্সি স্পাইক পছন্দ না করেন তবে ব্যাচ সাইজ ছোট রাখুন।
প্রশ্ন ৩: FastChat কি একসাথে একাধিক মডেল পরিচালনা করতে পারে?
হ্যাঁ—কন্ট্রোলার একাধিক কর্মী এবং মডেল ট্র্যাক করবে। ইচ্ছাকৃতভাবে অনুরোধ রুট করুন; ধরে নেবেন না ‘একই API’ মানে মডেল জুড়ে ‘পরিবর্তনযোগ্য ফলাফল’।
প্রশ্ন ৪: নতুন হার্ডওয়্যার না কিনে আমি কীভাবে FastChat-কে দ্রুত করব?
মডেলটি কোয়ান্টাইজ করুন, KV ক্যাশে পুনরায় ব্যবহার সক্ষম করুন, প্রতিক্রিয়া স্ট্রিম করুন এবং max_tokens সঠিকভাবে সেট করুন। সাধারণ প্রম্পটগুলি ক্যাশে করা বেশিরভাগ নব-ঘূর্ণনের চেয়ে বেশি সাহায্য করে।
প্রশ্ন ৫: RAG পাইপলাইনের জন্য FastChat কি ভাল?
এটি চ্যাট স্তর হিসাবে ভাল কাজ করে, তবে RAG-এর গুণমান পরিষ্কার রিট্রিভাল এবং নিয়মবদ্ধ প্রম্পটের উপর নির্ভর করে। FastChat অগোছালো কনটেক্সট ঠিক করবে না; এটি কেবল মডেলটিকে দ্রুত পরিবেশন করে।