এলএলএম ইনফারেন্স গাইড

LLM ইনফারেন্স API আপনাকে সম্পূর্ণরূপে ডিভাইসে বৃহৎ ভাষা মডেল (LLM) চালাতে দেয়, যা আপনি বিস্তৃত কাজ সম্পাদন করতে ব্যবহার করতে পারেন, যেমন টেক্সট তৈরি করা, প্রাকৃতিক ভাষা আকারে তথ্য পুনরুদ্ধার করা এবং নথির সারসংক্ষেপ করা। এই কাজটি একাধিক টেক্সট-টু-টেক্সট বৃহৎ ভাষা মডেলের জন্য অন্তর্নির্মিত সমর্থন প্রদান করে, যাতে আপনি আপনার অ্যাপ এবং পণ্যগুলিতে সর্বশেষ অন-ডিভাইস জেনারেটিভ AI মডেল প্রয়োগ করতে পারেন।

চেষ্টা করে দেখুন!

এই কাজটি বিভিন্ন ধরণের LLM-এর জন্য অন্তর্নির্মিত সহায়তা প্রদান করে। LiterRT কমিউনিটি পৃষ্ঠায় হোস্ট করা মডেলগুলি মিডিয়াপাইপ-বান্ধব ফর্ম্যাটে পাওয়া যায় এবং এর জন্য কোনও অতিরিক্ত রূপান্তর বা সংকলন পদক্ষেপের প্রয়োজন হয় না।

আপনি Litert Torch ব্যবহার করে PyTorch মডেলগুলিকে মাল্টি-সিগনেচার Litert ( tflite ) মডেলে রপ্তানি করতে পারেন, যা টাস্ক বান্ডেল তৈরি করার জন্য টোকেনাইজার প্যারামিটারের সাথে বান্ডিল করা হয়। Litert Torch দিয়ে রূপান্তরিত মডেলগুলি LLM ইনফারেন্স API এর সাথে সামঞ্জস্যপূর্ণ এবং CPU ব্যাকএন্ডে চলতে পারে, যা এগুলিকে Android এবং iOS অ্যাপ্লিকেশনের জন্য উপযুক্ত করে তোলে।

শুরু করুন

আপনার টার্গেট প্ল্যাটফর্মের জন্য এই বাস্তবায়ন নির্দেশিকাগুলির একটি অনুসরণ করে এই কাজটি ব্যবহার শুরু করুন। এই প্ল্যাটফর্ম-নির্দিষ্ট নির্দেশিকাগুলি আপনাকে এই কাজের মৌলিক বাস্তবায়নের মধ্য দিয়ে নিয়ে যাবে, যেখানে একটি উপলব্ধ মডেল এবং প্রস্তাবিত কনফিগারেশন বিকল্পগুলি ব্যবহার করে কোড উদাহরণগুলি ব্যবহার করা হবে:

টাস্কের বিবরণ

এই বিভাগটি এই কাজের ক্ষমতা, ইনপুট, আউটপুট এবং কনফিগারেশন বিকল্পগুলি বর্ণনা করে।

ফিচার

LLM ইনফারেন্স API-তে নিম্নলিখিত মূল বৈশিষ্ট্যগুলি রয়েছে:

  1. টেক্সট-টু-টেক্সট জেনারেশন - একটি ইনপুট টেক্সট প্রম্পটের উপর ভিত্তি করে টেক্সট জেনারেট করুন।
  2. LLM নির্বাচন - আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে অ্যাপটি তৈরি করতে একাধিক মডেল প্রয়োগ করুন। আপনি মডেলটিকে পুনরায় প্রশিক্ষণ দিতে এবং কাস্টমাইজড ওজন প্রয়োগ করতে পারেন।
  3. LoRA সাপোর্ট - LoRA মডেলের সাথে LLM ক্ষমতা প্রসারিত এবং কাস্টমাইজ করুন হয় আপনার সমস্ত ডেটাসেটের উপর প্রশিক্ষণ দিয়ে, অথবা ওপেন-সোর্স কমিউনিটি থেকে প্রস্তুত প্রি-বিল্ট LoRA মডেলগুলি গ্রহণ করে (LiterRT Torch Generative API দিয়ে রূপান্তরিত মডেলগুলির সাথে সামঞ্জস্যপূর্ণ নয়)।
