Udhëzuesi i konkluzionit LLM

LLM Inference API 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ën e gjuhës natyrore dhe përmbledhja e dokumenteve. Detyra ofron mbështetje të integruar për modele të shumta të gjuhëve të mëdha tekst-me-tekst, kështu që ju mund të aplikoni modelet më të fundit të AI gjeneruese në pajisje në aplikacionet dhe produktet tuaja.

Provojeni!

Detyra mbështet variantet e mëposhtme të Gemma : Gemma-2 2B, Gemma 2B dhe Gemma 7B. Gemma është një familje modelesh të hapura me peshë të lehtë dhe moderne të ndërtuara nga i njëjti kërkim dhe teknologji e përdorur për krijimin e modeleve Gemini . Ai gjithashtu mbështet modelet e jashtme të mëposhtme: Phi-2 , Falcon-RW-1B dhe StableLM-3B .

Përveç modeleve të mbështetura, mund të përdorni AI Edge Torch të Google për të eksportuar modelet e PyTorch në modelet LiteRT ( tflite ) me shumë nënshkrime, të cilat janë të bashkuara me parametrat e tokenizuesit për të krijuar Paketat e Detyrave që janë të pajtueshme me API-në e konkluzionit LLM. Modelet e konvertuara me AI Edge Torch mund të funksionojnë vetëm në backend të CPU-së dhe për këtë arsye janë të kufizuara në 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 kodesh që përdorin një model të disponueshëm dhe opsionet e rekomanduara të konfigurimit:

Detajet e detyrës

Ky seksion përshkruan aftësitë, hyrjet, daljet dhe opsionet e konfigurimit të kësaj detyre.

Veçoritë

LLM Inference API përmban karakteristikat kryesore të mëposhtme:

  1. Gjenerimi nga tekst në tekst - Gjeneroni tekst bazuar në një kërkesë teksti hyrës.
  2. Zgjedhja e LLM - Aplikoni modele të shumta për të përshtatur aplikacionin për rastet tuaja specifike të përdorimit. Ju gjithashtu mund të ritrajnoni dhe aplikoni pesha të personalizuara për modelin.
  3. Mbështetja LoRA - Zgjeroni dhe personalizoni aftësinë LLM me modelin LoRA ose duke u trajnuar në të gjithë grupin tuaj të të dhënave, ose duke marrë modele të përgatitura të parandërtuara LoRA nga komuniteti me burim të hapur (jo në përputhje me modelet e konvertuara me API-në gjeneruese të AI Edge Torch).
