ইন্টেলিজেন্ট অ্যাপ

ছোট মডেলের সাথে এজেন্টিক কোডিং ওয়ার্কফ্লো

স্পিকার

সম্পর্কে

টক সম্পর্কে

লার্জ ফ্রন্টিয়ার মডেলগুলি শিরোনামে আধিপত্য বিস্তার করলেও, Gemma 4-এর মতো স্মল ল্যাঙ্গুয়েজ মডেল (SLM) কম-লেটেন্সি, সাশ্রয়ী এবং সম্পূর্ণ অফলাইন ইন্টেলিজেন্স অফার করে যা ডেভেলপারদের দৈনিক ওয়ার্কফ্লোকে আরও উন্নত করে।

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

সারাংশ

  • স্মল ল্যাঙ্গুয়েজ মডেলের ক্ষেত্রে কোনও মার্জিনাল খরচ হয় না এবং লোকাল হার্ডওয়্যারে অফলাইন অ্যাক্সেস পাওয়া যায়। একই ওয়ার্কলোডের জন্য ফ্রন্টিয়ার মডেলের খরচ ২০ থেকে ২০০ গুণ বেশি।
  • কোয়ান্টাইজেশন-অ্যাওয়ার ট্রেনিং, পোস্ট-ট্রেনিং কম্প্রেশনের চেয়ে কম ক্ষতি করে মেমরি ফুটপ্রিন্ট ৭৫% কমায়। স্পেকুলেটিভ ডিকোডিং তখন অনুমানযোগ্য কোডিং টাস্কের গতি ৩ গুণ পর্যন্ত বাড়িয়ে দেয়।
  • ছোট মডেল মূল্যায়ন করার জন্য Python লিডারবোর্ডের উপর নির্ভর না করে সম্পূর্ণ স্ট্যাক পরীক্ষা করতে হয়। Android Bench-এ ১০০টি PR-সাইজের টাস্ক থাকে যা আসল Android ডেভেলপমেন্টকে প্রতিফলিত করে।
  • Android Bench টেস্ট থেকে দেখা গেছে যে Gemma 4 তার সম্পূর্ণ কন্টেক্সট উইন্ডো চালু রেখে অর্ধেকের বেশি টাস্ক সমাধান করে। লং-হরাইজন টাস্ক এখনও নাগালের বাইরে।
  • মাল্টি-মডেল অর্কেস্ট্রেশন টাস্ক ক্যাসকেডিং এবং অটোমেটিক রাউটিংয়ের মতো টেকনিকের মাধ্যমে ফ্রন্টিয়ার এবং ছোট মডেলগুলিকে একত্রিত করে। এটি টোকেনের খরচ কমানোর পাশাপাশি নির্ভরযোগ্যতা বজায় রাখে।

রিসোর্স

Gemini Notebook

বিষয়

  • স্মল-ল্যাঙ্গুয়েজ-মডেল
  • এজেন্টিক-ওয়ার্কফ্লো
  • বেঞ্চমার্কিং
  • gemma
  • android-studio
  • মূল্যায়ন

ট্রান্সস্ক্রিপ্ট করা

