ইন্টারভিউ
ইন্টারভিউ প্রশ্ন
প্রতিটি পার্টের তিনটি প্রশ্ন, ছোট উত্তরসহ। প্রশ্ন খুললে উত্তর দেখা যাবে, পুরো সেকশন পড়তে লিংকে যান।
ইঞ্জিনিয়াররা টোকেন গুনে দেখে কেন, আর প্রম্পটের দৈর্ঘ্য কীভাবে খরচ ও ল্যাটেন্সি বদলায়?
মডেল যা কিছু করে (অ্যাটেনশন, জেনারেশন, খরচ) সবকিছুর হিসাব হয় টোকেন দিয়ে, অক্ষর বা শব্দ দিয়ে নয়, আর API-ও টোকেন ধরে চার্জ করে। প্রম্পট ৮০০ টোকেন থেকে ২০০ টোকেনে নামালে খরচ ৭৫% কমে এবং ল্যাটেন্সিও কমে। বেশিরভাগ API-তে আউটপুট টোকেন ইনপুট টোকেনের চেয়ে ৩–৫ গুণ দামি, আর প্রম্পট ক্যাশিং বারবার আসা প্রিফিক্সের খরচ প্রায় ৮০–৯০% কমিয়ে দেয়।
সেকশন পড়ুন →JSON এক্সট্র্যাকশন আর ক্রিয়েটিভ রাইটিংয়ের জন্য আপনি টেম্পারেচার কত রাখবেন, আর top_k ও top_p নিয়ে কী করবেন?
টেম্পারেচার সফটম্যাক্সের আগে লজিটগুলোকে T দিয়ে ভাগ করে। কোড, JSON, ক্লাসিফিকেশন আর ম্যাথের জন্য ০, চ্যাটের জন্য ০.৭–১.০, আর ক্রিয়েটিভ রাইটিং ও ব্রেনস্টর্মিংয়ের জন্য ১.০–২.০ ব্যবহার করুন। top_k আর top_p একসাথে কড়াভাবে দেবেন না: দুটোই টাইট মানে দিলে টেইল দুইবার ছাঁটা পড়ে এবং ডিজেনারেশন হতে পারে। আধুনিক প্রোভাইডাররা টেম্পারেচার + top_p (বা টেম্পারেচার + min_p) ব্যবহার করতে বলে।
সেকশন পড়ুন →কখন স্ট্যান্ডার্ড মডেলের বদলে রিজনিং মডেল ব্যবহার করা উচিত?
রিজনিং মডেল ইনফারেন্সের সময় বেশি কম্পিউট খরচ করে: আগে থিংকিং টোকেন তৈরি করে, তারপর চূড়ান্ত উত্তর দেয়। কাজটা ম্যাথ, কোড বা এজেন্টিক হলে, স্ট্যান্ডার্ড মডেল আপনার বেঞ্চমার্কে আটকে গেলে, আর ল্যাটেন্সি সহ্য করতে পারলে এগুলো ব্যবহার করুন। এরা প্রতি কুয়েরিতে ৫–৫০ গুণ বেশি টোকেন খরচ করে, তাই আপনার ল্যাটেন্সি ও খরচের সীমায় একটা থিংকিং বাজেট ক্যাপ বসান। বেশিরভাগ চ্যাট, এক্সট্র্যাকশন আর RAG-এর কাজে ভালো প্রম্পটিং-সহ স্ট্যান্ডার্ড মডেলই জেতে।
সেকশন পড়ুন →চেইন-অফ-থট, ReAct আর Reflexion-এর মধ্যে পার্থক্য কী?
চেইন-অফ-থট (Wei et al., ২০২২) উত্তরের আগে মডেলকে মাঝের রিজনিং টোকেন তৈরি করায়, যেমন আপনি "Let's think step by step" যোগ করলে। ReAct (Yao et al., ২০২২) রিজনিংকে অ্যাকশন আর অবজারভেশনের সাথে পর্যায়ক্রমে মেশায়, আর এটাই প্রতিটি আধুনিক AI এজেন্টের আর্কিটেকচারাল প্যাটার্ন। Reflexion (Shinn et al., ২০২৩) আরেকটা লুপ যোগ করে: মডেল কী ভুল হলো তা ভেবে দেখে এবং সেই রিফ্লেকশন মেমরিতে লিখে রাখে, যাতে পরের অ্যাটেম্পটে কাজে লাগে। একটা CoT ট্রেস সরাসরি উত্তরের চেয়ে ১০–৫০ গুণ লম্বা হতে পারে, তাই শুধু ম্যাথ, প্ল্যানিং, ডিবাগিং আর মাল্টি-হপ রিজনিংয়ের মতো কাজে এটা ব্যবহার করুন।
সেকশন পড়ুন →মডেল এমন আউটপুট দিলে যা আপনার পার্সার আশা করেনি, তখন আপনি কীভাবে সামলাবেন?
তিনটা স্তর ব্যবহার করুন। প্রথমে JSON মোড বা স্ট্রাকচার্ড আউটপুট দিয়ে মডেলকে কনস্ট্রেইন করুন, এটাই সবচেয়ে সস্তা ইনস্যুরেন্স। দ্বিতীয়ত, Pydantic, Zod বা JSON Schema দিয়ে রানটাইমে আউটপুট ভ্যালিডেট করুন, কারণ কনস্ট্রেইন্ড আউটপুটেও ভুল ফিল্ড বা হ্যালুসিনেটেড ভ্যালু থাকতে পারে। তৃতীয়ত, ব্যর্থতা সামলে নিয়ে নিরাপদে রিকভার করুন: আরও কড়া প্রম্পট দিয়ে রিট্রাই করুন, ডিফল্টে ফিরে যান, অথবা ইউজারকে "I don't know" দেখান। মডেল আউটপুটের ওপর কখনো eval() চালাবেন না।
সেকশন পড়ুন →প্রম্পট লেয়ারে প্রম্পট ইনজেকশন থেকে একটা LLM অ্যাপকে আপনি কীভাবে রক্ষা করবেন, আর সেটা কি যথেষ্ট?
প্রতিটি আনট্রাস্টেড ইনপুট স্পষ্ট লেবেল করা ট্যাগের ভেতরে রাখুন, আর সিস্টেম প্রম্পটে মডেলকে বলে দিন ট্যাগের ভেতরের কনটেন্ট হলো ডেটা, ইনস্ট্রাকশন নয়। গুরুত্বপূর্ণ নিয়মগুলো প্রম্পটের শেষে আবার লিখুন, ইনজেক্টেড কনটেন্টের আকারে সীমা দিন, আউটপুটকে কড়া স্কিমায় বেঁধে দিন, আর একটা টুল অ্যালাউলিস্ট রাখুন। কোনো প্রম্পট-লেয়ার ডিফেন্সই নিশ্ছিদ্র নয়, তাই এগুলোর সাথে সিস্টেম-লেয়ার ডিফেন্স মেলান: সন্দেহজনক আউটপুট চিহ্নিত করার আলাদা ক্লাসিফায়ার, প্রতি ইউজারে রেট লিমিট, হাই-রিস্ক অ্যাকশনে হিউম্যান রিভিউ, আর ডিনাই-বাই-ডিফল্ট টুল অ্যালাউলিস্ট।
সেকশন পড়ুন →কনটেক্সট উইন্ডোর ভেতরে একটা লম্বা চ্যাট রেখে গুরুত্বপূর্ণ তথ্য না হারানোর উপায় কী?
সবচেয়ে পুরনো টার্নগুলোকে মডেল দিয়ে একটা সারসংক্ষেপ ব্লকে সংকুচিত করুন, আর সাম্প্রতিক টার্নগুলো হুবহু রাখুন; কম্প্রেশন রেশিও সাধারণত ৫–২০×। এটা চালু করতে পারেন টোকেন বাজেট দিয়ে (যেমন হিস্ট্রি ৪K টোকেন ছাড়ালে), টার্ন-সংখ্যা দিয়ে, বা টপিক বদলালে। সামারাইজেশন লসি, আর সিদ্ধান্ত, নিখুঁত সংখ্যা ও কোট করা টেক্সট সবার আগে হারায়, তাই স্ট্রাকচার্ড সারসংক্ষেপ স্কিমা ব্যবহার করুন এবং সারসংক্ষেপকে ইনডেক্স হিসেবে দেখুন, সোর্স অফ ট্রুথ হিসেবে নয়। হাই-স্টেকস কনভার্সেশনে হুবহু ট্রান্সক্রিপ্ট একটা DB-তে সংরক্ষণ করুন।
সেকশন পড়ুন →প্রম্পট ক্যাশিং কীভাবে খরচ কমায়, আর কী সেটা নষ্ট করে দেয়?
প্রোভাইডাররা আপনার প্রম্পটের একটা প্রিফিক্স ক্যাশ করতে দেয়, ফলে রিকোয়েস্টের শুরুতে থাকা একই টোকেন অনেক কম খরচে এবং দ্রুত চলে; স্থির সিস্টেম প্রম্পট আর লম্বা রিট্রিভাল অংশ থাকলে এতে ইনপুট বিলের ৮০–৯০% কমতে পারে। স্থির কনটেন্ট আগে (সিস্টেম প্রম্পট, টুল স্কিমা, স্থির রিট্রিভাল) আর পরিবর্তনশীল কনটেন্ট শেষে রাখুন, যেমন নতুন ইউজার মেসেজ। Anthropic সর্বোচ্চ ৪টি ক্যাশ ব্রেকপয়েন্ট সমর্থন করে। ক্যাশ করা অংশে মাত্র একটা নতুন অক্ষর এলেই তার পরের সবকিছুর ক্যাশ নষ্ট হয়ে যায়, তাই ক্যাশড প্রিফিক্স বাইট-আইডেন্টিক্যাল রাখুন এবং CI-তে সিস্টেম প্রম্পটের হ্যাশ করে রাখুন।
সেকশন পড়ুন →Lost in the Middle ইফেক্ট কী, আর এর প্রভাব আপনি কীভাবে কমাবেন?
Liu et al. (২০২৩) দেখিয়েছেন, লম্বা কনটেক্সটের শুরু ও শেষের তথ্য মডেল ভালোভাবে মনে রাখে, কিন্তু মাঝের তথ্যে তার পারফরম্যান্স প্রায় র্যান্ডমের কাছাকাছি নেমে যায়, ফলে একটা U-আকৃতির কার্ভ তৈরি হয়। ১০০K+ কনটেক্সট উইন্ডোর ফ্রন্টিয়ার মডেলও এই প্রভাব থেকে যায়। কমাতে হলে গুরুত্বপূর্ণ কনটেন্ট শুরুতে রাখুন এবং শেষে আবার লিখুন, RAG-এ সবচেয়ে প্রাসঙ্গিক ডকুমেন্ট শুরুতে ও শেষে দুই জায়গাতেই রাখুন, আর কনটেক্সট ছেঁটে ছোট করুন। নিয়ম হিসেবে, যে তথ্য নিশ্চিতভাবে মনে রাখাতে চান তা কনটেক্সটের প্রথম ১০% বা শেষ ১০%-এ রাখুন।
সেকশন পড়ুন →RAG-এ চাঙ্কিং কেন গুরুত্বপূর্ণ, আর লেট চাঙ্কিং কী?
রিট্রিভাল কাজ করে ডকুমেন্টের ছোট ছোট অংশের ওপর, তাই টেক্সট কীভাবে কাটছেন তার ওপরই নির্ভর করে রিট্রিভার কী ফেরত দিতে পারবে: চাঙ্ক খুব বড় হলে উত্তর নয়েজে চাপা পড়ে, আর খুব ছোট হলে কনটেক্সট হারিয়ে যায়। ফিক্সড-সাইজ চাঙ্কিংয়ে পাশাপাশি চাঙ্কের মধ্যে chunk_overlap ভাগ থাকে, যাতে সীমানার কোনো তথ্য অন্তত একটা চাঙ্কে পুরোটা থাকে, আর রিকার্সিভ স্প্লিটার আগে প্যারাগ্রাফ, তারপর লাইন, ওয়ার্ড এবং শেষে ক্যারেক্টার দিয়ে কাটে। লেট চাঙ্কিং (Günther et al., ২০২৪) একটা লং-কনটেক্সট এমবেডিং মডেল দিয়ে পুরো টেক্সটকে একবারে এনকোড করে, তারপর ট্রান্সফর্মারের পরে এবং মিন পুলিংয়ের ঠিক আগে কাটে, ফলে প্রতিটি চাঙ্ক ভেক্টর আশপাশের কনটেক্সট বহন করে। এতে বাড়তি ট্রেনিং লাগে না, তবে এমন একটা এমবেডিং মডেল লাগে যার কনটেক্সট উইন্ডো পুরো ডকুমেন্ট ধরতে পারে।
সেকশন পড়ুন →হাইব্রিড সার্চ কেন ব্যবহার করবেন, আর রেসিপ্রোকাল র্যাংক ফিউশন (RRF) কীভাবে ফলাফল মেলায়?
BM25-এ কুয়েরির হুবহু শব্দ থাকতে হয়, আর ডেন্স ভেক্টর বিরল আইডেন্টিফায়ার, নাম ও কোড ঝাপসা করে ফেলতে পারে, তাই হাইব্রিড সার্চ দুটোই চালিয়ে ফলাফল মেলায়। RRF কাঁচা স্কোর উপেক্ষা করে এবং যে র্যাংকিংয়ে ডকুমেন্ট আছে সেগুলোর সবকটি থেকে 1/(k + rank) যোগ করে, ফলে দুই রিট্রিভারের স্কোর আলাদা স্কেলে থাকার সমস্যা এড়ানো যায়। দুই তালিকাতেই ভালো র্যাংক পাওয়া ডকুমেন্ট, একটামাত্র শক্তিশালী র্যাংক পাওয়া ডকুমেন্টকে হারিয়ে দেয়। পেপারে k = ৬০ ধরা হয়েছে, Elasticsearch ও OpenSearch-এর ডিফল্টও ৬০, কিন্তু Qdrant-এর ডকসে ডিফল্ট ২ বলা আছে, তাই আপনার ইঞ্জিনের ডিফল্ট দেখে নেবেন।
সেকশন পড়ুন →ফার্স্ট-স্টেজ রিট্রিভালের পরে রিরেংকার কেন যোগ করবেন, আর এর সীমা কী?
ফার্স্ট-স্টেজ রিট্রিভাল বিশাল কর্পাসের ওপর দ্রুত চলার জন্য বানানো, তাই এটা কুয়েরি আর ডকুমেন্টকে একসাথে না দেখেই প্রতিটি ডকুমেন্টের স্কোর দেয়। ক্রস-এনকোডার রিরেংকার জোড়াটাকে একসাথে প্রসেস করে, তাই এটা বেশি নিখুঁত কিন্তু ধীর, আর এটা কোনো পুনর্ব্যবহারযোগ্য এমবেডিং দেয় না। তাই দুই ধাপের ফানেল ব্যবহার করুন: প্রথম ধাপ সস্তায় পুরো কর্পাস থেকে রিকলের জন্য প্রার্থী আনে, তারপর রিরেংকার শুধু টিকে থাকা N-টির ওপর কাজ করে, আর সেরা top-k যায় LLM-এর কাছে। রিরেংকার শুধু স্টেজ 1-এর ফেরত দেওয়া জিনিসই নতুন করে সাজাতে পারে, তাই ঠিক প্যাসেজ top-N-এ না থাকলে কোনো রিরেংকার তা ফিরিয়ে আনতে পারবে না।
সেকশন পড়ুন →ReWOO কখন ReAct-এর বদলে বেছে নেবেন, আর ReAct কেন এখনও ডিফল্ট লুপ?
ReAct-এ থট, অ্যাকশন আর অবজারভেশন পালাক্রমে চলে, তাই তার ট্রেস মানুষ পড়তে পারে আর মডেল কেন একটা অ্যাকশন বেছেছে তা দেখা যায়। এই কারণেই শর্ট, টুল-হেভি কাজে আর ডিবাগিংয়ে এটাই ডিফল্ট। রিট্রিভাল-হেভি কাজে, যেখানে ফ্যান-আউট টুল গ্রাফ থাকে আর একটা টুলের রেজাল্ট না দেখেও পরের টুল প্ল্যান করা যায়, সেখানে ReWOO বেছে নিন। এটা পুরো টুল গ্রাফ আগে থেকেই প্ল্যান করে, ওয়ার্কার সব প্যারালাল চালায়, তারপর সলভার এভিডেন্স পড়ে উত্তর দেয়। রিট্রিভাল বেঞ্চমার্কে এটা ReAct-এর চেয়ে ৪–৬× কম টোকেন ব্যবহার করে, কিন্তু এর ডিবাগ-যোগ্যতা দুর্বল।
সেকশন পড়ুন →রিট্রাইয়ের কারণে বাজেট পুড়ে না গিয়ে এজেন্টের ফেইলিওর আপনি কীভাবে সামলাবেন?
তিনটা লেয়ার ব্যবহার করুন। ট্রানজিয়েন্ট ফেইলিওরে জিটারসহ এক্সপোনেনশিয়াল ব্যাকঅফ (১s, ২s, ৪s, ৮s) দিয়ে রিট্রাই করুন, সর্বোচ্চ ৩–৫ বার; ফেইলিওর ট্রানজিয়েন্ট না হলে অন্য টুল বা মডেলে ফলব্যাক করুন; আর রিজনিং এরর হলে ফেইলিওরটা মডেলকে ফিরিয়ে দিয়ে রিভাইজ করতে বলুন। রিট্রাই সবসময় হার্ড ক্যাপ, ওয়াল-ক্লক টাইমআউট আর সার্কিট ব্রেকার দিয়ে বাউন্ডেড রাখুন। একই ধরনের টানা ৫টা ফেইলিওরের পর ব্রেকার খুলে যায় এবং ৬০ সেকেন্ড কল সঙ্গে সঙ্গে ফেইল করে, তারপর ব্রেকার হাফ-ওপেন হয়ে একটা টেস্ট কল পাঠায়।
সেকশন পড়ুন →কোন এজেন্ট অ্যাকশনে হিউম্যান অ্যাপ্রুভাল লাগবে তা আপনি কীভাবে ঠিক করবেন?
একটা রিস্ক ল্যাডার ব্যবহার করুন। রিড-অনলি অ্যাকশন অটো-অ্যাপ্রুভ হয়, আর লোকাল-রাইট অ্যাকশন সফট ক্যাপসহ অটো-অ্যাপ্রুভ হয়। এক্সটার্নাল-রাইট অ্যাকশনে প্রতি কলে অ্যাপ্রুভাল লাগে, মানি অ্যাকশনে প্রতি কলে অ্যাপ্রুভাল আর সঙ্গে ডেইলি ক্যাপ লাগে, আর ডেস্ট্রাকটিভ অ্যাকশনে টু-পারসন রুল চলে। কঠিন অংশ হলো UI, প্রোটোকল নয়, তাই হিউম্যান-ফেসিং সারফেসের জন্য এজেন্ট প্রজেক্টের সময়ের অন্তত ৩০% ধরে রাখুন।
সেকশন পড়ুন →LLM-এর জন্য একটা ভালো টুল স্কিমা আপনি কীভাবে ডিজাইন করবেন?
টুলের নাম verb_noun রাখুন, যেমন search_documents, কারণ নাম মডেলের কনটেক্সট উইন্ডোতে থাকে। ডেসক্রিপশনে এক বাক্যে কী করে, এক বাক্যে কখন ব্যবহার করবেন আর এক বাক্যে কী ফেরত দেয় লিখুন। এক্সপ্লিসিট টাইপ আর enum দিন, any এড়িয়ে চলুন, আর 500-এর বদলে এরর ফিল্ড ফেরত দিন। একটা প্রম্পটে প্রায় 20-এর বেশি টুল থাকলে সিলেকশন অ্যাকুরেসি মাপার মতো কমে যায়, তাই ডোমেইন অনুযায়ী সাব-এজেন্টে ভাগ করুন বা রাউটার ব্যবহার করুন।
সেকশন পড়ুন →MCP কী, আর একটা MCP সার্ভার কী কী এক্সপোজ করে?
MCP, মানে Model Context Protocol, হলো একটা ওপেন স্ট্যান্ডার্ড যা Anthropic 2024-এর শেষে চালু করেছে এবং এখন OpenAI, Google আর প্রধান IDE ভেন্ডররা গ্রহণ করেছে। মডেল হলো ক্লায়েন্ট, আর ডেটা বা টুল প্রোভাইডার একটা MCP সার্ভার চালায়। সার্ভার তিনটা প্রিমিটিভ এক্সপোজ করে: টুলস (মডেল যে ফাংশন কল করতে পারে), রিসোর্সেস (ক্লায়েন্ট চাইলে যে রিড-অনলি ডেটা ফেচ করতে পারে) আর প্রম্পটস (নামওয়ালা প্রম্পট টেমপ্লেট)। আপনি একটা MCP সার্ভার লিখলে, যেমন Postgres-এর জন্য, সব MCP-কম্প্যাটিবল ক্লায়েন্ট সেটা ব্যবহার করতে পারে।
সেকশন পড়ুন →একটা টুল ১০,০০০ সারির SQL রেজাল্ট ফেরত দিলে মডেলের জন্য সেটা আপনি কীভাবে ফরম্যাট করবেন?
টুলের আউটপুট হলো প্রম্পট কনটেন্ট, কারণ মডেল পরের টার্নে সেটা আবার পড়ে। ১০,০০০ সারির SQL রেজাল্ট আপনার কনটেক্সট উইন্ডো উড়িয়ে দেবে, তাই নির্মমভাবে ছাঁটাই করুন: top N ফেরত দিন আর বাকিটার সারমর্ম দিন। সংরক্ষণের জন্য নয়, পড়ার জন্য ফরম্যাট করুন, কারণ মানুষের মতো রিজনিংয়ের জন্য Markdown টেবিল JSON অ্যারের চেয়ে ভালো। ফলাফল স্পষ্ট না হলে একটা "এটা কী বোঝায়" বাক্য যোগ করুন।
সেকশন পড়ুন →কখন একটা টিমের হোস্টেড ইনফারেন্স API ছেড়ে সেল্ফ-হোস্টিংয়ে যাওয়া উচিত?
হোস্টেড দিয়ে শুরু করুন: শুরু করতে লাগে কয়েক মিনিট, আর সেল্ফ-হোস্টিংয়ে GPU প্রকিউরমেন্ট ও অপসের কারণে লাগে কয়েক সপ্তাহ। রুল অফ থাম্ব হলো, আপনার বিল অর্ধেক সময়ের একজন ML ইঞ্জিনিয়ার আর দুটো H100-এর খরচ ছাড়িয়ে গেলে সেল্ফ-হোস্টিংয়ে যান। হোস্টেডের খরচ প্রতি ১M টোকেনে $০.১০–$১৫, আর স্কেলে সেল্ফ-হোস্টেডের খরচ $০.০৪–$২। সেল্ফ-হোস্টিংয়ে ডেটা প্রাইভেসির নিয়ন্ত্রণ আর পুরো কাস্টমাইজেশন পাওয়া যায়, কিন্তু পিক ট্রাফিকের জন্য স্কেল আপনাকেই করতে হয়।
সেকশন পড়ুন →কোয়ান্টাইজেশন কী, আর এর ট্রেড-অফ কী?
কোয়ান্টাইজেশন মডেল ওয়েটের প্রিসিশন ১৬ বিট থেকে ৮ বা ৪ বিটে নামায়। এতে সামান্য মানের বদলে GPU মেমরি ২–৪× কমে এবং ইনফারেন্স আনুপাতিকভাবে দ্রুত হয়। GGUF হলো llama.cpp-এর সিঙ্গেল-ফাইল ফরম্যাট, যা CPU+GPU হাইব্রিড সাপোর্ট করে। AWQ ৪ বিটে FP16-এর কাছাকাছি মান দেয় এবং vLLM ও SGLang-এ জনপ্রিয়।
সেকশন পড়ুন →কন্টিনিউয়াস ব্যাচিং আর স্পেকুলেটিভ ডিকোডিং কীভাবে সার্ভিং পারফরম্যান্স বাড়ায়?
নেইভ সার্ভিং প্রতি GPU-তে একবারে একটা রিকোয়েস্ট সামলায়। vLLM, TGI আর SGLang-এ ব্যবহৃত কন্টিনিউয়াস ব্যাচিং অনেক রিকোয়েস্টের টোকেন পালা করে মিশিয়ে চালায়, ফলে একটা স্লো রিকোয়েস্টের জন্য GPU কখনো আইডল থাকে না, আর এটা সাধারণত ৫–২০× বেশি থ্রুপুট দেয়। স্পেকুলেটিভ ডিকোডিংয়ে একটা ছোট ড্রাফট মডেল পরের ৫–১০টা টোকেন প্রস্তাব করে আর বড় মডেল সেগুলো প্যারালালে ভেরিফাই করে, মান না কমিয়ে থ্রুপুট +2–৩×। vLLM আরও যোগ করে পেজড KV ক্যাশ, যেটা OS ভার্চুয়াল মেমরির মতো পেজ করে অ্যালোকেট হয়।
সেকশন পড়ুন →প্রোডাকশনে প্রতিটা LLM রিকোয়েস্টের জন্য আপনি কী রেকর্ড করবেন?
একটা LLM ট্রেস হলো স্প্যানের ট্রি: ইউজার রিকোয়েস্ট, সিস্টেম প্রম্পট অ্যাসেম্বলি, LLM কল, প্রতিটা টুল ইনভোকেশন আর রেজাল্ট। প্রতিটা রিকোয়েস্টে ইনপুট টোকেন, আউটপুট টোকেন, মডেল, ভেন্ডরের প্রাইসিং থেকে হিসাব করা খরচ, ল্যাটেন্সি (TTFT ও total) আর ক্যাশ হিট রেকর্ড করতে হবে। প্রতিটাকে user_id, ফিচার ও এক্সপেরিমেন্ট দিয়ে ট্যাগ করুন। এই ডেটা দিয়ে আপনি "ফিচার X কি লোকসান করছে?" বা "নতুন মডেল কি ধীর?" ধরনের প্রশ্নের উত্তর দিতে পারবেন।
সেকশন পড়ুন →প্রোডাকশনে আপনি প্রম্পটের ভার্সন কীভাবে রাখবেন আর প্রম্পট বা মডেলের A/B টেস্ট কীভাবে চালাবেন?
প্রম্পট হলো কোড: git-এ রাখুন, ভার্সন করুন, PR-এ রিভিউ করুন আর CI দিয়ে ডিপ্লয় করুন। প্রতিটা প্রম্পট ভার্সন একটা স্থিত ID পায়, আর প্রতিটা ট্রেস সেই প্রম্পট ID বহন করে, ফলে ব্যবহারকারীরা কোন প্রম্পট ভার্সনে ছিল তা সঙ্গে সঙ্গে বলা যায়। A/B টেস্টের জন্য user_id হ্যাশ দিয়ে দুটো প্রম্পট ভার্সন বা দুটো মডেলের মধ্যে ট্রাফিক রাউট করুন। খরচ, ল্যাটেন্সি, আউটপুটের ইভ্যাল আর ইউজার ফিডব্যাক মাপুন, এবং আপনার বেছে নেওয়া মেট্রিকে একটা ভ্যারিয়েন্ট জিতলে পরীক্ষা বন্ধ করুন।
সেকশন পড়ুন →সাইলেন্ট মডেল ড্রিফট আপনি কীভাবে ধরবেন, আর ইউজারের অভিযোগ এতে কীভাবে কাজে লাগে?
কোনো ভেন্ডর একই নামের মডেল বদলালে বা আপডেট করলে আপনার আউটপুট এমনভাবে ড্রিফট করতে পারে যা আপনার অফলাইন ইভ্যাল ধরতে পারবে না। প্রোডাকশন ট্রাফিকের একটা ছোট অংশ (১–৫%) পুরোনো ও নতুন দুই মডেলের মধ্য দিয়ে চালান, ইভ্যাল তুলনা করুন আর ডেল্টায় অ্যালার্ট দিন; Arize Phoenix ও Braintrust এটা অটোমেট করে। থাম্বস-আপ আর থাম্বস-ডাউন সিগন্যাল ক্যাপচার করুন এবং ফেইলিওরগুলো আপনার ইভ্যাল ডেটাসেটে ফিড করুন। তিন মাস পর এক হাজার বাস্তব ফেইলিওর দশ হাজার সিনথেটিকের চেয়ে বেশি মূল্যবান।
সেকশন পড়ুন →গোল্ডেন ডেটাসেট কী, আর রিলিজ সুরক্ষিত রাখতে আপনি এটা কীভাবে ব্যবহার করবেন?
গোল্ডেন ডেটাসেট হলো (input, expected_output) জোড়ার একটি নির্দিষ্ট সেট, যার বিপরীতে প্রতিটি পরিবর্তনের সময় মডেল চালানো হয়। এটা একবার বানাবেন, বাস্তব ফেইলিওর থেকে বাড়াবেন, আর কখনো পুরোনো হতে দেবেন না। এটা CI-তে চালাবেন, আর অ্যাকুরেসি থ্রেশহোল্ডের নিচে নামলে রিলিজ আটকে দেবেন।
সেকশন পড়ুন →LLM-as-judge আপনি কীভাবে ব্যবহার করবেন, আর কোন প্র্যাকটিস এটাকে নির্ভরযোগ্য করে?
আপনি একটি শক্তিশালী LLM-কে জাজ হিসেবে ব্যবহার করবেন, দুটি মোডের একটিতে। পেয়ারওয়াইজ কম্পেয়ারিজনে জাজকে A ও B দেখিয়ে জিজ্ঞেস করবেন কোনটি ভালো, আর এটা অ্যাবসোলিউট স্কোরিংয়ের চেয়ে ভালো কাজ করে, কারণ আপেক্ষিক বিচার পরম বিচারের চেয়ে সহজ। অন্য মোড হলো রুব্রিক-ভিত্তিক স্কোরিং, যেখানে ৪–৬টি ক্রাইটেরিয়া থাকে আর প্রতিটিতে যুক্তিসহ ০–৫ রেটিং চাওয়া হয়। জাজ হিসেবে আলাদা (প্রায়ই আরও শক্তিশালী) মডেল নেবেন, জাজ প্রম্পট রোটেট করবেন, আর মাঝে মাঝে জাজকে হিউম্যান লেবেলের সাথে মিলিয়ে দেখবেন।
সেকশন পড়ুন →একটি RAG সিস্টেমের জন্য আপনি কোন মেট্রিক ট্র্যাক করবেন, আর এজেন্টের ক্ষেত্রে বাড়তি কী দেখবেন?
Ragas ফ্রেমওয়ার্ক চারটি RAG মেট্রিক স্ট্যান্ডার্ড করেছে: ফেইথফুলনেস, আনসার রিলেভেন্স, কনটেক্সট প্রিসিশন আর কনটেক্সট রিকল। ফেইথফুলনেস জিজ্ঞেস করে, উত্তর কি রিট্রিভ করা চাঙ্কের মধ্যে থেকেছে, নাকি হ্যালুসিনেট করেছে। কনটেক্সট রিকল জিজ্ঞেস করে, উত্তর দিতে দরকারি সব চাঙ্ক কি রিট্রিভ হয়েছে। এজেন্টের ক্ষেত্রে শুধু সঠিক উত্তর যথেষ্ট নয়, তাই টাস্ক সাকসেস রেটের পাশাপাশি ট্র্যাজেক্টরি ম্যাচ, টুল-কল অ্যাকুরেসি আর স্টেপ এফিশিয়েন্সিও ট্র্যাক করবেন।
সেকশন পড়ুন →মডেল ক্যাসকেডিং কীভাবে LLM-এর খরচ কমায়, আর কখন এসকেলেট করতে হবে তা আপনি কীভাবে ঠিক করবেন?
আপনি সহজ রিকোয়েস্ট ছোট, সস্তা মডেলে পাঠাবেন, আর ছোট মডেলের কনফিডেন্স কম হলেই কেবল বড়, দামি মডেলে এসকেলেট করবেন। কনফিডেন্স মাপতে logprobs, সেল্ফ-ক্রিটিক বা আলাদা ক্লাসিফায়ার ব্যবহার করতে পারেন। ভালোভাবে টিউন করা ক্যাসকেড প্রায়ই ফ্রন্টিয়ার মানে পৌঁছে যায় খরচের ৩০–৭০%-এ।
সেকশন পড়ুন →একটি LLM অ্যাপে আপনি কী কী ধরনের ক্যাশিং ব্যবহার করতে পারেন, আর প্রতিটি কী করে?
ক্যাশিং হলো খরচ কমানোর সবচেয়ে শক্তিশালী উপায়, আর এটা তিন ধরনের। সেম্যান্টিক ক্যাশ কাজ করে এভাবে: প্রায় একই প্রম্পটের উত্তর সম্প্রতি দেওয়া হয়ে থাকলে (কোসাইন > ০.৯৫) ক্যাশ করা উত্তর ফেরত দেয়। আউটপুট ক্যাশ হলো ইনপুটকে কী ধরে একটি কী-ভ্যালু ক্যাশ, যা ডিটারমিনিস্টিক কাজের জন্য, যেমন temperature=০ দিয়ে এক্সট্র্যাকশন বা ক্লাসিফিকেশন। প্রম্পট ক্যাশ প্রোভাইডার-লেভেলের: এটা একাধিক কলে সিস্টেম প্রম্পটের KV আবার ব্যবহার করে, আর ক্যাশ করা প্রিফিক্সে ৮০–৯০% ছাড় পাওয়া যায়।
সেকশন পড়ুন →একটি ফিচার যাতে LLM বিল বাড়িয়ে না ফেলে, আপনি তা কীভাবে ঠেকাবেন, আর মডেল গেটওয়ে এতে কী যোগ করে?
আপনি প্রতিটি ফিচারের জন্য মাসিক টোকেন বাজেট ঠিক করবেন, ৮০%-এ অ্যালার্ট দেবেন, আর ১০০%-এ থ্রটল করবেন। এটাই সেই অপারেশনাল লেয়ার, যা বেপরোয়াভাবে চলা একটি ফিচারকে কোম্পানির পুরো বিল বাড়িয়ে ফেলা থেকে আটকায়। মডেল গেটওয়ে আপনার অ্যাপ আর সব LLM প্রোভাইডারের মাঝখানে বসে। এটা দেয় অনেক প্রোভাইডারের জন্য একটি API, প্রতি-কী রেট লিমিট, খরচ ট্র্যাকিং, রিট্রাই আর ফলব্যাক, আর প্রধান তিনটি অপশন হলো LiteLLM, Portkey আর OpenRouter।
সেকশন পড়ুন →ডিরেক্ট আর ইনডিরেক্ট প্রম্পট ইনজেকশনের পার্থক্য কী, আর কোনটা সামলানো বেশি কঠিন?
প্রম্পট ইনজেকশন হলো যখন ইউজার-নিয়ন্ত্রিত টেক্সট মডেলের আচরণ হাইজ্যাক করে। ডিরেক্ট ইনজেকশনে ইউজার এমন নির্দেশ টাইপ করে যা আগের নির্দেশ বাতিল করে দেয়। ইনডিরেক্ট ইনজেকশনে ইউজার এমন একটি ডকুমেন্টে ক্ষতিকর টেক্সট বসিয়ে রাখে, যা মডেল পরে পড়বে। ইনডিরেক্ট ইনজেকশন বেশি কঠিন, কারণ ইউজারকে আপনার সিস্টেমের সাথে সরাসরি কথাই বলতে হয় না।
সেকশন পড়ুন →জেইলব্রেক থেকে আপনি কীভাবে রক্ষা পাবেন, আর এ বিষয়ে কী মেনে নেবেন?
জেইলব্রেক হলো নিষিদ্ধ প্রম্পটের এমন সৃজনশীল পুনর্লিখন যা সেফটি ট্রেনিংয়ের পাশ কাটিয়ে যায়, আর এটা একটি চলমান লক্ষ্য, কারণ রেড-টিম প্রতি মাসে নতুন জেইলব্রেক খুঁজে পায়। প্রতিরক্ষা হলো Constitutional AI ফাইন-টিউনিং, আউটপুট ক্লাসিফায়ার আর রোবাস্ট সিস্টেম প্রম্পট। সাথে আপনি এটাও মেনে নেবেন যে ১০০% সেফটি অর্জনযোগ্য নয়।
সেকশন পড়ুন →একটি LLM পাইপলাইনে আপনি PII রিড্যাকশন কোথায় প্রয়োগ করবেন, আর কেন?
ইউজারের টেক্সট মডেলে পাঠানোর আগে এবং মডেলের উত্তর রেন্ডার করার আগে আপনি একটি PII ডিটেক্টর চালাবেন, যেমন Microsoft Presidio বা spaCy। কমপ্লায়েন্সের জন্য প্রায়ই দুটিই দরকার হয়। ইনপুট রিড্যাকশন মানে PII ভেন্ডরের কাছে পাঠাবেন না। আউটপুট রিড্যাকশন মানে PII ভুল ইউজারের কাছে ফিরিয়ে দেবেন না।
সেকশন পড়ুন →আপনি একটা ভয়েস এজেন্ট কীভাবে বানাবেন, আর তার ল্যাটেন্সি কীভাবে কমাবেন?
একটা ভয়েস পাইপলাইন হলো STT → LLM → TTS। STT-এর জন্য সেকশনে Whisper, Deepgram, AssemblyAI আর ElevenLabs Scribe আছে, আর TTS-এর জন্য ElevenLabs, Cartesia, OpenAI TTS আর PlayHT। রিয়েলটাইম API-গুলো অডিও দুই দিকে স্ট্রিম করে, তাই চাঙ্কি STT→LLM→TTS লুপটা বাদ যায়, আর ৫০০ ms-এর নিচে টার্ন-টেকিং এখন সম্ভব। LiveKit আর Vapi এগুলোর উপরে পুরো এজেন্ট ফ্রেমওয়ার্ক দেয়।
সেকশন পড়ুন →কখন Tesseract-এর বদলে OCR-এর জন্য LLM ব্যবহার করবেন, আর ভিশন মডেল আর কী কী করতে পারে?
GPT-4o, Claude 4, Gemini 2.5 আর Qwen3-VL-এর মতো নেটিভ মাল্টিমোডাল মডেল সরাসরি ছবি নেয়। অগোছালো ফটো, হাতের লেখা নোট আর স্ট্রাকচার্ড ফর্মে LLM, Tesseract-এর চেয়ে ভালো করে, আর প্রায়ই আলাদা OCR ধাপ লাগে না। একই মডেল দিয়ে ডকুমেন্ট AI হয় (লেআউট বুঝে PDF পড়া, যেমন Claude, Mistral OCR আর Qwen2-VL), চার্ট পড়ে JSON বের করা যায়, আর ভিজ্যুয়াল Q&A-ও করা যায়।
সেকশন পড়ুন →ইমেজ-জেনারেশন মডেল কীভাবে বাছবেন, আর তার আউটপুট কীভাবে নিয়ন্ত্রণ করবেন?
Flux-এর ওপেন-ওয়েট পাওয়া যায় আর প্রম্পট ফিডেলিটি শক্তিশালী। SDXL / SD3 ওপেন আর LoRA দিয়ে ফাইন-টিউন করা যায়, Imagen ৩ Vertex-এর মাধ্যমে ফটোরিয়ালিজম দেয়, আর DALL-E ৩ / GPT-Image-1 পলিশড ও ইনস্ট্রাকশন-ফলোয়িং। নিয়ন্ত্রণের জন্য স্ট্রাকচারে (পোজ, ডেপথ, ক্যানি এজ) ControlNet, স্টাইল বা ক্যারেক্টার কনসিস্টেন্সিতে LoRA, এডিটের জন্য ইনপেইন্টিং, আর রেফারেন্স ছবির জন্য IP-Adapter ব্যবহার করুন। ComfyUI দিয়ে এগুলো রিপ্রোডিউসিবল পাইপলাইনে জুড়ে নেওয়া যায়।
সেকশন পড়ুন →LLM-এর আউটপুট কীভাবে ইউজারের কাছে স্ট্রিম করবেন, আর কোন ট্রান্সপোর্ট বাছবেন?
ইউজার চায় মডেল যেমন লেখে তেমন করে শব্দ দেখতে, ৩ সেকেন্ড থেমে থাকার পরে নয়। SSE সবচেয়ে সহজ, যেকোনো HTTP প্রক্সির মধ্য দিয়ে কাজ করে, আর একমুখী (সার্ভার থেকে ক্লায়েন্ট)। WebSockets দ্বিমুখী, ভয়েস আর কোলাবরেটিভ UI-এর জন্য লাগে, কিন্তু হ্যান্ডশেক ভারী। SSE হেডার স্ট্রিপ করে এমন প্রক্সির জন্য HTTP চাঙ্কড ট্রান্সফার হলো ফলব্যাক।
সেকশন পড়ুন →যে এজেন্ট রান কয়েক মিনিট লাগে সেটা কীভাবে সামলাবেন, আর কল ফেইল করলে কী করবেন?
প্রায় ১০ সেকেন্ডের বেশি লাগে এমন কিছু HTTP রিকোয়েস্ট ব্লক করে রাখা উচিত না। সেটা কিউতে (BullMQ, Celery, Inngest, Cloud Tasks, Temporal) পুশ করুন আর একটা job_id ফেরত দিন, তারপর ক্লায়েন্ট পোল করে বা SSE/WebSocket দিয়ে আপডেট সাবস্ক্রাইব করে। ফেইলের জন্য প্রতিটি রিকোয়েস্টে একটা আইডেমপোটেন্সি কী বানান আর ডুপ্লিকেট রিজেক্ট করুন, আর এজেন্ট স্টেটের চেকপয়েন্ট রাখুন যাতে রিজিউম করলে শুধু ফেইল হওয়া ধাপগুলো রিপ্লে হয়। এক মিনিটের বেশি লাগে এমন কিছুর জন্য ডিউরেবল এক্সিকিউশন (Temporal/Restate) ব্যবহার করুন।
সেকশন পড়ুন →প্রোভাইডারের আউটেজ কীভাবে সামলাবেন, আর নতুন মডেল নিরাপদে কীভাবে রোল আউট করবেন?
ফলব্যাক চেইন ব্যবহার করুন: OpenAI ৫০৩ দিলে Anthropic-এ রাউট করুন, আর Anthropic ৪২৯ দিলে Together-এ রাউট করুন, প্রতিটি প্রোভাইডারের জন্য ডিগ্রেডেড প্রম্পট সহ। LiteLLM আর Portkey এটা আলাদা কোনো সেটআপ ছাড়াই করে, আর একটা মডেল গেটওয়ে মূলত একটা ফলব্যাক রাউটার আর খরচ ট্র্যাকিং। প্রতিটি প্রম্পট আর প্রতিটি মডেলকে ফিচার ফ্ল্যাগ হিসেবে দেখুন, আর ১%, তারপর ১০%, তারপর ১০০%-এ রোল আউট করুন। ইভ্যাল রিগ্রেস করলে সঙ্গে সঙ্গে রোল ব্যাক করুন।
সেকশন পড়ুন →একজন জুনিয়র ইঞ্জিনিয়ার জিজ্ঞেস করল ট্রান্সফর্মার কীভাবে পরের টোকেন বাছে। আপনি কোন ফ্রি রিসোর্স দেখাবেন, আর সেটা কী দেখায়?
Georgia Tech-এর Polo Club of Data Science-এর Transformer Explainer আপনার ব্রাউজারের ভেতরেই একটা লাইভ GPT-2 (small) মডেল চালায়। এটা টোকেনাইজ, এমবেড, অ্যাটেনশন, MLP, রিপিট, আউটপুট আর স্যাম্পল ধাপগুলো দেখায়, আর টেম্পারেচার, top-k ও top-p-র জন্য স্লাইডার আছে। GPT-2 (small)-এর ১২৪ মিলিয়ন প্যারামিটার আর ১২টা ব্লক। এটা ২০১৯ সালের, তাই এটা ট্রান্সফর্মারের গঠন দেখায়, আধুনিক মডেলের মান নয়।
সেকশন পড়ুন →কেউ কোডের আগে LLM-এর পেছনের আইডিয়া বুঝতে চায়। কোন রিসোর্স মানাবে, আর তার কোন অংশগুলো?
কেউ কোডের আগে আইডিয়া চাইলে 3Blue1Brown-এর Neural networks সিরিজ হলো সবচেয়ে ভালো প্রথম ধাপ। অধ্যায় ১ থেকে ৪ একটা ছোট নেটওয়ার্ক বানায় আর শেখায় সেটা কীভাবে শেখে, আর অধ্যায় ৫ থেকে ৭ একই আইডিয়া LLM-এর ট্রান্সফর্মারে প্রয়োগ করে: ট্রান্সফর্মার, ধাপে ধাপে অ্যাটেনশন, আর LLM কীভাবে ফ্যাক্ট জমা রাখতে পারে। ভিডিওগুলো আইডিয়া শেখায়, প্রোডাকশন কোড নয়। গ্রুপড-কুয়েরি অ্যাটেনশন বা মিক্সচার অফ এক্সপার্টসের মতো নতুন ডিজাইন এগুলোতে নেই।
সেকশন পড়ুন →আপনাকে LLM সার্ভিং কীভাবে কাজ করে শিখতে হবে। LLM Inference Handbook-এ কী আছে, আর আপনি কোন সংখ্যাগুলো দেখবেন?
LLM Inference Handbook হলো প্রম্পট থেকে উত্তর পর্যন্ত সবকিছু নিয়ে একটা ফ্রি অনলাইন গাইড। এটা চারটা টার্ম আলাদা করে: ইনফারেন্স, ইনফারেন্স সার্ভার বা ফ্রেমওয়ার্ক, সার্ভিং আর ইনফারেন্স অপ্টিমাইজেশন। এটা একটা রিকোয়েস্টকে টোকেনাইজ, শিডিউল, প্রিফিল, ডিকোড আর স্ট্রিম ধাপে অনুসরণ করে, আর দেখার মতো দুটো সংখ্যা হলো TTFT (প্রথম টোকেনের জন্য কতক্ষণ অপেক্ষা) আর TPOT (পরের টোকেনগুলোর মধ্যে ফাঁক)। স্পিডের সংখ্যা মডেল, GPU, ব্যাচ সাইজ আর প্রম্পটের দৈর্ঘ্যের উপর নির্ভর করে, তাই নিজের সিস্টেম মেপে দেখুন।
সেকশন পড়ুন →