Hyrjet e detyrave Rezultatet e detyrave
LLM Inference API pranon hyrjet e mëposhtme:
  • Prompt teksti (p.sh., një pyetje, një temë emaili, një dokument për t'u përmbledhur)
LLM Inference API nxjerr rezultatet e mëposhtme:
  • Teksti i krijuar bazuar në kërkesën e hyrjes (p.sh., një përgjigje për pyetjen, një draft email, një përmbledhje e dokumentit)

Opsionet e konfigurimeve

Kjo detyrë ka opsionet e mëposhtme të konfigurimit:

Emri i opsionit Përshkrimi Gama e vlerave Vlera e paracaktuar
modelPath Rruga për ku modeli është ruajtur në direktorinë e projektit. SHTEG N/A
maxTokens Numri maksimal i argumenteve (tokenet hyrëse + tokenat e daljes) që trajton modeli. Numër i plotë 512
topK Numri i shenjave që modeli merr në konsideratë në çdo hap të gjenerimit. Kufizon parashikimet në k-tokenat më të mundshëm. Numër i plotë 40
temperature Sasia e rastësisë së paraqitur gjatë gjenerimit. Një temperaturë më e lartë rezulton në më shumë kreativitet në tekstin e krijuar, ndërsa një temperaturë më e ulët prodhon gjenerim më të parashikueshëm. noton 0.8
randomSeed Fara e rastësishme e përdorur gjatë gjenerimit të tekstit. Numër i plotë 0
loraPath Rruga absolute drejt modelit LoRA lokalisht në pajisje. Shënim: kjo është e përputhshme vetëm me modelet GPU. SHTEG N/A
resultListener Vendos dëgjuesin e rezultateve që të marrë rezultatet në mënyrë asinkrone. Zbatohet vetëm kur përdoret metoda e gjenerimit asinkron. N/A N/A
errorListener Vendos një dëgjues opsional gabimi. N/A N/A

Modelet

API-ja e konkluzionit LLM mbështet shumë modele të gjuhëve të mëdha 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 celulare. Këto modele të lehta mund të përdoren për të ekzekutuar konkluzionet plotësisht në pajisje.

Përpara se të inicializoni API-në e konkluzionit LLM, shkarkoni një model dhe ruajeni skedarin brenda drejtorisë së projektit tuaj. Mund të përdorni një model të para-konvertuar ose të konvertoni një model në një format të pajtueshëm me MediaPipe.

LLM Inference API është i pajtueshëm me dy kategori llojesh modelesh, disa prej të cilave kërkojnë konvertim modeli. Përdorni tabelën për të identifikuar metodën e hapave të kërkuar për modelin tuaj.

Modelet Metoda e konvertimit Platformat e përputhshme Lloji i skedarit
Modelet e mbështetura Gemma 2B, Gemma 7B, Gemma-2 2B, Phi-2, StableLM, Falcon MediaPipe Android, iOS, ueb .bin
Modele të tjera PyTorch Të gjitha modelet PyTorch LLM Biblioteka gjeneruese e AI Edge Torch Android, iOS .detyrë

Ne po presim skedarët .bin të konvertuar për Gemma 2B, Gemma 7B dhe Gemma-2 2B në Kaggle. Këto modele mund të vendosen drejtpërdrejt duke përdorur API-në tonë të konkluzionit LLM. Për të mësuar se si mund të konvertoni modele të tjera, shihni seksionin "Konvertimi i modelit" .

Gemma-2 2B

Gemma-2 2B është modeli më i fundit në familjen Gemma të modeleve të hapura me peshë të lehtë dhe moderne të ndërtuara nga i njëjti kërkim dhe teknologji e përdorur për krijimin e modeleve Gemini . Modeli përmban parametra 2B dhe pesha të hapura. Gemma-2 2B është i njohur për aftësitë më të fundit të arsyetimit për modelet në klasën e tij.

Shkarkoni Gemma-2 2B

Modelet Gemma-2 2B janë në dispozicion në variantet e mëposhtme:

Ju gjithashtu mund të akordoni modelin dhe të shtoni pesha të reja përpara se ta shtoni atë në aplikacion. Për më shumë informacion mbi akordimin dhe personalizimin e Gemma, shihni Tuning Gemma . Pas shkarkimit të Gemma-2 2B nga Kaggle Models , modeli është tashmë në formatin e duhur për t'u përdorur me MediaPipe Tasks.

Gemma 2B

Gemma 2B është një pjesë e një familjeje modelesh të hapura të lehta dhe moderne të ndërtuara nga i njëjti kërkim dhe teknologji e përdorur për krijimin e modeleve Gemini . Modeli përmban parametra 2B dhe pesha të hapura. Ky model është i përshtatshëm për një sërë detyrash të gjenerimit të tekstit, duke përfshirë përgjigjen e pyetjeve, përmbledhjen dhe arsyetimin.

Shkarkoni Gemma 2B

Modelet Gemma 2B janë në dispozicion në variantet e mëposhtme:

Ju gjithashtu mund të akordoni modelin dhe të shtoni pesha të reja përpara se ta shtoni atë në aplikacion. Për më shumë informacion mbi akordimin dhe personalizimin e Gemma, shihni Tuning Gemma . Pas shkarkimit të Gemma 2B nga Kaggle Models , modeli është tashmë në formatin e duhur për t'u përdorur me MediaPipe Tasks.

Gemma 7B

Gemma 7B është një model më i madh Gemma me parametra 7B dhe pesha të hapura. Modeli është më i fuqishëm për një sërë detyrash të gjenerimit të tekstit, duke përfshirë përgjigjen e pyetjeve, përmbledhjen dhe arsyetimin. Gemma 7B mbështetet vetëm në ueb.

Shkarkoni Gemma 7B

Modeli Gemma 7B vjen në një variant:

Pas shkarkimit të Gemma 7B nga Kaggle Models , modeli është tashmë në formatin e duhur për t'u përdorur me MediaPipe.

Skifter 1B

Falcon-1B është një model me 1 miliard parametra vetëm për dekoderin shkakësor i trajnuar në 350B shenja të RefinedWeb .

Shkarkoni Falcon 1B

LLM Inference API kërkon që skedarët e mëposhtëm të shkarkohen dhe të ruhen në nivel lokal:

  • tokenizer.json
  • tokenizer_config.json
  • pytorch_model.bin

Pas shkarkimit të skedarëve të modelit Falcon, modeli është gati për t'u konvertuar në formatin MediaPipe me një skript konvertimi. Ndiqni hapat në seksionin "Konvertimi për modelet e mbështetura" .

StableLM 3B

StableLM-3B është një model gjuhësor vetëm me dekoder 3 miliardë parametrash, i para-trajnuar në 1 trilion shenja të të dhënave të ndryshme angleze dhe kodesh për 4 epoka.

Shkarkoni StableLM 3B

LLM Inference API kërkon që skedarët e mëposhtëm të shkarkohen dhe të ruhen në nivel lokal:

  • tokenizer.json
  • tokenizer_config.json
  • model.safetensors

Pas shkarkimit të skedarëve të modelit StableLM, modeli është gati për t'u konvertuar në formatin MediaPipe me një skript konvertimi. Ndiqni hapat në seksionin "Konvertimi për modelet e mbështetura" .

Phi-2

Phi-2 është një model Transformer me parametra 2.7 miliardë. Ai u trajnua duke përdorur tekste të ndryshme sintetike NLP dhe faqe interneti të filtruara. Modeli është më i përshtatshmi për kërkesat që përdorin formatin Pyetje-Përgjigje, bisedë dhe kod.

Shkarkoni Phi-2

LLM Inference API kërkon që skedarët e mëposhtëm të shkarkohen dhe të ruhen në nivel lokal:

  • tokenizer.json
  • tokenizer_config.json
  • model-00001-of-00002.safetensors
  • model-00002-of-00002.safetensors

Pas shkarkimit të skedarëve të modelit Phi-2, modeli është gati për t'u konvertuar në formatin MediaPipe me një skript konvertimi. Ndiqni hapat në seksionin "Konvertimi për modelet e mbështetura" .

Modelet gjeneruese të PyTorch

Modelet gjeneruese të PyTorch mund të konvertohen në një format të pajtueshëm me MediaPipe me API-në gjeneruese të AI Edge Torch . Ju mund të përdorni API për të kthyer modelet PyTorch në modele LiteRT (TensorFlow Lite) me shumë nënshkrime. Për më shumë detaje mbi hartimin dhe eksportimin e modeleve, vizitoni faqen AI Edge Torch GitHub .

Nëse keni ndërmend të përdorni API-në gjeneruese të AI Edge Torch për të konvertuar një model PyTorch, ndiqni hapat në seksionin e konvertuesit Torch Generative për modelet PyTorch .

Konvertimi i modelit

MediaPipe LLM Inference API ju lejon të ekzekutoni një shumëllojshmëri të gjerë modelesh të mëdha gjuhësore në pajisje. Kjo përfshin modelet që janë konvertuar paraprakisht në një format të përputhshëm me MediaPipe, si dhe modele të tjera që mund të konvertohen me një skript konvertimi ose bibliotekën AI Edge Torch.

LLM Inference API pranon modele në formatet e skedarëve .bin dhe .task . Modelet e para-konvertuara dhe modelet e konvertuara me skriptin e konvertimit do të jenë skedarë .bin , ndërsa modelet e konvertuara me bibliotekën AI Edge Torch do të jenë skedarë .task . Mos i ndryshoni manualisht formatet e skedarëve të modeleve tuaja të konvertuara.

API-ja e konkluzionit LLM përmban tre shtigje të konvertimit të modelit:

Modele të para-konvertuara

Modelet Gemma-2 2B, Gemma 2B dhe Gemma 7B janë të disponueshme si modele të para-konvertuara në formatin MediaPipe. Këto modele nuk kërkojnë ndonjë hap shtesë konvertimi nga përdoruesi dhe mund të ekzekutohen siç është me API-në e konkluzionit LLM.

Ju mund ta shkarkoni Gemma-2 2B nga Kaggle Models:

Mund të shkarkoni variante të Gemma 2B nga Kaggle Models:

Ju mund ta shkarkoni Gemma 7B nga Kaggle Models:

Për më shumë informacion mbi modelet Gemma, shihni dokumentacionin për Gemma-2 2B , Gemma 2B dhe Gemma 7B .

Skripti i konvertimit për modelet e mbështetura

Paketa MediaPipe ofron një skript konvertimi për të kthyer modelet e jashtme të mëposhtme në një format të pajtueshëm me MediaPipe:

Për më shumë informacion mbi modelet e jashtme të mbështetura, shihni dokumentacionin për Falcon 1B , StableLM 3B dhe Phi-2 .

Procesi i konvertimit të modelit kërkon paketën MediaPipe PyPI. Skripti i konvertimit është i disponueshëm në të gjitha paketat MediaPipe pas datës 0.10.11 .

Instaloni dhe importoni varësitë me sa vijon:

$ python3 -m pip install mediapipe

Përdorni bibliotekën genai.converter për të kthyer modelin:

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)