টাস্ক ইনপুট টাস্ক আউটপুট
LLM ইনফারেন্স API নিম্নলিখিত ইনপুটগুলি গ্রহণ করে:
  • টেক্সট প্রম্পট (যেমন, একটি প্রশ্ন, একটি ইমেল বিষয়, একটি নথি যা সারসংক্ষেপে প্রকাশ করা হবে)
LLM ইনফারেন্স API নিম্নলিখিত ফলাফলগুলি আউটপুট করে:
  • ইনপুট প্রম্পটের উপর ভিত্তি করে তৈরি করা টেক্সট (যেমন, প্রশ্নের উত্তর, একটি ইমেল খসড়া, নথির সারাংশ)

কনফিগারেশনের বিকল্পগুলি

এই টাস্কে নিম্নলিখিত কনফিগারেশন বিকল্পগুলি রয়েছে:

বিকল্পের নাম বিবরণ মূল্য পরিসীমা ডিফল্ট মান
modelPath প্রকল্প ডিরেক্টরির মধ্যে মডেলটি যেখানে সংরক্ষণ করা হয় তার পথ। পথ নিষিদ্ধ
maxTokens মডেলটি সর্বোচ্চ কত সংখ্যক টোকেন (ইনপুট টোকেন + আউটপুট টোকেন) পরিচালনা করে। পূর্ণসংখ্যা ৫১২
topK প্রজন্মের প্রতিটি ধাপে মডেলটি কত টোকেন বিবেচনা করে। ভবিষ্যদ্বাণীগুলিকে শীর্ষ k সর্বাধিক সম্ভাব্য টোকেনগুলিতে সীমাবদ্ধ করে। পূর্ণসংখ্যা ৪০
temperature প্রজন্মের সময় যে পরিমাণ এলোমেলোতা প্রবর্তিত হয়। উচ্চ তাপমাত্রার ফলে উৎপন্ন লেখায় আরও সৃজনশীলতা দেখা দেয়, অন্যদিকে কম তাপমাত্রার ফলে আরও অনুমানযোগ্য প্রজন্ম তৈরি হয়। ভাসা ০.৮
randomSeed টেক্সট তৈরির সময় ব্যবহৃত এলোমেলো বীজ। পূর্ণসংখ্যা 0
loraPath ডিভাইসে স্থানীয়ভাবে LoRA মডেলের পরম পথ। দ্রষ্টব্য: এটি শুধুমাত্র GPU মডেলের সাথে সামঞ্জস্যপূর্ণ। পথ নিষিদ্ধ
resultListener ফলাফল শ্রোতাকে অ্যাসিঙ্ক্রোনাসভাবে ফলাফল গ্রহণের জন্য সেট করে। শুধুমাত্র অ্যাসিঙ্ক জেনারেশন পদ্ধতি ব্যবহার করার সময় প্রযোজ্য। নিষিদ্ধ নিষিদ্ধ
errorListener একটি ঐচ্ছিক ত্রুটি শ্রোতা সেট করে। নিষিদ্ধ নিষিদ্ধ

মডেল

LLM ইনফারেন্স API অনেক টেক্সট-টু-টেক্সট বৃহৎ ভাষার মডেল সমর্থন করে, যার মধ্যে ব্রাউজার এবং মোবাইল ডিভাইসে চালানোর জন্য অপ্টিমাইজ করা বেশ কয়েকটি মডেলের জন্য অন্তর্নির্মিত সমর্থন অন্তর্ভুক্ত। এই হালকা মডেলগুলি সম্পূর্ণরূপে ডিভাইসে ইনফারেন্স চালানোর জন্য ব্যবহার করা যেতে পারে।

