bpm

onnxruntime-genai-bnlang

v0.1.0 Native plugin

Bnlang binding for ONNX Runtime GenAI — specialized fast-path for LLM text generation (Qwen/Llama/Phi/Mistral/Gemma family). Sits alongside onnxruntime-bnlang; transformers-bnlang dispatches to either depending on the engine option.

@mamun MIT Published

onnxruntime-genai-bnlang

onnxruntime-genai-এর জন্য Bnlang বাইন্ডিং — Microsoft-এর LLM text generation-এর জন্য বিশেষায়িত fast runtime (Qwen, Llama, Phi, Mistral, Gemma, …)। GenAI-এর C/C++ API wrap করে; পুরো generation loop (KV cache, sampling, beam search) C++-এ native চলে।

onnxruntime-bnlang (general-purpose ORT বাইন্ডিং)-এর পাশাপাশি থাকে, উপরে নয়। transformers-bnlang যখন engine: "onnxruntime-genai" পায় তখন এটাই ব্যবহার করে।

এটি একটি বেসরকারি তৃতীয় পক্ষীয় বাইন্ডিং। Microsoft-এর সাথে সম্পর্কিত নয়।

Read this in English — README.en.md

দ্রুত শুরু

import "onnxruntime-genai-bnlang" as ortg;

ধরি জেন = ortg.জেনারেটর.খুলুন("./models/qwen-0.5b-dml-int4");
ধরি ফল  = জেন.তৈরি_করুন("Hello", {
    max_new_tokens: 100,
    temperature:    0.7,
    top_k:          50,
    do_sample:      true
});
লিখুন(ফল["generated_text"]);
জেন.বন্ধ_করুন();

ধরি হলো bnl-এর var-এর বাংলা; লিখুন হলো print-এর বাংলা — দুটোই bnl core-এর অংশ।

অথবা transformers-bnlang pipeline-এর মাধ্যমে (সুপারিশকৃত — engine বদলেও একই public API):

import "transformers-bnlang" as bt;

ধরি জেন = bt.পাইপলাইন("text-generation", "./models/qwen-0.5b-dml-int4",
                       { engine: "onnxruntime-genai" });
লিখুন(জেন.চালান("Hello", { max_new_tokens: 100 })["generated_text"]);
জেন.বন্ধ_করুন();

Export-গুলো

নাম ধরন
সংস্করণ string
জেনারেটর.খুলুন(model_dir) factory → generator object
জেন.তৈরি_করুন(text, opts) function → result map
জেন.বন্ধ_করুন() function

কেন আলাদা package

বিষয় onnxruntime-bnlang onnxruntime-genai-bnlang
উদ্দেশ্য যেকোনো ONNX model LLM decoder-only generation
Generation loop নিজে লিখতে হয় built-in, native
KV cache management manually built-in
Sampling manually built-in (greedy/top-k/top-p/temperature/beam)
LLM-এর জন্য speed আপনার loop-এর উপর নির্ভর best-in-class

Python ecosystem-এর একই layering: general inference-এর জন্য onnxruntime, specialized LLM fast-path-এর জন্য onnxruntime-genai

লোকাল বিল্ড

bnl script/install.bnl       # GenAI + ORT NuGet package দুটো নামিয়ে merge করে
.\build.ps1                   # configure + build (এই host triple-এর জন্য)
./build.sh

install script-এ tar দরকার (Windows 10+ এটা সাথেই দেয়; Linux/macOS-এ সবসময়ই আছে)।

Model requirements

GenAI-এর জন্য genai_config.json আছে এমন model directory চাই। যেসব HF export এটা সঙ্গে আনে:

  • microsoft/Phi-3-*-onnx, microsoft/Phi-3.5-*-onnx
  • microsoft/Llama-3-*-onnx
  • xiaoyao9184/Qwen2.5-*-onnx-genai (community)
  • HF Hub-এ tags:onnxruntime-genai খুঁজুন

GenAI-ready নয় এমন export-এর জন্য onnxruntime_genai.models.builder চালিয়ে missing file গুলো তৈরি করতে হবে (Python + PyTorch দরকার, এক-বারের কাজ)।

অবস্থা

  • ✅ যেকোনো GenAI-ready model dir থেকে load + generate
  • ✅ Sampling options: do_sample, temperature, top_k, top_p, max_new_tokens
  • ⏳ Streaming output (token-by-token callback) — straightforward addition
  • ⏳ Adapter / LoRA — GenAI সমর্থন করে; এখনও expose করা হয়নি
  • ⏳ Multi-modal (image/audio) — শুধু Phi-3-Vision-এর মতো multi-modal LLM-এর ক্ষেত্রে দরকার
  • install.bnl-এ Linux/macOS deps (এখন Windows-x64 DML করা আছে)

লেআউট

bnl.json              manifest (main + targets)
CMakeLists.txt        build config
CMakePresets.json
build.ps1  build.sh   convenience wrapper

lib/
  index.bnl           public API (ইংরেজি + বাংলা re-export)

src/                  C++ source (publish-এ আসে না)
  bnl/plugin.h        C ABI contract
  main.cpp            bnl_load entry
  generator.{h,cpp}   GenAI C++ API wrap (model, tokenizer, generator loop)

deps/<triple>/        downloaded prebuilt (gitignored)
build/<triple>/       cmake output (gitignored)

script/
  install.bnl         Microsoft.ML.OnnxRuntimeGenAI + .OnnxRuntime NuGet নামায় + merge করে
  install-metadata.bnl

লাইসেন্স

MIT. Microsoft GenAI / ORT prebuilt গুলো Microsoft-এর MIT লাইসেন্সে। তৃতীয় পক্ষীয় attribution NOTICES.md-এ।