Për të konvertuar modelin LoRA, ConversionConfig duhet të specifikojë opsionet e modelit bazë si dhe opsionet shtesë LoRA. Vini re se meqenëse API mbështet vetëm konkluzionet LoRA me GPU, pjesa e pasme 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ë TFLite flatbuffer, një për modelin bazë dhe tjetri për modelin LoRA.

Parametri Përshkrimi Vlerat e pranuara
input_ckpt Rruga drejt skedarit model.safetensors ose pytorch.bin . Vini re se ndonjëherë formati i modelit të sigurisë së sigurisë ndahet në skedarë të shumtë, p.sh. model-00001-of-00003.safetensors , model-00001-of-00003.safetensors . Mund të specifikoni një model skedari, si model*.safetensors . SHTEG
ckpt_format Formati i skedarit të modelit. {"safetensors", "pytorch"}
model_type LLM po konvertohet. {"PHI_2", "FALCON_RW_1B", "STABLELM_4E1T_3B", "GEMMA_2B"}
backend Procesori (delegati) i përdorur për të drejtuar modelin. {"cpu", "gpu"}
output_dir Rruga drejt drejtorisë së daljes që pret skedarët e peshës për shtresë. SHTEG
output_tflite_file Rruga për në skedarin e daljes. Për shembull, "model_cpu.bin" ose "model_gpu.bin". Ky skedar është i pajtueshëm vetëm me LLM Inference API dhe nuk mund të përdoret si skedar i përgjithshëm `tflite`. SHTEG
vocab_model_file Rruga drejt drejtorisë që ruan skedarët tokenizer.json dhe tokenizer_config.json . Për Gemma, tregoni skedarin e vetëm tokenizer.model . SHTEG
lora_ckpt Rruga për në skedarin LoRA ckpt të sensorëve të sigurisë që ruan peshën e përshtatësit LoRA. SHTEG
lora_rank Një numër i plotë që përfaqëson gradën e LoRA ckpt. Kërkohet për të konvertuar peshat e lorës. Nëse nuk ofrohet, atëherë konverteri supozon se nuk ka pesha LoRA. Shënim: Vetëm prapavija e GPU-së mbështet LoRA. Numër i plotë
lora_output_tflite_file Nxjerr emrin e skedarit tflite për peshat LoRA. SHTEG

