由 Picovoice 在加拿大温哥华创建
picoLLM 推理引擎是一种高度精确的跨平台 SDK,专门针对运行压缩的大型语言模型进行了优化。picoLLM 推理引擎是
- 精确的;picoLLM 压缩提升了 GPTQ 的性能高达 98%。
- 私有的;LLM 推理在 100% 本地运行。
- 跨平台
- Linux (x86_64),macOS (arm64, x86_64),以及 Windows (x86_64)
- 树莓派 (5 型和 4 型)
- Android 和 iOS
- Chrome、Safari、Edge 和 Firefox
- 在 CPU 和 GPU 上运行
- 对开放权重模型免费
picoLLM 推理引擎支持以下开放权重模型。这些模型位于 Picovoice 控制台 上。
- Gemma
gemma-2b
gemma-2b-it
gemma-7b
gemma-7b-it
- Llama-2
llama-2-7b
llama-2-7b-chat
llama-2-13b
llama-2-13b-chat
llama-2-70b
llama-2-70b-chat
- Llama-3
llama-3-8b
llama-3-8b-instruct
llama-3-70b
llama-3-70b-instruct
- Mistral
mistral-7b-v0.1
mistral-7b-instruct-v0.1
mistral-7b-instruct-v0.2
- Mixtral
mixtral-8x7b-v0.1
mixtral-8x7b-instruct-v0.1
- Phi-2
phi2
AccessKey 是您部署 Picovoice SDK(包括 picoLLM)的认证和授权令牌。任何使用 Picovoice 的人都需要有效的 AccessKey。您必须保守您的 AccessKey 秘密。尽管 LLM 推理是 100% 离线和完全免费运行开放权重模型的,但您仍需要网络连接将与 Picovoice 许可证服务器验证您的 AccessKey。每个注册 Picovoice 控制台 的人都会获得一个唯一的 AccessKey。
安装示例包
pip3 install picollmdemo
在终端中运行以下命令
picollm_demo_completion --access_key ${ACCESS_KEY} --model_path ${MODEL_PATH} --prompt ${PROMPT}
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的 AccessKey,${MODEL_PATH}
替换为从 Picovoice 控制台下载的模型文件的路径,以及 ${PROMPT}
替换为提示字符串。
有关 Python 示例的更多信息,请参阅 demo/python。
使用 Android Studio,将 Completion 示例 作为 Android 项目打开,将您的 AccessKey 复制到 MainActivity.java 中,然后运行应用程序。
要了解如何在聊天应用程序中使用 picoLLM,请尝试 Chat 示例。
有关 Android 示例的更多信息,请参阅 demo/android。
要运行 Completion 示例,请转到 demo/ios/Completion 并运行
pod install
将文件 VieModel.swift 中的 let ACCESS_KEY = "${YOUR_ACCESS_KEY_HERE}"
替换为您从 Picovoice 控制台 获得的 AccessKey。
然后,使用 Xcode 打开生成的 PicoLLMCompletionDemo.xcworkspace
并运行应用程序。
要了解如何在聊天应用程序中使用 picoLLM,请尝试 Chat 示例。
有关 iOS 示例的更多信息,请访问 demo/ios。
从 demo/web 在终端中运行以下命令
yarn
yarn start
(或)
npm install
npm run start
在您的浏览器中打开 https://: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 控制台获得的访问密钥,将 ${LIBRARY_PATH}
替换为位于 lib 目录中的共享库文件的路径,将 ${MODEL_FILE_PATH}
替换为您从 Picovoice 控制台下载的模型文件的路径,并使用提示串替换 ${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 控制台获得的访问密钥,将 ${MODEL_PATH}
替换为您从 Picovoice 控制台下载的模型文件的路径,将 ${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
,将 ${MODEL_PATH}
替换为您从 Picovoice 控制台下载的模型文件的路径,并使用提示串替换 ${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 控制台获得的访问密钥,将 ${MODEL_PATH}
替换为您从 Picovoice 控制台下载的模型文件的路径,并用提示串替换 ${PROMPT}
。
使用 yarn 安装 Web 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 控制台 获得的访问密钥,将 ${MODEL_FILE}
替换为模型文件的 File
、Blob
或 URL (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("%s\n", output);
将 ${ACCESS_KEY}
替换为您从 Picovoice 控制台获得的访问密钥,将 ${MODEL_PATH}
替换为您从 Picovoice 控制台下载的模型文件的路径,并用提示串替换 ${PROMPT}
。
最后,完成时务必显式释放资源
pv_picollm_delete(pllm);