LLM ইনফারেন্স API আপনাকে iOS অ্যাপ্লিকেশনের জন্য সম্পূর্ণরূপে ডিভাইসে বৃহৎ ভাষা মডেল (LLM) চালাতে দেয়, যা আপনি বিস্তৃত কাজ সম্পাদন করতে ব্যবহার করতে পারেন, যেমন টেক্সট তৈরি করা, প্রাকৃতিক ভাষা আকারে তথ্য পুনরুদ্ধার করা এবং নথির সারসংক্ষেপ করা। এই কাজটি একাধিক টেক্সট-টু-টেক্সট বৃহৎ ভাষা মডেলের জন্য অন্তর্নির্মিত সমর্থন প্রদান করে, যাতে আপনি আপনার iOS অ্যাপগুলিতে সর্বশেষ অন-ডিভাইস জেনারেটিভ AI মডেল প্রয়োগ করতে পারেন।
আপনার iOS অ্যাপ্লিকেশনে দ্রুত LLM ইনফারেন্স API যোগ করতে, Quickstart অনুসরণ করুন। LLM ইনফারেন্স API চালানোর জন্য iOS অ্যাপ্লিকেশনের একটি মৌলিক উদাহরণের জন্য, নমুনা অ্যাপ্লিকেশনটি দেখুন। LLM ইনফারেন্স API কীভাবে কাজ করে সে সম্পর্কে আরও গভীরভাবে বোঝার জন্য, কনফিগারেশন বিকল্পগুলি , মডেল রূপান্তর এবং LoRA টিউনিং বিভাগগুলি দেখুন।
আপনি মিডিয়াপাইপ স্টুডিও ডেমো ব্যবহার করে এই কাজটি বাস্তবে দেখতে পাবেন। এই কাজের ক্ষমতা, মডেল এবং কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, ওভারভিউ দেখুন।
দ্রুত শুরু
আপনার iOS অ্যাপ্লিকেশনে LLM Inference API যোগ করতে নিম্নলিখিত ধাপগুলি অনুসরণ করুন। LLM Inference API MediaPipeTasksGenai লাইব্রেরি ব্যবহার করে, যা CocoaPods ব্যবহার করে ইনস্টল করতে হবে। লাইব্রেরিটি Swift এবং Objective-C উভয় অ্যাপের সাথেই সামঞ্জস্যপূর্ণ এবং এর জন্য কোনও অতিরিক্ত ভাষা-নির্দিষ্ট সেটআপের প্রয়োজন হয় না।
MacOS-এ CocoaPods ইনস্টল করার নির্দেশাবলীর জন্য, CocoaPods ইনস্টলেশন নির্দেশিকাটি দেখুন। আপনার অ্যাপের জন্য প্রয়োজনীয় পড সহ একটি Podfile কীভাবে তৈরি করবেন তার নির্দেশাবলীর জন্য, Using CocoaPods দেখুন।
নির্ভরতা যোগ করুন
নিম্নলিখিত কোডটি ব্যবহার করে Podfile MediaPipeTasksGenai পড যোগ করুন:
target 'MyLlmInferenceApp' do
use_frameworks!
pod 'MediaPipeTasksGenAI'
pod 'MediaPipeTasksGenAIC'
end
যদি আপনার অ্যাপে ইউনিট টেস্ট টার্গেট থাকে, তাহলে আপনার Podfile সেট আপ করার বিষয়ে অতিরিক্ত তথ্যের জন্য iOS এর জন্য সেট আপ গাইড দেখুন।
একটি মডেল ডাউনলোড করুন
Kaggle Models থেকে ৮-বিট কোয়ান্টাইজড ফরম্যাটে Gemma-2 2B ডাউনলোড করুন। উপলব্ধ মডেলগুলি সম্পর্কে আরও তথ্যের জন্য, মডেল ডকুমেন্টেশন দেখুন।
Xcode ব্যবহার করে আপনার প্রোজেক্ট ডিরেক্টরিতে মডেলটি যোগ করুন। আপনার Xcode প্রোজেক্টে ফাইল কীভাবে যোগ করবেন তার নির্দেশাবলীর জন্য, আপনার Xcode প্রোজেক্টে ফাইল এবং ফোল্ডার পরিচালনা করা দেখুন।
টাস্কটি শুরু করুন
মৌলিক কনফিগারেশন বিকল্পগুলি দিয়ে কাজটি শুরু করুন:
import MediaPipeTasksGenai
let modelPath = Bundle.main.path(forResource: "model",
ofType: "bin")
let options = LlmInferenceOptions()
options.baseOptions.modelPath = modelPath
options.maxTokens = 1000
options.topk = 40
options.temperature = 0.8
options.randomSeed = 101
let llmInference = try LlmInference(options: options)
টাস্কটি চালান
একটি টেক্সট রেসপন্স তৈরি করতে generateResponse(inputText:) পদ্ধতি ব্যবহার করুন। এটি একটি একক জেনারেট করা রেসপন্স তৈরি করে।
let result = try LlmInference.generateResponse(inputText: inputPrompt)
প্রতিক্রিয়া স্ট্রিম করতে, generateResponseAsync(inputText:) পদ্ধতিটি ব্যবহার করুন।
let resultStream = LlmInference.generateResponseAsync(inputText: inputPrompt)
do {
for try await partialResult in resultStream {
print("\(partialResult)")
}
print("Done")
}
catch {
print("Response error: '\(error)")
}
নমুনা আবেদন
নমুনা অ্যাপ্লিকেশনটি iOS এর জন্য একটি মৌলিক টেক্সট জেনারেশন অ্যাপের উদাহরণ, যা LLM ইনফারেন্স API ব্যবহার করে। আপনি আপনার নিজস্ব iOS অ্যাপের জন্য একটি সূচনা বিন্দু হিসাবে অ্যাপটি ব্যবহার করতে পারেন, অথবা বিদ্যমান অ্যাপটি পরিবর্তন করার সময় এটি ব্যবহার করতে পারেন। উদাহরণ কোডটি GitHub এ হোস্ট করা আছে।
নিম্নলিখিত কমান্ড ব্যবহার করে গিট রিপোজিটরি ক্লোন করুন:
git clone https://github.com/google-ai-edge/mediapipe-samples
উদাহরণ কোডের একটি স্থানীয় সংস্করণ তৈরি করার পরে, আপনি প্রকল্পটি iOS স্টুডিওতে আমদানি করতে পারেন এবং অ্যাপটি চালাতে পারেন। আরও তথ্যের জন্য, iOS এর জন্য সেটআপ গাইড দেখুন।
কনফিগারেশন বিকল্পগুলি
iOS অ্যাপ সেট আপ করতে নিম্নলিখিত কনফিগারেশন বিকল্পগুলি ব্যবহার করুন:
| বিকল্পের নাম | বিবরণ | মূল্য পরিসীমা | ডিফল্ট মান |
|---|---|---|---|
modelPath | প্রকল্প ডিরেক্টরির মধ্যে মডেলটি যেখানে সংরক্ষণ করা হয় তার পথ। | পথ | নিষিদ্ধ |
maxTokens | মডেলটি সর্বোচ্চ কত সংখ্যক টোকেন (ইনপুট টোকেন + আউটপুট টোকেন) পরিচালনা করে। | পূর্ণসংখ্যা | ৫১২ |
topk | প্রজন্মের প্রতিটি ধাপে মডেলটি কত টোকেন বিবেচনা করে। ভবিষ্যদ্বাণীগুলিকে শীর্ষ k সর্বাধিক সম্ভাব্য টোকেনগুলিতে সীমাবদ্ধ করে। | পূর্ণসংখ্যা | ৪০ |
temperature | প্রজন্মের সময় যে পরিমাণ এলোমেলোতা প্রবর্তিত হয়। উচ্চ তাপমাত্রার ফলে উৎপন্ন লেখায় আরও সৃজনশীলতা দেখা দেয়, অন্যদিকে কম তাপমাত্রার ফলে আরও অনুমানযোগ্য প্রজন্ম তৈরি হয়। | ভাসা | ০.৮ |
randomSeed | টেক্সট তৈরির সময় ব্যবহৃত এলোমেলো বীজ। | পূর্ণসংখ্যা | 0 |
loraPath | ডিভাইসে স্থানীয়ভাবে LoRA মডেলের পরম পথ। দ্রষ্টব্য: এটি শুধুমাত্র GPU মডেলের সাথে সামঞ্জস্যপূর্ণ। | পথ | নিষিদ্ধ |
মডেল রূপান্তর
LLM ইনফারেন্স API নিম্নলিখিত ধরণের মডেলের সাথে সামঞ্জস্যপূর্ণ, যার মধ্যে কিছু মডেল রূপান্তরের প্রয়োজন হয়। আপনার মডেলের জন্য প্রয়োজনীয় ধাপ পদ্ধতি সনাক্ত করতে টেবিলটি ব্যবহার করুন।
| মডেল | রূপান্তর পদ্ধতি | সামঞ্জস্যপূর্ণ প্ল্যাটফর্ম | ফাইলের ধরণ |
|---|---|---|---|
| জেমা-৩ ১বি | কোন রূপান্তর প্রয়োজন নেই | অ্যান্ড্রয়েড, ওয়েব | .টাস্ক |
| Gemma 2B, Gemma 7B, Gemma-2 2B | কোন রূপান্তর প্রয়োজন নেই | অ্যান্ড্রয়েড, আইওএস, ওয়েব | .বিন |
| ফাই-২, স্টেবলএলএম, ফ্যালকন | মিডিয়াপাইপ রূপান্তর স্ক্রিপ্ট | অ্যান্ড্রয়েড, আইওএস, ওয়েব | .বিন |
| সকল পাইটর্চ এলএলএম মডেল | LiterRT টর্চ জেনারেটিভ লাইব্রেরি | অ্যান্ড্রয়েড, আইওএস | .টাস্ক |
অন্যান্য মডেল কীভাবে রূপান্তর করবেন তা জানতে, মডেল রূপান্তর বিভাগটি দেখুন।
LoRA কাস্টমাইজেশন
LLM ইনফারেন্স API PEFT (প্যারামিটার-এফিশিয়েন্ট ফাইন-টিউনিং) লাইব্রেরি ব্যবহার করে LoRA (লো-র্যাঙ্ক অ্যাডাপ্টেশন) টিউনিং সমর্থন করে। LoRA টিউনিং একটি সাশ্রয়ী প্রশিক্ষণ প্রক্রিয়ার মাধ্যমে LLM-এর আচরণকে কাস্টমাইজ করে, পুরো মডেলটিকে পুনরায় প্রশিক্ষণ দেওয়ার পরিবর্তে নতুন প্রশিক্ষণ ডেটার উপর ভিত্তি করে প্রশিক্ষণযোগ্য ওজনের একটি ছোট সেট তৈরি করে।
LLM ইনফারেন্স API Gemma-2 2B , Gemma 2B এবং Phi-2 মডেলের মনোযোগ স্তরগুলিতে LoRA ওজন যোগ করার সুবিধা প্রদান করে। safetensors ফর্ম্যাটে মডেলটি ডাউনলোড করুন।
LoRA ওয়েট তৈরি করার জন্য বেস মডেলটি অবশ্যই safetensors ফর্ম্যাটে থাকতে হবে। LoRA প্রশিক্ষণের পরে, আপনি মিডিয়াপাইপে চালানোর জন্য মডেলগুলিকে FlatBuffers ফর্ম্যাটে রূপান্তর করতে পারেন।
LoRA ওজন প্রস্তুত করুন
আপনার নিজস্ব ডেটাসেটে একটি সূক্ষ্ম-সুরযুক্ত LoRA মডেল প্রশিক্ষণের জন্য PEFT এর LoRA পদ্ধতি নির্দেশিকা ব্যবহার করুন।
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"],
)
প্রস্তুত ডেটাসেটের উপর প্রশিক্ষণ এবং মডেল সংরক্ষণের পর, সূক্ষ্মভাবে সুরক্ষিত LoRA মডেলের ওজন adapter_model.safetensors এ পাওয়া যায়। safetensors ফাইলটি হল মডেল রূপান্তরের সময় ব্যবহৃত LoRA চেকপয়েন্ট।
মডেল রূপান্তর
মডেলের ওজনগুলিকে Flatbuffer ফর্ম্যাটে রূপান্তর করতে MediaPipe Python প্যাকেজ ব্যবহার করুন। ConversionConfig অতিরিক্ত LoRA বিকল্পগুলির সাথে বেস মডেল বিকল্পগুলি নির্দিষ্ট করে।
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_FILE,
)
converter.convert_checkpoint(config)
কনভার্টারটি দুটি ফ্ল্যাটবাফার ফাইল তৈরি করবে, একটি বেস মডেলের জন্য এবং অন্যটি LoRA মডেলের জন্য।
LoRA মডেলের অনুমান
iOS ইনিশিয়ালাইজেশনের সময় স্ট্যাটিক LoRA সমর্থন করে। LoRA মডেল লোড করতে, LoRA মডেল পাথের পাশাপাশি বেস LLM উল্লেখ করুন।
import MediaPipeTasksGenai
let modelPath = Bundle.main.path(forResource: "model",
ofType: "bin")
let loraPath= Bundle.main.path(forResource: "lora_model",
ofType: "bin")
let options = LlmInferenceOptions()
options.modelPath = modelPath
options.maxTokens = 1000
options.topk = 40
options.temperature = 0.8
options.randomSeed = 101
options.loraPath = loraPath
let llmInference = try LlmInference(options: options)
LoRA দিয়ে LLM ইনফারেন্স চালানোর জন্য, বেস মডেলের মতো একই generateResponse() বা generateResponseAsync() পদ্ধতি ব্যবহার করুন।