স্মল ল্যাঙ্গুয়েজ মডেলের ভূমিকা

  • ঠিক আছে।

  • হ্যালো।

  • আমার নাম Jose এবং আমার সাথে Ian ও Zoe আছে।

  • আমরা সবাই LLM সম্পর্কে জানি।

  • আমরা সবকিছুর জন্য এগুলি ব্যবহার করি: রেসিপি খোঁজা, YouTube ভিডিওর সারসংক্ষেপ করা এবং কোডিং।

  • Gemini মডেলের মতো অনেক বড় LLM আছে, যেগুলি সত্যিই অবিশ্বাস্য জিনিস করতে সক্ষম, তবে এই আলোচনায় আমরা স্মল ল্যাঙ্গুয়েজ মডেল সম্পর্কে কথা বলতে যাচ্ছি।

  • এগুলিও LLM কারণ ৪ বিলিয়ন প্যারামিটার আছে এমন কিছুকে ছোট বলা যায় না, তবে আমরা এখন থেকে এই পার্থক্য করব, ফ্রন্টিয়ার মডেল এবং স্মল ল্যাঙ্গুয়েজ মডেল, রকেট এবং বাইক।

  • আমরা ছোট মডেল নিয়ে আলোচনা করব, তবে ফ্রন্টিয়ার মডেলের বিকল্প হিসেবে নয়, বরং সেগুলির পরিপূরক হিসেবে।

  • আমরা স্মল ল্যাঙ্গুয়েজ মডেলের সব সুবিধা এক্সপ্লোর করব, বিশেষ করে যখন সেগুলি ওপেন এবং ওপেন ওয়েট ও ডাউনলোড করা যায়, তবে এক সেকেন্ডের জন্য খরচ দেখে নেওয়া যাক।

  • এই আলোচনার জন্য, আমি অনেক বেঞ্চমার্ক চালাচ্ছি এবং তার মধ্যে একটি হল ২০০টি মাঝারি ও কঠিন টাস্কের ডেটাসেট যা $৯-এর কম খরচে প্রায় ১৩১ মিলিয়ন টোকেন ব্যবহার করে।

  • আমি এর জন্য Gemma 4 ব্যবহার করেছি, তাই আমি এটি ডাউনলোড করে আমার নিজের হার্ডওয়্যারে বিনামূল্যে চালাতে পারতাম, কিন্তু আমি এটি একটি বাণিজ্যিক গেটওয়েতে চালিয়েছি শুধুমাত্র একটি ন্যায্য তুলনার জন্য।

  • তাহলে, ফ্রন্টিয়ার মডেলের জন্য কত খরচ হবে?

  • টোকেন ক্যাশিং ও অন্যান্য বিষয়ের উপর নির্ভর করে প্রায় ২০ থেকে ২০০ গুণ বেশি।

  • তাই, সাইকেল হয়তো দ্রুততম পরিবহনের মাধ্যম নয়, তবে এটি অবশ্যই সবচেয়ে দক্ষ।

  • এটি একদম সত্যি।

  • তাই এখন, স্বাভাবিক প্রশ্ন হল কোয়ালিটি এবং নির্ভুলতার মধ্যে পার্থক্য কী?

  • এই নির্দিষ্ট ডেটা সেটে, Gemma 4, ৫৩% টাস্ক সমাধান করতে পারে।

  • এর অর্থ হল দুটি জিনিস।

  • বাঁদিকে দেখানো এইসব টাস্ক চালানোর জন্য আপনি ফ্রন্টিয়ার মডেল ব্যবহার করলে, সেটি অতিরিক্ত হতে পারে।

  • আর ডানদিকে দেখানো টাস্কগুলি রান করার জন্য ছোট মডেল ব্যবহার করলে, আপনাকে মডেলটিকে সমাধানের দিকে গাইড করতে হবে অথবা আরও বড় মডেল ব্যবহার করতে হবে।

  • এই আলোচনায়, আমরা আপনাকে প্রতিটি টোকেন থেকে আরও বেশি সুবিধা পেতে সাহায্য করতে চাই।

  • জো আপনাকে একটি ছোট মডেল বেছে নেওয়ার বিষয়ে গাইড করবে এবং ইয়ান Gemma মডেল সম্পর্কে কথা বলবে যাতে আপনি বুঝতে পারেন যে তারা কী করতে পারে সে সম্পর্কে আপনার চিন্তাভাবনাকে কীভাবে ফ্রেম করতে হয়।

  • তারপর আমি আপনাকে Android Studio-তে Gemma 4 কীভাবে ব্যবহার করে দেখতে হয় তা ঝটপট দেখাব এবং শেষে, আমরা আপনাকে দেখাব কীভাবে আপনার দৈনিক ওয়ার্কফ্লোতে ছোট মডেল ফিট করতে হয় এবং Android ডেভেলপমেন্টের আসল বেঞ্চমার্কও দেখাব যাতে আপনি বুঝতে পারেন যে সেগুলি কী করতে পারে।

  • এবার Zoe-র কাছে যাওয়া যাক।

  • অসংখ্য ধন্যবাদ, জোসে।

  • তাই, সবকিছুর জন্য একটি মডেল ব্যবহার করা অনেকটা হাতুড়ি দিয়ে বাদাম ভাঙার মতো, তাই না?

  • এটি দক্ষ, তবে এটি কিছুটা অসম।

  • তাই, ছোট মডেলের কথা ভাবলে, এটি প্রায় আপনার টুল সেটকে আরও বড় করার মতো।

  • আপনার ওয়ার্কফ্লোতে কী কী আনতে হবে তা জানতে, আপনাকে টুল সেট খুলতে হবে, কী কী উপলভ্য আছে, তাদের স্পেসিফিকেশন কী, সেগুলি কীসের জন্য ভালো তা দেখতে হবে।

  • তাই, ছোট মডেল বেছে নিতে হলে, আপনাকে ছোট মডেল সম্পর্কে জানতে হবে।

  • আর বেশিরভাগ মানুষ যখনই কোনও ল্যাঙ্গুয়েজ মডেলের কথা ভাবেন, তখন তারা যে ধরনের মডেলের কথা ভাবেন তা হল অটোরেগ্রেসিভ ল্যাঙ্গুয়েজ মডেল।

  • এটি অটো-রিগ্রেসিভ কারণ টোকেনে চাঙ্ক করা ইনপুটের উপর ভিত্তি করে, এটি সম্ভাব্য প্রার্থীদের তালিকা থেকে সবচেয়ে সম্ভাব্য পরবর্তী টোকেন বেছে নেয়।

  • তারপর, বেছে নেওয়া সবচেয়ে সম্ভাব্য পরবর্তী টোকেনটি ইনপুটে ফিরে যায় এবং আমরা এগিয়ে যাই। এটি সুসংগত এবং বুদ্ধিদীপ্ত উত্তর তৈরি করতে সক্ষম, তবে এর কিছু সীমাবদ্ধতা রয়েছে, যার মধ্যে লিনিয়ারভাবে কাজ করা অন্তর্ভুক্ত থাকলেও তার মধ্যেই সীমিত নয়।

  • তাই, আমরা নন-লিনিয়ার পদ্ধতিতে কাজ করতে পারি।

  • ডিফিউশন মডেলের ক্ষেত্রেও একই পদ্ধতি ব্যবহার করা হয়, তবে এটি একবারে টোকেনের একটি ব্লক নিয়ে কাজ করে।

  • এটি প্রায় একটি স্কেচের মতো যা ফোকাসে আসছে।

  • এই ক্ষেত্রে, DiffusionGemma একবারে ২৫৬টি টোকেনের চাঙ্ক নিয়ে কাজ করে।

  • তাই, মূলত, আপনি এমন একটি পাস পান যা পুরো ব্লকে কাজ করে, কম লেটেন্সি সহ ফলাফল তৈরি করতে সক্ষম হয়।

  • তাহলে, আমাদের টুল সেটে এমন মডেল আছে যা লিখতে পারে, তাই তো?

  • ভুল।

  • সুতরাং, মূলত, এম্বেডিং মডেলগুলি ছবি বা টেক্সট বা অন্য কোনও ধারণার মতো অবজেক্টকে ভেক্টরে পরিণত করে।

  • তাই, এটি আমাদের একটি ম্যাপিং প্রদান করে, ধরা যাক, একটি হাই ডাইমেনশনাল স্পেসে কোঅর্ডিনেট যা আমাদের ধারণাগতভাবে দুটি জিনিসের তুলনা করতে দেয়।

  • যেমন, হট ডগ যদি স্যান্ডউইচ হয়, তাহলে তারা কাছাকাছি থাকবে বা কাছাকাছি কোনও জায়গায় শেষ হবে।

  • এই কারণে, দুটি ধারণা সম্পর্কিত কিনা তা চেক করতে পারাটা, মডেল পাসের পরিবর্তে একটু গণিত বলা যাক, যা তর্কযোগ্যভাবে একটু গণিতও, কিন্তু তাই, এই দৃষ্টান্তটি আরও এগিয়ে যায়, তাই না?

  • এছাড়াও, ছোট ও বিশেষ মডেল আছে যেগুলি একটি কাজ করতে পারে এবং সেটি খুব ভালোভাবে করে।

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

  • ঠিক আছে, তাহলে, বেছে নেওয়ার জন্য অনেক কিছু আছে, তাই তো?

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

  • তাহলে, আপনি আসলে কীভাবে একটি ছোট মডেল বেছে নেবেন?

  • আসুন, লোকাল লেভেলে রান করতে পারে এমন ছোট ওপেন মডেলের টুলবক্স খুলে শুরু করা যাক, Gemma মডেল।

  • এখন আপনার পালা, ইয়ান।

  • ধন্যবাদ, Zoe.

  • সুতরাং, জোসে শুরুতে যেমন উল্লেখ করেছেন, একটি স্মল ল্যাঙ্গুয়েজ মডেল হয়ত প্রায় ৫০% টাস্ক আউট অফ দ্য বক্স করতে পারে।

  • কিন্তু আপনি কেন বিশেষভাবে একটি লোকাল মডেল বেছে নিতে পারেন?

  • তাই, এটি প্রায় চারটি বিষয়ের উপর নির্ভর করে।

  • তাই, প্রথমটি হল গোপনীয়তা।

  • তাই, উদাহরণস্বরূপ, আপনার কাছে API কী, মালিকানাধীন কোড বা এমন কিছু থাকতে পারে যা আপনার ল্যাপটপ থেকে সরানো যাবে না।

  • দ্বিতীয়টি হল লেটেন্সি।

  • তাই, মডেলটি যখন গ্রাফিক মেমরি বা ইউনিফায়েড মেমরিতে লোড করা হয়, তখন কম্পিউটিং শেষ হওয়ার সাথে সাথেই আপনি উত্তর পেয়ে যান।

  • তাই, সার্ভারে রাউন্ড-ট্রিপের সময় লাগে না, সেখানে অতিরিক্ত লেটেন্সি খরচও হয় না।

  • এরপরে হল শূন্য প্রান্তিক খরচ।

  • তাই, মডেলগুলি কোথায় রান করবে তা আপনি নিয়ন্ত্রণ করতে পারলে, সেগুলি সাশ্রয়ী হয়।

  • তাই, লোকাল মেশিনে কিছু চালানোর ক্ষেত্রে, যেমন, এটি কোনও এরর লুপে অতিরিক্ত রিট্রাই করতে পারে।

  • এর জন্য আপনাকে কোনও খরচ করতে হয় না এবং এর জন্য কোনও অপ্রত্যাশিত API খরচও হয় না।

  • এবং অবশেষে, চতুর্থটি হল অফলাইন অ্যাক্সেস।

  • তাই, ভাবুন যে আপনি এটি প্লেন, ট্রেন, বাস বা টিউবে ব্যবহার করতে পারবেন, মূলত এমন যেকোনও জায়গায় যেখানে আপনার হার্ডওয়্যারে মডেলটি চলছে।

  • শুনতে খুব ভালো লাগলেও, এই সিদ্ধান্ত নেওয়ার সময় আমাদের দুটি প্রধান বিষয় বিবেচনা করতে হবে।

  • সুতরাং, একটি হল মেমরি এবং দ্বিতীয়টি হল স্পিড।

  • সুতরাং, আপনি যদি এখানে এই ডায়াগ্রামটি দেখেন, আপনি যদি নিচের দুটি মডেল, 26B এবং 31B দেখেন, তাহলে তারা দুজনেই BF16-এ চালানোর জন্য ৫০ জিবি-র বেশি ভিডিও RAM নেয়, যা একটি ১৬-বিট কোয়ান্টাইজেশন।

  • তাই, এখানে চ্যালেঞ্জ হল যে এটি অনেক হার্ডওয়্যারে ফিট হবে না।

  • তাই, আমরা কোয়ান্টাইজেশন নামক একটি প্রসেস ব্যবহার করি যা প্রিসিশন কমিয়ে দেয়, যেমন ফ্লোটে ৪-বিট।

  • এখন এটি একটু বেশি যুক্তিযুক্ত।

  • আমরা ১৪ জিবি ও ১৭ জিবির কথা বলছি, তাই তো?

  • এটি এখন ইউনিফায়েড মেমরি Mac-এর মতো কোনও ডিভাইসে ফিট করবে।

  • এখন এর সাথে চ্যালেঞ্জ হল, সাধারণ পোস্ট-ট্রেনিং কোয়ান্টাইজেশনে, আপনি সেই ওজনগুলি সংকুচিত করার সাথে সাথে যা ঘটবে তা হল, আপনি বেস মডেল থেকে মডেলের নির্ভুলতার কিছুটা হারাবেন এবং আমাদের কাছে এটির সাথে লড়াই করার একটি কৌশল রয়েছে।

  • একে কোয়ান্টাইজেশন-অ্যাওয়ার ট্রেনিং বলা হয়।

  • আমরা যখন এটি করি, তখন মডেলটি ট্রেনিংয়ের সময় বুঝতে পারে যে এটি ছোট সাইজে রান করবে এবং এর ফলে লস কম হয়।

  • তাই, RAM-এর প্রয়োজনীয়তা ৭৫% কমে যায় এবং এখন এটি এইসব ডিভাইসে ফিট করতে পারে।

  • এবং আমরা আরও এক ধাপ এগিয়ে যাই।

  • তাই, আমাদের কাছে যে মোবাইল কোয়ান্টাইজেশন পদ্ধতি আছে, যা অনেক মোবাইল ফোনে কাজ করে, সেগুলি বিভিন্ন লেয়ার কীভাবে কাজ করে এবং কোন সাইজে কাজ করতে পারে তা বোঝার মাধ্যমে সেই মডেলগুলিকে আরও ছোট করতে পারে।

  • তাই, আমাদের কাছে এক ধরনের মিক্সড কোয়ান্টাইজেশন ব্যাগ আছে।

  • তাই, আমরা ১১.৪ Gemma E2B থেকে ১.১ জিবিতে নেমে আসি।

  • তাই, এখন এটি আসলে মিড থেকে হাই-এন্ড ফোনের ক্ষেত্রে অনেক বেশি যুক্তিযুক্ত।

