راهنمای استنتاج LLM برای وب

LLM Inference API به شما امکان می دهد مدل های زبان بزرگ (LLM) را به طور کامل روی دستگاه برای برنامه های کاربردی وب اجرا کنید، که می توانید از آنها برای انجام طیف وسیعی از وظایف مانند تولید متن، بازیابی اطلاعات به شکل زبان طبیعی و خلاصه کردن اسناد استفاده کنید. این وظیفه پشتیبانی داخلی از چندین مدل زبان بزرگ متن به متن را ارائه می‌کند، بنابراین می‌توانید آخرین مدل‌های هوش مصنوعی تولیدی روی دستگاه را در برنامه‌های وب خود اعمال کنید.

برای افزودن سریع LLM Inference API به برنامه وب خود، Quickstart را دنبال کنید. برای مثالی اساسی از یک برنامه وب که API استنتاج LLM را اجرا می کند، به برنامه نمونه مراجعه کنید. برای درک عمیق‌تر نحوه عملکرد API استنتاج LLM، به بخش‌های تنظیمات ، تبدیل مدل و تنظیم LoRA مراجعه کنید.

شما می توانید این کار را با نسخه ی نمایشی MediaPipe Studio مشاهده کنید. برای اطلاعات بیشتر در مورد قابلیت‌ها، مدل‌ها و گزینه‌های پیکربندی این کار، به نمای کلی مراجعه کنید.

شروع سریع

از مراحل زیر برای افزودن API LLM Inference به برنامه وب خود استفاده کنید. LLM Inference API به یک مرورگر وب با سازگاری WebGPU نیاز دارد. برای فهرست کامل مرورگرهای سازگار، به سازگاری مرورگر GPU مراجعه کنید.

وابستگی ها را اضافه کنید

API استنتاج LLM از بسته @mediapipe/tasks-genai استفاده می کند.

بسته های مورد نیاز را برای مرحله بندی محلی نصب کنید:

npm install @mediapipe/tasks-genai

برای استقرار در سرور، از یک سرویس شبکه تحویل محتوا (CDN) مانند jsDelivr استفاده کنید تا کد را مستقیماً به صفحه HTML خود اضافه کنید:

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

دانلود یک مدل

Gemma-2 2B را با فرمت کوانتیزه ۸ بیتی از Kaggle Models دانلود کنید. برای اطلاعات بیشتر در مورد مدل‌های موجود، به مستندات مدل‌ها مراجعه کنید.

مدل را در فهرست پروژه خود ذخیره کنید:

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

مسیر مدل را با پارامتر شی baseOptions modelAssetPath مشخص کنید:

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

Task را راه اندازی کنید

کار را با گزینه های پیکربندی اولیه راه اندازی کنید:

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
});

Task را اجرا کنید

از تابع generateResponse() برای استنتاج استفاده کنید.

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

برای پخش جریانی پاسخ، از موارد زیر استفاده کنید:

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

نمونه برنامه

برنامه نمونه نمونه ای از یک برنامه تولید متن اولیه برای وب است که از API LLM Inference استفاده می کند. می‌توانید از برنامه به‌عنوان نقطه شروع برای برنامه وب خود استفاده کنید یا هنگام تغییر برنامه موجود به آن مراجعه کنید. کد نمونه در GitHub میزبانی می شود.

با استفاده از دستور زیر مخزن git را کلون کنید:

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 Inference API با انواع مدل های زیر سازگار است که برخی از آنها نیاز به تبدیل مدل دارند. از جدول برای شناسایی روش مراحل مورد نیاز برای مدل خود استفاده کنید.

مدل ها روش تبدیل پلتفرم های سازگار نوع فایل
Gemma-3 1B بدون نیاز به تبدیل اندروید، وب وظیفه
Gemma 2B، Gemma 7B، Gemma-2 2B بدون نیاز به تبدیل اندروید، iOS، وب .bin
Phi-2، StableLM، Falcon اسکریپت تبدیل MediaPipe اندروید، iOS، وب .bin
همه مدل های PyTorch LLM کتابخانه AI Edge Torch Generative اندروید، iOS وظیفه

برای آشنایی با نحوه تبدیل مدل های دیگر، به بخش تبدیل مدل مراجعه کنید.

سفارشی سازی LoRA

API استنتاج LLM از تنظیم LoRA (انطباق با رتبه پایین) با استفاده از کتابخانه PEFT (Parameter-Efficient Fine-Tuning) پشتیبانی می کند. تنظیم LoRA رفتار LLM ها را از طریق یک فرآیند آموزشی مقرون به صرفه سفارشی می کند و مجموعه کوچکی از وزنه های قابل آموزش را بر اساس داده های آموزشی جدید به جای آموزش مجدد کل مدل ایجاد می کند.

