picoLLM-iOS 1.0.0

picoLLM-iOS 1.0.0

Eric MikulinIan Lavery 维护。



  • Picovoice 提供

picoLLM 推理引擎

Picovoice 在加拿大温哥华创建

Twitter URL YouTube Channel Views

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

AccessKey 是您部署 Picovoice SDK(包括 picoLLM)的认证和授权令牌。任何使用 Picovoice 的人都需要有效的 AccessKey。您必须保守您的 AccessKey 秘密。尽管 LLM 推理是 100% 离线和完全免费运行开放权重模型的,但您仍需要网络连接将与 Picovoice 许可证服务器验证您的 AccessKey。每个注册 Picovoice 控制台 的人都会获得一个唯一的 AccessKey。

示例

Python 示例

安装示例包

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

Node.js 示例

Android 示例

使用 Android Studio,将 Completion 示例 作为 Android 项目打开,将您的 AccessKey 复制到 MainActivity.java 中,然后运行应用程序。

要了解如何在聊天应用程序中使用 picoLLM,请尝试 Chat 示例

有关 Android 示例的更多信息,请参阅 demo/android

iOS 示例

要运行 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

Web 示例

demo/web 在终端中运行以下命令

yarn
yarn start

(或)

npm install
npm run start

在您的浏览器中打开 https://:5000 以尝试示例。

C 示例

构建示例

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

SDK

Python SDK

安装 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() 释放资源。

Node.js SDK

Android SDK

创建推理引擎实例并生成提示文本

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() 释放资源。

iOS SDK

创建引擎实例并生成提示文本

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}

Web SDK

使用 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} 替换为模型文件的 FileBlobURL (model file 路径) 格式内容,并将 ${PROMPT} 替换为提示串。完成后,使用 picoLLM.release() 释放资源。

C SDK

创建引擎实例并生成提示文本

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);

版本

常见问题(FAQ)