Konvertuesi gjenerues i pishtarit për modelet PyTorch

Modelet gjeneruese të PyTorch mund të konvertohen në një format të pajtueshëm me MediaPipe me API-në gjeneruese të AI Edge Torch . Ju mund të përdorni API-në për të autorizuar, konvertuar dhe kuantizuar PyTorch LLM për t'u përdorur me API-në e konkluzionit LLM. Konvertuesi Torch Generative konvertohet vetëm për CPU dhe kërkon një makinë Linux me të paktën 64 GB RAM.

Konvertimi i një modeli PyTorch me API-në gjeneruese të AI Edge Torch përfshin sa vijon:

  1. Shkarkoni pikat e kontrollit të modelit PyTorch
  2. Përdorni API-në gjeneruese të AI Edge Torch për të autorizuar, konvertuar dhe kuantizuar modelin në një format skedari të pajtueshëm me MediaPipe ( .tflite ).
  3. Krijoni një grup detyrash ( .task ) nga skedari tflite dhe modeli i tokenizuesit.

Për të krijuar një grup detyrash, përdorni skriptin e paketimit për të krijuar një grup detyrash . Procesi i grumbullimit e paketon modelin e hartuar me meta të dhëna shtesë (p.sh. Parametrat e Tokenizer) të nevojshme për të ekzekutuar konkluzionet nga fundi në fund.