LLM Inference API از افزودن وزن‌های LoRA به لایه‌های توجه مدل‌های Gemma-2 2B ، Gemma 2B و Phi-2 پشتیبانی می‌کند. مدل را با فرمت safetensors دانلود کنید.

برای ایجاد وزنه های LoRA، مدل پایه باید در قالب safetensors باشد. بعد از آموزش LoRA می توانید مدل ها را به فرمت FlatBuffers تبدیل کنید تا روی MediaPipe اجرا شوند.

وزنه های LoRA را آماده کنید

از راهنمای روش‌های LoRA از PEFT برای آموزش یک مدل LoRA با تنظیم دقیق در مجموعه داده‌های خود استفاده کنید.

API استنتاج LLM فقط از 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 Python برای تبدیل وزن مدل به فرمت Flatbuffer استفاده کنید. 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 را در طول زمان اجرا بارگذاری کنید. هنگام ایجاد پاسخ LLM، با عبور از مرجع مدل، مدل 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 Inference API به شما امکان می دهد مدل های زبان بزرگ (LLM) را به طور کامل روی دستگاه برای برنامه های کاربردی وب اجرا کنید، که می توانید از آنها برای انجام طیف وسیعی از وظایف مانند تولید متن، بازیابی اطلاعات به شکل زبان طبیعی و خلاصه کردن اسناد استفاده کنید. این وظیفه پشتیبانی داخلی از چندین مدل زبان بزرگ متن به متن را ارائه می‌کند، بنابراین می‌توانید آخرین مدل‌های هوش مصنوعی تولیدی روی دستگاه را در برنامه‌های وب خود اعمال کنید.

برای افزودن سریع LLM Inference API به برنامه وب خود، Quickstart را دنبال کنید. برای مثالی اساسی از یک برنامه وب که API استنتاج LLM را اجرا می کند، به برنامه نمونه مراجعه کنید. برای درک عمیق‌تر نحوه عملکرد API استنتاج LLM، به بخش‌های تنظیمات ، تبدیل مدل و تنظیم LoRA مراجعه کنید.

شما می توانید این کار را با نسخه ی نمایشی MediaPipe Studio مشاهده کنید. برای اطلاعات بیشتر در مورد قابلیت‌ها، مدل‌ها و گزینه‌های پیکربندی این کار، به نمای کلی مراجعه کنید.

شروع سریع

از مراحل زیر برای افزودن API LLM Inference به برنامه وب خود استفاده کنید. LLM Inference API به یک مرورگر وب با سازگاری WebGPU نیاز دارد. برای فهرست کامل مرورگرهای سازگار، به سازگاری مرورگر GPU مراجعه کنید.

وابستگی ها را اضافه کنید

API استنتاج LLM از بسته @mediapipe/tasks-genai استفاده می کند.

بسته های مورد نیاز را برای مرحله بندی محلی نصب کنید:

npm install @mediapipe/tasks-genai

برای استقرار در سرور، از یک سرویس شبکه تحویل محتوا (CDN) مانند jsDelivr استفاده کنید تا کد را مستقیماً به صفحه HTML خود اضافه کنید:

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

دانلود یک مدل

Gemma-2 2B را با فرمت کوانتیزه ۸ بیتی از Kaggle Models دانلود کنید. برای اطلاعات بیشتر در مورد مدل‌های موجود، به مستندات مدل‌ها مراجعه کنید.

مدل را در فهرست پروژه خود ذخیره کنید:

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

مسیر مدل را با پارامتر شی baseOptions modelAssetPath مشخص کنید:

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

Task را راه اندازی کنید

کار را با گزینه های پیکربندی اولیه راه اندازی کنید:

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
});

Task را اجرا کنید

از تابع generateResponse() برای استنتاج استفاده کنید.

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

برای پخش جریانی پاسخ، از موارد زیر استفاده کنید:

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

نمونه برنامه

برنامه نمونه نمونه ای از یک برنامه تولید متن اولیه برای وب است که از API LLM Inference استفاده می کند. می‌توانید از برنامه به‌عنوان نقطه شروع برای برنامه وب خود استفاده کنید یا هنگام تغییر برنامه موجود به آن مراجعه کنید. کد نمونه در GitHub میزبانی می شود.

با استفاده از دستور زیر مخزن git را کلون کنید:

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 Inference API با انواع مدل های زیر سازگار است که برخی از آنها نیاز به تبدیل مدل دارند. از جدول برای شناسایی روش مراحل مورد نیاز برای مدل خود استفاده کنید.

