ওয়েবের জন্য এলএলএম ইনফারেন্স গাইড

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

আপনি MediaPipe স্টুডিও ডেমোর সাহায্যে এই কাজটি দেখতে পারেন। এই কাজের ক্ষমতা, মডেল এবং কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, ওভারভিউ দেখুন।

কোড উদাহরণ

LLM ইনফারেন্স API-এর উদাহরণ অ্যাপ্লিকেশনটি আপনার রেফারেন্সের জন্য জাভাস্ক্রিপ্টে এই টাস্কটির একটি মৌলিক বাস্তবায়ন প্রদান করে। আপনার নিজের টেক্সট জেনারেশন অ্যাপ তৈরি করা শুরু করতে আপনি এই নমুনা অ্যাপটি ব্যবহার করতে পারেন।

আপনি GitHub-এ LLM ইনফারেন্স API উদাহরণ অ্যাপ অ্যাক্সেস করতে পারেন।

সেটআপ

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

ব্রাউজার সামঞ্জস্য

LLM ইনফারেন্স API-এর জন্য WebGPU সামঞ্জস্য সহ একটি ওয়েব ব্রাউজার প্রয়োজন। সামঞ্জস্যপূর্ণ ব্রাউজারগুলির একটি সম্পূর্ণ তালিকার জন্য, GPU ব্রাউজার সামঞ্জস্য দেখুন।

জাভাস্ক্রিপ্ট প্যাকেজ

LLM ইনফারেন্স API কোড @mediapipe/tasks-genai প্যাকেজের মাধ্যমে উপলব্ধ। আপনি প্ল্যাটফর্ম সেটআপ গাইডে দেওয়া লিঙ্কগুলি থেকে এই লাইব্রেরিগুলি খুঁজে পেতে এবং ডাউনলোড করতে পারেন৷

স্থানীয় স্টেজিংয়ের জন্য প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করুন:

npm install @mediapipe/tasks-genai

একটি সার্ভারে স্থাপন করতে, সরাসরি আপনার HTML পৃষ্ঠায় কোড যোগ করতে jsDelivr- এর মতো একটি সামগ্রী বিতরণ নেটওয়ার্ক (CDN) পরিষেবা ব্যবহার করুন:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai/genai_bundle.cjs"
    crossorigin="anonymous"></script>
</head>

মডেল

MediaPipe LLM Inference API-এর জন্য একটি প্রশিক্ষিত মডেল প্রয়োজন যা এই কাজের সাথে সামঞ্জস্যপূর্ণ। ওয়েব অ্যাপ্লিকেশনের জন্য, মডেলটি অবশ্যই GPU- সামঞ্জস্যপূর্ণ হতে হবে।

এলএলএম ইনফারেন্স এপিআই-এর জন্য উপলব্ধ প্রশিক্ষিত মডেল সম্পর্কে আরও তথ্যের জন্য, টাস্ক ওভারভিউ মডেল বিভাগটি দেখুন।

একটি মডেল ডাউনলোড করুন

এলএলএম ইনফারেন্স এপিআই শুরু করার আগে, সমর্থিত মডেলগুলির একটি ডাউনলোড করুন এবং আপনার প্রকল্প ডিরেক্টরির মধ্যে ফাইলটি সংরক্ষণ করুন:

  • জেমিমা : মিথুন মডেল তৈরি করতে ব্যবহৃত একই গবেষণা এবং প্রযুক্তি থেকে তৈরি হালকা ওজনের, অত্যাধুনিক ওপেন মডেলের একটি পরিবারের অংশ। প্রশ্ন উত্তর, সংক্ষিপ্তকরণ এবং যুক্তি সহ পাঠ্য তৈরির বিভিন্ন কাজের জন্য উপযুক্ত। হয় Gemma 2B বা Gemma 7B মডেল ভেরিয়েন্ট ডাউনলোড করুন।
  • Phi-2 : 2.7 বিলিয়ন প্যারামিটার ট্রান্সফরমার মডেল, প্রশ্ন-উত্তর, চ্যাট এবং কোড ফর্ম্যাটের জন্য সবচেয়ে উপযুক্ত।
  • Falcon-RW-1B : RefinedWeb- এর 350B টোকেনগুলিতে প্রশিক্ষিত 1 বিলিয়ন প্যারামিটার কার্যকারণ ডিকোডার-শুধু মডেল৷
  • StableLM-3B : 3 বিলিয়ন প্যারামিটার ডিকোডার-শুধু ভাষা মডেল বিভিন্ন ইংরেজি এবং কোড ডেটাসেটের 1 ট্রিলিয়ন টোকেনগুলিতে প্রাক-প্রশিক্ষিত।

