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

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

কাজটি জেমিনি মডেল তৈরি করতে ব্যবহৃত একই গবেষণা এবং প্রযুক্তি থেকে তৈরি হালকা ওজনের, অত্যাধুনিক ওপেন মডেলগুলির একটি পরিবারের একটি অংশ, জেমা 2B সমর্থন করে৷ এটি নিম্নলিখিত বাহ্যিক মডেলগুলিকেও সমর্থন করে: Phi-2 , Falcon-RW-1B এবং StableLM-3B , AI Edge এর মাধ্যমে রপ্তানি করা সমস্ত মডেল সহ৷

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

কোড উদাহরণ

এই নির্দেশিকাটি Android এর জন্য একটি মৌলিক পাঠ্য প্রজন্মের অ্যাপের একটি উদাহরণ উল্লেখ করে৷ আপনি অ্যাপটিকে আপনার নিজের অ্যান্ড্রয়েড অ্যাপের জন্য একটি সূচনা পয়েন্ট হিসাবে ব্যবহার করতে পারেন, বা একটি বিদ্যমান অ্যাপ পরিবর্তন করার সময় এটি উল্লেখ করতে পারেন। উদাহরণ কোডটি গিটহাবে হোস্ট করা হয়েছে।

কোডটি ডাউনলোড করুন

নিম্নলিখিত নির্দেশাবলী আপনাকে দেখায় কিভাবে গিট কমান্ড লাইন টুল ব্যবহার করে উদাহরণ কোডের একটি স্থানীয় অনুলিপি তৈরি করতে হয়।

উদাহরণ কোড ডাউনলোড করতে:

  1. নিম্নলিখিত কমান্ড ব্যবহার করে গিট সংগ্রহস্থল ক্লোন করুন:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. ঐচ্ছিকভাবে, স্পার্স চেকআউট ব্যবহার করতে আপনার গিট ইন্সট্যান্স কনফিগার করুন, যাতে আপনার কাছে LLM ইনফারেন্স API উদাহরণ অ্যাপের জন্য শুধুমাত্র ফাইল থাকে:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/llm_inference/android
    

উদাহরণ কোডের একটি স্থানীয় সংস্করণ তৈরি করার পরে, আপনি প্রকল্পটি অ্যান্ড্রয়েড স্টুডিওতে আমদানি করতে এবং অ্যাপটি চালাতে পারেন। নির্দেশাবলীর জন্য, Android এর জন্য সেটআপ গাইড দেখুন।

সেটআপ

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

নির্ভরতা

LLM ইনফারেন্স API com.google.mediapipe:tasks-genai লাইব্রেরি ব্যবহার করে। আপনার Android অ্যাপের build.gradle ফাইলে এই নির্ভরতা যোগ করুন:

dependencies {
    implementation 'com.google.mediapipe:tasks-genai:0.10.14'
}

মডেল

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

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

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

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

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

বিকল্পভাবে, আপনি AI Edge Troch এর মাধ্যমে ম্যাপ করা এবং এক্সপোর্ট করা মডেলগুলি ব্যবহার করতে পারেন৷

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

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

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

আপনি যদি একটি বাহ্যিক 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

ডিভাইসে মডেল পুশ করুন

output_path ফোল্ডারের বিষয়বস্তুকে অ্যান্ড্রয়েড ডিভাইসে পুশ করুন।

$ adb shell rm -r /data/local/tmp/llm/ # Remove any previously loaded models
$ adb shell mkdir -p /data/local/tmp/llm/
$ adb push output_path /data/local/tmp/llm/model_version.bin

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

MediaPipe LLM ইনফারেন্স API টাস্ক সেট আপ করতে createFromOptions() ফাংশন ব্যবহার করে। createFromOptions() ফাংশন কনফিগারেশন বিকল্পের জন্য মান গ্রহণ করে। কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, কনফিগারেশন বিকল্পগুলি দেখুন।

নিম্নলিখিত কোডটি মৌলিক কনফিগারেশন বিকল্পগুলি ব্যবহার করে কাজটি শুরু করে:

// Set the configuration options for the LLM Inference task
val options = LlmInferenceOptions.builder()
        .setModelPATH('/data/local/.../')
        .setMaxTokens(1000)
        .setTopK(40)
        .setTemperature(0.8)
        .setRandomSeed(101)
        .build()

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

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

একটি Android অ্যাপ সেট আপ করতে নিম্নলিখিত কনফিগারেশন বিকল্পগুলি ব্যবহার করুন:

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

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

LLM ইনফারেন্স API নিম্নলিখিত ইনপুটগুলি গ্রহণ করে:

  • প্রম্পট (স্ট্রিং): একটি প্রশ্ন বা প্রম্পট।
val inputPrompt = "Compose an email to remind Brett of lunch plans at noon on Saturday."

টাস্ক চালান

পূর্ববর্তী বিভাগে ( inputPrompt ) দেওয়া ইনপুট পাঠ্যের একটি পাঠ্য প্রতিক্রিয়া তৈরি করতে generateResponse() পদ্ধতি ব্যবহার করুন। এটি একটি একক উত্পন্ন প্রতিক্রিয়া তৈরি করে।

val result = llmInference.generateResponse(inputPrompt)
logger.atInfo().log("result: $result")

প্রতিক্রিয়া স্ট্রিম করতে, generateResponseAsync() পদ্ধতি ব্যবহার করুন।

val options = LlmInference.LlmInferenceOptions.builder()
  ...
  .setResultListener { partialResult, done ->
    logger.atInfo().log("partial result: $partialResult")
  }
  .build()

llmInference.generateResponseAsync(inputPrompt)

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

LLM ইনফারেন্স API একটি LlmInferenceResult প্রদান করে, যার মধ্যে জেনারেট করা প্রতিক্রিয়া পাঠ্য রয়েছে।

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 মডেল পাথের পাশাপাশি বেস 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() পদ্ধতি ব্যবহার করুন।