LLM ইনফারেন্স API শুরু করার আগে, একটি মডেল ডাউনলোড করুন এবং ফাইলটি আপনার প্রোজেক্ট ডিরেক্টরিতে সংরক্ষণ করুন। আপনি LiterRT Community HuggingFace রিপোজিটরি থেকে একটি প্রি-কনভার্টেড মডেল ব্যবহার করতে পারেন, অথবা AI Edge Torch Generative Converter ব্যবহার করে একটি মডেলকে MediaPipe-সামঞ্জস্যপূর্ণ ফর্ম্যাটে রূপান্তর করতে পারেন।

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

জেমা-৩এন

জেমা-৩এন ই২বি এবং ই৪বি হল জেমা পরিবারের সর্বশেষ মডেল, হালকা ওজনের, অত্যাধুনিক ওপেন মডেল যা জেমিনি মডেল তৈরিতে ব্যবহৃত একই গবেষণা এবং প্রযুক্তি ব্যবহার করে তৈরি করা হয়েছে। জেমা ৩এন মডেলগুলি কম-রিসোর্স ডিভাইসগুলিতে দক্ষ সম্পাদনের জন্য ডিজাইন করা হয়েছে। এগুলি মাল্টিমোডাল ইনপুট, টেক্সট, ইমেজ এবং অডিও ইনপুট পরিচালনা এবং টেক্সট আউটপুট তৈরি করতে সক্ষম।

জেমা 3n মডেলগুলি রিসোর্সের প্রয়োজনীয়তা কমাতে নির্বাচনী প্যারামিটার অ্যাক্টিভেশন প্রযুক্তি ব্যবহার করে। এই কৌশলটি মডেলগুলিকে 2B এবং 4B প্যারামিটারের কার্যকর আকারে কাজ করতে দেয়, যা তাদের ধারণকৃত প্যারামিটারের মোট সংখ্যার চেয়ে কম।

Gemma-3n E2B ডাউনলোড করুন

Gemma-3n E4B ডাউনলোড করুন

HuggingFace-এর Gemma-3n E2B এবং E4B মডেলগুলি .litertlm ফর্ম্যাটে পাওয়া যায় এবং অ্যান্ড্রয়েড এবং ওয়েবের জন্য LLM ইনফারেন্স API-এর সাথে ব্যবহারের জন্য প্রস্তুত।

জেমা-৩ ১বি

জেমা-৩ ১বি হল জেমা পরিবারের সবচেয়ে হালকা মডেল, হালকা ওজনের, অত্যাধুনিক ওপেন মডেল যা জেমিনি মডেল তৈরিতে ব্যবহৃত একই গবেষণা এবং প্রযুক্তি ব্যবহার করে তৈরি। মডেলটিতে ১বি প্যারামিটার এবং ওপেন ওয়েট রয়েছে।

জেমা-৩ ১বি ডাউনলোড করুন

HuggingFace- এর Gemma-3 1B মডেলটি .task / .litertlm ফর্ম্যাটে পাওয়া যাচ্ছে এবং অ্যান্ড্রয়েড এবং ওয়েব অ্যাপ্লিকেশনের জন্য LLM ইনফারেন্স API-এর সাথে ব্যবহারের জন্য প্রস্তুত।

