LLM ইনফারেন্স API আপনাকে ওয়েব অ্যাপ্লিকেশনগুলির জন্য সম্পূর্ণরূপে অন-ডিভাইসে বড় ভাষা মডেলগুলি (LLMs) চালাতে দেয়, যা আপনি পাঠ্য তৈরি করা, প্রাকৃতিক ভাষা আকারে তথ্য পুনরুদ্ধার করা এবং নথির সংক্ষিপ্তসারের মতো বিস্তৃত কাজ সম্পাদন করতে ব্যবহার করতে পারেন। টাস্কটি একাধিক টেক্সট-টু-টেক্সট বৃহৎ ভাষার মডেলের জন্য অন্তর্নির্মিত সমর্থন প্রদান করে, যাতে আপনি আপনার ওয়েব অ্যাপে সর্বশেষ অন-ডিভাইস জেনারেটেড এআই মডেল প্রয়োগ করতে পারেন।
আপনার ওয়েব অ্যাপ্লিকেশনে দ্রুত LLM ইনফারেন্স API যোগ করতে, Quickstart অনুসরণ করুন। LLM ইনফারেন্স API চালিত একটি ওয়েব অ্যাপ্লিকেশনের একটি মৌলিক উদাহরণের জন্য, নমুনা অ্যাপ্লিকেশনটি দেখুন। LLM ইনফারেন্স API কীভাবে কাজ করে তার আরও গভীরভাবে বোঝার জন্য, কনফিগারেশন বিকল্পগুলি , মডেল রূপান্তর এবং LoRA টিউনিং বিভাগগুলি পড়ুন৷
আপনি MediaPipe স্টুডিও ডেমোর সাহায্যে এই কাজটি দেখতে পারেন। এই কাজের ক্ষমতা, মডেল এবং কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, ওভারভিউ দেখুন।
কুইকস্টার্ট
আপনার ওয়েব অ্যাপ্লিকেশনে LLM ইনফারেন্স API যোগ করতে নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন৷ 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>
একটি মডেল ডাউনলোড করুন
কাগল মডেলস থেকে একটি 8-বিট কোয়ান্টাইজড ফরম্যাটে Gemma-2 2B ডাউনলোড করুন। উপলব্ধ মডেল সম্পর্কে আরও তথ্যের জন্য, মডেল ডকুমেন্টেশন দেখুন।
আপনার প্রকল্প ডিরেক্টরির মধ্যে মডেল সংরক্ষণ করুন:
<dev-project-root>/assets/gemma-2b-it-gpu-int8.bin
baseOptions
অবজেক্ট modelAssetPath
প্যারামিটার সহ মডেলের পাথ নির্দিষ্ট করুন:
baseOptions: { modelAssetPath: `/assets/gemma-2b-it-gpu-int8.bin`}
টাস্ক আরম্ভ করুন
মৌলিক কনফিগারেশন বিকল্পগুলির সাথে কাজটি শুরু করুন:
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-int8.bin'
},
maxTokens: 1000,
topK: 40,
temperature: 0.8,
randomSeed: 101
});
টাস্ক চালান
অনুমান ট্রিগার করতে generateResponse()
ফাংশন ব্যবহার করুন।
const response = await llmInference.generateResponse(inputPrompt);
document.getElementById('output').textContent = response;
প্রতিক্রিয়া স্ট্রিম করতে, নিম্নলিখিত ব্যবহার করুন:
llmInference.generateResponse(
inputPrompt,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
নমুনা আবেদন
নমুনা অ্যাপ্লিকেশনটি LLM ইনফারেন্স API ব্যবহার করে ওয়েবের জন্য একটি মৌলিক পাঠ্য প্রজন্মের অ্যাপের একটি উদাহরণ। আপনি অ্যাপটিকে আপনার নিজের ওয়েব অ্যাপের জন্য একটি সূচনা পয়েন্ট হিসাবে ব্যবহার করতে পারেন, অথবা একটি বিদ্যমান অ্যাপ পরিবর্তন করার সময় এটি উল্লেখ করতে পারেন। উদাহরণ কোডটি গিটহাবে হোস্ট করা হয়েছে।
নিম্নলিখিত কমান্ড ব্যবহার করে গিট সংগ্রহস্থল ক্লোন করুন:
git clone https://github.com/google-ai-edge/mediapipe-samples
আরও তথ্যের জন্য, ওয়েবের জন্য সেটআপ গাইড দেখুন।
কনফিগারেশন বিকল্প
একটি ওয়েব অ্যাপ সেট আপ করতে নিম্নলিখিত কনফিগারেশন বিকল্পগুলি ব্যবহার করুন:
বিকল্পের নাম | বর্ণনা | মান পরিসীমা | ডিফল্ট মান |
---|---|---|---|
modelPath | প্রজেক্ট ডিরেক্টরির মধ্যে মডেলটি যেখানে সংরক্ষণ করা হয় তার পথ। | PATH | N/A |
maxTokens | মডেলটি পরিচালনা করে সর্বাধিক সংখ্যক টোকেন (ইনপুট টোকেন + আউটপুট টোকেন)। | পূর্ণসংখ্যা | 512 |
topK | প্রজন্মের প্রতিটি ধাপে মডেলটি বিবেচনা করে টোকেনের সংখ্যা। পূর্বাভাসগুলিকে শীর্ষ k সর্বাধিক সম্ভাব্য টোকেনে সীমাবদ্ধ করে৷ | পূর্ণসংখ্যা | 40 |
temperature | প্রজন্মের সময় যে পরিমাণ এলোমেলোভাবে প্রবর্তিত হয়। একটি উচ্চ তাপমাত্রার ফলে উত্পন্ন পাঠে আরও সৃজনশীলতা আসে, যখন নিম্ন তাপমাত্রা আরও অনুমানযোগ্য প্রজন্ম তৈরি করে। | ভাসা | 0.8 |
randomSeed | টেক্সট তৈরির সময় ব্যবহৃত এলোমেলো বীজ। | পূর্ণসংখ্যা | 0 |
loraRanks | LoRA র্যাঙ্কগুলি LoRA মডেলগুলি রানটাইমের সময় ব্যবহার করবে৷ দ্রষ্টব্য: এটি শুধুমাত্র GPU মডেলের সাথে সামঞ্জস্যপূর্ণ। | পূর্ণসংখ্যা অ্যারে | 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)
রূপান্তরকারী দুটি MediaPipe-সামঞ্জস্যপূর্ণ ফাইল তৈরি করবে, একটি বেস মডেলের জন্য এবং অন্যটি 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 মডেলগুলি লোড করুন। এলএলএম প্রতিক্রিয়া তৈরি করার সময় মডেল রেফারেন্স পাস করে 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;
});
LLM ইনফারেন্স API আপনাকে ওয়েব অ্যাপ্লিকেশনগুলির জন্য সম্পূর্ণরূপে অন-ডিভাইসে বড় ভাষা মডেলগুলি (LLMs) চালাতে দেয়, যা আপনি পাঠ্য তৈরি করা, প্রাকৃতিক ভাষা আকারে তথ্য পুনরুদ্ধার করা এবং নথির সংক্ষিপ্তসারের মতো বিস্তৃত কাজ সম্পাদন করতে ব্যবহার করতে পারেন। টাস্কটি একাধিক টেক্সট-টু-টেক্সট বৃহৎ ভাষার মডেলের জন্য অন্তর্নির্মিত সমর্থন প্রদান করে, যাতে আপনি আপনার ওয়েব অ্যাপে সর্বশেষ অন-ডিভাইস জেনারেটেড এআই মডেল প্রয়োগ করতে পারেন।
আপনার ওয়েব অ্যাপ্লিকেশনে দ্রুত LLM ইনফারেন্স API যোগ করতে, Quickstart অনুসরণ করুন। LLM ইনফারেন্স API চালিত একটি ওয়েব অ্যাপ্লিকেশনের একটি মৌলিক উদাহরণের জন্য, নমুনা অ্যাপ্লিকেশনটি দেখুন। LLM ইনফারেন্স API কীভাবে কাজ করে তার আরও গভীরভাবে বোঝার জন্য, কনফিগারেশন বিকল্পগুলি , মডেল রূপান্তর এবং LoRA টিউনিং বিভাগগুলি পড়ুন৷
আপনি MediaPipe স্টুডিও ডেমোর সাহায্যে এই কাজটি দেখতে পারেন। এই কাজের ক্ষমতা, মডেল এবং কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, ওভারভিউ দেখুন।
কুইকস্টার্ট
আপনার ওয়েব অ্যাপ্লিকেশনে LLM ইনফারেন্স API যোগ করতে নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন৷ 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>
একটি মডেল ডাউনলোড করুন
কাগল মডেলস থেকে একটি 8-বিট কোয়ান্টাইজড ফরম্যাটে Gemma-2 2B ডাউনলোড করুন। উপলব্ধ মডেল সম্পর্কে আরও তথ্যের জন্য, মডেল ডকুমেন্টেশন দেখুন।
আপনার প্রকল্প ডিরেক্টরির মধ্যে মডেল সংরক্ষণ করুন:
<dev-project-root>/assets/gemma-2b-it-gpu-int8.bin
baseOptions
অবজেক্ট modelAssetPath
প্যারামিটার সহ মডেলের পাথ নির্দিষ্ট করুন:
baseOptions: { modelAssetPath: `/assets/gemma-2b-it-gpu-int8.bin`}
টাস্ক আরম্ভ করুন
মৌলিক কনফিগারেশন বিকল্পগুলির সাথে কাজটি শুরু করুন:
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-int8.bin'
},
maxTokens: 1000,
topK: 40,
temperature: 0.8,
randomSeed: 101
});
টাস্ক চালান
অনুমান ট্রিগার করতে generateResponse()
ফাংশন ব্যবহার করুন।
const response = await llmInference.generateResponse(inputPrompt);
document.getElementById('output').textContent = response;
প্রতিক্রিয়া স্ট্রিম করতে, নিম্নলিখিত ব্যবহার করুন:
llmInference.generateResponse(
inputPrompt,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
নমুনা আবেদন
নমুনা অ্যাপ্লিকেশনটি LLM ইনফারেন্স API ব্যবহার করে ওয়েবের জন্য একটি মৌলিক পাঠ্য প্রজন্মের অ্যাপের একটি উদাহরণ। আপনি অ্যাপটিকে আপনার নিজের ওয়েব অ্যাপের জন্য একটি সূচনা পয়েন্ট হিসাবে ব্যবহার করতে পারেন, অথবা একটি বিদ্যমান অ্যাপ পরিবর্তন করার সময় এটি উল্লেখ করতে পারেন। উদাহরণ কোডটি গিটহাবে হোস্ট করা হয়েছে।
নিম্নলিখিত কমান্ড ব্যবহার করে গিট সংগ্রহস্থল ক্লোন করুন:
git clone https://github.com/google-ai-edge/mediapipe-samples
আরও তথ্যের জন্য, ওয়েবের জন্য সেটআপ গাইড দেখুন।
কনফিগারেশন বিকল্প
একটি ওয়েব অ্যাপ সেট আপ করতে নিম্নলিখিত কনফিগারেশন বিকল্পগুলি ব্যবহার করুন:
বিকল্পের নাম | বর্ণনা | মান পরিসীমা | ডিফল্ট মান |
---|---|---|---|
modelPath | প্রজেক্ট ডিরেক্টরির মধ্যে মডেলটি যেখানে সংরক্ষণ করা হয় তার পথ। | PATH | N/A |
maxTokens | মডেলটি পরিচালনা করে সর্বাধিক সংখ্যক টোকেন (ইনপুট টোকেন + আউটপুট টোকেন)। | পূর্ণসংখ্যা | 512 |
topK | প্রজন্মের প্রতিটি ধাপে মডেলটি বিবেচনা করে টোকেনের সংখ্যা। পূর্বাভাসগুলিকে শীর্ষ k সর্বাধিক সম্ভাব্য টোকেনে সীমাবদ্ধ করে৷ | পূর্ণসংখ্যা | 40 |
temperature | প্রজন্মের সময় যে পরিমাণ এলোমেলোভাবে প্রবর্তিত হয়। একটি উচ্চ তাপমাত্রার ফলে উত্পন্ন পাঠে আরও সৃজনশীলতা আসে, যখন নিম্ন তাপমাত্রা আরও অনুমানযোগ্য প্রজন্ম তৈরি করে। | ভাসা | 0.8 |
randomSeed | টেক্সট তৈরির সময় ব্যবহৃত এলোমেলো বীজ। | পূর্ণসংখ্যা | 0 |
loraRanks | LoRA র্যাঙ্কগুলি LoRA মডেলগুলি রানটাইমের সময় ব্যবহার করবে৷ দ্রষ্টব্য: এটি শুধুমাত্র GPU মডেলের সাথে সামঞ্জস্যপূর্ণ। | পূর্ণসংখ্যা অ্যারে | 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)
রূপান্তরকারী দুটি MediaPipe-সামঞ্জস্যপূর্ণ ফাইল তৈরি করবে, একটি বেস মডেলের জন্য এবং অন্যটি 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 মডেলগুলি লোড করুন। এলএলএম প্রতিক্রিয়া তৈরি করার সময় মডেল রেফারেন্স পাস করে 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;
});
LLM ইনফারেন্স API আপনাকে ওয়েব অ্যাপ্লিকেশনগুলির জন্য সম্পূর্ণরূপে অন-ডিভাইসে বড় ভাষা মডেলগুলি (LLMs) চালাতে দেয়, যা আপনি পাঠ্য তৈরি করা, প্রাকৃতিক ভাষা আকারে তথ্য পুনরুদ্ধার করা এবং নথির সংক্ষিপ্তসারের মতো বিস্তৃত কাজ সম্পাদন করতে ব্যবহার করতে পারেন। টাস্কটি একাধিক টেক্সট-টু-টেক্সট বৃহৎ ভাষার মডেলের জন্য অন্তর্নির্মিত সমর্থন প্রদান করে, যাতে আপনি আপনার ওয়েব অ্যাপে সর্বশেষ অন-ডিভাইস জেনারেটেড এআই মডেল প্রয়োগ করতে পারেন।
আপনার ওয়েব অ্যাপ্লিকেশনে দ্রুত LLM ইনফারেন্স API যোগ করতে, Quickstart অনুসরণ করুন। LLM ইনফারেন্স API চালিত একটি ওয়েব অ্যাপ্লিকেশনের একটি মৌলিক উদাহরণের জন্য, নমুনা অ্যাপ্লিকেশনটি দেখুন। LLM ইনফারেন্স API কীভাবে কাজ করে তার আরও গভীরভাবে বোঝার জন্য, কনফিগারেশন বিকল্পগুলি , মডেল রূপান্তর এবং LoRA টিউনিং বিভাগগুলি পড়ুন৷
আপনি MediaPipe স্টুডিও ডেমোর সাহায্যে এই কাজটি দেখতে পারেন। এই কাজের ক্ষমতা, মডেল এবং কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, ওভারভিউ দেখুন।
কুইকস্টার্ট
আপনার ওয়েব অ্যাপ্লিকেশনে LLM ইনফারেন্স API যোগ করতে নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন৷ 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>
একটি মডেল ডাউনলোড করুন
কাগল মডেলস থেকে একটি 8-বিট কোয়ান্টাইজড ফরম্যাটে Gemma-2 2B ডাউনলোড করুন। উপলব্ধ মডেল সম্পর্কে আরও তথ্যের জন্য, মডেল ডকুমেন্টেশন দেখুন।
আপনার প্রকল্প ডিরেক্টরির মধ্যে মডেল সংরক্ষণ করুন:
<dev-project-root>/assets/gemma-2b-it-gpu-int8.bin
baseOptions
অবজেক্ট modelAssetPath
প্যারামিটার সহ মডেলের পাথ নির্দিষ্ট করুন:
baseOptions: { modelAssetPath: `/assets/gemma-2b-it-gpu-int8.bin`}
টাস্ক আরম্ভ করুন
মৌলিক কনফিগারেশন বিকল্পগুলির সাথে কাজটি শুরু করুন:
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-int8.bin'
},
maxTokens: 1000,
topK: 40,
temperature: 0.8,
randomSeed: 101
});
টাস্ক চালান
অনুমান ট্রিগার করতে generateResponse()
ফাংশন ব্যবহার করুন।
const response = await llmInference.generateResponse(inputPrompt);
document.getElementById('output').textContent = response;
প্রতিক্রিয়া স্ট্রিম করতে, নিম্নলিখিত ব্যবহার করুন:
llmInference.generateResponse(
inputPrompt,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
নমুনা আবেদন
নমুনা অ্যাপ্লিকেশনটি LLM ইনফারেন্স API ব্যবহার করে ওয়েবের জন্য একটি মৌলিক পাঠ্য প্রজন্মের অ্যাপের একটি উদাহরণ। আপনি অ্যাপটিকে আপনার নিজের ওয়েব অ্যাপের জন্য একটি সূচনা পয়েন্ট হিসাবে ব্যবহার করতে পারেন, অথবা একটি বিদ্যমান অ্যাপ পরিবর্তন করার সময় এটি উল্লেখ করতে পারেন। উদাহরণ কোডটি গিটহাবে হোস্ট করা হয়েছে।
নিম্নলিখিত কমান্ড ব্যবহার করে গিট সংগ্রহস্থল ক্লোন করুন:
git clone https://github.com/google-ai-edge/mediapipe-samples
আরও তথ্যের জন্য, ওয়েবের জন্য সেটআপ গাইড দেখুন।
কনফিগারেশন বিকল্প
একটি ওয়েব অ্যাপ সেট আপ করতে নিম্নলিখিত কনফিগারেশন বিকল্পগুলি ব্যবহার করুন:
বিকল্পের নাম | বর্ণনা | মান পরিসীমা | ডিফল্ট মান |
---|---|---|---|
modelPath | প্রজেক্ট ডিরেক্টরির মধ্যে মডেলটি যেখানে সংরক্ষণ করা হয় তার পথ। | PATH | N/A |
maxTokens | মডেলটি পরিচালনা করে সর্বাধিক সংখ্যক টোকেন (ইনপুট টোকেন + আউটপুট টোকেন)। | পূর্ণসংখ্যা | 512 |
topK | প্রজন্মের প্রতিটি ধাপে মডেলটি বিবেচনা করে টোকেনের সংখ্যা। পূর্বাভাসগুলিকে শীর্ষ k সর্বাধিক সম্ভাব্য টোকেনে সীমাবদ্ধ করে৷ | পূর্ণসংখ্যা | 40 |
temperature | প্রজন্মের সময় যে পরিমাণ এলোমেলোভাবে প্রবর্তিত হয়। একটি উচ্চ তাপমাত্রার ফলে উত্পন্ন পাঠে আরও সৃজনশীলতা আসে, যখন নিম্ন তাপমাত্রা আরও অনুমানযোগ্য প্রজন্ম তৈরি করে। | ভাসা | 0.8 |
randomSeed | টেক্সট তৈরির সময় ব্যবহৃত এলোমেলো বীজ। | পূর্ণসংখ্যা | 0 |
loraRanks | LoRA র্যাঙ্কগুলি LoRA মডেলগুলি রানটাইমের সময় ব্যবহার করবে৷ দ্রষ্টব্য: এটি শুধুমাত্র GPU মডেলের সাথে সামঞ্জস্যপূর্ণ। | পূর্ণসংখ্যা অ্যারে | 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)
রূপান্তরকারী দুটি MediaPipe-সামঞ্জস্যপূর্ণ ফাইল তৈরি করবে, একটি বেস মডেলের জন্য এবং অন্যটি 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 মডেলগুলি লোড করুন। এলএলএম প্রতিক্রিয়া তৈরি করার সময় মডেল রেফারেন্স পাস করে 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;
});
LLM ইনফারেন্স API আপনাকে ওয়েব অ্যাপ্লিকেশনগুলির জন্য সম্পূর্ণরূপে অন-ডিভাইসে বড় ভাষা মডেলগুলি (LLMs) চালাতে দেয়, যা আপনি পাঠ্য তৈরি করা, প্রাকৃতিক ভাষা আকারে তথ্য পুনরুদ্ধার করা এবং নথির সংক্ষিপ্তসারের মতো বিস্তৃত কাজ সম্পাদন করতে ব্যবহার করতে পারেন। টাস্কটি একাধিক টেক্সট-টু-টেক্সট বৃহৎ ভাষার মডেলের জন্য অন্তর্নির্মিত সমর্থন প্রদান করে, যাতে আপনি আপনার ওয়েব অ্যাপে সর্বশেষ অন-ডিভাইস জেনারেটেড এআই মডেল প্রয়োগ করতে পারেন।
আপনার ওয়েব অ্যাপ্লিকেশনে দ্রুত LLM ইনফারেন্স API যোগ করতে, Quickstart অনুসরণ করুন। LLM ইনফারেন্স API চালিত একটি ওয়েব অ্যাপ্লিকেশনের একটি মৌলিক উদাহরণের জন্য, নমুনা অ্যাপ্লিকেশনটি দেখুন। LLM ইনফারেন্স API কীভাবে কাজ করে তার আরও গভীরভাবে বোঝার জন্য, কনফিগারেশন বিকল্পগুলি , মডেল রূপান্তর এবং LoRA টিউনিং বিভাগগুলি পড়ুন৷
আপনি MediaPipe স্টুডিও ডেমোর সাহায্যে এই কাজটি দেখতে পারেন। এই কাজের ক্ষমতা, মডেল এবং কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, ওভারভিউ দেখুন।
কুইকস্টার্ট
আপনার ওয়েব অ্যাপ্লিকেশনে LLM ইনফারেন্স API যোগ করতে নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন৷ 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>
একটি মডেল ডাউনলোড করুন
কাগল মডেলস থেকে একটি 8-বিট কোয়ান্টাইজড ফরম্যাটে Gemma-2 2B ডাউনলোড করুন। উপলব্ধ মডেল সম্পর্কে আরও তথ্যের জন্য, মডেল ডকুমেন্টেশন দেখুন।
আপনার প্রকল্প ডিরেক্টরির মধ্যে মডেল সংরক্ষণ করুন:
<dev-project-root>/assets/gemma-2b-it-gpu-int8.bin
baseOptions
অবজেক্ট modelAssetPath
প্যারামিটার সহ মডেলের পাথ নির্দিষ্ট করুন:
baseOptions: { modelAssetPath: `/assets/gemma-2b-it-gpu-int8.bin`}
টাস্ক আরম্ভ করুন
মৌলিক কনফিগারেশন বিকল্পগুলির সাথে কাজটি শুরু করুন:
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-int8.bin'
},
maxTokens: 1000,
topK: 40,
temperature: 0.8,
randomSeed: 101
});
টাস্ক চালান
অনুমান ট্রিগার করতে generateResponse()
ফাংশন ব্যবহার করুন।
const response = await llmInference.generateResponse(inputPrompt);
document.getElementById('output').textContent = response;
প্রতিক্রিয়া স্ট্রিম করতে, নিম্নলিখিত ব্যবহার করুন:
llmInference.generateResponse(
inputPrompt,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
নমুনা আবেদন
নমুনা অ্যাপ্লিকেশনটি LLM ইনফারেন্স API ব্যবহার করে ওয়েবের জন্য একটি মৌলিক পাঠ্য প্রজন্মের অ্যাপের একটি উদাহরণ। আপনি অ্যাপটিকে আপনার নিজের ওয়েব অ্যাপের জন্য একটি সূচনা পয়েন্ট হিসাবে ব্যবহার করতে পারেন, অথবা একটি বিদ্যমান অ্যাপ পরিবর্তন করার সময় এটি উল্লেখ করতে পারেন। উদাহরণ কোডটি গিটহাবে হোস্ট করা হয়েছে।
নিম্নলিখিত কমান্ড ব্যবহার করে গিট সংগ্রহস্থল ক্লোন করুন:
git clone https://github.com/google-ai-edge/mediapipe-samples
আরও তথ্যের জন্য, ওয়েবের জন্য সেটআপ গাইড দেখুন।
কনফিগারেশন বিকল্প
একটি ওয়েব অ্যাপ সেট আপ করতে নিম্নলিখিত কনফিগারেশন বিকল্পগুলি ব্যবহার করুন:
বিকল্পের নাম | বর্ণনা | মান পরিসীমা | ডিফল্ট মান |
---|---|---|---|
modelPath | প্রজেক্ট ডিরেক্টরির মধ্যে মডেলটি যেখানে সংরক্ষণ করা হয় তার পথ। | PATH | N/A |
maxTokens | মডেলটি পরিচালনা করে সর্বাধিক সংখ্যক টোকেন (ইনপুট টোকেন + আউটপুট টোকেন)। | পূর্ণসংখ্যা | 512 |
topK | প্রজন্মের প্রতিটি ধাপে মডেলটি বিবেচনা করে টোকেনের সংখ্যা। পূর্বাভাসগুলিকে শীর্ষ k সর্বাধিক সম্ভাব্য টোকেনে সীমাবদ্ধ করে৷ | পূর্ণসংখ্যা | 40 |
temperature | প্রজন্মের সময় যে পরিমাণ এলোমেলোভাবে প্রবর্তিত হয়। একটি উচ্চ তাপমাত্রার ফলে উত্পন্ন পাঠে আরও সৃজনশীলতা আসে, যখন নিম্ন তাপমাত্রা আরও অনুমানযোগ্য প্রজন্ম তৈরি করে। | ভাসা | 0.8 |
randomSeed | টেক্সট তৈরির সময় ব্যবহৃত এলোমেলো বীজ। | পূর্ণসংখ্যা | 0 |
loraRanks | LoRA র্যাঙ্কগুলি LoRA মডেলগুলি রানটাইমের সময় ব্যবহার করবে৷ দ্রষ্টব্য: এটি শুধুমাত্র GPU মডেলের সাথে সামঞ্জস্যপূর্ণ। | পূর্ণসংখ্যা অ্যারে | 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)
রূপান্তরকারী দুটি MediaPipe-সামঞ্জস্যপূর্ণ ফাইল তৈরি করবে, একটি বেস মডেলের জন্য এবং অন্যটি 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 মডেলগুলি লোড করুন। এলএলএম প্রতিক্রিয়া তৈরি করার সময় মডেল রেফারেন্স পাস করে 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;
});