API-ja LLM Inference ju lejon të ekzekutoni modele të mëdha gjuhësore (LLM) plotësisht në pajisje, të cilat mund t'i përdorni për të kryer një gamë të gjerë detyrash, të tilla si gjenerimi i tekstit, marrja e informacionit në formë gjuhe natyrore dhe përmbledhja e dokumenteve. Detyra ofron mbështetje të integruar për shumë modele të mëdha gjuhësore tekst-në-tekst, në mënyrë që të mund të aplikoni modelet më të fundit të IA-së gjeneruese në pajisje në aplikacionet dhe produktet tuaja.
Detyra ofron mbështetje të integruar për një sërë LLM-sh. Modelet e vendosura në faqen e Komunitetit LiteRT janë të disponueshme në një format miqësor me MediaPipe dhe nuk kërkojnë ndonjë hap shtesë konvertimi ose kompilimi.
Mund të përdorni LiteRT Torch për të eksportuar modelet PyTorch në modele LiteRT ( tflite ) me shumë nënshkrime, të cilat janë të paketuara me parametra tokenizer për të krijuar Task Bundles. Modelet e konvertuara me LiteRT Torch janë të pajtueshme me LLM Inference API dhe mund të funksionojnë në backend-in e CPU-së, duke i bërë ato të përshtatshme për aplikacionet Android dhe iOS.
Filloni
Filloni ta përdorni këtë detyrë duke ndjekur një nga këto udhëzues zbatimi për platformën tuaj të synuar. Këta udhëzues specifikë për platformën ju udhëzojnë përmes një zbatimi bazë të kësaj detyre, me shembuj kodi që përdorin një model të disponueshëm dhe opsionet e rekomanduara të konfigurimit:
Uebfaqe :
Android :
iOS
Detajet e detyrës
Ky seksion përshkruan aftësitë, të dhënat hyrëse, të dhënat dalëse dhe opsionet e konfigurimit të kësaj detyre.
Karakteristikat
API-ja e Inference LLM përmban karakteristikat kryesore të mëposhtme:
- Gjenerimi i tekstit në tekst - Gjeneroni tekst bazuar në një kërkesë për futjen e tekstit.
- Përzgjedhja e LLM - Aplikoni modele të shumta për të përshtatur aplikacionin për rastet tuaja specifike të përdorimit. Gjithashtu mund të rikualifikoni dhe të aplikoni pesha të personalizuara në model.
- Mbështetje LoRA - Zgjeroni dhe personalizoni aftësinë LLM me modelin LoRA ose duke u trajnuar në të gjithë të dhënat tuaja, ose duke marrë modele të përgatitura paraprakisht LoRA nga komuniteti me burim të hapur (nuk është i pajtueshëm me modelet e konvertuara me API-në LiteRT Torch Generative).
| Hyrjet e detyrave | Rezultatet e detyrave |
|---|---|
API-ja e Inference LLM pranon të dhënat e mëposhtme hyrëse:
| API-ja e Inference LLM jep rezultatet e mëposhtme:
|
Opsionet e konfigurimit
Kjo detyrë ka opsionet e mëposhtme të konfigurimit:
| Emri i opsionit | Përshkrimi | Diapazoni i Vlerave | Vlera e parazgjedhur |
|---|---|---|---|
modelPath | Shtegu për në vendin ku ruhet modeli brenda direktorisë së projektit. | SHTEG | N/A |
maxTokens | Numri maksimal i tokenëve (tokenët hyrës + tokenët dalës) që trajton modeli. | Numër i plotë | 512 |
topK | Numri i tokenëve që modeli merr në konsideratë në çdo hap të gjenerimit. Kufizon parashikimet në k tokenët më të mundshëm. | Numër i plotë | 40 |
temperature | Sasia e rastësisë së futur gjatë gjenerimit. Një temperaturë më e lartë rezulton në më shumë kreativitet në tekstin e gjeneruar, ndërsa një temperaturë më e ulët prodhon gjenerim më të parashikueshëm. | Noton | 0.8 |
randomSeed | Farërat e rastësishme të përdorura gjatë gjenerimit të tekstit. | Numër i plotë | 0 |
loraPath | Shtegu absolut për në modelin LoRA lokalisht në pajisje. Shënim: kjo është e pajtueshme vetëm me modelet GPU. | SHTEG | N/A |
resultListener | Cakton dëgjuesin e rezultateve që t'i marrë rezultatet në mënyrë asinkrone. I zbatueshëm vetëm kur përdoret metoda e gjenerimit asinkron. | N/A | N/A |
errorListener | Cakton një dëgjues gabimi opsional. | N/A | N/A |
Modele
API-ja LLM Inference mbështet shumë modele të mëdha gjuhësore të konvertimit tekst-në-tekst, duke përfshirë mbështetjen e integruar për disa modele që janë optimizuar për t'u ekzekutuar në shfletues dhe pajisje mobile. Këto modele të lehta mund të përdoren për të ekzekutuar inferenca tërësisht në pajisje.
Para se të inicializoni API-n LLM Inference, shkarkoni një model dhe ruajeni skedarin brenda direktorisë së projektit tuaj. Mund të përdorni një model të para-konvertuar nga depoja LiteRT Community HuggingFace ose të konvertoni një model në një format të pajtueshëm me MediaPipe me AI Edge Torch Generative Converter .
Nëse nuk keni tashmë një LLM për ta përdorur me API-n LLM Inference, filloni me një nga modelet e mëposhtme.
Gemma-3n
Gemma-3n E2B dhe E4B janë modelet më të fundit në familjen Gemma të modeleve të hapura, të lehta dhe të teknologjisë së fundit, të ndërtuara nga i njëjti kërkim dhe teknologji e përdorur për të krijuar modelet Gemini . Modelet Gemma 3n janë projektuar për ekzekutim efikas në pajisje me burime të pakta. Ato janë të afta për hyrje multimodale, përpunimin e hyrjeve të tekstit, imazhit dhe audios, si dhe gjenerimin e daljeve të tekstit.
Modelet Gemma 3n përdorin teknologjinë e aktivizimit selektiv të parametrave për të zvogëluar kërkesat për burime. Kjo teknikë u lejon modeleve të funksionojnë me një madhësi efektive prej 2B dhe 4B parametrash, e cila është më e ulët se numri i përgjithshëm i parametrave që ato përmbajnë.
Modelet Gemma-3n E2B dhe E4B nga HuggingFace janë të disponueshme në formatin .litertlm dhe janë gati për t'u përdorur me LLM Inference API për Android dhe Ueb.
Gemma-3 1B
Gemma-3 1B është modeli më i lehtë në familjen Gemma të modeleve të hapura, të lehta dhe të teknologjisë së fundit, të ndërtuara nga i njëjti kërkim dhe teknologji e përdorur për të krijuar modelet Gemini . Modeli përmban parametra 1B dhe pesha të hapura.
Modeli Gemma-3 1B nga HuggingFace është i disponueshëm në formatin .task / .litertlm dhe është gati për t’u përdorur me LLM Inference API për aplikacionet Android dhe Web.
Kur ekzekutoni Gemma-3 1B me API-në LLM Inference, konfiguroni opsionet e mëposhtme në përputhje me rrethanat:
-
preferredBackend: Përdoreni këtë opsion për të zgjedhur midis një backend-iCPUoseGPU. Ky opsion është i disponueshëm vetëm për Android. -
supportedLoraRanks: API-ja LLM Inference nuk mund të konfigurohet për të mbështetur Low-Rank Adaptation (LoRA) me modelin Gemma-3 1B. Mos përdorni opsionetsupportedLoraRanksoseloraRanks. -
maxTokens: Vlera përmaxTokensduhet të përputhet me madhësinë e kontekstit të integruar në model. Kjo mund të quhet edhe memoria e përkohshme Key-Value (KV) ose gjatësia e kontekstit. -
numResponses: Duhet të jetë gjithmonë 1. Ky opsion është i disponueshëm vetëm për Web.
Kur ekzekutoni Gemma-3 1B në aplikacione web, inicializimi mund të shkaktojë një bllokim të gjatë në fijen aktuale. Nëse është e mundur, ekzekutoni gjithmonë modelin nga një fije pune.
Gemma-2 2B
Gemma-2 2B është një variant 2B i Gemma-2 dhe funksionon në të gjitha platformat.
Modeli përmban parametra 2B dhe pesha të hapura. Gemma-2 2B është i njohur për aftësitë e arsyetimit të teknologjisë së fundit për modelet në klasën e tij.
Konvertimi i modelit PyTorch
Modelet gjeneruese PyTorch mund të konvertohen në një format të pajtueshëm me MediaPipe me API-në LiteRT Torch Generative . Mund ta përdorni API-në për të konvertuar modelet PyTorch në modele LiteRT (TensorFlow Lite) me shumë nënshkrime. Për më shumë detaje mbi hartëzimin dhe eksportimin e modeleve, vizitoni faqen e LiteRT Torch në GitHub .
Konvertimi i një modeli PyTorch me API-në LiteRT Torch Generative përfshin hapat e mëposhtëm:
- Shkarkoni pikat e kontrollit të modelit PyTorch.
- Përdorni API-n LiteRT Torch Generative për të autorizuar, konvertuar dhe kuantizuar modelin në një format skedari të pajtueshëm me MediaPipe (
.tflite). - Krijo një Pako Detyrash (
.task/.litertlm) nga skedari tflite dhe tokenizuesi i modelit.
Konvertuesi Torch Generative konverton vetëm për CPU dhe kërkon një makinë Linux me të paktën 64 GB RAM.
Për të krijuar një Pako Detyrash, përdorni skriptin e paketimit për të krijuar një Pako Detyrash . Procesi i paketimit e paketon modelin e hartuar me meta të dhëna shtesë (p.sh., Parametrat e Tokenizer) të nevojshme për të ekzekutuar inferencën nga fillimi në fund.
Procesi i paketimit të modelit kërkon paketën MediaPipe PyPI. Skripti i konvertimit është i disponueshëm në të gjitha paketat MediaPipe pas 0.10.14 .
Instaloni dhe importoni varësitë me sa vijon:
$ python3 -m pip install mediapipe
Përdorni bibliotekën genai.bundler për të paketuar modelin:
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)
| Parametri | Përshkrimi | Vlerat e Pranuara |
|---|---|---|
tflite_model | Shtegu drejt modelit TFLite të eksportuar nga AI Edge. | SHTEG |
tokenizer_model | Shtegu për në modelin e tokenizuesit SentencePiece. | SHTEG |
start_token | Simbol fillestar specifik për modelin. Simbolisti fillestar duhet të jetë i pranishëm në modelin e tokenizuesit të dhënë. | STRING |
stop_tokens | Stop tokens specifikë për modelin. Stop tokens duhet të jenë të pranishëm në modelin e tokenizuesit të dhënë. | LISTA[STRING] |
output_filename | Emri i skedarit të paketës së detyrave të daljes. | SHTEG |
Përshtatje e LoRA-s
API-ja e inferencës LLM të Mediapipe mund të konfigurohet për të mbështetur Përshtatjen me Rang të Ulët (LoRA) për modele të mëdha gjuhësore. Duke përdorur modele LoRA të përmirësuara, zhvilluesit mund të personalizojnë sjelljen e LLM-ve përmes një procesi trajnimi me kosto efektive.Mbështetja LoRA e API-t LLM Inference funksionon për të gjitha variantet Gemma dhe modelet Phi-2 për backend-in e GPU-së, me pesha LoRA të zbatueshme vetëm për shtresat e vëmendjes. Ky implementim fillestar shërben si një API eksperimentale për zhvillimet e ardhshme me plane për të mbështetur më shumë modele dhe lloje të ndryshme shtresash në përditësimet e ardhshme.
Përgatitni modelet LoRA
Ndiqni udhëzimet në HuggingFace për të trajnuar një model LoRA të akorduar imët në të dhënat tuaja me llojet e modeleve të mbështetura, Gemma ose Phi-2. Modelet Gemma-2 2B , Gemma 2B dhe Phi-2 janë të dyja të disponueshme në HuggingFace në formatin safetensors. Meqenëse LLM Inference API mbështet LoRA vetëm në shtresat e vëmendjes, specifikoni vetëm shtresat e vëmendjes gjatë krijimit të LoraConfig si më poshtë:
# 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"],
)
Për testim, ekzistojnë modele LoRA të përshtatura me imtësi dhe të aksesueshme publikisht, të cilat i përshtaten API-t LLM Inference, të disponueshme në HuggingFace. Për shembull, monsterapi/gemma-2b-lora-maths-orca-200k për Gemma-2B dhe lole25/phi-2-sft-ultrachat-lora për Phi-2.
Pas trajnimit në të dhënat e përgatitura dhe ruajtjes së modelit, ju merrni një skedar adapter_model.safetensors që përmban peshat e modelit LoRA të rregulluara imët. Skedari safetensors është pika e kontrollit LoRA e përdorur në konvertimin e modelit.
Si hap tjetër, duhet të konvertoni peshat e modelit në një TensorFlow Lite Flatbuffer duke përdorur Paketën MediaPipe Python. ConversionConfig duhet të specifikojë opsionet e modelit bazë, si dhe opsionet shtesë LoRA. Vini re se meqenëse API mbështet vetëm nxjerrjen e përfundimeve LoRA me GPU, backend-i duhet të vendoset në '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)
Konvertuesi do të nxjerrë dy skedarë flatbuffer TFLite, një për modelin bazë dhe tjetrin për modelin LoRA.
Përfundimi i modelit LoRA
API-ja e Inferencës LLM për Web, Android dhe iOS është përditësuar për të mbështetur inferencën e modelit LoRA.
Android mbështet LoRA statike gjatë inicializimit. Për të ngarkuar një model LoRA, përdoruesit specifikojnë shtegun e modelit LoRA, si dhe LLM-në bazë.// 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)
Për të ekzekutuar inferencën LLM me LoRA, përdorni të njëjtat metoda generateResponse() ose generateResponseAsync() si modeli bazë.