Fabricado en Vancouver, Canadá por Picovoice.
picoLLM Inference Engine es un SDK multiplataforma altamente preciso optimizado para ejecutar modelos de lenguaje comprimidos de gran tamaño. El motor de inferencia picoLLM es:
Demostración en vivo: ¡funciona sin conexión!
La compresión picoLLM es un novedoso algoritmo de cuantificación de modelo de lenguaje grande (LLM) desarrollado dentro de Picovoice. Dada una función de costo específica de la tarea, picoLLM Compression aprende automáticamente la estrategia óptima de asignación de bits a través y dentro de los pesos de LLM. Las técnicas existentes requieren un esquema de asignación de bits fijo, que es deficiente.
Por ejemplo, la compresión picoLLM recupera la degradación de la puntuación MMLU del GPTQ ampliamente adoptado en un 91 %, 99 % y 100 % en configuraciones de 2, 3 y 4 bits. La siguiente figura muestra la comparación de MMLU entre picoLLM y GPTQ para Llama-3-8b [1].
picoLLM Inference Engine admite los siguientes modelos de peso abierto. Los modelos están en la consola Picovoice.
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 es su token de autenticación y autorización para implementar los SDK de Picovoice, incluido picoLLM. Cualquiera que utilice Picovoice debe tener una AccessKey válida. Debe mantener su AccessKey en secreto. Necesitaría conectividad a Internet para validar su AccessKey con los servidores de licencias de Picovoice, aunque la inferencia LLM se ejecuta 100% fuera de línea y es completamente gratuita para los modelos abiertos. Todos los que se registran en Picovoice Console reciben una AccessKey única.
Instale el paquete de demostración:
pip3 install picollmdemo
Ejecute lo siguiente en la terminal:
picollm_demo_completion --access_key ${ACCESS_KEY} --model_path ${MODEL_PATH} --prompt ${PROMPT}
Reemplace ${ACCESS_KEY}
con el suyo obtenido de Picovoice Console, ${MODEL_PATH}
con la ruta a un archivo de modelo descargado de Picovoice Console y ${PROMPT}
con una cadena de mensaje.
Para obtener más información sobre las demostraciones de Python, vaya a demo/python.
Instale el paquete de demostración:
yarn global add @picovoice/picollm-node-demo
Ejecute lo siguiente en la terminal:
picollm-completion-demo --access_key ${ACCESS_KEY} --model_path ${MODEL_PATH} --prompt ${PROMPT}
Reemplace ${ACCESS_KEY}
con el suyo obtenido de Picovoice Console, ${MODEL_PATH}
con la ruta a un archivo de modelo descargado de Picovoice Console y ${PROMPT}
con una cadena de mensaje.
Para obtener más información sobre las demostraciones de Node.js, vaya a la demostración de Node.js.
Con Android Studio, abra la demostración de finalización como un proyecto de Android, copie su AccessKey en MainActivity.java y ejecute la aplicación.
Para aprender cómo usar picoLLM en una aplicación de chat, pruebe la demostración de Chat.
Para obtener más información sobre las demostraciones de Android, vaya a demo/android.
Para ejecutar la demostración de finalización, vaya a demo/ios/Completion y ejecute:
pod install
Reemplace let ACCESS_KEY = "${YOUR_ACCESS_KEY_HERE}"
en el archivo VieModel.swift con su AccessKey obtenida de Picovoice Console.
Luego, usando Xcode, abra el PicoLLMCompletionDemo.xcworkspace
generado y ejecute la aplicación.
Para aprender cómo usar picoLLM en una aplicación de chat, pruebe la demostración de Chat.
Para obtener más información sobre las demostraciones de iOS, vaya a demo/ios.
Desde demo/web ejecute lo siguiente en la terminal:
yarn
yarn start
(o)
npm install
npm run start
Abra http://localhost:5000
en su navegador para probar la demostración.
Cree la demostración:
cmake -S demo/c/ -B demo/c/build && cmake --build demo/c/build
Ejecute la demostración:
./demo/c/build/picollm_demo_completion -a ${ACCESS_KEY} -l ${LIBRARY_PATH} -m ${MODEL_FILE_PATH} -p ${PROMPT}
Reemplace ${ACCESS_KEY}
con el suyo obtenido de Picovoice Console, ${LIBRARY_PATH}
con la ruta al archivo de biblioteca compartida ubicado en el directorio lib, ${MODEL_FILE_PATH}
con la ruta a un archivo de modelo descargado de Picovoice Console y ${PROMPT}
con una cadena de aviso.
Para obtener más información sobre las demostraciones de C, vaya a demo/c.
Instale el SDK de Python:
pip3 install picollm
Cree una instancia del motor y genere una finalización rápida:
import picollm
pllm = picollm . create (
access_key = '${ACCESS_KEY}' ,
model_path = '${MODEL_PATH}' )
res = pllm . generate ( '${PROMPT}' )
print ( res . completion )
Reemplace ${ACCESS_KEY}
con el suyo obtenido de Picovoice Console, ${MODEL_PATH}
por la ruta a un archivo de modelo descargado desde Picovoice Console y ${PROMPT}
por una cadena de mensaje. Finalmente, cuando haya terminado, asegúrese de liberar explícitamente los recursos usando pllm.release()
.
Instale el SDK de Node.js:
yarn add @picovoice/picollm-node
Cree instancias de la clase 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 ) ;
Reemplace ${ACCESS_KEY}
con el suyo obtenido de Picovoice Console, ${MODEL_PATH}
por la ruta a un archivo de modelo descargado desde Picovoice Console y ${PROMPT}
por una cadena de mensaje. Finalmente, cuando haya terminado, asegúrese de liberar explícitamente los recursos usando pllm.release()
.
Cree una instancia del motor de inferencia y genere una finalización rápida:
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 ) { }
Reemplace ${ACCESS_KEY}
con su AccessKey
de Picovoice Console, ${MODEL_PATH}
por la ruta a un archivo de modelo descargado desde Picovoice Console y ${PROMPT}
por una cadena de mensaje. Finalmente, cuando haya terminado, asegúrese de liberar explícitamente los recursos usando picollm.delete()
.
Cree una instancia del motor y genere una finalización rápida:
import PicoLLM
let pllm = try PicoLLM (
accessKey : " ${ACCESS_KEY} " ,
modelPath : " ${MODEL_PATH} " )
let res = pllm . generate ( prompt : " ${PROMPT} " )
print ( res . completion )
Reemplace ${ACCESS_KEY}
con el suyo obtenido de Picovoice Console, ${MODEL_PATH}
por la ruta a un archivo de modelo descargado desde Picovoice Console y ${PROMPT}
por una cadena de mensaje.
Instale el SDK web usando hilo:
yarn add @picovoice/picollm-web
o usando npm:
npm install --save @picovoice/picollm-web
Cree una instancia del motor usando PicoLLMWorker
y transcriba un archivo de 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 ) ;
Reemplace ${ACCESS_KEY}
con el suyo obtenido de Picovoice Console, ${MODEL_FILE}
con el contenido del archivo de modelo en formato File
, Blob
o URL (path to model file)
y ${PROMPT}
con una cadena de mensaje. Finalmente, cuando termine, libere los recursos usando picoLLM.release()
.
Cree una instancia del motor y genere una finalización rápida:
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 );
Reemplace ${ACCESS_KEY}
con el suyo obtenido de Picovoice Console, ${MODEL_PATH}
por la ruta a un archivo de modelo descargado desde Picovoice Console y ${PROMPT}
por una cadena de mensaje.
Finalmente, cuando haya terminado, asegúrese de liberar los recursos explícitamente:
pv_picollm_delete ( pllm );
interrupt()
para detener la generación de finalización anticipada.