
Jeff কী?
Jeff হলো compact Qwen3.5 এবং Gemma 4 fine-tune-এর একটি পরিবার, যা দ্রুত zero-shot classification-এর জন্য তৈরি। আপনি সাধারণ ভাষায় একটি পরিস্থিতি দেবেন, উপলভ্য বিকল্পগুলো নির্ধারণ করবেন, এবং একবারের forward pass থেকে প্রতিটি বিকল্পের জন্য calibrated probability পাবেন।
প্রচলিত generative model-এর মতো Jeff এমন গদ্য তৈরি করে না, যা আপনার application-কে parse করতে হবে। এটি support routing, intent detection, moderation, voice commands এবং game moves-এর মতো কাজে সরাসরি সিদ্ধান্ত নেওয়ার জন্য তৈরি। বিকল্পগুলো স্পষ্টভাবে বর্ণনা করা থাকলে সেগুলোকে Jeff-এর training data-তে আগে উপস্থিত থাকতে হবে না।
Jeff, Jev-এর মতো একই request format ব্যবহার করে, তবে এটি একটি স্বতন্ত্র project এবং TypeSafe-এর সঙ্গে affiliated বা endorsed নয়। এর training code open-source AutoJev recipe-এর ওপর ভিত্তি করে তৈরি।
প্রধান বৈশিষ্ট্য
- দ্রুত local inference: রিপোর্ট করা benchmark-এ Jeff-Qwen3.5-0.8B একটি সিদ্ধান্ত নিতে RTX PRO 6000-এ প্রায় 22 ms এবং MLX ব্যবহার করে Apple M4 Max-এ 28 ms সময় নেয়।
- Calibrated output: প্রতিটি সিদ্ধান্তে probability, নির্বাচিত বিকল্প এবং confidence অন্তর্ভুক্ত থাকে।
- Zero-shot category: বিকল্পগুলো নির্দিষ্ট label set-এ সীমাবদ্ধ না থেকে request-এর সময় বর্ণনা করা হয়।
- তিন ধরনের প্রশ্ন:
choice,noulঅথবাscoreপ্রশ্ন ব্যবহার করুন। - Request batching: একই state সম্পর্কে একাধিক স্বাধীন প্রশ্ন একসঙ্গে উত্তর দেওয়া যায়।
- Local backend: NVIDIA GPU বা CPU-তে PyTorch ব্যবহার করে চালান, অথবা Apple silicon-এ Qwen model-এর সঙ্গে MLX ব্যবহার করুন।
- Domain adaptation: zero-shot performance যথেষ্ট না হলে Jeff checkpoint fine-tune করুন।
একটি model বেছে নিন
Hugging Face-এ Jeff-এর তিনটি model checkpoint রয়েছে:
- Jeff-Qwen3.5-0.8B: 0.8-billion-parameter model, যার 16-bit weight-এর আকার 1.7 GB। দ্রুত option selection-এর জন্য এটিই প্রস্তাবিত ভারসাম্যপূর্ণ পছন্দ।
- Jeff-Qwen3.5-2B: 2-billion-parameter model, যার 16-bit weight-এর আকার 4.2 GB। রিপোর্ট করা benchmark panel-এ সামগ্রিকভাবে এর score বেশি, তবে এটি ধীর এবং বেশি সতর্ক।
- Jeff-Gemma4-E2B: 2 billion effective parameter, 4.6 billion stored parameter এবং 9.3 GB 16-bit weight-সহ একটি model। Project-এর MLX backend শুধু Qwen model সমর্থন করে।
প্রাথমিক deployment-এর জন্য Jeff-Qwen3.5-0.8B দিয়ে শুরু করুন। আপনার application-এর প্রতিনিধিত্বশীল উদাহরণে মূল্যায়ন করার পরই অন্য checkpoint-এ পরিবর্তন করুন।
Jeff install ও download করুন
Repository-টি dependency synchronize এবং command চালানোর জন্য uv ব্যবহার করে। Project directory থেকে default dependency install করুন এবং 0.8B checkpoint download করুন:
uv sync
uv run hf download mstrasser/Jeff-Qwen3.5-0.8B --local-dir checkpoints/jeff-0.8b
Checkpoint-টি checkpoints/jeff-0.8b-এ রাখা হবে। অন্য কোনো প্রকাশিত model ব্যবহার করতে চাইলে Hugging Face repository এবং local directory পরিবর্তন করতে পারেন।
PyTorch দিয়ে serve করুন