আমরা Gemma 2B বা Gemma 7B ব্যবহার করার পরামর্শ দিই, যা Kaggle মডেলগুলিতে পাওয়া যায় এবং এমন একটি বিন্যাসে আসে যা ইতিমধ্যেই LLM ইনফারেন্স API-এর সাথে সামঞ্জস্যপূর্ণ। আপনি যদি অন্য LLM ব্যবহার করেন, তাহলে আপনাকে মডেলটিকে একটি MediaPipe-বন্ধুত্বপূর্ণ বিন্যাসে রূপান্তর করতে হবে। জেমা সম্পর্কে আরও তথ্যের জন্য, জেমা সাইটটি দেখুন। অন্যান্য উপলব্ধ মডেল সম্পর্কে আরও তথ্যের জন্য, টাস্ক ওভারভিউ মডেল বিভাগটি দেখুন।

মিডিয়াপাইপ ফর্ম্যাটে মডেল রূপান্তর করুন

নেটিভ মডেল রূপান্তর

আপনি যদি একটি বাহ্যিক LLM (Phi-2, Falcon, or StableLM) অথবা Gemma-এর একটি নন-কাগল সংস্করণ ব্যবহার করেন, তাহলে MediaPipe-এর সাথে সামঞ্জস্যপূর্ণ হতে মডেলটিকে ফর্ম্যাট করতে আমাদের রূপান্তর স্ক্রিপ্টগুলি ব্যবহার করুন৷

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

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

$ python3 -m pip install mediapipe

মডেল রূপান্তর করতে genai.converter লাইব্রেরি ব্যবহার করুন:

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

config = converter.ConversionConfig(
  input_ckpt=INPUT_CKPT,
  ckpt_format=CKPT_FORMAT,
  model_type=MODEL_TYPE,
  backend=BACKEND,
  output_dir=OUTPUT_DIR,
  combine_file_only=False,
  vocab_model_file=VOCAB_MODEL_FILE,
  output_tflite_file=OUTPUT_TFLITE_FILE,
)

converter.convert_checkpoint(config)

LoRA মডেল রূপান্তর করতে, 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 মডেলের জন্য।

প্যারামিটার বর্ণনা গৃহীত মান
input_ckpt model.safetensors বা pytorch.bin ফাইলের পথ। মনে রাখবেন যে কখনও কখনও মডেল সেফটেনসর ফরম্যাট একাধিক ফাইলে শার্ড করা হয়, যেমন model-00001-of-00003.safetensors , model-00001-of-00003.safetensors । আপনি একটি ফাইল প্যাটার্ন নির্দিষ্ট করতে পারেন, যেমন model*.safetensors PATH
ckpt_format মডেল ফাইল বিন্যাস. {"সেফটেনসর", "পাইটোর্চ"}
model_type এলএলএম রূপান্তরিত হচ্ছে। {"PHI_2", "FALCON_RW_1B", "STABLELM_4E1T_3B", "GEMMA_2B"}
backend প্রসেসর (প্রতিনিধি) মডেলটি চালানোর জন্য ব্যবহৃত হয়। {"cpu", "gpu"}
output_dir আউটপুট ডিরেক্টরির পথ যা প্রতি-স্তর ওজন ফাইলগুলিকে হোস্ট করে। PATH
output_tflite_file আউটপুট ফাইলের পথ। উদাহরণস্বরূপ, "model_cpu.bin" বা "model_gpu.bin"। এই ফাইলটি শুধুমাত্র LLM ইনফারেন্স API এর সাথে সামঞ্জস্যপূর্ণ, এবং একটি সাধারণ `tflite` ফাইল হিসাবে ব্যবহার করা যাবে না। PATH
vocab_model_file ডিরেক্টরির পথ যা tokenizer.json এবং tokenizer_config.json ফাইল সংরক্ষণ করে। জেমার জন্য, একক tokenizer.model ফাইলে নির্দেশ করুন। PATH
lora_ckpt সেফটেনসর ফাইলের LoRA ckpt-এর পথ যা LoRA অ্যাডাপ্টারের ওজন সঞ্চয় করে। PATH
lora_rank একটি পূর্ণসংখ্যা যা LoRA ckpt-এর পদমর্যাদার প্রতিনিধিত্ব করে। লোরা ওজন রূপান্তর করার জন্য প্রয়োজন. যদি প্রদান না করা হয়, তাহলে রূপান্তরকারী অনুমান করে যে কোন LoRA ওজন নেই। দ্রষ্টব্য: শুধুমাত্র GPU ব্যাকএন্ড LoRA সমর্থন করে। পূর্ণসংখ্যা
lora_output_tflite_file LoRA ওজনের জন্য আউটপুট tflite ফাইলের নাম। PATH