মাল্টি-টোকেন প্রেডিকশন ও স্পেকুলেটিভ ডিকোডিং

  • এর পরে হল স্পিড।

  • তাই, আপনি যখন একটি অটোরেগ্রেসিভ মডেল ব্যবহার করেন, যেমন Zoe উল্লেখ করেছেন, আপনি পরবর্তী টোকেনের সেট অনুমান করছেন।

  • তাই, কোডিং টাস্কের মতো কোনও কাজে, আপনি দেখতে পাবেন যে এই টোকেনগুলির মধ্যে অনেকগুলি আসলে বেশ অনুমানযোগ্য, যেমন এটি কোনও মেথড সিগনেচারের শেষ, বা এটি একটি ওপেনিং বা ক্লোজিং ব্রেস।

  • তাই, আপনি যা করতে পারেন তা হল স্পেকুলেটিভ ডিকোডিং নামক একটি টেকনিক ব্যবহার করতে পারেন।

  • এর ফলে, এটি একটি ছোট ড্রাফটার মডেল ব্যবহার করে বেশ কিছু টোকেন অনুমান করবে, যা পরে একটি বড় মডেলের মাধ্যমে যাচাই করা হবে।

  • Gemma 4 আর্কিটেকচারে এটি কাজ করার কারণ হল, তারা একই KV ক্যাশে শেয়ার করে।

  • তাই, এটিকে মডেলের স্বল্পমেয়াদী মেমরির মতো বলে মনে করুন।

  • সুতরাং, যা ঘটবে তা হল একটি ছোট ড্রাফটার মডেল সময়ের আগে তিন বা চারটি টোকেন অনুমান করবে এবং বড় মডেলটি তখন একই KV ক্যাশে দেখবে এবং মূলত আউটপুট যাচাই করবে।

  • এর ফলে, পারফর্ম্যান্সের দিক থেকে প্রায় ৩ গুণ বেশি স্পিড পাওয়া যায় এবং মডেলের আউটপুটের কোয়ালিটিতে কোনও প্রভাব পড়ে না। কারণ, এটি শুধু অনুমান করে এবং তারপর সিদ্ধান্ত নেয় যে এটি পাস নাকি ফেল, এটি সঠিক নাকি ভুল।

  • তাই, আপনি কী কাজ করছেন তার উপর এটি কিছুটা নির্ভর করে।

  • তাই, ক্রিয়েটিভ লেখার মতো বিষয়ের ক্ষেত্রে এটি খুব একটা ভালো কাজ করে না, কারণ সেখানে অনেক বেশি পরিবর্তনশীলতা থাকে, তবে JSON স্ট্রাকচার ও কোডিংয়ের মতো অনুমানযোগ্য বিষয়ের ক্ষেত্রে এটি খুব ভালো কাজ করে।

  • তাহলে, আপনি কীভাবে এই মডেলগুলির একটি মূল্যায়ন করবেন?

  • তাই, আপনি সবচেয়ে স্পষ্ট যে কাজটি করতে পারেন তা হল, LiveCodeBench বা MMLU-এর মতো কোনও বেঞ্চমার্ক দেখা এবং স্কোর চেক করা।

  • তবে এটি আপনাকে মডেলের ক্ষমতা সম্পর্কে শুধুমাত্র এক ধরনের উচ্চ-স্তরের ইন্ডিকেটর দেবে।

  • আপনাকে আসলে যা করতে হবে তা হল, এটি যে সম্পূর্ণ স্ট্যাকের মধ্যে চলছে তা মূল্যায়ন করা।

  • সুতরাং, এটি হল সেই মডেল যা আপনি ব্যবহার করছেন, ওজন এবং কোয়ান্টাইজেশন পদ্ধতি, এটি রানটাইমের অনুমান, তাই আপনি llama.cpp বা Ollama বা LiteRT-এর মতো কিছু ব্যবহার করতে পারেন, আপনি যে এজেন্ট হারনেস ব্যবহার করছেন, তা Pi বা OpenCode বা Antigravity-এর মতো কিনা এবং তারপরে কন্টেক্সট উইন্ডো, যা হল আপনার মডেল প্রসেস করতে পারে এমন সব ডেটার জন্য এক ধরনের স্পেস।

  • এইসব বিষয়ের কম্বিনেশন থেকে বোঝা যায় যে এটি কার্যকর হবে কিনা।

  • তাই, আপনাকে একটি দ্রুত উদাহরণ দিতে, আমরা Android Bench-এ Gemma 4-এর সাথে কিছু পরীক্ষা করছিলাম এবং আমরা ডিফল্ট 32k কন্টেক্সট সহ একটি Ollama ভার্সন চালাচ্ছিলাম।

  • আমরা যা খুঁজে পেয়েছি তা হল, একটি টেস্টে যেখানে এটি বাগ খুঁজছিল, এজেন্ট হারনেসের কম্প্যাকশন সেই ফাইলটিকে মেমরি থেকে সরিয়ে দেবে এবং তারপরে মডেলটি টাস্ক সম্পূর্ণ করতে পারবে না এবং এটি ব্যর্থ হবে।

  • তাই, কনটেক্সট উইন্ডো 32k থেকে 256k-তে বাড়িয়ে দেওয়ার ফলে, এখন এটি মেমরিতে রাখতে পারছে এবং মডেলটি সেই নির্দিষ্ট টেস্টে পাস করতে পারছে।

  • এবং আমরা সেই নির্দিষ্ট কাজের সাফল্যের হার দ্বিগুণ হতে দেখেছি।

  • সুতরাং, এটি থেকে বোঝা যায় যে এই মডেলটি উপযুক্ত কিনা তা নির্ধারণ করার ক্ষেত্রে এইসব ছোট ছোট ফ্যাক্টরের মধ্যে একটিরও বড় প্রভাব থাকতে পারে।