NVIDIA GPU বা CPU-এর জন্য default PyTorch backend দিয়ে server চালু করুন:
JEFF_CHECKPOINT=checkpoints/jeff-0.8b PORT=8765 uv run jeff-serve
Apple silicon-এ MLX দিয়ে serve করুন
সামঞ্জস্যপূর্ণ Mac-এ অতিরিক্ত Mac dependency install করে MLX backend নির্বাচন করুন। MLX serving Qwen checkpoint-এর জন্য উপলভ্য:
uv sync --extra mac
JEFF_BACKEND=mlx JEFF_CHECKPOINT=checkpoints/jeff-0.8b PORT=8765 uv run jeff-serve
উভয় command-ই service-টিকে স্থানীয়ভাবে 8765 port-এ প্রকাশ করে।
আপনার প্রথম classification request পাঠান
একটি request-এ পরিস্থিতি বর্ণনাকারী একটি state এবং এক বা একাধিক সিদ্ধান্ত নির্ধারণকারী একটি questions object থাকে। নিচের উদাহরণে Jeff-কে একটি customer message route করতে এবং customer রাগান্বিত কি না তা স্বাধীনভাবে অনুমান করতে বলা হয়েছে:
curl -s localhost:8765/v1/systemone \
-H 'content-type: application/json' \
-d '{
"model": "jeff-latest",
"state": "Refund request: the customer says the parcel arrived crushed and wants their money back.",
"questions": {
"route": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"1": "Refunds and payments",
"2": "Damaged or lost parcels",
"3": "Account and login problems"
}
},
"angry": {
"type": "noul",
"instructions": "Is the customer angry?"
}
}
}'
Jeff একটি request-এ উভয় প্রশ্নের মূল্যায়ন করে। প্রতিটি উত্তরে probability, নির্বাচিত বিকল্প এবং confidence value দেওয়া হয়। আপনার application নির্বাচিত উত্তর সরাসরি ব্যবহার করতে পারে অথবা নিজস্ব confidence threshold প্রয়োগ করতে পারে।
প্রশ্নের ধরনগুলো বুঝুন
Choice
choice প্রশ্ন সর্বোচ্চ 255টি বিকল্পের মধ্যে একটি নির্বাচন করে। criteria-তে সংক্ষিপ্ত identifier রাখুন এবং বিকল্পগুলোর অর্থ ব্যাখ্যা করতে সংশ্লিষ্ট value ব্যবহার করুন।
"route": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"1": "Refunds and payments",
"2": "Damaged or lost parcels",
"3": "Account and login problems"
}
}
Noul

