transformers-bnlang দিয়ে Qwen2.5 মডেল রান করার ছোট ছোট উদাহরণ। প্রতিটা ফাইল একটি নির্দিষ্ট ধারণা দেখায়, ক্রমানুসারে পড়লে সহজে বোঝা যাবে।
| # | ফাইল | যা শেখায় | ইঞ্জিন |
|---|---|---|---|
| 01 | 01-generate-onnx.bnl |
একবারে টেক্সট জেনারেশন | ONNX |
| 02 | 02-generate-torch.bnl |
একবারে টেক্সট জেনারেশন | torch-native (safetensors) |
| 03 | 03-stream-onnx.bnl |
টোকেন-বাই-টোকেন স্ট্রিমিং | ONNX |
| 04 | 04-stream-torch.bnl |
টোকেন-বাই-টোকেন স্ট্রিমিং | torch-native |
| 05 | 05-chat.bnl |
হিস্ট্রি সহ চ্যাট (নন-স্ট্রিম) | torch-native |
| 06 | 06-chat-stream.bnl |
হিস্ট্রি সহ চ্যাট + স্ট্রিমিং | torch-native |
| 07 | 07-web-chat/ |
ওয়েব + WebSocket চ্যাট ইউআই | torch-native |
পড়ার সাজেস্টেড ক্রম: ০১ → ০২ (ইঞ্জিন তুলনা) → ০৩/০৪ (স্ট্রিমিং যোগ) → ০৫/০৬ (চ্যাট হিস্ট্রি) → ০৭ (ব্রাউজার থেকে চ্যাট)।
সব উদাহরণ একই মডেল Qwen2.5-0.5B-Instruct ব্যবহার করে যাতে শুধু ঐ ভ্যারিয়েবলটাই বদলায় যেটা ঐ উদাহরণ শেখাচ্ছে।
দুই ফরম্যাটের মডেল লাগবে — ONNX উদাহরণের জন্য onnx-community ভার্সন আর torch-native উদাহরণের জন্য অরিজিনাল Qwen (safetensors) ভার্সন।
models/
├── onnx-community/Qwen2.5-0.5B-Instruct/
│ ├── config.json
│ ├── generation_config.json
│ ├── special_tokens_map.json
│ ├── tokenizer.json
│ ├── tokenizer_config.json
│ └── onnx/
│ └── model.onnx
└── Qwen/Qwen2.5-0.5B-Instruct/
├── config.json
├── generation_config.json
├── tokenizer.json
├── tokenizer_config.json
└── model.safetensors
ডাউনলোড লিংক:
- ONNX: https://huggingface.co/onnx-community/Qwen2.5-0.5B-Instruct/tree/main
- safetensors: https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct/tree/main
বি.দ্র.: ONNX-এর ক্ষেত্রে
onnx/ফোল্ডারে শুধুmodel.onnxরাখলেই হবে — কোয়ান্টাইজড ভার্সনগুলো (model_q4.onnx,model_fp16.onnxইত্যাদি) লাগবে না।
bpm installপ্যাকেজ লিংক: https://bpm.bnlang.dev/p/transformers-bnlang
CLI উদাহরণগুলো (০১–০৬) সরাসরি রান করুন:
bnl 01-generate-onnx.bnl
bnl 02-generate-torch.bnl
bnl 03-stream-onnx.bnl
bnl 04-stream-torch.bnl
bnl 05-chat.bnl
bnl 06-chat-stream.bnlওয়েব চ্যাট (০৭) — 07-web-chat/ ফোল্ডারে গিয়ে চালাতে হবে কারণ web.set_views("views") কারেন্ট ডিরেক্টরি থেকে রিসলভ হয়:
cd 07-web-chat
bnl app.bnlএরপর ব্রাউজারে খুলুন: http://127.0.0.1:3000/
ব্রাউজার (views/index.html)
│ WebSocket — সাদা টেক্সট ইন, স্ট্রিম-চাঙ্ক আউট
▼
socket.bnl (port 3001) — মডেল লোড + gen.chat(...) + TextStreamer
▲
│ import "./socket.bnl"
│
app.bnl (port 3000) — index.html সার্ভ করে
ক্লায়েন্ট ইউজার মেসেজ প্লেইন টেক্সট পাঠায়, সার্ভার প্রতি টোকেন chunk হিসেবে পাঠায়, রেসপন্স শেষ হলে __BNL_DONE__ সেন্টিনেল পাঠায়।