কাস্টম মূল্যায়ন তৈরি করা

  • তাহলে, আপনি আসলে কীভাবে নিজের মূল্যায়ন করেন?

  • তাই, এখানে তিনটি ঝটপট সাজেশন দেওয়া হল।

  • সুতরাং, একটি হল আপনি একটি Git ইতিহাস নিতে পারেন, তাই আপনি ইতিমধ্যে সফল হয়েছেন এমন একগুচ্ছ PR পেয়েছেন এবং আপনি সেগুলিকে মডেলে প্রম্পট ইনপুট হিসাবে ব্যবহার করতে পারেন এবং দেখতে পারেন যে এটি সেগুলিতে কতটা ভাল পারফর্ম করে।

  • এর পরে, আপনার নির্ধারক গ্রেডারের মতো কিছু প্রয়োজন যা আপনাকে মডেলের আউটপুট সঠিক কিনা তা মূল্যায়ন করতে সাহায্য করবে।

  • এর জন্য আমাদের কাছে দুটি খুব ভালো উদাহরণ আছে।

  • আমাদের কাছে কম্পাইলার ও ইউনিট টেস্ট আছে।

  • যা তৈরি হবে, আপনি সেটি এর মাধ্যমে চালাতে পারবেন এবং এটি আপনাকে পাস/ফেল-এর মতো করে জানাবে যে আপনি সেই নির্দিষ্ট টাস্কটি সফলভাবে করতে পেরেছেন কিনা।

  • এবং তৃতীয়টি হল লগ ট্র্যাজেক্টরি।

  • তাই, আপনি যখন কোনও এজেন্ট চালাচ্ছেন, তখন আপনি এজেন্টের বিভিন্ন আচরণ ট্রেস করতে, এটি কোথায় সফল হয় এবং কোথায় ব্যর্থ হয় তা দেখতে চান এবং মডেলটি কতটা ভালোভাবে ইন্টার‍্যাক্ট করতে এবং টুল ব্যবহার করতে সক্ষম তা মূল্যায়ন করতে আপনি এটি ব্যবহার করতে পারেন।

  • আমি চাই আপনি প্রশ্নটি অন্যভাবে করুন, যেমন "এই মডেলটি কি এই বড় ফ্রন্টিয়ার মডেলের মতো স্মার্ট?"

  • থেকে, "এই নির্দিষ্ট কনফিগারেশন সহ এই হার্ডওয়্যারে কি এই টাস্কটি করা সম্ভব?"

  • আর সেটা বোঝার জন্য আমরা একটা ফ্রেমওয়ার্ক তৈরি করেছি, যার নাম হল, আমরা কি এখনও পৌঁছাইনি?

  • অথবা AWTY.

  • এবং এই ফ্রেমওয়ার্কের মূল নীতি হল, এই সমস্ত বিভিন্ন টাস্কের ক্ষেত্রে, প্রস্তুত থাকার নিরিখে, সেই অক্ষের উপর স্কোর করা।

  • সুতরাং, মডেলটি নিজেই, আপনি যে ইনফারেন্স ইঞ্জিন ব্যবহার করছেন, হার্নেস এবং তারপরে হার্ডওয়্যার কনফিগারেশন।

  • আর তা থেকেই আপনি বুঝতে পারবেন যে আপনি প্রস্তুত কিনা।

  • যেমন, আপনি হয়ত দেখতে চাইছেন যে নির্দিষ্ট টাস্কটি কতটা নির্ভরযোগ্য।

  • আপনি যদি এটি পরপর ১০ বার চালান, তাহলে কি প্রতিবার একই কাজ করে?

  • আপনি হয়ত লেটেন্সি দেখছেন।

  • হতে পারে আপনি রিয়েল-টাইম উত্তর চান।

  • তাহলে, আপনি কি জানেন যে টাস্কটি করার স্পিডের মতো আপনার থ্রেশহোল্ডগুলি কী কী?

  • এবং তারপরে আপনি আসলে RAM-এর প্রয়োজনীয়তা দেখতে পারেন।

  • তাই, আপনি জানেন যে, ডিভাইসে শুধু RAM থাকলেই হয় না, ডিভাইসের RAM-- আপনি যে কার্ভ-আউট নিতে পারেন এবং অন্যান্য অ্যাপ্লিকেশন ও অন্যান্য টুলিং যা আপনাকে সেই হার্ডওয়্যারে চালাতে হবে।

  • তাহলে, আপনি কি ৫০% বা মাত্র ১০% RAM ব্যবহার করতে পারবেন?

  • এবং আপনি এই চূড়ান্ত ধরনের প্রস্তুতি স্কোর পাবেন।

  • তাই, এটি সবুজ হলে, তার অর্থ হল কনফিগারেশন ব্যবহারের জন্য রেডি।

  • এটি কমলা বা হলুদ এবং বা লাল হলে, তার অর্থ হল আপনাকে কনফিগারেশনে কিছু পরিবর্তন করতে হতে পারে।

  • কম লেটেন্সির জন্য আপনার হয়ত আরও দ্রুত অ্যাক্সিলারেটর প্রয়োজন, হয়ত আপনার আরও বড় মডেল প্রয়োজন যা আরও বেশি দক্ষ।

  • তাই, আমি সাজেস্ট করব যে আপনি এটি একবার দেখুন।

  • এই মুহূর্তে আমাদের কাছে একটি প্রিভিউ আছে এবং এই টুলটি কতটা উপযোগী সেই বিষয়ে আপনার মতামত পেতে আমরা আগ্রহী।

  • সুতরাং, আমরা কীভাবে কিছু মূল্যায়ন সেট আপ করি সে সম্পর্কে Zoe পরে আরও কিছুটা কভার করতে চলেছে, তবে আমি এখন Jose-এর কাছে হ্যান্ডওভার করতে যাচ্ছি, যিনি আপনাকে Gemma 4-এর সাথে শুরু করার একটি খুব দ্রুত উপায় দেখাতে চলেছেন।

  • ধন্যবাদ, ইয়ান।

  • তাই, হ্যাঁ, আজই Gemma 4 ব্যবহার করে দেখার সবচেয়ে দ্রুত উপায় হল Android Studio-এর মাধ্যমে।

  • তাহলে, কীভাবে তা করতে হয় তা আমি আপনাকে দেখাই।

  • ল্যাপটপে পাল্টে নিন।

  • এই যে।

  • তাই, আমি যদি সেটিংসের মডেল প্রোভাইডার পৃষ্ঠায় গিয়ে Gemma বেছে নিই, তাহলে প্রতিটি মডেল কতটা বড় সেই সম্পর্কে আপনি একটি স্পষ্ট ধারণা পাবেন।

  • আমার হার্ড ড্রাইভে মডেলগুলি ডাউনলোড করতে হবে।

  • তাই, এটি একটি llama.cpp সার্ভার খোলে বা শুরু করে এবং এটি শুরু থেকেই আপনার জন্য সঠিকভাবে কনফিগার করা হয়েছে।

  • তবে আপনি চাইলে নিজের llama.cpp সার্ভার বা Ollama বা LM Studio ব্যবহার করতে পারেন।

  • তার জন্য, আপনাকে শুধু এখানে এসে স্থানীয় পরিষেবা প্রদানকারী যোগ করতে হবে।

  • এছাড়াও, রিমোট প্রোভাইডারের মাধ্যমে ছোট মডেল ব্যবহার করা অনেক বেশি যুক্তিযুক্ত।

  • তাই, আপনি এখানে একটি যোগ করতে পারেন, যতক্ষণ না এটি OpenAI বা Anthropic-এর সাথে মানানসই হয়, আপনি এটির সাথে কানেক্ট করতে পারবেন।

  • ঠিক আছে, তাহলে, দেখা যাক।

  • সুতরাং, এখন, ওহ, যাইহোক, সুতরাং, আপনি Android Studio-তে যেভাবে একটি মডেল বেছে নেন তা অবশ্যই এই ড্রপ-ডাউনের মাধ্যমে।

  • তাই, আমি Gemma 4 26B বেছে নিয়েছি এবং আমি জিজ্ঞাসা করতে পারি, "ViewModel কী?"

  • ঠিক আছে।

  • তাই, একটি অত্যন্ত গুরুত্বপূর্ণ বিষয় আপনাকে মনে রাখতে হবে যে, আপনি যখনই মডেল পরিবর্তন করেন, তখন পুরো কথোপকথনটি আবার শুরু থেকে নতুন মডেলে পাঠানো হয়।

  • তাই, আপনি যদি কোনও মডেলের সাথে সত্যিই দীর্ঘ কথোপকথন জেনারেট করেন এবং নতুন একটিতে পরিবর্তন করতে চান, তাহলে সম্ভবত আপনার একটি নতুন কথোপকথন শুরু করা উচিত, বা এটি কম্প্যাক্ট করা উচিত, বা অন্য কিছু করা উচিত।

  • তাহলে, এখন, স্লাইডে ফিরে আসা যাক এবং Zoe-র কাছে যাওয়া যাক, যাতে ছোট মডেলের সাহায্যে আপনি যেসব বিভিন্ন ওয়ার্কফ্লো চালাতে পারেন, সেই সম্পর্কে জানতে পারেন।