এআই এজ মডেল রূপান্তর

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

মডেল বান্ডলিং প্রক্রিয়ার জন্য 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 AI এজ রপ্তানিকৃত TFLite মডেলের পথ। PATH
tokenizer_model SentencePiece tokenizer মডেলের পথ। PATH
start_token মডেল নির্দিষ্ট স্টার্ট টোকেন। প্রদত্ত টোকেনাইজার মডেলে স্টার্ট টোকেন অবশ্যই উপস্থিত থাকতে হবে। STRING
stop_tokens মডেল নির্দিষ্ট স্টপ টোকেন. প্রদত্ত টোকেনাইজার মডেলে স্টপ টোকেন অবশ্যই উপস্থিত থাকতে হবে। তালিকা[STRING]
output_filename আউটপুট টাস্ক বান্ডেল ফাইলের নাম। PATH

প্রকল্প ডিরেক্টরিতে মডেল যোগ করুন

আপনার প্রকল্প ডিরেক্টরির মধ্যে মডেল সংরক্ষণ করুন:

<dev-project-root>/assets/gemma-2b-it-gpu-int4.bin

baseOptions অবজেক্ট modelAssetPath প্যারামিটার সহ মডেলের পাথ নির্দিষ্ট করুন:

baseOptions: { modelAssetPath: `/assets/gemma-2b-it-gpu-int4.bin`}

টাস্ক তৈরি করুন

অনুমান চালানোর জন্য টাস্ক প্রস্তুত করতে LLM ইনফারেন্স API createFrom...() ফাংশনগুলির একটি ব্যবহার করুন। আপনি প্রশিক্ষিত মডেল ফাইলের আপেক্ষিক বা পরম পাথ সহ createFromModelPath() ফাংশনটি ব্যবহার করতে পারেন। কোড উদাহরণ createFromOptions() ফাংশন ব্যবহার করে। উপলব্ধ কনফিগারেশন বিকল্পগুলি সম্পর্কে আরও তথ্যের জন্য, কনফিগারেশন বিকল্পগুলি দেখুন।

নিম্নলিখিত কোডটি এই কাজটি কীভাবে তৈরি এবং কনফিগার করতে হয় তা প্রদর্শন করে:

const genai = await FilesetResolver.forGenAiTasks(
    // path/to/wasm/root
    "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm"
);
llmInference = await LlmInference.createFromOptions(genai, {
    baseOptions: {
        modelAssetPath: '/assets/gemma-2b-it-gpu-int4.bin'
    },
    maxTokens: 1000,
    topK: 40,
    temperature: 0.8,
    randomSeed: 101
});

কনফিগারেশন অপশন

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

বিকল্পের নাম বর্ণনা মান পরিসীমা ডিফল্ট মান
modelPath প্রজেক্ট ডিরেক্টরির মধ্যে মডেলটি যেখানে সংরক্ষণ করা হয় তার পথ। PATH N/A
maxTokens মডেলটি পরিচালনা করে সর্বাধিক সংখ্যক টোকেন (ইনপুট টোকেন + আউটপুট টোকেন)। পূর্ণসংখ্যা 512
topK প্রজন্মের প্রতিটি ধাপে মডেলটি বিবেচনা করে টোকেনের সংখ্যা। পূর্বাভাসগুলিকে শীর্ষ k সর্বাধিক সম্ভাব্য টোকেনে সীমাবদ্ধ করে৷ topK সেট করার সময়, আপনাকে অবশ্যই randomSeed এর জন্য একটি মান সেট করতে হবে। পূর্ণসংখ্যা 40
temperature প্রজন্মের সময় যে পরিমাণ এলোমেলোভাবে প্রবর্তিত হয়। একটি উচ্চ তাপমাত্রার ফলে উত্পন্ন পাঠে আরও সৃজনশীলতা আসে, যখন নিম্ন তাপমাত্রা আরও অনুমানযোগ্য প্রজন্ম তৈরি করে। temperature সেট করার সময়, আপনাকে অবশ্যই randomSeed এর জন্য একটি মান সেট করতে হবে। ভাসা 0.8
randomSeed টেক্সট তৈরির সময় ব্যবহৃত এলোমেলো বীজ। পূর্ণসংখ্যা 0
loraRanks LoRA র‍্যাঙ্কগুলি LoRA মডেলগুলি রানটাইমের সময় ব্যবহার করবে৷ দ্রষ্টব্য: এটি শুধুমাত্র GPU মডেলের সাথে সামঞ্জস্যপূর্ণ। পূর্ণসংখ্যা অ্যারে N/A

