Hergestellt in Vancouver, Kanada von Picovoice
picoLLM Inference Engine ist ein hochpräzises und plattformübergreifendes SDK, das für die Ausführung komprimierter großer Sprachmodelle optimiert ist. Die picoLLM-Inferenz-Engine ist:
Live-Demo – Funktioniert offline!
Die picoLLM-Komprimierung ist ein neuartiger LLM-Quantisierungsalgorithmus (Large Language Model), der in Picovoice entwickelt wurde. Bei einer aufgabenspezifischen Kostenfunktion lernt die picoLLM-Komprimierung automatisch die optimale Bitzuteilungsstrategie über und innerhalb der LLM-Gewichte. Bestehende Techniken erfordern ein festes Bitzuteilungsschema, was unterdurchschnittlich ist.
Beispielsweise stellt die picoLLM-Komprimierung die Verschlechterung des MMLU-Scores des weit verbreiteten GPTQ um 91 %, 99 % und 100 % bei 2-, 3- und 4-Bit-Einstellungen wieder her. Die folgende Abbildung zeigt den MMLU-Vergleich zwischen picoLLM und GPTQ für Llama-3-8b [1].
picoLLM Inference Engine unterstützt die folgenden Open-Weight-Modelle. Die Modelle befinden sich auf der Picovoice-Konsole.
gemma-2b
gemma-2b-it
gemma-7b
gemma-7b-it
llama-2-7b
llama-2-7b-chat
llama-2-13b
llama-2-13b-chat
llama-2-70b
llama-2-70b-chat
llama-3-8b
llama-3-8b-instruct
llama-3-70b
llama-3-70b-instruct
mistral-7b-v0.1
mistral-7b-instruct-v0.1
mistral-7b-instruct-v0.2
mixtral-8x7b-v0.1
mixtral-8x7b-instruct-v0.1
phi2
phi3
AccessKey ist Ihr Authentifizierungs- und Autorisierungstoken für die Bereitstellung von Picovoice-SDKs, einschließlich picoLLM. Jeder, der Picovoice verwendet, muss über einen gültigen AccessKey verfügen. Sie müssen Ihren AccessKey geheim halten. Sie benötigen eine Internetverbindung, um Ihren AccessKey mit Picovoice-Lizenzservern zu validieren, auch wenn die LLM-Inferenz zu 100 % offline läuft und für Open-Weight-Modelle völlig kostenlos ist. Jeder, der sich für die Picovoice-Konsole anmeldet, erhält einen einzigartigen AccessKey.
Installieren Sie das Demopaket:
pip3 install picollmdemo
Führen Sie im Terminal Folgendes aus:
picollm_demo_completion --access_key ${ACCESS_KEY} --model_path ${MODEL_PATH} --prompt ${PROMPT}
Ersetzen Sie ${ACCESS_KEY}
durch Ihren von der Picovoice Console erhaltenen Pfad, ${MODEL_PATH}
durch den Pfad zu einer von der Picovoice Console heruntergeladenen Modelldatei und ${PROMPT}
durch eine Eingabeaufforderungszeichenfolge.
Weitere Informationen zu Python-Demos finden Sie unter demo/python.
Installieren Sie das Demopaket:
yarn global add @picovoice/picollm-node-demo
Führen Sie im Terminal Folgendes aus:
picollm-completion-demo --access_key ${ACCESS_KEY} --model_path ${MODEL_PATH} --prompt ${PROMPT}
Ersetzen Sie ${ACCESS_KEY}
durch Ihren von der Picovoice Console erhaltenen Pfad, ${MODEL_PATH}
durch den Pfad zu einer von der Picovoice Console heruntergeladenen Modelldatei und ${PROMPT}
durch eine Eingabeaufforderungszeichenfolge.
Weitere Informationen zu Node.js-Demos finden Sie unter Node.js-Demo.
Öffnen Sie mit Android Studio die Completion-Demo als Android-Projekt, kopieren Sie Ihren AccessKey in MainActivity.java und führen Sie die Anwendung aus.
Um zu erfahren, wie Sie picoLLM in einer Chat-Anwendung verwenden, probieren Sie die Chat-Demo aus.
Weitere Informationen zu Android-Demos finden Sie unter demo/android.
Um die Abschlussdemo auszuführen, gehen Sie zu demo/ios/Completion und führen Sie Folgendes aus:
pod install
Ersetzen Sie let ACCESS_KEY = "${YOUR_ACCESS_KEY_HERE}"
in der Datei VieModel.swift durch Ihren AccessKey, den Sie von der Picovoice-Konsole erhalten haben.
Öffnen Sie dann mit Xcode den generierten PicoLLMCompletionDemo.xcworkspace
und führen Sie die Anwendung aus.
Um zu erfahren, wie Sie picoLLM in einer Chat-Anwendung verwenden, probieren Sie die Chat-Demo aus.
Weitere Informationen zu iOS-Demos finden Sie unter demo/ios.
Führen Sie in Demo/Web Folgendes im Terminal aus:
yarn
yarn start
(oder)
npm install
npm run start
Öffnen Sie http://localhost:5000
in Ihrem Browser, um die Demo auszuprobieren.
Erstellen Sie die Demo:
cmake -S demo/c/ -B demo/c/build && cmake --build demo/c/build
Führen Sie die Demo aus:
./demo/c/build/picollm_demo_completion -a ${ACCESS_KEY} -l ${LIBRARY_PATH} -m ${MODEL_FILE_PATH} -p ${PROMPT}
Ersetzen Sie ${ACCESS_KEY}
durch Ihren von der Picovoice Console erhaltenen, ${LIBRARY_PATH}
durch den Pfad zur gemeinsam genutzten Bibliotheksdatei im lib-Verzeichnis, ${MODEL_FILE_PATH}
durch den Pfad zu einer von der Picovoice Console heruntergeladenen Modelldatei und ${PROMPT}
mit einer Eingabeaufforderungszeichenfolge.
Weitere Informationen zu C-Demos finden Sie unter demo/c.
Installieren Sie das Python SDK:
pip3 install picollm
Erstellen Sie eine Instanz der Engine und generieren Sie eine prompte Vervollständigung:
import picollm
pllm = picollm . create (
access_key = '${ACCESS_KEY}' ,
model_path = '${MODEL_PATH}' )
res = pllm . generate ( '${PROMPT}' )
print ( res . completion )
Ersetzen Sie ${ACCESS_KEY}
durch Ihren von der Picovoice Console erhaltenen Schlüssel, ${MODEL_PATH}
durch den Pfad zu einer von der Picovoice Console heruntergeladenen Modelldatei und ${PROMPT}
durch eine Eingabeaufforderungszeichenfolge. Wenn Sie fertig sind, stellen Sie abschließend sicher, dass Sie die Ressourcen explizit mit pllm.release()
freigeben.
Installieren Sie das Node.js SDK:
yarn add @picovoice/picollm-node
Erstellen Sie Instanzen der picoLLM-Klasse:
const { PicoLLM } = require ( "@picovoice/picollm-node" ) ;
const pllm = new PicoLLM ( '${ACCESS_KEY}' , '${MODEL_PATH}' ) ;
const res = await pllm . generate ( '${PROMPT}' ) ;
console . log ( res . completion ) ;
Ersetzen Sie ${ACCESS_KEY}
durch Ihren von der Picovoice Console erhaltenen Schlüssel, ${MODEL_PATH}
durch den Pfad zu einer von der Picovoice Console heruntergeladenen Modelldatei und ${PROMPT}
durch eine Eingabeaufforderungszeichenfolge. Wenn Sie fertig sind, stellen Sie abschließend sicher, dass Sie die Ressourcen explizit mit pllm.release()
freigeben.
Erstellen Sie eine Instanz der Inferenz-Engine und generieren Sie eine Prompt-Vervollständigung:
import ai . picovoice . picollm .*;
try {
PicoLLM picollm = new PicoLLM . Builder ()
. setAccessKey ( "${ACCESS_KEY}" )
. setModelPath ( "${MODEL_PATH}" )
. build ();
PicoLLMCompletion res = picollm . generate (
"${PROMPT}" ,
new PicoLLMGenerateParams . Builder (). build ());
} catch ( PicoLLMException e ) { }
Ersetzen Sie ${ACCESS_KEY}
durch Ihren AccessKey
von der Picovoice Console, ${MODEL_PATH}
durch den Pfad zu einer von der Picovoice Console heruntergeladenen Modelldatei und ${PROMPT}
durch eine Eingabeaufforderungszeichenfolge. Wenn Sie fertig sind, stellen Sie abschließend sicher, dass Sie die Ressourcen explizit mit picollm.delete()
freigeben.
Erstellen Sie eine Instanz der Engine und generieren Sie eine prompte Vervollständigung:
import PicoLLM
let pllm = try PicoLLM (
accessKey : " ${ACCESS_KEY} " ,
modelPath : " ${MODEL_PATH} " )
let res = pllm . generate ( prompt : " ${PROMPT} " )
print ( res . completion )
Ersetzen Sie ${ACCESS_KEY}
durch Ihren von der Picovoice Console erhaltenen Schlüssel, ${MODEL_PATH}
durch den Pfad zu einer von der Picovoice Console heruntergeladenen Modelldatei und ${PROMPT}
durch eine Eingabeaufforderungszeichenfolge.
Installieren Sie das Web-SDK mit Garn:
yarn add @picovoice/picollm-web
oder mit npm:
npm install --save @picovoice/picollm-web
Erstellen Sie mit PicoLLMWorker
eine Instanz der Engine und transkribieren Sie eine Audiodatei:
import { PicoLLMWorker } from "@picovoice/picollm-web" ;
const picoLLMModel = {
modelFile : '${MODEL_FILE}'
}
const picoLLM = await PicoLLMWorker . create (
"${ACCESS_KEY}" ,
picoLLMModel
) ;
const res = await picoLLM . generate ( ` ${ PROMPT } ` ) ;
console . log ( res . completion ) ;
Ersetzen Sie ${ACCESS_KEY}
durch Ihren von der Picovoice-Konsole erhaltenen Wert, ${MODEL_FILE}
durch den Inhalt der Modelldatei im File
, Blob
oder URL (path to model file)
und ${PROMPT}
durch eine Eingabeaufforderungszeichenfolge. Wenn Sie fertig sind, geben Sie die Ressourcen schließlich mit picoLLM.release()
frei.
Erstellen Sie eine Instanz der Engine und generieren Sie eine prompte Vervollständigung:
pv_picollm_t * pllm = NULL ;
pv_picollm_init (
"${ACCESS_KEY}" ,
"${MODEL_PATH}" ,
"best" ,
& pllm );
pv_picollm_usage_t usage ;
pv_picollm_endpoint_t endpoint ;
int32_t num_completion_tokens ;
pv_picollm_completion_token_t * completion_tokens ;
char * output ;
pv_picollm_generate (
pllm ,
"${PROMPT}" ,
-1 , // completion_token_limit
NULL , // stop_phrases
0 , // num_stop_phrases
-1 , // seed
0.f , // presence_penalty
0.f , // frequency_penalty
0.f , // temperature
1.f , // top_p
0 , // num_top_choices
NULL , // stream_callback
NULL , // stream_callback_context
& usage ,
& endpoint ,
& completion_tokens ,
& num_completion_tokens ,
& output );
printf ( "%sn" , output );
Ersetzen Sie ${ACCESS_KEY}
durch Ihren von der Picovoice Console erhaltenen Schlüssel, ${MODEL_PATH}
durch den Pfad zu einer von der Picovoice Console heruntergeladenen Modelldatei und ${PROMPT}
durch eine Eingabeaufforderungszeichenfolge.
Wenn Sie fertig sind, stellen Sie abschließend sicher, dass Sie die Ressourcen explizit freigeben:
pv_picollm_delete ( pllm );
interrupt()
hinzugefügt, um die Abschlussgenerierung vorzeitig anzuhalten