স্মল ল্যাঙ্গুয়েজ মডেলের সাহায্যে কোডিং ওয়ার্কফ্লো

  • আপনাকে অনেক ধন্যবাদ, Jose এবং আপনাকেও ধন্যবাদ, Ian, Gemma মডেলের ওভারভিউ দেওয়ার জন্য এবং আমরা সেখানে পৌঁছেছি কিনা তা জানানোর জন্য।

  • সুতরাং, আমরা দেখেছি যে কী ধরনের মডেল আছে, তাদের স্পেসিফিকেশন কী এবং এখন এটি বোঝার বিষয় যে আপনি তাদের কী ধরনের কাজ করতে দিতে পারেন।

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

  • ঠিক?

  • সুতরাং, এগুলি হল, আপনি জানেন, এমন কিছু জিনিস যা আমি নিশ্চিত যে সবাই ইতিমধ্যেই করছে, এমনকি, সম্ভবত, না বুঝেই।

  • তবে আমি আপনাকে উৎসাহিত করতে চাই, অথবা আমি চাই আপনি এর বাইরেও চিন্তা করুন, তাই না?

  • সুতরাং, ছোট মডেলগুলি ওপেন-ওয়েট হতে পারে এবং লোকাল লেভেলে রান করতে পারে, এমন কিছু যা আপনাকে সময় ফিরিয়ে দিতে পারে?

  • ঠিক?

  • আমরা রকেট ব্যবহার না করার কথা বলছি, তাহলে এর জন্য আমরা মস্তিষ্ক কেন ব্যবহার করছি?

  • তাই, আমরা যদি এর বাইরে যেতে পারি, তাহলে ছোট মডেলগুলি কী কী করতে পারে?

  • এমন কিছু ওয়ার্কফ্লো কী হতে পারে যা আপনি ব্যবহার করতে পারেন এবং যা আপনার জীবনকে আরও সহজ করে তুলতে পারে এবং আপনাকে আরও বেশি কাজ করার ক্ষমতা দিতে পারে, যেমন, আপনি হয়তো আরও বেশি কিছু করতে চান?

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

  • তাহলে, এগুলি কিছু উদাহরণ, তাই তো?

  • আর, দিনের শেষে, কোনও কিছুই আপনার লক্ষ্যকে সীমিত করতে পারবে না, অথবা আর্কিটেকচার হল সীমা এবং এমন অনেক কিছু আছে যা আপনি কীভাবে প্রয়োগ করবেন তা ভাবতে পারেন।

  • কিন্তু স্পেসিফিকেশন, টুল ও ওয়ার্কফ্লো থাকা সত্ত্বেও, আপনি কি এখনও বুঝতে পারছেন না যে কোথা থেকে শুরু করবেন?