مدل ها روش تبدیل پلتفرم های سازگار نوع فایل
Gemma-3 1B بدون نیاز به تبدیل اندروید، وب وظیفه
Gemma 2B، Gemma 7B، Gemma-2 2B بدون نیاز به تبدیل اندروید، iOS، وب .bin
Phi-2، StableLM، Falcon اسکریپت تبدیل MediaPipe اندروید، iOS، وب .bin
همه مدل های PyTorch LLM کتابخانه AI Edge Torch Generative اندروید، iOS وظیفه

برای آشنایی با نحوه تبدیل مدل های دیگر، به بخش تبدیل مدل مراجعه کنید.

سفارشی سازی LoRA

API استنتاج LLM از تنظیم LoRA (انطباق با رتبه پایین) با استفاده از کتابخانه PEFT (Parameter-Efficient Fine-Tuning) پشتیبانی می کند. تنظیم LoRA رفتار LLM ها را از طریق یک فرآیند آموزشی مقرون به صرفه سفارشی می کند و مجموعه کوچکی از وزنه های قابل آموزش را بر اساس داده های آموزشی جدید به جای آموزش مجدد کل مدل ایجاد می کند.

LLM Inference API از افزودن وزن‌های LoRA به لایه‌های توجه مدل‌های Gemma-2 2B ، Gemma 2B و Phi-2 پشتیبانی می‌کند. مدل را با فرمت safetensors دانلود کنید.

برای ایجاد وزنه های LoRA، مدل پایه باید در قالب safetensors باشد. بعد از آموزش LoRA می توانید مدل ها را به فرمت FlatBuffers تبدیل کنید تا روی MediaPipe اجرا شوند.

وزنه های LoRA را آماده کنید

از راهنمای روش‌های LoRA از PEFT برای آموزش یک مدل LoRA با تنظیم دقیق در مجموعه داده‌های خود استفاده کنید.

API استنتاج LLM فقط از 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 Python برای تبدیل وزن مدل به فرمت Flatbuffer استفاده کنید. 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 را در طول زمان اجرا بارگذاری کنید. هنگام ایجاد پاسخ LLM، با عبور از مرجع مدل، مدل 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 Inference API به شما امکان می دهد مدل های زبان بزرگ (LLM) را به طور کامل روی دستگاه برای برنامه های کاربردی وب اجرا کنید، که می توانید از آنها برای انجام طیف وسیعی از وظایف مانند تولید متن، بازیابی اطلاعات به شکل زبان طبیعی و خلاصه کردن اسناد استفاده کنید. این وظیفه پشتیبانی داخلی از چندین مدل زبان بزرگ متن به متن را ارائه می‌کند، بنابراین می‌توانید آخرین مدل‌های هوش مصنوعی تولیدی روی دستگاه را در برنامه‌های وب خود اعمال کنید.

برای افزودن سریع LLM Inference API به برنامه وب خود، Quickstart را دنبال کنید. برای مثالی اساسی از یک برنامه وب که API استنتاج LLM را اجرا می کند، به برنامه نمونه مراجعه کنید. برای درک عمیق‌تر نحوه عملکرد API استنتاج LLM، به بخش‌های تنظیمات ، تبدیل مدل و تنظیم LoRA مراجعه کنید.

شما می توانید این کار را با نسخه ی نمایشی MediaPipe Studio مشاهده کنید. برای اطلاعات بیشتر در مورد قابلیت‌ها، مدل‌ها و گزینه‌های پیکربندی این کار، به نمای کلی مراجعه کنید.

شروع سریع

از مراحل زیر برای افزودن API LLM Inference به برنامه وب خود استفاده کنید. LLM Inference API به یک مرورگر وب با سازگاری WebGPU نیاز دارد. برای فهرست کامل مرورگرهای سازگار، به سازگاری مرورگر GPU مراجعه کنید.

وابستگی ها را اضافه کنید

API استنتاج LLM از بسته @mediapipe/tasks-genai استفاده می کند.

بسته های مورد نیاز را برای مرحله بندی محلی نصب کنید:

npm install @mediapipe/tasks-genai

برای استقرار در سرور، از یک سرویس شبکه تحویل محتوا (CDN) مانند jsDelivr استفاده کنید تا کد را مستقیماً به صفحه HTML خود اضافه کنید:

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

دانلود یک مدل