ডেটা প্রস্তুত করুন

LLM ইনফারেন্স API টেক্সট ( string ) ডেটা গ্রহণ করে। টাস্কটি টোকেনাইজেশন এবং টেনসর প্রিপ্রসেসিং সহ ডেটা ইনপুট প্রিপ্রসেসিং পরিচালনা করে।

সমস্ত প্রিপ্রসেসিং generateResponse() ফাংশনের মধ্যে পরিচালিত হয়। ইনপুট পাঠ্যের অতিরিক্ত প্রিপ্রসেসিংয়ের প্রয়োজন নেই।

const inputPrompt = "Compose an email to remind Brett of lunch plans at noon on Saturday.";

টাস্ক চালান

LLM ইনফারেন্স API অনুমানগুলি ট্রিগার করতে generateResponse() ফাংশন ব্যবহার করে। পাঠ্য শ্রেণীবিভাগের জন্য, এর অর্থ হল ইনপুট পাঠ্যের সম্ভাব্য বিভাগগুলি ফেরত দেওয়া।

নিম্নলিখিত কোডটি প্রদর্শন করে কিভাবে টাস্ক মডেলের সাথে প্রক্রিয়াকরণ চালানো যায়।

const response = await llmInference.generateResponse(inputPrompt);
document.getElementById('output').textContent = response;

প্রতিক্রিয়া স্ট্রিম করতে, নিম্নলিখিত ব্যবহার করুন:

llmInference.generateResponse(
  inputPrompt,
  (partialResult, done) => {
        document.getElementById('output').textContent += partialResult;
});

হ্যান্ডেল এবং প্রদর্শন ফলাফল

LLM ইনফারেন্স API একটি স্ট্রিং প্রদান করে, যার মধ্যে জেনারেট করা প্রতিক্রিয়া পাঠ্য অন্তর্ভুক্ত থাকে।

Here's a draft you can use:

Subject: Lunch on Saturday Reminder

Hi Brett,

Just a quick reminder about our lunch plans this Saturday at noon.
Let me know if that still works for you.

Looking forward to it!

Best,
[Your Name]

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

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

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

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

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

# For Gemma-2B
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"],
)

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

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

পরবর্তী ধাপ হিসেবে, আপনাকে মিডিয়াপাইপ পাইথন প্যাকেজ ব্যবহার করে মডেলের ওজনকে টেনসরফ্লো লাইট ফ্ল্যাটবাফারে রূপান্তর করতে হবে। 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 মডেল অনুমান

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

ওয়েব রানটাইমের সময় গতিশীল LoRA সমর্থন করে। অর্থাৎ, ব্যবহারকারীরা ঘোষণা করে যে LoRA র‍্যাঙ্কগুলি শুরু করার সময় ব্যবহার করা হবে এবং রানটাইম চলাকালীন বিভিন্ন LoRA মডেল অদলবদল করতে পারে।

const genai = await FilesetResolver.forGenAiTasks(
    // path/to/wasm/root
    "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm"
);
const llmInference = await LlmInference.createFromOptions(genai, {
    // options for the base model
    ...
    // LoRA ranks to be used by the LoRA models during runtime
    loraRanks: [4, 8, 16]
});

রানটাইম চলাকালীন, বেস মডেল শুরু হওয়ার পরে, ব্যবহার করার জন্য LoRA মডেলগুলি লোড করুন। এছাড়াও, LLM প্রতিক্রিয়া তৈরি করার সময় LoRA মডেল রেফারেন্স পাস করে LoRA মডেলটিকে ট্রিগার করুন।

// Load several LoRA models. The returned LoRA model reference is used to specify
// which LoRA model to be used for inference.
loraModelRank4 = await llmInference.loadLoraModel(loraModelRank4Url);
loraModelRank8 = await llmInference.loadLoraModel(loraModelRank8Url);

// Specify LoRA model to be used during inference
llmInference.generateResponse(
  inputPrompt,
  loraModelRank4,
  (partialResult, done) => {
        document.getElementById('output').textContent += partialResult;
});