LLM Inference API ju lejon të ekzekutoni modele të mëdha gjuhësore (LLM) plotësisht në pajisje për aplikacione ueb, 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 tuaja në ueb.
Për të shtuar shpejt API-në e konkluzionit LLM në aplikacionin tuaj në ueb, ndiqni " Fillimin e shpejtë" . Për një shembull bazë të një aplikacioni në ueb që ekzekuton API-në e konkluzionit LLM, shihni shembullin e aplikacionit . Për një kuptim më të thellë se si funksionon API-ja e konkluzionit LLM, referojuni opsioneve të konfigurimit , konvertimit të modelit dhe seksioneve të akordimit LoRA .
Ju mund ta shihni këtë detyrë në veprim me demonstrimin e MediaPipe Studio . Për më shumë informacion rreth aftësive, modeleve dhe opsioneve të konfigurimit të kësaj detyre, shihni Përmbledhjen .
Fillimi i shpejtë
Përdorni hapat e mëposhtëm për të shtuar API-në e konkluzionit LLM në aplikacionin tuaj në ueb. LLM Inference API kërkon një shfletues uebi me pajtueshmëri me WebGPU. Për një listë të plotë të shfletuesve të përputhshëm, shihni pajtueshmërinë e shfletuesit GPU .
Shto varësi
LLM Inference API përdor paketën @mediapipe/tasks-genai
.
Instaloni paketat e kërkuara për vendosjen lokale:
npm install @mediapipe/tasks-genai
Për t'u vendosur në një server, përdorni një shërbim të rrjetit të ofrimit të përmbajtjes (CDN) si jsDelivr për të shtuar kodin direkt në faqen tuaj HTML:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai/genai_bundle.cjs"
crossorigin="anonymous"></script>
</head>
Shkarkoni një model
Shkarkoni Gemma-2 2B në një format të kuantizuar 8-bit nga Kaggle Models . Për më shumë informacion mbi modelet e disponueshme, shihni dokumentacionin e Modeleve .
Ruani modelin në direktorinë e projektit tuaj:
<dev-project-root>/assets/gemma-2b-it-gpu-int8.bin
Specifikoni shtegun e modelit me parametrin e objektit baseOptions
modelAssetPath
:
baseOptions: { modelAssetPath: `/assets/gemma-2b-it-gpu-int8.bin`}
Inicializoni Detyrën
Inicializoni detyrën me opsionet bazë të konfigurimit:
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
});
Ekzekutoni detyrën
Përdorni generateResponse()
për të shkaktuar konkluzione.
const response = await llmInference.generateResponse(inputPrompt);
document.getElementById('output').textContent = response;
Për të transmetuar përgjigjen, përdorni sa vijon:
llmInference.generateResponse(
inputPrompt,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
Shembull aplikimi
Aplikacioni mostër është një shembull i një aplikacioni bazë të gjenerimit të tekstit për Ueb, duke përdorur API-në LLM Inference. Mund ta përdorni aplikacionin si pikënisje për aplikacionin tuaj në ueb ose t'i referoheni kur modifikoni një aplikacion ekzistues. Kodi i shembullit është pritur në GitHub .
Klononi depon e git duke përdorur komandën e mëposhtme:
git clone https://github.com/google-ai-edge/mediapipe-samples
Për më shumë informacion, shihni Udhëzuesin e konfigurimit për ueb .
Opsionet e konfigurimit
Përdorni opsionet e mëposhtme të konfigurimit për të konfiguruar një aplikacion ueb:
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 |
loraRanks | LoRA renditet për t'u përdorur nga modelet LoRA gjatë kohës së ekzekutimit. Shënim: kjo është e përputhshme vetëm me modelet GPU. | Vargu me numra të plotë | N/A |
Konvertimi i modelit
LLM Inference API është në përputhje me llojet e mëposhtme të modeleve, 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 |
---|---|---|---|
Gemma-3 1B | Nuk kërkohet konvertim | Android, ueb | .detyrë |
Gemma 2B, Gemma 7B, Gemma-2 2B | Nuk kërkohet konvertim | Android, iOS, ueb | .bin |
Phi-2, StableLM, Falcon | Skripti i konvertimit të MediaPipe | Android, iOS, ueb | .bin |
Të gjitha modelet PyTorch LLM | Biblioteka gjeneruese e AI Edge Torch | Android, iOS | .detyrë |
Për të mësuar se si mund të konvertoni modele të tjera, shihni seksionin "Konvertimi i modelit" .
Përshtatje LoRA
API-ja e konkluzionit LLM mbështet akordimin LoRA (Përshtatje me gradë të ulët) duke përdorur bibliotekën PEFT (Parameter-Efficient Fine-Tuning). Akordimi LoRA personalizon sjelljen e LLM-ve përmes një procesi trajnimi me kosto efektive, duke krijuar një grup të vogël peshash të trajnueshme bazuar në të dhënat e reja të trajnimit në vend që të ritrajnojë të gjithë modelin.
LLM Inference API mbështet shtimin e peshave LoRA në shtresat e vëmendjes të modeleve Gemma-2 2B , Gemma 2B dhe Phi-2 . Shkarkoni modelin në formatin safetensors
.
Modeli bazë duhet të jetë në formatin e safetensors
për të krijuar pesha LoRA. Pas trajnimit LoRA, mund t'i konvertoni modelet në formatin FlatBuffers për t'u ekzekutuar në MediaPipe.
Përgatitni peshat LoRA
Përdorni udhëzuesin LoRA Methods nga PEFT për të trajnuar një model LoRA të rregulluar mirë në grupin tuaj të të dhënave.
API-ja e konkluzionit LLM mbështet LoRA vetëm në shtresat e vëmendjes, kështu që specifikoni vetëm shtresat e vëmendjes në 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"],
)
Pas trajnimit mbi grupin e të dhënave të përgatitur dhe ruajtjes së modelit, peshat e modelit LoRA të rregulluara mirë janë të disponueshme në adapter_model.safetensors
. Skedari safetensors
është pika e kontrollit LoRA e përdorur gjatë konvertimit të modelit.
Konvertimi i modelit
Përdorni Paketën MediaPipe Python për të kthyer peshat e modelit në formatin Flatbuffer. ConversionConfig
specifikon opsionet e modelit bazë së bashku me opsionet shtesë 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)
Konvertuesi do të prodhojë dy skedarë të përputhshëm me MediaPipe, një për modelin bazë dhe një tjetër për modelin LoRA.
Konkluzioni i modelit LoRA
Uebi mbështet LoRA dinamike gjatë kohës së ekzekutimit, që do të thotë se përdoruesit deklarojnë renditjet e LoRA gjatë inicializimit. Kjo do të thotë që ju mund të ndërroni modele të ndryshme LoRA gjatë kohës së ekzekutimit.
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]
});
Ngarkoni modelet LoRA gjatë kohës së ekzekutimit, pas inicializimit të modelit bazë. Aktivizoni modelin LoRA duke kaluar referencën e modelit kur gjeneroni përgjigjen LLM.
// 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 ju lejon të ekzekutoni modele të mëdha gjuhësore (LLM) plotësisht në pajisje për aplikacione ueb, 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 tuaja në ueb.
Për të shtuar shpejt API-në e konkluzionit LLM në aplikacionin tuaj në ueb, ndiqni " Fillimin e shpejtë" . Për një shembull bazë të një aplikacioni në ueb që ekzekuton API-në e konkluzionit LLM, shihni shembullin e aplikacionit . Për një kuptim më të thellë se si funksionon API-ja e konkluzionit LLM, referojuni opsioneve të konfigurimit , konvertimit të modelit dhe seksioneve të akordimit LoRA .
Ju mund ta shihni këtë detyrë në veprim me demonstrimin e MediaPipe Studio . Për më shumë informacion rreth aftësive, modeleve dhe opsioneve të konfigurimit të kësaj detyre, shihni Përmbledhjen .
Fillimi i shpejtë
Përdorni hapat e mëposhtëm për të shtuar API-në e konkluzionit LLM në aplikacionin tuaj në ueb. LLM Inference API kërkon një shfletues uebi me pajtueshmëri me WebGPU. Për një listë të plotë të shfletuesve të përputhshëm, shihni pajtueshmërinë e shfletuesit GPU .
Shto varësi
LLM Inference API përdor paketën @mediapipe/tasks-genai
.
Instaloni paketat e kërkuara për vendosjen lokale:
npm install @mediapipe/tasks-genai
Për t'u vendosur në një server, përdorni një shërbim të rrjetit të ofrimit të përmbajtjes (CDN) si jsDelivr për të shtuar kodin direkt në faqen tuaj HTML:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai/genai_bundle.cjs"
crossorigin="anonymous"></script>
</head>
Shkarkoni një model
Shkarkoni Gemma-2 2B në një format të kuantizuar 8-bit nga Kaggle Models . Për më shumë informacion mbi modelet e disponueshme, shihni dokumentacionin e Modeleve .
Ruani modelin në direktorinë e projektit tuaj:
<dev-project-root>/assets/gemma-2b-it-gpu-int8.bin
Specifikoni shtegun e modelit me parametrin e objektit baseOptions
modelAssetPath
:
baseOptions: { modelAssetPath: `/assets/gemma-2b-it-gpu-int8.bin`}
Inicializoni detyrën
Inicializoni detyrën me opsionet bazë të konfigurimit:
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
});
Ekzekutoni detyrën
Përdorni generateResponse()
për të shkaktuar konkluzione.
const response = await llmInference.generateResponse(inputPrompt);
document.getElementById('output').textContent = response;
Për të transmetuar përgjigjen, përdorni sa vijon:
llmInference.generateResponse(
inputPrompt,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
Shembull aplikimi
Aplikacioni mostër është një shembull i një aplikacioni bazë të gjenerimit të tekstit për Ueb, duke përdorur API-në LLM Inference. Mund ta përdorni aplikacionin si pikënisje për aplikacionin tuaj në ueb ose t'i referoheni kur modifikoni një aplikacion ekzistues. Kodi i shembullit është pritur në GitHub .
Klononi depon e git duke përdorur komandën e mëposhtme:
git clone https://github.com/google-ai-edge/mediapipe-samples
Për më shumë informacion, shihni Udhëzuesin e konfigurimit për ueb .
Opsionet e konfigurimit
Përdorni opsionet e mëposhtme të konfigurimit për të konfiguruar një aplikacion ueb:
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 |
loraRanks | LoRA renditet për t'u përdorur nga modelet LoRA gjatë kohës së ekzekutimit. Shënim: kjo është e përputhshme vetëm me modelet GPU. | Vargu me numra të plotë | N/A |
Konvertimi i modelit
LLM Inference API është në përputhje me llojet e mëposhtme të modeleve, 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 |
---|---|---|---|
Gemma-3 1B | Nuk kërkohet konvertim | Android, ueb | .detyrë |
Gemma 2B, Gemma 7B, Gemma-2 2B | Nuk kërkohet konvertim | Android, iOS, ueb | .bin |
Phi-2, StableLM, Falcon | Skripti i konvertimit të MediaPipe | Android, iOS, ueb | .bin |
Të gjitha modelet PyTorch LLM | Biblioteka gjeneruese e AI Edge Torch | Android, iOS | .detyrë |
Për të mësuar se si mund të konvertoni modele të tjera, shihni seksionin "Konvertimi i modelit" .
Përshtatje LoRA
API-ja e konkluzionit LLM mbështet akordimin LoRA (Përshtatje me gradë të ulët) duke përdorur bibliotekën PEFT (Parameter-Efficient Fine-Tuning). Akordimi LoRA personalizon sjelljen e LLM-ve përmes një procesi trajnimi me kosto efektive, duke krijuar një grup të vogël peshash të trajnueshme bazuar në të dhënat e reja të trajnimit në vend që të ritrajnojë të gjithë modelin.
LLM Inference API mbështet shtimin e peshave LoRA në shtresat e vëmendjes të modeleve Gemma-2 2B , Gemma 2B dhe Phi-2 . Shkarkoni modelin në formatin safetensors
.
Modeli bazë duhet të jetë në formatin e safetensors
për të krijuar pesha LoRA. Pas trajnimit LoRA, mund t'i konvertoni modelet në formatin FlatBuffers për t'u ekzekutuar në MediaPipe.
Përgatitni peshat LoRA
Përdorni udhëzuesin LoRA Methods nga PEFT për të trajnuar një model LoRA të rregulluar mirë në grupin tuaj të të dhënave.
API-ja e konkluzionit LLM mbështet LoRA vetëm në shtresat e vëmendjes, kështu që specifikoni vetëm shtresat e vëmendjes në 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"],
)
Pas trajnimit mbi grupin e të dhënave të përgatitur dhe ruajtjes së modelit, peshat e modelit LoRA të rregulluara mirë janë të disponueshme në adapter_model.safetensors
. Skedari safetensors
është pika e kontrollit LoRA e përdorur gjatë konvertimit të modelit.
Konvertimi i modelit
Përdorni Paketën MediaPipe Python për të kthyer peshat e modelit në formatin Flatbuffer. ConversionConfig
specifikon opsionet e modelit bazë së bashku me opsionet shtesë 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)
Konvertuesi do të prodhojë dy skedarë të përputhshëm me MediaPipe, një për modelin bazë dhe një tjetër për modelin LoRA.
Konkluzioni i modelit LoRA
Uebi mbështet LoRA dinamike gjatë kohës së ekzekutimit, që do të thotë se përdoruesit deklarojnë renditjet e LoRA gjatë inicializimit. Kjo do të thotë që ju mund të ndërroni modele të ndryshme LoRA gjatë kohës së ekzekutimit.
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]
});
Ngarkoni modelet LoRA gjatë kohës së ekzekutimit, pas inicializimit të modelit bazë. Aktivizoni modelin LoRA duke kaluar referencën e modelit kur gjeneroni përgjigjen LLM.
// 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 ju lejon të ekzekutoni modele të mëdha gjuhësore (LLM) plotësisht në pajisje për aplikacione ueb, 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 tuaja në ueb.
Për të shtuar shpejt API-në e konkluzionit LLM në aplikacionin tuaj në ueb, ndiqni " Fillimin e shpejtë" . Për një shembull bazë të një aplikacioni në ueb që ekzekuton API-në e konkluzionit LLM, shihni shembullin e aplikacionit . Për një kuptim më të thellë se si funksionon API-ja e konkluzionit LLM, referojuni opsioneve të konfigurimit , konvertimit të modelit dhe seksioneve të akordimit LoRA .
Ju mund ta shihni këtë detyrë në veprim me demonstrimin e MediaPipe Studio . Për më shumë informacion rreth aftësive, modeleve dhe opsioneve të konfigurimit të kësaj detyre, shihni Përmbledhjen .
Fillimi i shpejtë
Përdorni hapat e mëposhtëm për të shtuar API-në e konkluzionit LLM në aplikacionin tuaj në ueb. LLM Inference API kërkon një shfletues uebi me pajtueshmëri me WebGPU. Për një listë të plotë të shfletuesve të përputhshëm, shihni pajtueshmërinë e shfletuesit GPU .
Shto varësi
LLM Inference API përdor paketën @mediapipe/tasks-genai
.
Instaloni paketat e kërkuara për vendosjen lokale:
npm install @mediapipe/tasks-genai
Për t'u vendosur në një server, përdorni një shërbim të rrjetit të ofrimit të përmbajtjes (CDN) si jsDelivr për të shtuar kodin direkt në faqen tuaj HTML:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai/genai_bundle.cjs"
crossorigin="anonymous"></script>
</head>
Shkarkoni një model
Shkarkoni Gemma-2 2B në një format të kuantizuar 8-bit nga Kaggle Models . Për më shumë informacion mbi modelet e disponueshme, shihni dokumentacionin e Modeleve .
Ruani modelin brenda drejtorisë së projektit tuaj:
<dev-project-root>/assets/gemma-2b-it-gpu-int8.bin
Specifikoni shtegun e modelit me parametrin e objektit baseOptions
modelAssetPath
:
baseOptions: { modelAssetPath: `/assets/gemma-2b-it-gpu-int8.bin`}
Inicializoni Detyrën
Inicializoni detyrën me opsionet bazë të konfigurimit:
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
});
Ekzekutoni detyrën
Përdorni generateResponse()
për të shkaktuar konkluzione.
const response = await llmInference.generateResponse(inputPrompt);
document.getElementById('output').textContent = response;
Për të transmetuar përgjigjen, përdorni sa vijon:
llmInference.generateResponse(
inputPrompt,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
Shembull aplikimi
Aplikacioni mostër është një shembull i një aplikacioni bazë të gjenerimit të tekstit për Ueb, duke përdorur API-në LLM Inference. Mund ta përdorni aplikacionin si pikënisje për aplikacionin tuaj në ueb ose t'i referoheni kur modifikoni një aplikacion ekzistues. Kodi i shembullit është pritur në GitHub .
Klononi depon e git duke përdorur komandën e mëposhtme:
git clone https://github.com/google-ai-edge/mediapipe-samples
Për më shumë informacion, shihni Udhëzuesin e konfigurimit për ueb .
Opsionet e konfigurimit
Përdorni opsionet e mëposhtme të konfigurimit për të konfiguruar një aplikacion ueb:
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 |
loraRanks | LoRA renditet për t'u përdorur nga modelet LoRA gjatë kohës së ekzekutimit. Shënim: kjo është e përputhshme vetëm me modelet GPU. | Vargu me numra të plotë | N/A |
Konvertimi i modelit
LLM Inference API është në përputhje me llojet e mëposhtme të modeleve, 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 |
---|---|---|---|
Gemma-3 1B | Nuk kërkohet konvertim | Android, ueb | .detyrë |
Gemma 2B, Gemma 7B, Gemma-2 2B | Nuk kërkohet konvertim | Android, iOS, ueb | .bin |
Phi-2, StableLM, Falcon | Skripti i konvertimit të MediaPipe | Android, iOS, ueb | .bin |
Të gjitha modelet PyTorch LLM | Biblioteka gjeneruese e AI Edge Torch | Android, iOS | .detyrë |
Për të mësuar se si mund të konvertoni modele të tjera, shihni seksionin "Konvertimi i modelit" .
Përshtatje LoRA
API-ja e konkluzionit LLM mbështet akordimin LoRA (Përshtatje me gradë të ulët) duke përdorur bibliotekën PEFT (Parameter-Efficient Fine-Tuning). Akordimi LoRA personalizon sjelljen e LLM-ve përmes një procesi trajnimi me kosto efektive, duke krijuar një grup të vogël peshash të trajnueshme bazuar në të dhënat e reja të trajnimit në vend që të ritrajnojë të gjithë modelin.
LLM Inference API mbështet shtimin e peshave LoRA në shtresat e vëmendjes të modeleve Gemma-2 2B , Gemma 2B dhe Phi-2 . Shkarkoni modelin në formatin safetensors
.
Modeli bazë duhet të jetë në formatin e safetensors
për të krijuar pesha LoRA. Pas trajnimit LoRA, mund t'i konvertoni modelet në formatin FlatBuffers për t'u ekzekutuar në MediaPipe.
Përgatitni peshat LoRA
Përdorni udhëzuesin LoRA Methods nga PEFT për të trajnuar një model LoRA të rregulluar mirë në grupin tuaj të të dhënave.
API-ja e konkluzionit LLM mbështet LoRA vetëm në shtresat e vëmendjes, kështu që specifikoni vetëm shtresat e vëmendjes në 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"],
)
Pas trajnimit mbi grupin e të dhënave të përgatitur dhe ruajtjes së modelit, peshat e modelit LoRA të rregulluara mirë janë të disponueshme në adapter_model.safetensors
. Skedari safetensors
është pika e kontrollit LoRA e përdorur gjatë konvertimit të modelit.
Konvertimi i modelit
Përdorni Paketën MediaPipe Python për të kthyer peshat e modelit në formatin Flatbuffer. ConversionConfig
specifikon opsionet e modelit bazë së bashku me opsionet shtesë 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)
Konvertuesi do të prodhojë dy skedarë të përputhshëm me MediaPipe, një për modelin bazë dhe një tjetër për modelin LoRA.
Konkluzioni i modelit LoRA
Uebi mbështet LoRA dinamike gjatë kohës së ekzekutimit, që do të thotë se përdoruesit deklarojnë renditjet e LoRA gjatë inicializimit. Kjo do të thotë që ju mund të ndërroni modele të ndryshme LoRA gjatë kohës së ekzekutimit.
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]
});
Ngarkoni modelet LoRA gjatë kohës së ekzekutimit, pas inicializimit të modelit bazë. Aktivizoni modelin LoRA duke kaluar referencën e modelit kur gjeneroni përgjigjen LLM.
// 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 ju lejon të ekzekutoni modele të mëdha gjuhësore (LLM) plotësisht në pajisje për aplikacione ueb, 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 tuaja në ueb.
Për të shtuar shpejt API-në e konkluzionit LLM në aplikacionin tuaj në ueb, ndiqni " Fillimin e shpejtë" . Për një shembull bazë të një aplikacioni në ueb që ekzekuton API-në e konkluzionit LLM, shihni shembullin e aplikacionit . Për një kuptim më të thellë se si funksionon API-ja e konkluzionit LLM, referojuni opsioneve të konfigurimit , konvertimit të modelit dhe seksioneve të akordimit LoRA .
Ju mund ta shihni këtë detyrë në veprim me demonstrimin e MediaPipe Studio . Për më shumë informacion rreth aftësive, modeleve dhe opsioneve të konfigurimit të kësaj detyre, shihni Përmbledhjen .
Fillimi i shpejtë
Përdorni hapat e mëposhtëm për të shtuar API-në e konkluzionit LLM në aplikacionin tuaj në ueb. LLM Inference API kërkon një shfletues uebi me pajtueshmëri me WebGPU. Për një listë të plotë të shfletuesve të përputhshëm, shihni pajtueshmërinë e shfletuesit GPU .
Shto varësi
LLM Inference API përdor paketën @mediapipe/tasks-genai
.
Instaloni paketat e kërkuara për vendosjen lokale:
npm install @mediapipe/tasks-genai
Për t'u vendosur në një server, përdorni një shërbim të rrjetit të ofrimit të përmbajtjes (CDN) si jsDelivr për të shtuar kodin direkt në faqen tuaj HTML:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai/genai_bundle.cjs"
crossorigin="anonymous"></script>
</head>
Shkarkoni një model
Shkarkoni Gemma-2 2B në një format të kuantizuar 8-bit nga Kaggle Models . Për më shumë informacion mbi modelet e disponueshme, shihni dokumentacionin e Modeleve .
Ruani modelin në direktorinë e projektit tuaj:
<dev-project-root>/assets/gemma-2b-it-gpu-int8.bin
Specifikoni shtegun e modelit me parametrin e objektit baseOptions
modelAssetPath
:
baseOptions: { modelAssetPath: `/assets/gemma-2b-it-gpu-int8.bin`}
Inicializoni Detyrën
Inicializoni detyrën me opsionet bazë të konfigurimit:
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
});
Ekzekutoni detyrën
Përdorni generateResponse()
për të shkaktuar konkluzione.
const response = await llmInference.generateResponse(inputPrompt);
document.getElementById('output').textContent = response;
Për të transmetuar përgjigjen, përdorni sa vijon:
llmInference.generateResponse(
inputPrompt,
(partialResult, done) => {
document.getElementById('output').textContent += partialResult;
});
Shembull aplikimi
Aplikacioni mostër është një shembull i një aplikacioni bazë të gjenerimit të tekstit për Ueb, duke përdorur API-në LLM Inference. Mund ta përdorni aplikacionin si pikënisje për aplikacionin tuaj në ueb ose t'i referoheni kur modifikoni një aplikacion ekzistues. Kodi i shembullit është pritur në GitHub .
Klononi depon e git duke përdorur komandën e mëposhtme:
git clone https://github.com/google-ai-edge/mediapipe-samples
Për më shumë informacion, shihni Udhëzuesin e konfigurimit për ueb .
Opsionet e konfigurimit
Përdorni opsionet e mëposhtme të konfigurimit për të konfiguruar një aplikacion ueb:
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 |
loraRanks | LoRA renditet për t'u përdorur nga modelet LoRA gjatë kohës së ekzekutimit. Shënim: kjo është e përputhshme vetëm me modelet GPU. | Vargu me numra të plotë | N/A |
Konvertimi i modelit
LLM Inference API është në përputhje me llojet e mëposhtme të modeleve, 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 |
---|---|---|---|
Gemma-3 1B | Nuk kërkohet konvertim | Android, ueb | .detyrë |
Gemma 2B, Gemma 7B, Gemma-2 2B | Nuk kërkohet konvertim | Android, iOS, ueb | .bin |
Phi-2, StableLM, Falcon | Skripti i konvertimit të MediaPipe | Android, iOS, ueb | .bin |
Të gjitha modelet PyTorch LLM | Biblioteka gjeneruese e AI Edge Torch | Android, iOS | .detyrë |
Për të mësuar se si mund të konvertoni modele të tjera, shihni seksionin "Konvertimi i modelit" .
Përshtatje LoRA
API-ja e konkluzionit LLM mbështet akordimin LoRA (Përshtatje me gradë të ulët) duke përdorur bibliotekën PEFT (Parameter-Efficient Fine-Tuning). Akordimi LoRA personalizon sjelljen e LLM-ve përmes një procesi trajnimi me kosto efektive, duke krijuar një grup të vogël peshash të trajnueshme bazuar në të dhënat e reja të trajnimit në vend që të ritrajnojë të gjithë modelin.
LLM Inference API mbështet shtimin e peshave LoRA në shtresat e vëmendjes të modeleve Gemma-2 2B , Gemma 2B dhe Phi-2 . Shkarkoni modelin në formatin safetensors
.
Modeli bazë duhet të jetë në formatin e safetensors
për të krijuar pesha LoRA. Pas trajnimit LoRA, mund t'i konvertoni modelet në formatin FlatBuffers për t'u ekzekutuar në MediaPipe.
Përgatitni peshat LoRA
Përdorni udhëzuesin LoRA Methods nga PEFT për të trajnuar një model LoRA të rregulluar mirë në grupin tuaj të të dhënave.
API-ja e konkluzionit LLM mbështet LoRA vetëm në shtresat e vëmendjes, kështu që specifikoni vetëm shtresat e vëmendjes në 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"],
)
Pas trajnimit mbi grupin e të dhënave të përgatitur dhe ruajtjes së modelit, peshat e modelit LoRA të rregulluara mirë janë të disponueshme në adapter_model.safetensors
. Skedari safetensors
është pika e kontrollit LoRA e përdorur gjatë konvertimit të modelit.
Konvertimi i modelit
Përdorni Paketën MediaPipe Python për të kthyer peshat e modelit në formatin Flatbuffer. ConversionConfig
specifikon opsionet e modelit bazë së bashku me opsionet shtesë 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)
Konvertuesi do të prodhojë dy skedarë të përputhshëm me MediaPipe, një për modelin bazë dhe një tjetër për modelin LoRA.
Konkluzioni i modelit LoRA
Uebi mbështet LoRA dinamike gjatë kohës së ekzekutimit, që do të thotë se përdoruesit deklarojnë renditjet e LoRA gjatë inicializimit. Kjo do të thotë që ju mund të ndërroni modele të ndryshme LoRA gjatë kohës së ekzekutimit.
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]
});
Ngarkoni modelet LoRA gjatë kohës së ekzekutimit, pas inicializimit të modelit bazë. Aktivizoni modelin LoRA duke kaluar referencën e modelit kur gjeneroni përgjigjen LLM.
// 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;
});