Gemma-2 2B را با فرمت کوانتیزه ۸ بیتی از Kaggle Models دانلود کنید. برای اطلاعات بیشتر در مورد مدل‌های موجود، به مستندات مدل‌ها مراجعه کنید.

مدل را در فهرست پروژه خود ذخیره کنید:

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

مسیر مدل را با پارامتر شی baseOptions modelAssetPath مشخص کنید:

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

Task را راه اندازی کنید

کار را با گزینه های پیکربندی اولیه راه اندازی کنید:

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
});

Task را اجرا کنید

از تابع generateResponse() برای استنتاج استفاده کنید.

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

برای پخش جریانی پاسخ، از موارد زیر استفاده کنید:

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

نمونه برنامه

برنامه نمونه نمونه ای از یک برنامه تولید متن اولیه برای وب است که از API LLM Inference استفاده می کند. می‌توانید از برنامه به‌عنوان نقطه شروع برای برنامه وب خود استفاده کنید یا هنگام تغییر برنامه موجود به آن مراجعه کنید. کد نمونه در GitHub میزبانی می شود.

با استفاده از دستور زیر مخزن git را کلون کنید:

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 Inference API با انواع مدل های زیر سازگار است که برخی از آنها نیاز به تبدیل مدل دارند. از جدول برای شناسایی روش مراحل مورد نیاز برای مدل خود استفاده کنید.

مدل ها روش تبدیل پلتفرم های سازگار نوع فایل
Gemma-3 1B بدون نیاز به تبدیل اندروید، وب وظیفه
Gemma 2B، Gemma 7B، Gemma-2 2B بدون نیاز به تبدیل اندروید، iOS، وب .bin
Phi-2، StableLM، Falcon اسکریپت تبدیل MediaPipe اندروید، iOS، وب .bin
همه مدل های PyTorch LLM کتابخانه AI Edge Torch Generative اندروید، iOS وظیفه

برای آشنایی با نحوه تبدیل مدل های دیگر، به بخش تبدیل مدل مراجعه کنید.

سفارشی سازی LoRA

API استنتاج LLM از تنظیم LoRA (انطباق با رتبه پایین) با استفاده از کتابخانه PEFT (Parameter-Efficient Fine-Tuning) پشتیبانی می کند. تنظیم LoRA رفتار LLM ها را از طریق یک فرآیند آموزشی مقرون به صرفه سفارشی می کند و مجموعه کوچکی از وزنه های قابل آموزش را بر اساس داده های آموزشی جدید به جای آموزش مجدد کل مدل ایجاد می کند.

LLM Inference API از افزودن وزن‌های LoRA به لایه‌های توجه مدل‌های Gemma-2 2B ، Gemma 2B و Phi-2 پشتیبانی می‌کند. مدل را با فرمت safetensors دانلود کنید.

برای ایجاد وزنه های LoRA، مدل پایه باید در قالب safetensors باشد. بعد از آموزش LoRA می توانید مدل ها را به فرمت FlatBuffers تبدیل کنید تا روی MediaPipe اجرا شوند.

وزنه های LoRA را آماده کنید

از راهنمای روش‌های LoRA از PEFT برای آموزش یک مدل LoRA با تنظیم دقیق در مجموعه داده‌های خود استفاده کنید.

API استنتاج LLM فقط از 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 Python برای تبدیل وزن مدل به فرمت Flatbuffer استفاده کنید. 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 را در طول زمان اجرا بارگذاری کنید. هنگام ایجاد پاسخ LLM، با عبور از مرجع مدل، مدل 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 Inference API به شما امکان می دهد مدل های زبان بزرگ (LLM) را به طور کامل روی دستگاه برای برنامه های کاربردی وب اجرا کنید، که می توانید از آنها برای انجام طیف وسیعی از وظایف مانند تولید متن، بازیابی اطلاعات به شکل زبان طبیعی و خلاصه کردن اسناد استفاده کنید. این وظیفه پشتیبانی داخلی از چندین مدل زبان بزرگ متن به متن را ارائه می‌کند، بنابراین می‌توانید آخرین مدل‌های هوش مصنوعی تولیدی روی دستگاه را در برنامه‌های وب خود اعمال کنید.

برای افزودن سریع LLM Inference API به برنامه وب خود، Quickstart را دنبال کنید. برای مثالی اساسی از یک برنامه وب که API استنتاج LLM را اجرا می کند، به برنامه نمونه مراجعه کنید. برای درک عمیق‌تر نحوه عملکرد API استنتاج LLM، به بخش‌های تنظیمات ، تبدیل مدل و تنظیم LoRA مراجعه کنید.