বেঞ্চমার্কের মাধ্যমে মডেল মূল্যায়ন করা

  • বেঞ্চমার্কের কাজই হল এটি।

  • আর, ইয়ান যেমন বলেছেন, একটি জেনেরিক লিডারবোর্ড, বিশেষ করে Python-এর জন্য, আপনাকে খুব কমই বলবে যে একটি ছোট মডেল আপনার Android ওয়ার্কফ্লোর জন্য সহায়ক হবে কিনা।

  • যেমন, ড্রাইওয়াল ড্রিল সম্পর্কে জানলে কংক্রিট ড্রিল সম্পর্কে খুব বেশি জানা যায় না।

  • তবে আপনার নিজের ইভ্যালুয়েশনে বিনিয়োগ করা উচিত।

  • আপনার নিজের আর্কিটেকচার পরীক্ষা করার জন্য বিনিয়োগ করা উচিত, তবে আপনি তা করার আগে, সমস্ত রিসোর্স ব্যবহার করতে নাও চাইতে পারেন।

  • এতে সময়, অর্থ ও পরিশ্রম লাগে, তাই সর্বজনীনভাবে উপলভ্য বেঞ্চমার্ক দেখলে আপনি একটি ধারণা ও সংক্ষিপ্ত তালিকা পেতে পারেন, যার ভিত্তিতে আপনি নিজের মূল্যায়ন করার জন্য বিনিয়োগ করার সিদ্ধান্ত নিতে পারেন।

  • আর বেঞ্চমার্ক মূল্যায়ন করার সময় তিনটি জিনিস আপনার দেখা উচিত, তাই তো?

  • এটি একটু মেটা, তবে, মূলত, প্রথম জিনিসটি হল, এই মডেলটি কী ধরনের কাজ করছে, তাই না?

  • এটি কতটা নির্দিষ্ট।

  • এটি কি আপনি যে ধরনের টাস্ক দেবেন তার মতো দেখতে?

  • দ্বিতীয়টি হল টাস্কের স্কোপ।

  • তাহলে, এটি কি ডকুমেন্টেশন লেখা, এটি কি একটি PR সমাধান করা, এটি কি এমন কিছু যা আপনার কাছে থাকা চাকরির ধরনের মতো দেখায়?

  • এবং, অবশেষে, সিস্টেমের জটিলতা কি আপনি যে জটিলতা দিতে যাচ্ছেন তার অনুরূপ?

  • আর এখানেই আমরা দেখতে পাচ্ছি যে কেন Python বেঞ্চমার্ক Android-এর খুব একটা প্রতিনিধিত্বমূলক হবে না।

  • সেই কারণেই আমরা Android Bench তৈরি করেছি, যা Android ইকোসিস্টেম এবং Android-এর কাজকে ক্যাপচার করে।

  • প্রথম ভার্সনে ১০০টি PR-সাইজের Android টাস্ক আছে এবং আপনি যেকোনও এজেন্ট, মডেল ও দক্ষতার কম্বিনেশন চেক করতে Harbor-এর মাধ্যমে আজই এটি চালাতে পারবেন।

  • আমরা আরও জটিল ও দীর্ঘ সময় ধরে চলা টাস্কের সাথে 2.0 লঞ্চ করেছি যাতে আপনি আজ যে ধরনের কাজ দিয়েছেন সেই ধরনের কাজ করার ক্ষেত্রে ফ্রন্টিয়ার মডেলের ক্ষমতা কতটা তা বোঝা যায়।

  • তাই, আমি এখন Jose-কে এই বিষয়ে কথা বলতে দেব। তিনি আপনাকে দেখাবেন যে আমরা এর মাধ্যমে কী ফলাফল পেয়েছি এবং আপনি কীভাবে ছোট মডেলের সাথে কাজ করার বিষয়টি অপ্টিমাইজ করতে পারেন।

  • ঠিক আছে, ধন্যবাদ, Zoe.

  • ঠিক আছে, তাহলে আসুন দেখে নেওয়া যাক, ছোট মডেল কোন কোন টাস্ক সমাধান করতে পারে এবং কোথায় গিয়ে সেগুলির সমস্যা হয়।

  • এবং আসুন, ইচ্ছামতো, চার ধরনের টাস্কের সংজ্ঞা দিই: ছোট, মাঝারি, বড় এবং লং-হরাইজন।

  • লং-হরাইজন টাস্ক হল এমন টাস্ক যা সম্পূর্ণ করতে একজন মানুষের কয়েক দিন বা সপ্তাহ লাগতে পারে।

  • যেমন, মাইগ্রেশন, বড় রিফ্যাক্টরিং এবং স্পয়লার অ্যালার্ট, আপনি ছোট মডেলের সাহায্যে এগুলি করতে পারবেন না।

  • অন্তত একবারে।

  • আমরা পরে এই বিষয়ে কথা বলব।

  • ঠিক আছে, ছোট টাস্ক।

  • এইসব কাজের জন্য এক বা দুটি ফাইল পড়তে ও লিখতে হয় এবং এর জন্য খুব বেশি জ্ঞানের প্রয়োজন হয় না।

  • যেমন, ছোট মডেলগুলি Compose-এ বেশ ভালো, অন্তত Compose-এর বেসিকের ক্ষেত্রে।

  • যেমন, এলিমেন্টের মধ্যে ৮ ডিপি থাকতে হবে, হার্ডকোড করা রঙের পরিবর্তে থিম ব্যবহার করতে হবে বা স্ট্রিং এক্সট্র্যাক্ট করতে হবে।

  • ছোট মডেলের পক্ষে এগুলি করা খুবই সহজ।

  • তবে, এটি আরও উন্নত বিষয় কভার করে, কিন্তু টাস্কটি এখনও সহজ।

    @Composable
     fun AnimatedDrawer() {
       val offsetX = remember { Animatable(0f) }
    -  Box(modifier = Modifier.offset(x = offsetX.value.dp)) {}
    +  Box(modifier = Modifier.graphicsLayer { translationX = offsetX.value }) {}
     }
  • এই ক্ষেত্রে, অসুবিধাটি সুযোগ সম্পর্কে, জ্ঞান সম্পর্কে নয়।

  • তাই, প্রম্পটটি আসলে আমাদের বলে যে কোন কম্পোজেবল অপ্টিমাইজ করতে হবে এবং এতে কী সমস্যা আছে: এটি প্রতিটি ফ্রেমে রিকম্পোজ করছে।

  • তাই, Gemma 4-এর মতো ছোট মডেলের ক্ষেত্রেও এটি কাজকে অনেক সহজ করে তোলে।

  • এই ক্ষেত্রে, ৩ মিনিট সময় লেগেছে এবং এটি এক লাইনের পরিবর্তন।

  • ঠিক আছে।

  • সুতরাং, আমি মনে করি যে ছোট মডেল কী তা আমরা বেশ ভালভাবেই বুঝতে পেরেছি।

  • আসুন, আমরা মি- দুঃখিত, একটি ছোট টাস্ক দেখি।

  • আসুন, মাঝারি টাস্কগুলি দেখি।

  • ছোট মডেলের বেশিরভাগ কাজ করতে পারা উচিত।

  • এই টাস্কে, Pocket Casts অ্যাপ থেকে, অনুরোধে ইউজার-এজেন্ট নেই এবং আবার চেষ্টা করার লজিকেও সমস্যা আছে।

  • তাই, এটি একটু কঠিন কারণ প্রথমে আমরা একই সাথে দুটি জিনিস অনুরোধ করছি এবং কোড বেসে এই জিনিসগুলি কোথায় থাকে সে সম্পর্কে কোনও ইঙ্গিত নেই।

  • কিন্তু এটি পাস হয়ে গেছে।

  • এতে ১০ মিনিট সময় লেগেছে।

  • এটি তিনটি ফাইল পরিবর্তন করেছে।

  • আর হ্যাঁ, OpenRouter-এর মাধ্যমে এর জন্য ৬ সেন্ট খরচ হয়েছে।

  • এখন, একই ডেটাসেট থেকে ব্যর্থ হওয়া একটি টাস্ক দেখা যাক।

  • এটি Now in Android-এর একটি উদাহরণ যেখানে একটি সুন্দর বিস্তারিত রিপোর্ট বা প্রম্পট রয়েছে, কিন্তু এটি কোনও ক্লাস নেম বা ফাইলের উল্লেখ করে না, তাই এজেন্টকে অ্যাপের আর্কিটেকচার, ডেটা লেয়ার, সিঙ্ক মেকানিজম এবং এই ক্ষেত্রে ইত্যাদি বোঝার জন্য আরও বেশি প্রচেষ্টা ব্যয় করতে হবে। তাই, এই নির্দিষ্ট রানে, এটি ব্যর্থ হয়েছে।

  • সবকিছুই প্রায় সঠিকভাবে প্রয়োগ করা হয়েছে, তবে এটি ধরে নিয়েছে যে প্রাথমিক সিঙ্কের ভ্যালু -১ হবে, কিন্তু আসলে এটি ০।

    val isInitialSync = currentVersion == -1
    val isInitialSync = currentVersion == 0
  • এইটুকুই।

  • এজেন্ট যদি ইউনিট টেস্ট, আগে থেকে থাকা ইউনিট টেস্ট রান করত, তাহলে এই বাগ ধরা পড়ত।

  • সুতরাং, এটি দেখায় যে কীভাবে ছোট মডেলগুলি, সাধারণভাবে, ফ্রন্টিয়ার মডেলের চেয়ে একটু আগে থেমে যায়।

  • আমরা এজেন্টকে সমস্যাটি সমাধান করতে বলেছি, যাচাই করতে নয়।

  • তাই, আমাদের হয়ত টাস্কটি এমনভাবে পরিবর্তন করা উচিত যাতে এতে একটি যাচাইকরণ ধাপ থাকে।

  • আমরা এক মিনিটের মধ্যে সেই বিষয়েও কথা বলব।

  • তাহলে, ঠিক আছে, বড় কাজ সম্পর্কে কথা বলা যাক।

  • এই সংজ্ঞা অনুযায়ী, বড় টাস্কের প্রায় অর্ধেক প্রতিবার পাস করে।

  • কিছু কিছু ক্ষেত্রে ব্যর্থ হওয়ার কারণ হল, ছোট মডেলের পক্ষে সেগুলি অনেক বড় ও জটিল, তাই সেখানে বেশি কিছু করার নেই।

  • তবে কিছু ক্ষেত্রে, আসলে কী ঘটেছে তা দেখলে আপনি বুঝতে পারবেন যে মডেলটি ৯০ বা ৯০ শতাংশ সঠিক ছিল।

  • তাহলে, এর মধ্যে থেকে একটি বেছে নেওয়া যাক।

  • আমি এটি বেছে নিয়েছি কারণ এটি ফ্লেকি।

  • এটি রান করার সময়ের প্রায় অর্ধেক সময় পাস করে।

  • তাই, আমি মনে করি যে এটি একটি ছোট মডেলের পক্ষে করা সম্ভব এমন কাজের সীমানায় রয়েছে।

  • অথবা, অন্তত, এপ্রিলের একটি মডেল।

  • এটি Coil লাইব্রেরিতে ত্রুটিপূর্ণভাবে গঠিত URL পার্স করার ব্যাপারে।

  • আপনি দেখতে পাচ্ছেন যে PR-এর বিবরণটি বেশ বিস্তারিত, যা খুবই ভালো, তবে এটি একটি প্রয়োজনীয়তা মিস করেছে।

  • তাহলে, ঝটপট এটি দেখে নেওয়া যাক।

  • All runs checked for typical URL encodings and errors, but only some, half of them, added tests for badly encoded characters, so that test case there.

  • যেগুলি মূল্যায়নে পাস করেছে।

  • সুতরাং, সব রানই প্রায় নিখুঁত, তবে এটি আবার দেখায় যে ছোট মডেলগুলি সবসময় অতিরিক্ত পদক্ষেপ নেয় না।

  • এগুলি নির্দেশাবলী অনুসরণ করে, তবে ফ্রন্টিয়ার মডেলের মতো আপনাকে প্রভাবিত করার চেষ্টা করে না।

  • আপনি কি জানেন যে আজকাল কোনও এজেন্টে কীভাবে এফর্ট সেট করতে হয়?

  • শুধু মনে রাখবেন যে আপনি ছোট মডেল ব্যবহার করলে এটি খুব কম সেট করা হয়।

  • সুতরাং, আসুন বড় কাজগুলিকে এমনভাবে সংজ্ঞায়িত করি যা ছোট মডেলের মাধ্যমে প্রায় ৫০% সময় সম্পূর্ণ হতে পারে, যা Android Bench v1 ডেটাসেটের বিপরীতে Gemma 4 31B অর্জন করতে পারে, যার কথা Zoe আগে উল্লেখ করেছিলেন।

