LLM Inference API به شما امکان میدهد مدلهای زبان بزرگ (LLM) را کاملاً روی دستگاه اجرا کنید، که میتوانید از آنها برای انجام طیف گستردهای از وظایف، مانند تولید متن، بازیابی اطلاعات به شکل زبان طبیعی و خلاصهسازی اسناد استفاده کنید. این وظیفه پشتیبانی داخلی از چندین مدل زبان بزرگ متن به متن را ارائه میکند، بنابراین میتوانید آخرین مدلهای هوش مصنوعی تولیدی روی دستگاه را در برنامهها و محصولات خود اعمال کنید.
این وظیفه از انواع زیر Gemma پشتیبانی می کند: Gemma-2 2B، Gemma 2B و Gemma 7B. جما خانواده ای از مدل های باز سبک وزن و پیشرفته است که از همان تحقیقات و فناوری استفاده شده برای ساخت مدل های جمینی ساخته شده است. همچنین از مدل های خارجی زیر پشتیبانی می کند: Phi-2 ، Falcon-RW-1B و StableLM-3B .
علاوه بر مدلهایی که به صورت بومی پشتیبانی میشوند، کاربران میتوانند مدلهای دیگر را با استفاده از پیشنهادات AI Edge Google (از جمله نقشهبرداری مدلهای PyTorch ) نقشهبرداری کنند. این به کاربران امکان میدهد یک مدل نقشهبرداری شده را به مدلهای چند امضایی TensorFlow Lite صادر کنند، که با پارامترهای توکنایزر برای ایجاد یک Task Bundle همراه هستند.
شروع کنید
استفاده از این کار را با دنبال کردن یکی از این راهنماهای پیاده سازی برای پلتفرم هدف خود شروع کنید. این راهنماهای مخصوص پلتفرم شما را از طریق اجرای اساسی این کار با نمونههای کدی که از یک مدل موجود و گزینههای پیکربندی توصیهشده استفاده میکنند، راهنمایی میکنند:
جزئیات کار
این بخش قابلیت ها، ورودی ها، خروجی ها و گزینه های پیکربندی این کار را شرح می دهد.
ویژگی ها
LLM Inference API دارای ویژگی های کلیدی زیر است:
- تولید متن به متن - متن را بر اساس یک اعلان متن ورودی ایجاد کنید.
- انتخاب LLM - چندین مدل را برای تنظیم برنامه برای موارد استفاده خاص خود اعمال کنید. همچنین میتوانید وزنههای سفارشیشده را به مدل آموزش دهید و اعمال کنید.
- پشتیبانی LoRA - قابلیت LLM را با مدل LoRA گسترش دهید و سفارشی کنید، یا با آموزش روی تمام مجموعه داده های خود، یا با استفاده از مدل های LoRA از پیش ساخته شده از جامعه منبع باز (فقط مدل های بومی).
ورودی های وظیفه | خروجی های وظیفه |
---|---|
LLM Inference API ورودی های زیر را می پذیرد:
| API استنتاج LLM نتایج زیر را به دست می دهد:
|
گزینه های پیکربندی
این کار دارای گزینه های پیکربندی زیر است:
نام گزینه | توضیحات | محدوده ارزش | مقدار پیش فرض |
---|---|---|---|
modelPath | مسیری که مدل در دایرکتوری پروژه ذخیره می شود. | PATH | N/A |
maxTokens | حداکثر تعداد نشانهها (توکنهای ورودی + نشانههای خروجی) که مدل کنترل میکند. | عدد صحیح | 512 |
topK | تعداد نشانه هایی که مدل در هر مرحله از تولید در نظر می گیرد. پیشبینیها را به k توکنهای محتملتر محدود میکند. | عدد صحیح | 40 |
temperature | مقدار تصادفی معرفی شده در طول تولید. دمای بالاتر منجر به خلاقیت بیشتر در متن تولید شده می شود، در حالی که دمای پایین تر تولید قابل پیش بینی بیشتری را تولید می کند. | شناور | 0.8 |
randomSeed | دانه تصادفی مورد استفاده در تولید متن. | عدد صحیح | 0 |
loraPath | مسیر مطلق به مدل LoRA به صورت محلی در دستگاه. توجه: این فقط با مدل های GPU سازگار است. | PATH | N/A |
resultListener | شنونده نتیجه را طوری تنظیم می کند که نتایج را به صورت ناهمزمان دریافت کند. فقط هنگام استفاده از روش تولید غیر همگام قابل استفاده است. | N/A | N/A |
errorListener | یک شنونده خطای اختیاری را تنظیم می کند. | N/A | N/A |
مدل ها
LLM Inference API شامل پشتیبانی داخلی برای مدلهای زبان بزرگ متن به متن قابل جداسازی است که برای اجرا در مرورگرها و دستگاههای تلفن همراه بهینه شدهاند. این مدل های سبک وزن را می توان دانلود کرد تا استنتاج ها را به طور کامل روی دستگاه اجرا کنند.
قبل از مقداردهی اولیه API استنتاج LLM، یکی از مدل های پشتیبانی شده را دانلود کرده و فایل را در دایرکتوری پروژه خود ذخیره کنید.
Gemma-2 2B
Gemma-2 2B جدیدترین مدل از خانواده مدلهای باز سبک وزن و پیشرفته Gemma است که از همان تحقیقات و فناوری استفاده شده برای ساخت مدلهای Gemini ساخته شده است. مدل شامل 2B پارامتر و وزن باز است. Gemma-2 2B به دلیل مهارت های استدلالی پیشرفته برای مدل های هم رده خود شناخته شده است.
اگر Gemma-2 2B را از Kaggle دانلود می کنید، باید مدل را به یک قالب مناسب MediaPipe تبدیل کنید . API استنتاج LLM برای تبدیل و اجرای مدل به مراحل زیر نیاز دارد:
- چک پوینت PyTorch
model.ckpt
را از Kaggle دانلود کنید - از ابزار موجود در AI Edge Torch برای ایجاد و تبدیل مدل به فرمت TF Lite استفاده کنید.
- Task Bundle را از فایل TFLite و توکنایزر Gemma ایجاد کنید. برای مدل های Gemma، start_token توصیه شده
<bos>
و stop_token ها<eos>
و<end_of_turn>
برای برنامه های چت هستند.
فایل task
به دست آمده را می توان برای استنتاج با LLM Inference API استفاده کرد
جما 2B
Gemma 2B بخشی از خانواده مدل های باز سبک وزن و پیشرفته است که از همان تحقیقات و فناوری استفاده شده برای ساخت مدل های Gemini ساخته شده است. مدل شامل 2B پارامتر و وزن باز است. این مدل برای انواع وظایف تولید متن، از جمله پاسخ به سؤال، خلاصهسازی و استدلال مناسب است.
مدل های Gemma 2B در چهار نوع عرضه می شوند:
- gemma-2b-it-cpu-int4 : مدل 4 بیتی Gemma 2B با سازگاری با CPU.
- gemma-2b-it-cpu-int8 : مدل 8 بیتی Gemma 2B با سازگاری با CPU.
- gemma-2b-it-gpu-int4 : مدل 4 بیتی Gemma 2B با سازگاری GPU.
- gemma-2b-it-gpu-int8 : مدل 8 بیتی Gemma 2B با سازگاری GPU.
همچنین میتوانید مدل را تنظیم کنید و وزنهای جدیدی را قبل از اضافه کردن آن به برنامه اضافه کنید. برای اطلاعات بیشتر در مورد تنظیم و سفارشی کردن Gemma، به تنظیم Gemma مراجعه کنید. پس از دانلود Gemma از Kaggle Models ، مدل از قبل در قالب مناسب برای استفاده با MediaPipe است.
اگر Gemma 2B را از Hugging Face دانلود می کنید، باید مدل را به یک قالب مناسب MediaPipe تبدیل کنید . LLM Inference API نیاز به دانلود و تبدیل فایل های زیر دارد:
-
model-00001-of-00002.safetensors
-
model-00002-of-00002.safetensors
-
tokenizer.json
-
tokenizer_config.json
جما 7B
Gemma 7B یک مدل جما بزرگتر با پارامترهای 7B و وزن باز است. این مدل برای انواع وظایف تولید متن، از جمله پاسخ به سؤال، خلاصهسازی و استدلال قدرتمندتر است. Gemma 7B فقط در وب پشتیبانی می شود.
مدل Gemma 7B در یک نوع عرضه می شود:
- gemma-1.1-7b-it-gpu-int8 : مدل 8 بیتی Gemma 7B با سازگاری با پردازنده گرافیکی.
اگر Gemma 7B را از Hugging Face دانلود می کنید، باید مدل را به یک قالب مناسب MediaPipe تبدیل کنید . LLM Inference API نیاز به دانلود و تبدیل فایل های زیر دارد:
-
model-00001-of-00004.safetensors
-
model-00002-of-00004.safetensors
-
model-00003-of-00004.safetensors
-
model-00004-of-00004.safetensors
-
tokenizer.json
-
tokenizer_config.json
فالکون 1 بی
Falcon-1B یک مدل 1 میلیارد پارامتری فقط رمزگشای علی است که بر روی 350B توکن RefinedWeb آموزش داده شده است.
API LLM Inference به فایلهای زیر نیاز دارد که به صورت محلی دانلود و ذخیره شوند:
-
tokenizer.json
-
tokenizer_config.json
-
pytorch_model.bin
پس از دانلود فایل های مدل فالکون، مدل آماده تبدیل به فرمت MediaPipe می باشد. مراحل تبدیل مدل به فرمت MediaPipe را دنبال کنید.
StableLM 3B
StableLM-3B یک مدل زبان فقط رمزگشای 3 میلیارد پارامتری است که بر روی 1 تریلیون توکن از مجموعه دادههای انگلیسی متنوع و کد برای 4 دوره از قبل آموزش داده شده است.
API LLM Inference به فایلهای زیر نیاز دارد که به صورت محلی دانلود و ذخیره شوند:
-
tokenizer.json
-
tokenizer_config.json
-
model.safetensors
پس از دانلود فایل های مدل StableLM، مدل آماده تبدیل به فرمت MediaPipe است. مراحل تبدیل مدل به فرمت MediaPipe را دنبال کنید.
فی-2
Phi-2 یک مدل ترانسفورماتور 2.7 میلیارد پارامتری است. با استفاده از متون مصنوعی مختلف NLP و وب سایت های فیلتر شده آموزش داده شد. این مدل برای درخواست هایی که از فرمت پرسش-پاسخ، چت و کد استفاده می کنند، مناسب تر است.
API LLM Inference به فایلهای زیر نیاز دارد که به صورت محلی دانلود و ذخیره شوند:
-
tokenizer.json
-
tokenizer_config.json
-
model-00001-of-00002.safetensors
-
model-00002-of-00002.safetensors
پس از دانلود فایل های مدل Phi-2، مدل آماده تبدیل به فرمت MediaPipe است. مراحل تبدیل مدل به فرمت MediaPipe را دنبال کنید.
مدل های صادراتی AI Edge
AI Edge یک پیشنهاد گوگل است که به شما امکان می دهد مدل های نقشه برداری شده توسط کاربر را به مدل های TensorFlow Lite با امضای چندگانه تبدیل کنید. برای جزئیات بیشتر در مورد نقشه برداری و صادرات مدل ها، از صفحه AI Edge Torch GitHub دیدن کنید.
پس از صادرات مدل به فرمت TFLite، مدل آماده تبدیل به فرمت MediaPipe است. برای اطلاعات بیشتر، تبدیل مدل به فرمت MediaPipe را ببینید.
تبدیل مدل به فرمت MediaPipe
تبدیل مدل بومی
اگر از LLM خارجی (Phi-2، Falcon، یا StableLM) یا نسخه غیر Kaggle Gemma استفاده میکنید، از اسکریپتهای تبدیل ما برای قالببندی مدل برای سازگاری با MediaPipe استفاده کنید.
فرآیند تبدیل مدل به بسته MediaPipe PyPI نیاز دارد. اسکریپت تبدیل در تمام بسته های MediaPipe بعد از 0.10.11
در دسترس است.
وابستگی ها را با موارد زیر نصب و وارد کنید:
$ 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 فقط از استنتاج LoRA با GPU پشتیبانی می کند، backend باید روی '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 . توجه داشته باشید که گاهی اوقات قالب مدل safetensors به چندین فایل تقسیم می شود، به عنوان مثال model-00001-of-00003.safetensors ، model-00001-of-00003.safetensors . می توانید یک الگوی فایل مانند model*.safetensors را مشخص کنید. | PATH |
ckpt_format | فرمت فایل مدل | {"Safetensors"، "pytorch"} |
model_type | LLM در حال تبدیل است. | {"PHI_2"، "FALCON_RW_1B"، "STABLELM_4E1T_3B"، "GEMMA_2B"} |
backend | پردازنده (Delegate) مورد استفاده برای اجرای مدل. | {"cpu"، "gpu"} |
output_dir | مسیر دایرکتوری خروجی که میزبان فایل های وزن هر لایه است. | PATH |
output_tflite_file | مسیر فایل خروجی به عنوان مثال، "model_cpu.bin" یا "model_gpu.bin". این فایل فقط با LLM Inference API سازگار است و نمیتواند به عنوان یک فایل «tflite» عمومی استفاده شود. | PATH |
vocab_model_file | مسیر دایرکتوری که فایلهای tokenizer.json و tokenizer_config.json را ذخیره میکند. برای Gemma، به فایل single tokenizer.model اشاره کنید. | PATH |
lora_ckpt | مسیر فایل LoRA ckpt of safetensors که وزن آداپتور LoRA را ذخیره می کند. | PATH |
lora_rank | یک عدد صحیح نشان دهنده رتبه LoRA ckpt. برای تبدیل وزنه های لور مورد نیاز است. اگر ارائه نشده باشد، مبدل فرض می کند که وزن LoRA وجود ندارد. توجه: فقط باطن GPU از LoRA پشتیبانی می کند. | عدد صحیح |
lora_output_tflite_file | خروجی نام فایل tflite برای وزن های LoRA. | PATH |
تبدیل مدل AI Edge
اگر از LLM نگاشت شده به مدل TFLite از طریق AI Edge استفاده میکنید، از اسکریپت بستهبندی ما برای ایجاد Task Bundle استفاده کنید. فرآیند بستهبندی، مدل نگاشتشده را با ابردادههای اضافی (مثلاً پارامترهای Tokenizer) مورد نیاز برای اجرای استنتاج سرتاسر بسته بندی میکند.
فرآیند بستهبندی مدل به بسته MediaPipe PyPI نیاز دارد. اسکریپت تبدیل در تمام بسته های MediaPipe بعد از 0.10.14
در دسترس است.
وابستگی ها را با موارد زیر نصب و وارد کنید:
$ 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 | مسیر به مدل TFLite صادر شده توسط AI Edge. | PATH |
tokenizer_model | مسیر رسیدن به مدل توکنایزر SentencePiece. | PATH |
start_token | نشانه شروع خاص مدل توکن شروع باید در مدل توکنایزر ارائه شده وجود داشته باشد. | STRING |
stop_tokens | نشانه های توقف خاص را مدل کنید. توکن های توقف باید در مدل توکنایزر ارائه شده وجود داشته باشد. | LIST[STRING] |
output_filename | نام فایل بسته کار خروجی. | PATH |
سفارشی سازی LoRA
Mediapipe LLM inference API را می توان برای پشتیبانی از سازگاری با رتبه پایین (LoRA) برای مدل های زبان بزرگ پیکربندی کرد. توسعه دهندگان با استفاده از مدل های LoRA دقیق تنظیم شده می توانند رفتار LLM ها را از طریق یک فرآیند آموزشی مقرون به صرفه سفارشی کنند.پشتیبانی LoRA از LLM Inference API برای مدلهای Gemma-2B و Phi-2 برای باطن GPU کار میکند، با وزنهای LoRA فقط برای لایههای توجه قابل اعمال است. این پیادهسازی اولیه بهعنوان یک API آزمایشی برای پیشرفتهای آینده با برنامههایی برای پشتیبانی از مدلهای بیشتر و انواع لایههای مختلف در بهروزرسانیهای آتی عمل میکند.
مدل های LoRA را آماده کنید
دستورالعملهای HuggingFace را دنبال کنید تا یک مدل LoRA تنظیمشده را روی مجموعه داده خود با انواع مدلهای پشتیبانیشده، Gemma-2B یا Phi-2 آموزش دهید. مدلهای Gemma-2B و Phi-2 هر دو در HuggingFace در قالب محافظهای ایمنی موجود هستند. از آنجایی که LLM Inference 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 با تنظیم دقیق در دسترس عموم و متناسب با LLM Inference API موجود در HuggingFace وجود دارد. به عنوان مثال، monsterapi/gemma-2b-lora-maths-orca-200k برای Gemma-2B و lole25/phi-2-sft-ultrachat-lora برای Phi-2.
پس از آموزش بر روی مجموعه داده آماده شده و ذخیره مدل، یک فایل adapter_model.safetensors
حاوی وزن های مدل LoRA تنظیم شده به دست می آورید. فایل Safetensors نقطه بازرسی LoRA است که در تبدیل مدل استفاده می شود.
به عنوان گام بعدی، باید وزن های مدل را با استفاده از بسته MediaPipe Python به یک Flatbuffer Flatbuffer TensorFlow Lite تبدیل کنید. ConversionConfig
باید گزینه های مدل پایه و همچنین گزینه های LoRA اضافی را مشخص کند. توجه داشته باشید که از آنجایی که API فقط از استنتاج LoRA با GPU پشتیبانی می کند، backend باید روی '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
Web، Android و iOS LLM Inference API برای پشتیبانی از استنتاج مدل LoRA به روز شده است. وب از LoRA پویا پشتیبانی می کند، که می تواند مدل های مختلف LoRA را در طول زمان اجرا تغییر دهد. اندروید و iOS از LoRA استاتیک پشتیبانی میکنند که از وزنهای LoRA یکسان در طول عمر کار استفاده میکند.
Android از 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)
برای اجرای استنتاج LLM با LoRA، از همان generateResponse()
یا generateResponseAsync()
به عنوان مدل پایه استفاده کنید.