شما می توانید این کار را با نسخه ی نمایشی MediaPipe Studio مشاهده کنید. برای اطلاعات بیشتر در مورد قابلیت‌ها، مدل‌ها و گزینه‌های پیکربندی این کار، به نمای کلی مراجعه کنید.

شروع سریع

از مراحل زیر برای افزودن API LLM Inference به برنامه وب خود استفاده کنید. LLM Inference API به یک مرورگر وب با سازگاری WebGPU نیاز دارد. برای فهرست کامل مرورگرهای سازگار، به سازگاری مرورگر GPU مراجعه کنید.

وابستگی ها را اضافه کنید

API استنتاج LLM از بسته @mediapipe/tasks-genai استفاده می کند.

بسته های مورد نیاز را برای مرحله بندی محلی نصب کنید:

npm install @mediapipe/tasks-genai

برای استقرار در سرور، از یک سرویس شبکه تحویل محتوا (CDN) مانند jsDelivr استفاده کنید تا کد را مستقیماً به صفحه HTML خود اضافه کنید:

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

دانلود یک مدل

Gemma-2 2B را با فرمت کوانتیزه ۸ بیتی از Kaggle Models دانلود کنید. برای اطلاعات بیشتر در مورد مدل‌های موجود، به مستندات مدل‌ها مراجعه کنید.

مدل را در فهرست پروژه خود ذخیره کنید:

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

مسیر مدل را با پارامتر شی baseOptions modelAssetPath مشخص کنید:

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

Task را راه اندازی کنید

کار را با گزینه های پیکربندی اولیه راه اندازی کنید:

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
});

Task را اجرا کنید

از تابع generateResponse() برای استنتاج استفاده کنید.

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

برای پخش جریانی پاسخ، از موارد زیر استفاده کنید:

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

نمونه برنامه

برنامه نمونه نمونه ای از یک برنامه تولید متن اولیه برای وب است که از API LLM Inference استفاده می کند. می‌توانید از برنامه به‌عنوان نقطه شروع برای برنامه وب خود استفاده کنید یا هنگام تغییر برنامه موجود به آن مراجعه کنید. کد نمونه در GitHub میزبانی می شود.

با استفاده از دستور زیر مخزن git را کلون کنید:

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 Inference API با انواع مدل های زیر سازگار است که برخی از آنها نیاز به تبدیل مدل دارند. از جدول برای شناسایی روش مراحل مورد نیاز برای مدل خود استفاده کنید.

مدل ها روش تبدیل پلتفرم های سازگار نوع فایل
Gemma-3 1B بدون نیاز به تبدیل اندروید، وب وظیفه
Gemma 2B، Gemma 7B، Gemma-2 2B بدون نیاز به تبدیل اندروید، iOS، وب .bin
Phi-2، StableLM، Falcon اسکریپت تبدیل MediaPipe اندروید، iOS، وب .bin
همه مدل های PyTorch LLM کتابخانه AI Edge Torch Generative اندروید، iOS وظیفه

برای آشنایی با نحوه تبدیل مدل های دیگر، به بخش تبدیل مدل مراجعه کنید.

سفارشی سازی LoRA

API استنتاج LLM از تنظیم LoRA (انطباق با رتبه پایین) با استفاده از کتابخانه PEFT (Parameter-Efficient Fine-Tuning) پشتیبانی می کند. تنظیم LoRA رفتار LLM ها را از طریق یک فرآیند آموزشی مقرون به صرفه سفارشی می کند و مجموعه کوچکی از وزنه های قابل آموزش را بر اساس داده های آموزشی جدید به جای آموزش مجدد کل مدل ایجاد می کند.

LLM Inference API از افزودن وزن‌های LoRA به لایه‌های توجه مدل‌های Gemma-2 2B ، Gemma 2B و Phi-2 پشتیبانی می‌کند. مدل را با فرمت safetensors دانلود کنید.

برای ایجاد وزنه های LoRA، مدل پایه باید در قالب safetensors باشد. بعد از آموزش LoRA می توانید مدل ها را به فرمت FlatBuffers تبدیل کنید تا روی MediaPipe اجرا شوند.

وزنه های LoRA را آماده کنید

از راهنمای روش‌های LoRA از PEFT برای آموزش یک مدل LoRA با تنظیم دقیق در مجموعه داده‌های خود استفاده کنید.

API استنتاج LLM فقط از 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 Python برای تبدیل وزن مدل به فرمت Flatbuffer استفاده کنید. 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 را در طول زمان اجرا بارگذاری کنید. هنگام ایجاد پاسخ LLM، با عبور از مرجع مدل، مدل 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;
});