ব্যবহারিক পরামর্শ এবং উপায়

  • তাই, লং-হরাইজন টাস্ক সম্পর্কে কথা বলার আগে, ছোট মডেলগুলিকে সেইসব টাস্কের ব্যাপারে সাহায্য করার জন্য আমরা কি কিছু করতে পারি?

  • অবশ্যই, আর এগুলি করার জন্য কোনও পরিশ্রমই করতে হয় না।

  • প্রথমত, আপনি যদি ইয়ানের উল্লেখ করা Gemma 4-এর মতো কোনও মডেল লোকাল লেভেলে ব্যবহার করেন, তাহলে সেটি সঠিকভাবে কনফিগার করা আছে কিনা তা নিশ্চিত করুন।

  • যেমন, আপনি যদি Gemma 4-এর জন্য Ollama ব্যবহার করেন, তাহলে এটি ডিফল্ট হিসেবে ৩২,০০০ টোকেনের কন্টেক্সট উইন্ডো ব্যবহার করে, যদিও এটি আসলে আট গুণ বেশি টোকেন সাপোর্ট করে।

  • অবশ্যই, আপনি Android Studio-এর মাধ্যমে Gemma 4 ব্যবহার করলে, আপনাকে এটি কনফিগার করতে হবে না।

  • এটি ডিফল্ট হিসেবে সঠিকভাবে কনফিগার করা থাকে।

  • আমাদের মূল্যায়ন সেট অনুযায়ী, সম্পূর্ণ প্রসঙ্গ চালু করার ফলে ফলাফল ২৬ থেকে ৫৩% পর্যন্ত বৃদ্ধি পেয়েছে।

  • এরপর, Android CLI, Android CLI টুল ব্যবহার করুন, বিশেষ করে ডকুমেন্টেশন সার্চ করার জন্য।

  • এটি সবসময় প্রযোজ্য হয় না, কারণ মডেলগুলি বেসিকের ক্ষেত্রে বেশ ভালো, তবে আপনি যখনই কোনও নতুন বা বিশেষ API ব্যবহার করেন, তখন ডকুমেন্টেশন থাকাটা গুরুত্বপূর্ণ।

  • আমাদের অভিজ্ঞতা অনুযায়ী, ওয়েব সার্চ টুল ব্যবহার করার চেয়ে অনেক ভালো।

  • এরপর, যাচাইকরণ সংক্রান্ত ইঙ্গিত যোগ করুন।

  • আমরা এই বিষয়ে কথা বলেছি।

  • মডেলকে বলুন কীভাবে টেস্ট চালাতে হয়, কী কী ধরনের টেস্ট উপলভ্য, কীভাবে এমুলেটর ম্যানেজ করতে হয় ইত্যাদি। আপনি এটি AGENTS.md ফাইলে করতে পারেন, যা সব এজেন্টের জন্য নির্দেশাবলী উপলভ্য করবে, তবে, আমি বলতে চাইছি, এটি একটি ভালো জিনিস, যাই হোক।

  • আপনার কাছে এটি থাকা উচিত।

  • তবে, খুব বড় AGENTS.md ফাইলের দিকেও নজর রাখুন, কারণ আপনি বিভিন্ন এজেন্ট ব্যবহার করে দেখলে বুঝতে পারবেন যে সেগুলির মধ্যে কয়েকটির সিস্টেম প্রম্পট ও টুলের বিবরণ অনেক বড় এবং সেগুলি ছোট মডেলের পারফর্ম্যান্স কমিয়ে দেয় বলে মনে হয়।

  • আমরা আসলে OpenCode-এর সাথে এই বেঞ্চমার্কগুলি চালানোর চেষ্টা করেছি এবং এটি pi-এর চেয়ে অনেক কম পারফর্ম করেছে, সম্ভবত কারণ এটি আরও বড় টুল বিবরণ এবং সিস্টেম প্রম্পট ব্যবহার করে।

  • এরপর, স্কিল যোগ করুন, তবে স্কিল সরিয়েও দিন।

  • নতুন এবং বিশেষ API ব্যবহার করার সময় ছোট মডেলগুলির একটি নাজের প্রয়োজন হতে পারে, তবে উদাহরণস্বরূপ, সাধারণ কম্পোজ দক্ষতার সাথে তাদের প্রসঙ্গ পূরণ না করাই ভাল।

  • তাহলে, লং-হরাইজন টাস্কের ব্যাপারে কী বলা যায়?

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

  • লং-হরাইজন টাস্কের উদাহরণ হল, XML থেকে Compose-এ সম্পূর্ণ অ্যাপ মাইগ্রেট করা, একদম শুরু থেকে জটিল অ্যাপ তৈরি করা অথবা ক্রস-প্ল্যাটফর্ম অ্যাপকে নেটিভ Android-এ কনভার্ট করা।

  • আমরা যদি Android Bench V2-এর ফলাফল দেখি, যা শুধুমাত্র লং-হরাইজনের উপর ফোকাস করে, তাহলে আমরা দেখতে পাই যে ফ্রন্টিয়ার মডেলগুলি ৩ থেকে ৪০% স্কোর করছে।

  • তাই, ছোট মডেলের ক্ষেত্রে, আমি মনে করি এটি তাদের পক্ষে সম্ভব নয়।

  • তবে, ফ্রন্টিয়ার মডেলের মাধ্যমে প্রাথমিক বিশ্লেষণ করে, তারপর ছোট মডেলের মাধ্যমে সহজ টাস্কগুলি করলে, টোকেন ও ক্রেডিট অনেক বেশি সাশ্রয় হবে।

  • আমরা কীভাবে এটি করতে পারি তা দেখা যাক।

  • Zoe-তে ফিরে যান।