একটি noul প্রশ্ন একটি হ্যাঁ-না সিদ্ধান্তকে সম্ভাব্যতা হিসেবে প্রকাশ করে। কোনো বার্তা রাগান্বিত, জরুরি, অনিরাপদ বা প্রাসঙ্গিক কি না—এ ধরনের যাচাইয়ে এটি কার্যকর।
"angry": {
"type": "noul",
"instructions": "Is the customer angry?"
}
স্কোর
একটি score প্রশ্ন আপনার নির্ধারিত স্কেলে উত্তর প্রকাশ করে। শ্রেণিভিত্তিক লেবেলের বদলে যখন অ্যাপ্লিকেশনে মাত্রাভিত্তিক মূল্যায়ন প্রয়োজন হয়, তখন এটি ব্যবহার করুন।
কার্যকর সিদ্ধান্ত-প্রম্পট লিখুন
ছোট ক্লাসিফায়ারে প্রম্পটের ভাষা উল্লেখযোগ্য প্রভাব ফেলে। Jeff ব্যবহার করার সময় নিচের পদ্ধতিগুলো বিশেষভাবে গুরুত্বপূর্ণ।
- কোডে যুক্তি প্রয়োগ করুন এবং Jeff দিয়ে সিদ্ধান্ত নিন। আপনার অ্যাপ্লিকেশনে নির্ধারিত নিয়ম, ভবিষ্যৎ অবস্থা এবং একাধিক ধাপের পরিণতি গণনা করুন। চূড়ান্ত সিদ্ধান্তের জন্য ফলাফলটি Jeff-কে দিন।
- পরিণতি সরাসরি বর্ণনা করুন। মডেলকে কোনো গাড়ি দুই চালের মধ্যে পৌঁছাবে কি না অনুমান করতে বলার বদলে, নির্দিষ্ট কোনো চালের ফলে গাড়ির ধাক্কা লাগবে—এ কথা সরাসরি উল্লেখ করুন।
- বিকল্পগুলোর বর্ণনা সামঞ্জস্যপূর্ণ রাখুন। বিকল্পগুলোর গঠন একই রকম এবং বিস্তারিতের মাত্রা তুলনীয় হওয়া উচিত। অসামঞ্জস্যপূর্ণ ভাষা সিদ্ধান্তকে পক্ষপাতদুষ্ট করতে পারে।
- ছোট বিকল্প-কী ব্যবহার করুন। দীর্ঘ অভ্যন্তরীণ শনাক্তকারীর বদলে
{"1": "Engagement letter"}ব্যবহার করুন। দীর্ঘ কী বিকল্পের বর্ণনা উন্নত না করেই প্রক্রিয়াকরণ খরচ বাড়ায়। - স্বাধীন প্রশ্নগুলো একত্র করুন। একাধিক সিদ্ধান্তের অবস্থা একই হলে ইনপুট বারবার পাঠানোর বদলে একটি অনুরোধে সেগুলো পাঠান।
- প্রতিনিধিত্বশীল ডেটা পরীক্ষা করুন। বেঞ্চমার্কের ফলাফল উপযোগী প্রেক্ষাপট দেয়, কিন্তু নির্দিষ্ট কোনো কর্মপ্রবাহে পারফরম্যান্সের নিশ্চয়তা দেয় না।
Jeff একটি ক্লাসিফায়ার, প্ল্যানার নয়। আপনার কোড প্রাসঙ্গিক তথ্য প্রস্তুত করলে এবং মডেল স্পষ্টভাবে বর্ণিত বিকল্পগুলোর মধ্যে নির্বাচন করলে এটি সবচেয়ে ভালো কাজ করে।
পারফরম্যান্স ও সীমাবদ্ধতা
পাঁচটি সর্বজনীন বেঞ্চমার্কে প্রকল্পটির মূল্যায়নে Jeff-Qwen3.5-0.8B স্কোর করেছে 79.1, Jeff-Qwen3.5-2B স্কোর করেছে 83.1 এবং Jeff-Gemma4-E2B স্কোর করেছে 81.6। 2B Qwen-এর ফলাফল Jev-এর প্রকাশিত সামগ্রিক 83.0 ফলাফলের কাছাকাছি ছিল, যদিও Jev এবং AutoJev-এর পরিসংখ্যান একই বেঞ্চমার্কের ভিন্ন নমুনায় পরিমাপ করা হয়েছে।
কাজভেদে ফলাফল উল্লেখযোগ্যভাবে পরিবর্তিত হয়। Financial PhraseBank এবং RAGTruth-সহ বিভিন্ন ক্লাসিফিকেশন ও গ্রাউন্ডিং মূল্যায়নে Jeff শক্তিশালী পারফরম্যান্স দেখায়, তবে BBH, JudgeBench এবং JevBench-এর hard tier-এর মতো যুক্তিনির্ভর বেঞ্চমার্কে বৃহত্তর সিস্টেমগুলোর তুলনায় এখনও পিছিয়ে।
প্রায় 200 টোকেনের ইনপুটের জন্য প্রকাশিত মধ্যম ইনফারেন্স সময় ছিল 0.8B মডেলে RTX PRO 6000-এ 22 ms, MLX-সহ M4 Max-এ 28 ms এবং 32-thread CPU-তে 463 ms। এই সংখ্যাগুলো হার্ডওয়্যার-নির্ভর; আপনার নিজস্ব ডিপ্লয়মেন্টে এগুলো আবার পরিমাপ করা উচিত।
গেম হারনেস ব্যবহার করে দেখুন
রিপোজিটরিতে Doom, Frogger এবং Pac-Man-এর পরীক্ষা রয়েছে, যেখানে গতিশীলভাবে বর্ণিত বৈধ চালের ওপর সিদ্ধান্ত নেওয়া দেখানো হয়েছে। এগুলো চালানোর আগে ঐচ্ছিক গেম নির্ভরতাগুলো ইনস্টল করুন:

