Fabriqué à Vancouver, Canada par Picovoice
picoLLM Inference Engine est un SDK très précis et multiplateforme optimisé pour exécuter de grands modèles de langage compressés. Le moteur d'inférence picoLLM est :
Démo en direct — Fonctionne hors ligne !
picoLLM Compression est un nouvel algorithme de quantification de grand modèle de langage (LLM) développé au sein de Picovoice. Étant donné une fonction de coût spécifique à la tâche, picoLLM Compression apprend automatiquement la stratégie optimale d'allocation de bits entre et au sein des pondérations de LLM. Les techniques existantes nécessitent un schéma d'allocation de bits fixe, ce qui est médiocre.
Par exemple, la compression picoLLM récupère la dégradation du score MMLU du GPTQ largement adopté de 91 %, 99 % et 100 % avec des paramètres de 2, 3 et 4 bits. La figure ci-dessous représente la comparaison MMLU entre picoLLM et GPTQ pour Llama-3-8b [1].
Le moteur d'inférence picoLLM prend en charge les modèles à poids ouvert suivants. Les modèles sont sur Picovoice Console.
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 est votre jeton d'authentification et d'autorisation pour le déploiement des SDK Picovoice, y compris picoLLM. Toute personne utilisant Picovoice doit disposer d’une clé d’accès valide. Vous devez garder votre AccessKey secrète. Vous auriez besoin d'une connectivité Internet pour valider votre AccessKey avec les serveurs de licences Picovoice, même si l'inférence LLM s'exécute à 100 % hors ligne et entièrement gratuite pour les modèles à poids ouvert. Toute personne qui s'inscrit à Picovoice Console reçoit une clé d'accès unique.
Installez le package de démonstration :
pip3 install picollmdemo
Exécutez ce qui suit dans le terminal :
picollm_demo_completion --access_key ${ACCESS_KEY} --model_path ${MODEL_PATH} --prompt ${PROMPT}
Remplacez ${ACCESS_KEY}
par le vôtre obtenu à partir de la console Picovoice, ${MODEL_PATH}
par le chemin d'accès à un fichier de modèle téléchargé à partir de la console Picovoice et ${PROMPT}
par une chaîne d'invite.
Pour plus d'informations sur les démos Python, rendez-vous sur demo/python.
Installez le package de démonstration :
yarn global add @picovoice/picollm-node-demo
Exécutez ce qui suit dans le terminal :
picollm-completion-demo --access_key ${ACCESS_KEY} --model_path ${MODEL_PATH} --prompt ${PROMPT}
Remplacez ${ACCESS_KEY}
par le vôtre obtenu à partir de la console Picovoice, ${MODEL_PATH}
par le chemin d'accès à un fichier de modèle téléchargé à partir de la console Picovoice et ${PROMPT}
par une chaîne d'invite.
Pour plus d'informations sur les démos Node.js, accédez à la démo Node.js.
À l'aide d'Android Studio, ouvrez la démo d'achèvement en tant que projet Android, copiez votre AccessKey dans MainActivity.java et exécutez l'application.
Pour savoir comment utiliser picoLLM dans une application de chat, essayez la démo Chat.
Pour plus d’informations sur les démos Android, rendez-vous sur démo/android.
Pour exécuter la démo d'achèvement, accédez à demo/ios/Completion et exécutez :
pod install
Remplacez let ACCESS_KEY = "${YOUR_ACCESS_KEY_HERE}"
dans le fichier VieModel.swift par votre AccessKey obtenue depuis la console Picovoice.
Ensuite, à l'aide de Xcode, ouvrez l' PicoLLMCompletionDemo.xcworkspace
généré et exécutez l'application.
Pour savoir comment utiliser picoLLM dans une application de chat, essayez la démo Chat.
Pour plus d'informations sur les démos iOS, accédez à demo/ios.
À partir de la démo/du Web, exécutez ce qui suit dans le terminal :
yarn
yarn start
(ou)
npm install
npm run start
Ouvrez http://localhost:5000
dans votre navigateur pour essayer la démo.
Créez la démo :
cmake -S demo/c/ -B demo/c/build && cmake --build demo/c/build
Exécutez la démo :
./demo/c/build/picollm_demo_completion -a ${ACCESS_KEY} -l ${LIBRARY_PATH} -m ${MODEL_FILE_PATH} -p ${PROMPT}
Remplacez ${ACCESS_KEY}
par le vôtre obtenu depuis la console Picovoice, ${LIBRARY_PATH}
par le chemin d'accès au fichier de bibliothèque partagée situé dans le répertoire lib, ${MODEL_FILE_PATH}
par le chemin d'accès à un fichier de modèle téléchargé depuis la console Picovoice et ${PROMPT}
avec une chaîne d'invite.
Pour plus d’informations sur les démos C, rendez-vous sur demo/c.
Installez le SDK Python :
pip3 install picollm
Créez une instance du moteur et générez une saisie semi-automatique :
import picollm
pllm = picollm . create (
access_key = '${ACCESS_KEY}' ,
model_path = '${MODEL_PATH}' )
res = pllm . generate ( '${PROMPT}' )
print ( res . completion )
Remplacez ${ACCESS_KEY}
par le vôtre obtenu depuis la console Picovoice, ${MODEL_PATH}
par le chemin d'accès à un fichier de modèle téléchargé depuis la console Picovoice et ${PROMPT}
par une chaîne d'invite. Enfin, une fois terminé, assurez-vous de libérer explicitement les ressources en utilisant pllm.release()
.
Installez le SDK Node.js :
yarn add @picovoice/picollm-node
Créez des instances de la classe picoLLM :
const { PicoLLM } = require ( "@picovoice/picollm-node" ) ;
const pllm = new PicoLLM ( '${ACCESS_KEY}' , '${MODEL_PATH}' ) ;
const res = await pllm . generate ( '${PROMPT}' ) ;
console . log ( res . completion ) ;
Remplacez ${ACCESS_KEY}
par le vôtre obtenu depuis la console Picovoice, ${MODEL_PATH}
par le chemin d'accès à un fichier de modèle téléchargé depuis la console Picovoice et ${PROMPT}
par une chaîne d'invite. Enfin, une fois terminé, assurez-vous de libérer explicitement les ressources en utilisant pllm.release()
.
Créez une instance du moteur d'inférence et générez une saisie semi-automatique :
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 ) { }
Remplacez ${ACCESS_KEY}
par votre AccessKey
de la console Picovoice, ${MODEL_PATH}
par le chemin d'accès à un fichier de modèle téléchargé depuis la console Picovoice et ${PROMPT}
par une chaîne d'invite. Enfin, une fois terminé, assurez-vous de libérer explicitement les ressources en utilisant picollm.delete()
.
Créez une instance du moteur et générez une saisie semi-automatique :
import PicoLLM
let pllm = try PicoLLM (
accessKey : " ${ACCESS_KEY} " ,
modelPath : " ${MODEL_PATH} " )
let res = pllm . generate ( prompt : " ${PROMPT} " )
print ( res . completion )
Remplacez ${ACCESS_KEY}
par le vôtre obtenu depuis la console Picovoice, ${MODEL_PATH}
par le chemin d'accès à un fichier de modèle téléchargé depuis la console Picovoice et ${PROMPT}
par une chaîne d'invite.
Installez le SDK Web à l'aide de Yarn :
yarn add @picovoice/picollm-web
ou en utilisant npm :
npm install --save @picovoice/picollm-web
Créez une instance du moteur à l'aide de PicoLLMWorker
et transcrivez un fichier audio :
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 ) ;
Remplacez ${ACCESS_KEY}
par le vôtre obtenu à partir de la console Picovoice, ${MODEL_FILE}
par le contenu du fichier modèle au format File
, Blob
ou URL (path to model file)
et ${PROMPT}
par une chaîne d'invite. Enfin, une fois terminé, libérez les ressources en utilisant picoLLM.release()
.
Créez une instance du moteur et générez une saisie semi-automatique :
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 );
Remplacez ${ACCESS_KEY}
par le vôtre obtenu depuis la console Picovoice, ${MODEL_PATH}
par le chemin d'accès à un fichier de modèle téléchargé depuis la console Picovoice et ${PROMPT}
par une chaîne d'invite.
Enfin, une fois terminé, assurez-vous de libérer explicitement les ressources :
pv_picollm_delete ( pllm );
interrupt()
pour arrêter la génération d'achèvement plus tôt