LLM ইনফারেন্স API দিয়ে Gemma-3 1B চালানোর সময়, নিম্নলিখিত বিকল্পগুলি সেই অনুযায়ী কনফিগার করুন:

  • preferredBackend : CPU অথবা GPU ব্যাকএন্ডের মধ্যে একটি বেছে নিতে এই বিকল্পটি ব্যবহার করুন। এই বিকল্পটি শুধুমাত্র Android এর জন্য উপলব্ধ।
  • supportedLoraRanks : LLM ইনফারেন্স API Gemma-3 1B মডেলের সাথে Low-Rank Adaptation (LoRA) সমর্থন করার জন্য কনফিগার করা যাবে না। supportedLoraRanks বা loraRanks বিকল্পগুলি ব্যবহার করবেন না।
  • maxTokens : maxTokens এর মান মডেলে তৈরি প্রসঙ্গ আকারের সাথে মিলতে হবে। এটিকে Key-Value (KV) ক্যাশে বা প্রসঙ্গ দৈর্ঘ্যও বলা যেতে পারে।
  • numResponses : সর্বদা 1 হতে হবে। এই বিকল্পটি শুধুমাত্র ওয়েবের জন্য উপলব্ধ।

ওয়েব অ্যাপ্লিকেশনগুলিতে Gemma-3 1B চালানোর সময়, ইনিশিয়ালাইজেশনের ফলে বর্তমান থ্রেডে একটি দীর্ঘ ব্লক হতে পারে। যদি সম্ভব হয়, তাহলে সর্বদা একটি ওয়ার্কার থ্রেড থেকে মডেলটি চালান।

জেমা-২ ২বি

Gemma-2 2B হল Gemma-2 এর একটি 2B ভেরিয়েন্ট, এবং সমস্ত প্ল্যাটফর্মে কাজ করে।

Gemma-2 2B ডাউনলোড করুন

মডেলটিতে 2B প্যারামিটার এবং ওপেন ওয়েট রয়েছে। Gemma-2 2B তার শ্রেণীর মডেলদের জন্য অত্যাধুনিক যুক্তি দক্ষতার জন্য পরিচিত।

পাইটর্চ মডেল রূপান্তর

PyTorch জেনারেটিভ মডেলগুলিকে LiteRT Torch Generative API ব্যবহার করে MediaPipe-সামঞ্জস্যপূর্ণ ফর্ম্যাটে রূপান্তর করা যেতে পারে। আপনি PyTorch মডেলগুলিকে মাল্টি-সিগনেচার LiteRT (TensorFlow Lite) মডেলে রূপান্তর করতে API ব্যবহার করতে পারেন। ম্যাপিং এবং মডেল রপ্তানি সম্পর্কে আরও তথ্যের জন্য, LiteRT Torch GitHub পৃষ্ঠাটি দেখুন।

LiteRT টর্চ জেনারেটিভ API ব্যবহার করে একটি PyTorch মডেল রূপান্তর করার জন্য নিম্নলিখিত পদক্ষেপগুলি অন্তর্ভুক্ত রয়েছে:

  1. পাইটর্চ মডেল চেকপয়েন্টগুলি ডাউনলোড করুন।
  2. LiterRT Torch Generative API ব্যবহার করে মডেলটিকে MediaPipe-সামঞ্জস্যপূর্ণ ফাইল ফরম্যাটে ( .tflite ) লেখা, রূপান্তর এবং কোয়ান্টাইজ করা যায়।
  3. tflite ফাইল এবং মডেল টোকেনাইজার থেকে একটি টাস্ক বান্ডেল ( .task / .litertlm ) তৈরি করুন।

টর্চ জেনারেটিভ কনভার্টার শুধুমাত্র CPU-এর জন্য রূপান্তরিত হয় এবং এর জন্য কমপক্ষে 64 GB RAM সহ একটি Linux মেশিন প্রয়োজন।

একটি টাস্ক বান্ডেল তৈরি করতে, একটি টাস্ক বান্ডেল তৈরি করতে বান্ডলিং স্ক্রিপ্ট ব্যবহার করুন। বান্ডলিং প্রক্রিয়াটি ম্যাপ করা মডেলটিকে অতিরিক্ত মেটাডেটা (যেমন, টোকেনাইজার প্যারামিটার) দিয়ে প্যাক করে যা এন্ড-টু-এন্ড ইনফারেন্স চালানোর জন্য প্রয়োজনীয়।

