LLM ইনফারেন্স API আপনাকে iOS অ্যাপ্লিকেশনগুলির জন্য সম্পূর্ণরূপে ডিভাইসে বড় ভাষা মডেলগুলি (LLMs) চালাতে দেয়, যা আপনি পাঠ্য তৈরি করা, প্রাকৃতিক ভাষা আকারে তথ্য পুনরুদ্ধার করা এবং নথির সংক্ষিপ্তসারের মতো বিস্তৃত কাজ সম্পাদন করতে ব্যবহার করতে পারেন। টাস্কটি একাধিক টেক্সট-টু-টেক্সট বৃহৎ ভাষার মডেলের জন্য অন্তর্নির্মিত সমর্থন প্রদান করে, যাতে আপনি আপনার iOS অ্যাপে সর্বশেষ অন-ডিভাইস জেনারেটিভ এআই মডেল প্রয়োগ করতে পারেন।
আপনার iOS অ্যাপ্লিকেশনে দ্রুত LLM ইনফারেন্স API যোগ করতে, Quickstart অনুসরণ করুন। LLM ইনফারেন্স এপিআই চালানোর একটি iOS অ্যাপ্লিকেশনের একটি মৌলিক উদাহরণের জন্য, নমুনা অ্যাপ্লিকেশনটি দেখুন। LLM ইনফারেন্স API কীভাবে কাজ করে তার আরও গভীরভাবে বোঝার জন্য, কনফিগারেশন বিকল্পগুলি , মডেল রূপান্তর এবং LoRA টিউনিং বিভাগগুলি পড়ুন৷
আপনি MediaPipe স্টুডিও ডেমোর সাহায্যে এই কাজটি দেখতে পারেন। এই কাজের ক্ষমতা, মডেল এবং কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, ওভারভিউ দেখুন।
কুইকস্টার্ট
আপনার iOS অ্যাপ্লিকেশনে LLM ইনফারেন্স API যোগ করতে নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন৷ এলএলএম ইনফারেন্স এপিআই MediaPipeTasksGenai
লাইব্রেরি ব্যবহার করে, যা অবশ্যই কোকোপড ব্যবহার করে ইনস্টল করা উচিত। লাইব্রেরিটি সুইফট এবং অবজেক্টিভ-সি উভয় অ্যাপের সাথেই সামঞ্জস্যপূর্ণ এবং কোনো অতিরিক্ত ভাষা-নির্দিষ্ট সেটআপের প্রয়োজন নেই।
ম্যাকওএস-এ কোকোপড ইনস্টল করার নির্দেশাবলীর জন্য, কোকোপডস ইনস্টলেশন নির্দেশিকা পড়ুন। আপনার অ্যাপের জন্য প্রয়োজনীয় পড দিয়ে কীভাবে একটি Podfile
তৈরি করবেন তার নির্দেশাবলীর জন্য, CocoaPods ব্যবহার করুন দেখুন।
নির্ভরতা যোগ করুন
নিম্নলিখিত কোড ব্যবহার করে Podfile
এ MediaPipeTasksGenai
পড যোগ করুন:
target 'MyLlmInferenceApp' do
use_frameworks!
pod 'MediaPipeTasksGenAI'
pod 'MediaPipeTasksGenAIC'
end
যদি আপনার অ্যাপে ইউনিট পরীক্ষার লক্ষ্য অন্তর্ভুক্ত থাকে, তাহলে আপনার Podfile
সেট আপ করার বিষয়ে অতিরিক্ত তথ্যের জন্য iOS এর জন্য সেট আপ গাইড দেখুন।
একটি মডেল ডাউনলোড করুন
কাগল মডেলস থেকে একটি 8-বিট কোয়ান্টাইজড ফরম্যাটে 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)")
}
নমুনা আবেদন
নমুনা অ্যাপ্লিকেশনটি LLM ইনফারেন্স API ব্যবহার করে iOS এর জন্য একটি মৌলিক পাঠ্য প্রজন্মের অ্যাপের একটি উদাহরণ। আপনি অ্যাপটিকে আপনার নিজের iOS অ্যাপের জন্য একটি সূচনা পয়েন্ট হিসাবে ব্যবহার করতে পারেন, অথবা একটি বিদ্যমান অ্যাপ পরিবর্তন করার সময় এটি উল্লেখ করতে পারেন। উদাহরণ কোডটি গিটহাবে হোস্ট করা হয়েছে।
নিম্নলিখিত কমান্ড ব্যবহার করে গিট সংগ্রহস্থল ক্লোন করুন:
git clone https://github.com/google-ai-edge/mediapipe-samples
উদাহরণ কোডের একটি স্থানীয় সংস্করণ তৈরি করার পরে, আপনি প্রকল্পটি iOS স্টুডিওতে আমদানি করতে এবং অ্যাপটি চালাতে পারেন। আরও তথ্যের জন্য, iOS এর জন্য সেটআপ গাইড দেখুন।
কনফিগারেশন বিকল্প
একটি iOS অ্যাপ সেট আপ করতে নিম্নলিখিত কনফিগারেশন বিকল্পগুলি ব্যবহার করুন:
বিকল্পের নাম | বর্ণনা | মান পরিসীমা | ডিফল্ট মান |
---|---|---|---|
modelPath | প্রজেক্ট ডিরেক্টরির মধ্যে মডেলটি যেখানে সংরক্ষণ করা হয় তার পথ। | PATH | N/A |
maxTokens | মডেলটি পরিচালনা করে সর্বাধিক সংখ্যক টোকেন (ইনপুট টোকেন + আউটপুট টোকেন)। | পূর্ণসংখ্যা | 512 |
topk | প্রজন্মের প্রতিটি ধাপে মডেলটি বিবেচনা করে টোকেনের সংখ্যা। পূর্বাভাসগুলিকে শীর্ষ k সর্বাধিক সম্ভাব্য টোকেনে সীমাবদ্ধ করে৷ | পূর্ণসংখ্যা | 40 |
temperature | প্রজন্মের সময় যে পরিমাণ এলোমেলোভাবে প্রবর্তিত হয়। একটি উচ্চ তাপমাত্রার ফলে উত্পন্ন পাঠে আরও সৃজনশীলতা আসে, যখন নিম্ন তাপমাত্রা আরও অনুমানযোগ্য প্রজন্ম তৈরি করে। | ভাসা | 0.8 |
randomSeed | টেক্সট তৈরির সময় ব্যবহৃত এলোমেলো বীজ। | পূর্ণসংখ্যা | 0 |
loraPath | ডিভাইসে স্থানীয়ভাবে LoRA মডেলের পরম পথ। দ্রষ্টব্য: এটি শুধুমাত্র GPU মডেলের সাথে সামঞ্জস্যপূর্ণ। | PATH | N/A |
মডেল রূপান্তর
LLM ইনফারেন্স API নিম্নলিখিত ধরণের মডেলগুলির সাথে সামঞ্জস্যপূর্ণ, যার মধ্যে কিছু মডেল রূপান্তর প্রয়োজন৷ আপনার মডেলের জন্য প্রয়োজনীয় পদক্ষেপ পদ্ধতি সনাক্ত করতে টেবিলটি ব্যবহার করুন।
মডেল | রূপান্তর পদ্ধতি | সামঞ্জস্যপূর্ণ প্ল্যাটফর্ম | ফাইলের ধরন |
---|---|---|---|
Gemma-3 1B | কোন রূপান্তর প্রয়োজন | অ্যান্ড্রয়েড, ওয়েব | কাজ |
Gemma 2B, Gemma 7B, Gemma-2 2B | কোন রূপান্তর প্রয়োজন | অ্যান্ড্রয়েড, আইওএস, ওয়েব | .বিন |
Phi-2, StableLM, Falcon | মিডিয়াপাইপ রূপান্তর স্ক্রিপ্ট | অ্যান্ড্রয়েড, আইওএস, ওয়েব | .বিন |
সমস্ত PyTorch LLM মডেল | এআই এজ টর্চ জেনারেটিভ লাইব্রেরি | অ্যান্ড্রয়েড, আইওএস | কাজ |
আপনি কীভাবে অন্যান্য মডেলগুলিকে রূপান্তর করতে পারেন তা জানতে, মডেল রূপান্তর বিভাগটি দেখুন৷
LoRA কাস্টমাইজেশন
LLM ইনফারেন্স API PEFT (প্যারামিটার-দক্ষ ফাইন-টিউনিং) লাইব্রেরি ব্যবহার করে LoRA (নিম্ন-র্যাঙ্ক অ্যাডাপ্টেশন) টিউনিং সমর্থন করে। LoRA টিউনিং একটি খরচ-কার্যকর প্রশিক্ষণ প্রক্রিয়ার মাধ্যমে LLM-এর আচরণকে কাস্টমাইজ করে, পুরো মডেলটিকে পুনরায় প্রশিক্ষণ দেওয়ার পরিবর্তে নতুন প্রশিক্ষণের ডেটার উপর ভিত্তি করে প্রশিক্ষণযোগ্য ওজনের একটি ছোট সেট তৈরি করে।
LLM ইনফারেন্স API Gemma-2 2B , Gemma 2B এবং Phi-2 মডেলের মনোযোগ স্তরগুলিতে LoRA ওজন যোগ করতে সমর্থন করে। safetensors
ফরম্যাটে মডেলটি ডাউনলোড করুন।
LoRA ওজন তৈরি করার জন্য বেস মডেল অবশ্যই safetensors
ফরম্যাটে হতে হবে। LoRA প্রশিক্ষণের পরে, আপনি MediaPipe-এ চালানোর জন্য মডেলগুলিকে 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 চেকপয়েন্ট।
মডেল রূপান্তর
মডেলের ওজনকে ফ্ল্যাটবাফার ফরম্যাটে রূপান্তর করতে MediaPipe পাইথন প্যাকেজ ব্যবহার করুন। 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()
পদ্ধতি ব্যবহার করুন।