Procesi i grumbullimit të modelit kërkon paketën MediaPipe PyPI. Skripti i konvertimit është i disponueshëm në të gjitha paketat MediaPipe pas datës 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ë bashkuar 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 Rruga drejt modelit TFLite të eksportuar nga AI Edge. SHTEG
tokenizer_model Rruga drejt modelit të tokenizuesit SentencePiece. SHTEG
start_token Shenja fillestare specifike e modelit. Shenja e fillimit duhet të jetë e pranishme në modelin e dhënë të tokenizuesit. STRING
stop_tokens Modele specifike të ndalimit. Shenjat e ndalimit duhet të jenë të pranishëm në modelin e dhënë të tokenizuesit. LIST[STRING]
output_filename Emri i skedarit të grupit të detyrave dalëse. SHTEG

Përshtatje LoRA

API-ja e konkluzionit të Mediapipe LLM mund të konfigurohet për të mbështetur Përshtatjen e Rangut të Ulët (LoRA) për modelet e gjuhëve të mëdha. Duke përdorur modele LoRA të rregulluara mirë, zhvilluesit mund të personalizojnë sjelljen e LLM-ve përmes një procesi trajnimi me kosto efektive.

Mbështetja LoRA e API-së LLM Inference funksionon për të gjitha variantet Gemma dhe modelet Phi-2 për prapavijën e GPU-së, me peshat LoRA të zbatueshme vetëm për shtresat e vëmendjes. Ky zbatim 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 mirë në grupin tuaj të të dhënave me llojet e modeleve të mbështetura, Gemma ose Phi-2. Modelet Gemma-2 2B , Gemma 2B dhe Phi-2 janë të dy të disponueshme në HuggingFace në formatin e siguresave. 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ë akorduara mirë të aksesueshme nga publiku që përshtaten me API-në e konkluzionit LLM 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 për grupin e të dhënave të përgatitur dhe ruajtjes së modelit, ju merrni një skedar adapter_model.safetensors që përmban peshat e modelit LoRA të rregulluara mirë. Skedari i siguruesve është pika e kontrollit LoRA e përdorur në konvertimin e modelit.

Si hap tjetër, ju 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ë të LoRA. Vini re se meqenëse API mbështet vetëm konkluzionet LoRA me GPU, pjesa e pasme 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ë TFLite flatbuffer, një për modelin bazë dhe tjetri për modelin LoRA.

Konkluzioni i modelit LoRA

Web, Android dhe iOS LLM Inference API janë përditësuar për të mbështetur konkluzionet 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 bazën 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)

Për të ekzekutuar konkluzionet LLM me LoRA, përdorni të njëjtat generateResponse() generateResponseAsync() si modeli bazë.