uv sync --extra games
Jeff সার্ভার চালু থাকা অবস্থায় দেওয়া Doom ও Frogger মূল্যায়ন চালাতে পারেন:
uv run python -m jeff.games --game doom --player jeff --criteria situation --url http://127.0.0.1:8765 --video --out runs/games/doom.json
uv run python -m jeff.games --game frogger --player jeff --criteria outcomes --url http://127.0.0.1:8765 --out runs/games/frogger.json
তুলনার জন্য Pac-Man-এর নিয়মভিত্তিক প্লেয়ারও চালাতে পারেন:
uv run python -m jeff.games --game pacman --player rule --out runs/games/pacman-rule.json
এই পরীক্ষাগুলো একটি গুরুত্বপূর্ণ সীমাবদ্ধতাও দেখায়: বেঞ্চমার্কের র্যাঙ্কিং ইন্টারঅ্যাকটিভ গেমের পারফরম্যান্সের পূর্বাভাস সবসময় দেয় না। প্রকাশিত ফলাফলে, 2B Jeff মডেলের সামগ্রিক বেঞ্চমার্ক স্কোর বেশি হওয়া সত্ত্বেও 0.8B Jeff মডেলটি কয়েকটি ক্ষেত্রে 2B Jeff মডেলের চেয়ে ভালো গেম খেলেছে।
আপনার ডোমেইনের জন্য Jeff ফাইন-টিউন করুন
জিরো-শট নির্ভুলতা যথেষ্ট না হলে Jeff-এর একটি চেকপয়েন্ট থেকে শুরু করে আপনার অ্যাপ্লিকেশনের উদাহরণ দিয়ে প্রশিক্ষণ দিন। README-তে বলা হয়েছে, প্রায় 11,000টি অ্যাপ্লিকেশন-নির্দিষ্ট উদাহরণ ব্যবহার করে ভয়েস-নেভিগেশন ফাইন-টিউনিং করলে একটি GPU-তে প্রায় আধা ঘণ্টায় হোল্ড-আউট নির্ভুলতা 31.7% থেকে 95.8%-এ উন্নীত হয়েছে।
autojev-train --initial-checkpoint <jeff> --epochs 1 ...
রিপোজিটরিতে আরও বিস্তৃত প্রশিক্ষণ কর্মপ্রবাহও রয়েছে। সাধারণ ধাপে ডেটা মিশ্রণ তৈরি করা, প্রশিক্ষণ চালানো এবং নির্বাচিত চেকপয়েন্ট মূল্যায়ন করা হয়:
uv run autojev-mix ...
scripts/train.sh RUN data/mix/public.jsonl data/mix 5e-6 40 Qwen/Qwen3.5-0.8B <revision> --epochs 1
uv run autojev-evaluate --data data/panel.jsonl --local --checkpoint checkpoints/RUN/selected --output runs/eval/RUN.json
প্রকাশিত রেসিপিতে এক epoch-এর full-weight fine-tuning, 256-এর ব্যাচ, অপশন অক্ষরের ওপর cross-entropy এবং সম্ভাব্যতা ক্যালিব্রেশনের জন্য fitted temperature ব্যবহার করা হয়েছে। বেঞ্চমার্ক প্যানেলের বদলে ডেভেলপমেন্ট সেট ব্যবহার করে চেকপয়েন্ট নির্বাচন করা হয়।
সম্পূর্ণ স্থানীয় synthetic-data pipeline, leak filtering, learning-rate sweep এবং ড্যাশবোর্ড কর্মপ্রবাহের জন্য scripts/train_all.sh দেখুন। প্রকল্পটি তার প্রশিক্ষণ উৎস ও সেগুলোর লাইসেন্স docs/data-sources.md-এ নথিবদ্ধ করেছে।
উন্নত ডিপ্লয়মেন্ট টিপস
- নিজের ডেটায় পরিমাপের ক্যালিব্রেশন করুন। একটি ক্যালিব্রেটেড সাধারণ মডেলেরও এসকেলেশন বা ফলব্যাক আচরণের জন্য অ্যাপ্লিকেশন-নির্দিষ্ট থ্রেশহোল্ড প্রয়োজন হতে পারে।
- একটি নিরাপদ ফলব্যাক যোগ করুন। আত্মবিশ্বাসের মাত্রা খুব কম হলে অনুরোধটি একজন মানুষ, একটি নির্ধারিত নিয়ম, অথবা আরও সক্ষম মডেলের কাছে পাঠান।
- স্টেট সংক্ষিপ্ত রাখুন। সিদ্ধান্তের জন্য প্রয়োজনীয় তথ্য দিন এবং ছোট মডেলকে বিভ্রান্ত করতে পারে এমন অপ্রাসঙ্গিক লেখা এড়িয়ে চলুন।
- বাক্যবিন্যাসের বিভিন্ন রূপ মূল্যায়ন করুন। প্রোডাকশনের স্কিমা চূড়ান্ত করার আগে নির্দেশনা ও মানদণ্ডের কয়েকটি সামঞ্জস্যপূর্ণ রূপ তুলনা করুন।
- অভিজ্ঞতালব্ধ ফলাফলের ভিত্তিতে মডেল বেছে নিন। লেটেন্সি-সংবেদনশীল অপশন নির্বাচনের জন্য 0.8B মডেল ব্যবহার করুন, তবে নিজের ভ্যালিডেশন সেটের বিপরীতে সব উপযুক্ত চেকপয়েন্ট পরীক্ষা করুন।
- মোডালিটির সীমাবদ্ধতা মেনে চলুন। README অনুযায়ী Jeff কেবল ইংরেজি টেক্সট সমর্থন করে।
উপসংহার
ফ্রি-ফর্ম টেক্সট তৈরি বা পার্স না করেই কোনো অ্যাপ্লিকেশনে দ্রুত, স্থানীয় এবং সম্ভাব্যতাভিত্তিক সিদ্ধান্ত যোগ করার একটি ব্যবহারিক উপায় Jeff প্রদান করে। Jeff-Qwen3.5-0.8B দিয়ে শুরু করুন, প্রতিটি অপশন স্পষ্টভাবে বর্ণনা করুন, স্বাধীন প্রশ্নগুলো একটি অনুরোধে একত্র করুন এবং বাস্তব অ্যাপ্লিকেশন উদাহরণে মূল্যায়ন করুন। জিরো-শট আচরণ যথেষ্ট না হলে ডোমেইন-নির্দিষ্ট ডেটায় বিদ্যমান Jeff চেকপয়েন্টকে ফাইন-টিউন করুন।