মডেল বান্ডলিং প্রক্রিয়ার জন্য MediaPipe PyPI প্যাকেজ প্রয়োজন। রূপান্তর স্ক্রিপ্টটি 0.10.14 পরে সমস্ত MediaPipe প্যাকেজে উপলব্ধ।

নিম্নলিখিতগুলি ব্যবহার করে নির্ভরতাগুলি ইনস্টল এবং আমদানি করুন:

$ python3 -m pip install mediapipe

মডেলটি বান্ডেল করতে genai.bundler লাইব্রেরি ব্যবহার করুন:

import mediapipe as mp
from mediapipe.tasks.python.genai import bundler

config = bundler.BundleConfig(
    tflite_model=TFLITE_MODEL,
    tokenizer_model=TOKENIZER_MODEL,
    start_token=START_TOKEN,
    stop_tokens=STOP_TOKENS,
    output_filename=OUTPUT_FILENAME,
    enable_bytes_to_unicode_mapping=ENABLE_BYTES_TO_UNICODE_MAPPING,
)
bundler.create_bundle(config)
প্যারামিটার বিবরণ গৃহীত মান
tflite_model এআই এজ এক্সপোর্ট করা টিএফলাইট মডেলের পথ। পথ
tokenizer_model SentencePiece টোকেনাইজার মডেলের পথ। পথ
start_token মডেল নির্দিষ্ট স্টার্ট টোকেন। প্রদত্ত টোকেনাইজার মডেলে স্টার্ট টোকেনটি অবশ্যই উপস্থিত থাকতে হবে। স্ট্রিং
stop_tokens মডেল নির্দিষ্ট স্টপ টোকেন। প্রদত্ত টোকেনাইজার মডেলে স্টপ টোকেনগুলি উপস্থিত থাকতে হবে। তালিকা [স্ট্রিং]
output_filename আউটপুট টাস্ক বান্ডেল ফাইলের নাম। পথ

LoRA কাস্টমাইজেশন

মিডিয়াপাইপ এলএলএম ইনফারেন্স এপিআই বৃহৎ ভাষার মডেলগুলির জন্য লো-র‍্যাঙ্ক অ্যাডাপ্টেশন (LoRA) সমর্থন করার জন্য কনফিগার করা যেতে পারে। সূক্ষ্মভাবে সুরক্ষিত LoRA মডেলগুলি ব্যবহার করে, ডেভেলপাররা একটি সাশ্রয়ী প্রশিক্ষণ প্রক্রিয়ার মাধ্যমে এলএলএমগুলির আচরণ কাস্টমাইজ করতে পারে।

LLM ইনফারেন্স API-এর LoRA সাপোর্ট সমস্ত Gemma ভেরিয়েন্ট এবং GPU ব্যাকএন্ডের জন্য Phi-2 মডেলের জন্য কাজ করে, LoRA ওয়েট শুধুমাত্র মনোযোগ স্তরের জন্য প্রযোজ্য। এই প্রাথমিক বাস্তবায়ন ভবিষ্যতের উন্নয়নের জন্য একটি পরীক্ষামূলক API হিসেবে কাজ করে যেখানে আসন্ন আপডেটগুলিতে আরও মডেল এবং বিভিন্ন ধরণের স্তর সমর্থন করার পরিকল্পনা রয়েছে।

LoRA মডেল প্রস্তুত করুন

আপনার নিজস্ব ডেটাসেটে সমর্থিত মডেল প্রকার, Gemma বা Phi-2 সহ একটি সূক্ষ্ম সুরযুক্ত LoRA মডেল প্রশিক্ষণের জন্য HuggingFace-এর নির্দেশাবলী অনুসরণ করুন। Gemma-2 2B , Gemma 2B এবং Phi-2 মডেল উভয়ই HuggingFace-এ সেফটেনসর ফর্ম্যাটে উপলব্ধ। যেহেতু LLM ইনফারেন্স API শুধুমাত্র মনোযোগ স্তরগুলিতে LoRA সমর্থন করে, তাই LoraConfig তৈরি করার সময় শুধুমাত্র মনোযোগ স্তরগুলি নিম্নলিখিতভাবে নির্দিষ্ট করুন:

