ผลิตในแวนคูเวอร์ แคนาดา โดย Picovoice
picoLLM Inference Engine เป็น SDK ข้ามแพลตฟอร์มที่มีความแม่นยำสูง ซึ่งได้รับการปรับให้เหมาะกับการใช้งานโมเดลภาษาขนาดใหญ่ที่ถูกบีบอัด เครื่องมืออนุมาน picoLLM คือ:
การสาธิตสด — ทำงานแบบออฟไลน์!
picoLLM Compression เป็นอัลกอริธึมการหาปริมาณของโมเดลภาษาขนาดใหญ่ (LLM) แบบใหม่ที่พัฒนาขึ้นภายใน Picovoice ด้วยฟังก์ชันต้นทุนเฉพาะงาน picoLLM Compression จะเรียนรู้กลยุทธ์การจัดสรรบิตที่เหมาะสมที่สุดในและภายในน้ำหนักของ LLM โดยอัตโนมัติ เทคนิคที่มีอยู่จำเป็นต้องมีรูปแบบการจัดสรรบิตคงที่ ซึ่งต่ำกว่ามาตรฐาน
ตัวอย่างเช่น การบีบอัด picoLLM จะกู้คืนการลดระดับคะแนน MMLU ของ GPTQ ที่ใช้กันอย่างแพร่หลาย 91%, 99% และ 100% ที่การตั้งค่า 2, 3 และ 4 บิต รูปด้านล่างแสดงการเปรียบเทียบ MMLU ระหว่าง picoLLM และ GPTQ สำหรับ Llama-3-8b [1]
picoLLM Inference Engine รองรับโมเดล open-weight ต่อไปนี้ โมเดลต่างๆ อยู่ใน 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 คือโทเค็นการรับรองความถูกต้องและการอนุญาตของคุณสำหรับการปรับใช้ Picovoice SDK รวมถึง picoLLM ใครก็ตามที่ใช้ Picovoice จำเป็นต้องมี AccessKey ที่ถูกต้อง คุณต้องเก็บ AccessKey ไว้เป็นความลับ คุณจะต้องเชื่อมต่ออินเทอร์เน็ตเพื่อตรวจสอบ AccessKey ของคุณด้วยเซิร์ฟเวอร์สิทธิ์การใช้งาน Picovoice แม้ว่าการอนุมาน LLM จะทำงานแบบออฟไลน์ 100% และฟรีโดยสมบูรณ์สำหรับโมเดล Open Weight ทุกคนที่สมัครใช้งาน Picovoice Console จะได้รับ AccessKey ที่ไม่ซ้ำใคร
ติดตั้งแพ็คเกจสาธิต:
pip3 install picollmdemo
รันสิ่งต่อไปนี้ในเทอร์มินัล:
picollm_demo_completion --access_key ${ACCESS_KEY} --model_path ${MODEL_PATH} --prompt ${PROMPT}
แทนที่ ${ACCESS_KEY}
ด้วยของคุณที่ได้รับจาก Picovoice Console, ${MODEL_PATH}
ด้วยเส้นทางไปยังไฟล์โมเดลที่ดาวน์โหลดจาก Picovoice Console และ ${PROMPT}
ด้วยสตริงข้อความแจ้ง
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสาธิต Python ให้ไปที่ demo/python
ติดตั้งแพ็คเกจสาธิต:
yarn global add @picovoice/picollm-node-demo
รันสิ่งต่อไปนี้ในเทอร์มินัล:
picollm-completion-demo --access_key ${ACCESS_KEY} --model_path ${MODEL_PATH} --prompt ${PROMPT}
แทนที่ ${ACCESS_KEY}
ด้วยของคุณที่ได้รับจาก Picovoice Console, ${MODEL_PATH}
ด้วยเส้นทางไปยังไฟล์โมเดลที่ดาวน์โหลดจาก Picovoice Console และ ${PROMPT}
ด้วยสตริงข้อความแจ้ง
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสาธิต Node.js ให้ไปที่การสาธิต Node.js
ใช้ Android Studio เปิดการสาธิต Completion เป็นโปรเจ็กต์ Android คัดลอก AccessKey ของคุณไปที่ MainActivity.java และรันแอปพลิเคชัน
หากต้องการเรียนรู้เกี่ยวกับวิธีใช้ picoLLM ในแอปพลิเคชันแชท ให้ลองใช้การสาธิต Chat
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสาธิต Android ไปที่ demo/android
หากต้องการรันการสาธิตการทำให้เสร็จสมบูรณ์ ให้ไปที่การสาธิต/ios/การเสร็จสิ้น และเรียกใช้:
pod install
แทนที่ let ACCESS_KEY = "${YOUR_ACCESS_KEY_HERE}"
ในไฟล์ VieModel.swift ด้วย AccessKey ที่ได้รับจาก Picovoice Console
จากนั้น ให้ใช้ Xcode เปิด PicoLLMCompletionDemo.xcworkspace
ที่สร้างขึ้นและเรียกใช้แอปพลิเคชัน
หากต้องการเรียนรู้เกี่ยวกับวิธีใช้ picoLLM ในแอปพลิเคชันแชท ให้ลองใช้การสาธิต Chat
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสาธิต iOS ไปที่การสาธิต/ios
จากการสาธิต/เว็บให้รันสิ่งต่อไปนี้ในเทอร์มินัล:
yarn
yarn start
(หรือ)
npm install
npm run start
เปิด http://localhost:5000
ในเบราว์เซอร์ของคุณเพื่อลองสาธิต
สร้างการสาธิต:
cmake -S demo/c/ -B demo/c/build && cmake --build demo/c/build
เรียกใช้การสาธิต:
./demo/c/build/picollm_demo_completion -a ${ACCESS_KEY} -l ${LIBRARY_PATH} -m ${MODEL_FILE_PATH} -p ${PROMPT}
แทนที่ ${ACCESS_KEY}
ด้วยของคุณที่ได้รับจาก Picovoice Console, ${LIBRARY_PATH}
ด้วยเส้นทางไปยังไฟล์ไลบรารีที่ใช้ร่วมกันที่อยู่ในไดเร็กทอรี lib, ${MODEL_FILE_PATH}
ด้วยเส้นทางไปยังไฟล์โมเดลที่ดาวน์โหลดจาก Picovoice Console และ ${PROMPT}
พร้อมด้วยสตริงพร้อมท์
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสาธิต C ไปที่ demo/c
ติดตั้ง Python SDK:
pip3 install picollm
สร้างอินสแตนซ์ของกลไกและสร้างการดำเนินการให้เสร็จสิ้นพร้อมท์:
import picollm
pllm = picollm . create (
access_key = '${ACCESS_KEY}' ,
model_path = '${MODEL_PATH}' )
res = pllm . generate ( '${PROMPT}' )
print ( res . completion )
แทนที่ ${ACCESS_KEY}
ด้วยของคุณที่ได้รับจาก Picovoice Console, ${MODEL_PATH}
เป็นพาธไปยังไฟล์โมเดลที่ดาวน์โหลดจาก Picovoice Console และ ${PROMPT}
เป็นสตริงข้อความแจ้ง สุดท้ายนี้ เมื่อเสร็จแล้ว อย่าลืมเผยแพร่ทรัพยากรอย่างชัดเจนโดยใช้ pllm.release()
ติดตั้ง Node.js SDK:
yarn add @picovoice/picollm-node
สร้างอินสแตนซ์ของคลาส 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 ) ;
แทนที่ ${ACCESS_KEY}
ด้วยของคุณที่ได้รับจาก Picovoice Console, ${MODEL_PATH}
เป็นพาธไปยังไฟล์โมเดลที่ดาวน์โหลดจาก Picovoice Console และ ${PROMPT}
เป็นสตริงข้อความแจ้ง สุดท้ายนี้ เมื่อเสร็จแล้ว อย่าลืมเผยแพร่ทรัพยากรอย่างชัดเจนโดยใช้ pllm.release()
สร้างอินสแตนซ์ของกลไกการอนุมานและสร้างการดำเนินการให้เสร็จสิ้นพร้อมท์:
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 ) { }
แทนที่ ${ACCESS_KEY}
ด้วย AccessKey
ของคุณจาก Picovoice Console, ${MODEL_PATH}
เป็นพาธไปยังไฟล์โมเดลที่ดาวน์โหลดจาก Picovoice Console และ ${PROMPT}
เป็นสตริงข้อความแจ้ง สุดท้ายนี้ เมื่อเสร็จแล้ว อย่าลืมเผยแพร่ทรัพยากรโดยใช้ picollm.delete()
อย่างชัดเจน
สร้างอินสแตนซ์ของกลไกและสร้างการดำเนินการให้เสร็จสิ้นพร้อมท์:
import PicoLLM
let pllm = try PicoLLM (
accessKey : " ${ACCESS_KEY} " ,
modelPath : " ${MODEL_PATH} " )
let res = pllm . generate ( prompt : " ${PROMPT} " )
print ( res . completion )
แทนที่ ${ACCESS_KEY}
ด้วยของคุณที่ได้รับจาก Picovoice Console, ${MODEL_PATH}
เป็นพาธไปยังไฟล์โมเดลที่ดาวน์โหลดจาก Picovoice Console และ ${PROMPT}
เป็นสตริงข้อความแจ้ง
ติดตั้ง SDK เว็บโดยใช้เส้นด้าย:
yarn add @picovoice/picollm-web
หรือใช้ npm:
npm install --save @picovoice/picollm-web
สร้างอินสแตนซ์ของกลไกโดยใช้ PicoLLMWorker
และถอดเสียงไฟล์เสียง:
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 ) ;
แทนที่ ${ACCESS_KEY}
ด้วยของคุณที่ได้รับจาก Picovoice Console, ${MODEL_FILE}
ด้วยเนื้อหาของไฟล์โมเดลเป็นรูปแบบ File
, Blob
หรือ URL (path to model file)
และ ${PROMPT}
ด้วยสตริงพร้อมท์ ในที่สุด เมื่อเสร็จแล้วให้ปล่อยทรัพยากรโดยใช้ picoLLM.release()
สร้างอินสแตนซ์ของกลไกและสร้างการดำเนินการให้เสร็จสิ้นพร้อมท์:
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 );
แทนที่ ${ACCESS_KEY}
ด้วยของคุณที่ได้รับจาก Picovoice Console, ${MODEL_PATH}
เป็นพาธไปยังไฟล์โมเดลที่ดาวน์โหลดจาก Picovoice Console และ ${PROMPT}
เป็นสตริงข้อความแจ้ง
สุดท้าย เมื่อเสร็จแล้ว อย่าลืมเผยแพร่ทรัพยากรอย่างชัดเจน:
pv_picollm_delete ( pllm );
interrupt()
เพื่อหยุดการสร้างความสมบูรณ์ตั้งแต่เนิ่นๆ