মাল্টি-মডেল অর্কেস্ট্রেশন

  • অসংখ্য ধন্যবাদ, জোসে।

  • আমরা ক্যাসকেড সম্পর্কে জানব, তবে আমি আপনাকে কিছু উপায় দেখানোর আগে বা আমরা এই বিষয়ে গভীরভাবে জানার আগে, আমি এক ধাপ পিছিয়ে যেতে চাই এবং আপনাকে অন্যান্য উপায় দেখাতে চাই যার মাধ্যমে বিভিন্ন মডেলের অর্কেস্ট্রেশন আপনাকে সাহায্য করতে পারে।

  • তাহলে, অর্কেস্ট্রেশন, উদাহরণস্বরূপ, আপনাকে কখনই ব্লক না হতে সাহায্য করতে পারে, তাই না?

  • তাই, আপনি যদি দেখেন যে কোনও পরিষেবা প্রদানকারী ডাউন হয়ে গেছে, বা আপনি API রেট লিমিটে পৌঁছে গেছেন, অথবা আপনি কোনও প্লেন বা ট্রেনে আছেন, যেমনটি ইয়ান বলছিলেন, আপনি একটি ফলব্যাক মডেল সেট-আপ করতে পারেন এবং এটি এমনভাবে তৈরি করতে পারেন যাতে সেটি অনলাইন বা লোকাল, যাই হোক না কেন, কোনও সমস্যা হলেও আপনি কাজ চালিয়ে যেতে পারেন।

  • আপনি অন্য যে কাজটি করতে পারেন তা হল অর্কেস্ট্রেশনের মাধ্যমে আরও ভালো উত্তর পাওয়া।

  • যেমন, আপনার কাছে একটি ছোট মডেল থাকতে পারে যা নিজেই কাজ করে এবং যখনই এটির একটু সহায়তার প্রয়োজন হয় তখনই একজন উপদেষ্টাকে কল করে, ঠিক, সেই সাহায্য পেতে।

  • এছাড়াও, আপনি এমন একটি কাউন্সিল সেট-আপ করতে পারেন যেখানে বিভিন্ন ধরনের মডেল বা বিভিন্ন মডেল একই সাথে একই টাস্ক এক্সিকিউট করছে এবং তারপর আপনি বিভিন্ন উত্তর মূল্যায়ন করতে পারবেন এবং প্রতিটি মডেলের ওয়েট ও বায়াস কীভাবে ফলাফলকে প্রভাবিত করেছে তা দেখতে পারবেন।

  • আপনি আলাদা মডেলও ব্যবহার করতে পারেন, যেমন ধরুন, টেস্ট করার জন্য।

  • তাই, এটি পিয়ার রিভিউয়ের মতো।

  • এবং আপনি এর মাধ্যমে এটি দেখতে পাবেন।

  • এবং অবশ্যই, অবশেষে, অর্কেস্ট্রেশন আপনাকে ক্যাসকেডের মতো কিছুর মাধ্যমে সাশ্রয়ী হতে সাহায্য করতে পারে।

  • মূলত, আপনি এটি ম্যানুয়ালি সেট-আপ করতে পারেন, যাতে আপনি প্ল্যানিংয়ের জন্য একটি মডেল, এক্সিকিউশনের জন্য অন্য একটি মডেল এবং পরীক্ষার জন্য আরেকটি মডেল সেট করতে পারেন।

  • এটি করার একাধিক উপায় আছে, হয় ক্লাউডে অথবা আপনি স্থানীয়ভাবে এটি করার জন্য LiteLLM প্রক্সি সেট-আপ করতে পারেন।

  • অথবা আপনি অনুরোধের ভিত্তিতে সঠিক ধরনের মডেলে অটোমেটিক রুট করার জন্য একটি ক্লাসিফায়ার ব্যবহার করতে পারেন, যা ইয়ানের উল্লেখ করা প্রক্সি আইডিয়া, তবে অটোমেটিক।

শেখার মূল বিষয় ও সাজেশন

  • তাহলে, আলোচনার শুরুতে হোসে যে প্রশ্নটি করেছিলেন, সেটিতে ফিরে গিয়ে আমরা আলোচনা শেষ করি। প্রশ্নটি হল, ছোট মডেল এবং ফ্রন্টিয়ার মডেলের মধ্যে কোয়ালিটি ও নির্ভুলতার পার্থক্য কী?

  • কম্পিউটার সায়েন্সের অনেক বিষয়ের মতো এর উত্তরও হল, এটি নির্ভর করে।

  • তবে, এটি এমন কিছু যা আমি আপনি জানেন, আমি আপনার সাথে ফিরে আসতে চাই যে এটি এমন কিছু যা আপনি ইঞ্জিনিয়ার করতে পারেন।

  • আপনি কীভাবে এটি সেট-আপ করেন এবং কীভাবে খেলেন তার উপর নির্ভর করে আপনি পার্থক্য তৈরি করতে পারেন।

  • তাহলে, প্রথম কাজ হল, সঠিক টুল বেছে নেওয়া, তাই তো?

  • একাধিক ধরনের টুল আছে।

  • তাদের সম্পর্কে জানা, তাদের এক্সপ্লোর করা, তাই তো?

  • তারপর, কোন কোন চাকরির জন্য তারা উপযুক্ত বা কোন কোন চাকরি তারা করতে পারে তা খুঁজে বের করো।

  • দ্বিতীয়ত, মডেলটি যাতে কাজ করার জন্য প্রয়োজনীয় স্কোপ পায় তা নিশ্চিত করতে হবে।

  • যেমন, টাস্কের জন্য নির্দেশাবলী, টাস্কের জন্য সঠিক কন্টেক্সট প্রদান করা এবং শুধুমাত্র টাস্কের জন্য সঠিক কন্টেক্সট এবং নিজের কাজ চেক করার উপায়।

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

  • এবং দিনের শেষে, আপনাকে নিজের ইভ্যাল সেট-আপ বা তৈরি করার জন্য কাজ করতে হবে।

  • এবং অবশেষে, আপনি সাইকেল এবং রকেটকে এমনভাবে সাজাতে পারেন যাতে আপনাকে কখনই একটি বা অন্যটির মধ্যে বেছে নিতে না হয় এবং এর মাধ্যমে কার্যকরভাবে খরচ করতে পারেন।

  • তবে সবচেয়ে গুরুত্বপূর্ণ হল, তুমি এক্সপ্লোর করা, তৈরি করা ও মজা করা চালিয়ে যেতে পারবে, তাই তো?

  • এবং আপনি Android Bench এবং সেখানে আপনার পাওয়া ফলাফলের মাধ্যমে মডেলের একটি শর্টলিস্ট সেট-আপ করে অথবা আজই Android Studio-তে Gemma 4-এর মাধ্যমে শুরু করতে পারেন।

  • তাই, আপনাকে অনেক ধন্যবাদ।

কোড

কোড স্নিপেট

"Evaluating models with benchmarks" ভিডিওর ২০:৩৯-এ Kotlin স্নিপেট
@Composable
 fun AnimatedDrawer() {
   val offsetX = remember { Animatable(0f) }
-  Box(modifier = Modifier.offset(x = offsetX.value.dp)) {}
+  Box(modifier = Modifier.graphicsLayer { translationX = offsetX.value }) {}
 }
"Evaluating models with benchmarks" ভিডিওর 22:13-এ Kotlin স্নিপেট
val isInitialSync = currentVersion == -1
"Evaluating models with benchmarks" ভিডিওর 22:13-এ Kotlin স্নিপেট
val isInitialSync = currentVersion == 0