# For Gemma
from peft import LoraConfig
config = LoraConfig(
    r=LORA_RANK,
    target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
)

# For Phi-2
config = LoraConfig(
    r=LORA_RANK,
    target_modules=["q_proj", "v_proj", "k_proj", "dense"],
)

পরীক্ষার জন্য, HuggingFace-এ উপলব্ধ LLM Inference API-এর সাথে মানানসই সর্বজনীনভাবে অ্যাক্সেসযোগ্য সূক্ষ্ম-সুরযুক্ত LoRA মডেল রয়েছে। উদাহরণস্বরূপ, Gemma-2B-এর জন্য monsterapi/gemma-2b-lora-maths-orca-200k এবং Phi-2-এর জন্য lole25/phi-2-sft-ultrachat-lora

প্রস্তুত ডেটাসেট সম্পর্কে প্রশিক্ষণ এবং মডেলটি সংরক্ষণ করার পরে, আপনি একটি adapter_model.safetensors ফাইল পাবেন যাতে সূক্ষ্মভাবে সুরক্ষিত LoRA মডেলের ওজন থাকবে। safetensors ফাইলটি হল মডেল রূপান্তরে ব্যবহৃত LoRA চেকপয়েন্ট।

পরবর্তী ধাপ হিসেবে, আপনাকে MediaPipe Python প্যাকেজ ব্যবহার করে মডেল ওয়েটগুলিকে TensorFlow Lite Flatbuffer-এ রূপান্তর করতে হবে। ConversionConfig এ বেস মডেল অপশনের পাশাপাশি অতিরিক্ত LoRA অপশনগুলিও উল্লেখ করা উচিত। লক্ষ্য করুন যেহেতু API শুধুমাত্র GPU-এর সাথে LoRA ইনফারেন্স সমর্থন করে, তাই ব্যাকএন্ডটি 'gpu' তে সেট করতে হবে।

import mediapipe as mp
from mediapipe.tasks.python.genai import converter

config = converter.ConversionConfig(
  # Other params related to base model
  ...
  # Must use gpu backend for LoRA conversion
  backend='gpu',
  # LoRA related params
  lora_ckpt=LORA_CKPT,
  lora_rank=LORA_RANK,
  lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
)

converter.convert_checkpoint(config)

কনভার্টারটি দুটি TFLite ফ্ল্যাটবাফার ফাইল আউটপুট করবে, একটি বেস মডেলের জন্য এবং অন্যটি LoRA মডেলের জন্য।

LoRA মডেলের অনুমান

LoRA মডেল ইনফারেন্স সমর্থন করার জন্য ওয়েব, অ্যান্ড্রয়েড এবং iOS LLM ইনফারেন্স API আপডেট করা হয়েছে।

অ্যান্ড্রয়েড ইনিশিয়ালাইজেশনের সময় স্ট্যাটিক LoRA সমর্থন করে। LoRA মডেল লোড করার জন্য, ব্যবহারকারীরা LoRA মডেলের পথের পাশাপাশি বেস LLMও নির্দিষ্ট করে।

// Set the configuration options for the LLM Inference task
val options = LlmInferenceOptions.builder()
        .setModelPath('<path to base model>')
        .setMaxTokens(1000)
        .setTopK(40)
        .setTemperature(0.8)
        .setRandomSeed(101)
        .setLoraPath('<path to LoRA model>')
        .build()

// Create an instance of the LLM Inference task
llmInference = LlmInference.createFromOptions(context, options)

LoRA দিয়ে LLM ইনফারেন্স চালানোর জন্য, বেস মডেলের মতো একই generateResponse() বা generateResponseAsync() পদ্ধতি ব্যবহার করুন।