Skip to content

使用 AidGen 部署 LLM ​

介绍 ​

端侧部署大语言模型 (Large Language Model, LLM) 指将原本在云端运行的大模型压缩、量化并部署到本地设备上,实现离线、低时延的自然语言理解与生成。本章节以 AidGen 推理引擎为基础,演示如何在边缘设备上完成大语言模型的部署、加载与对话流程。

在本案例中,大语言模型推理运行在设备端,通过 C++ 代码调用相关接口接收用户输入并实时返回对话结果。

  • 设备:Rhino Pi-X1
  • 系统:Ubuntu 22.04
  • 模型:Qwen2.5-0.5B-Instruct

支持平台 ​

平台运行方式
Rhino Pi-X1Ubuntu 22.04, AidLux

准备工作 ​

  1. Rhino Pi-X1 硬件

  2. Ubuntu 22.04 系统或 AidLux 系统

  3. 准备模型文件

访问 Model Farm: Qwen2.5-0.5B-Instruct 下载模型资源文件

💡注意

选择 QCS8550 芯片

案例部署 ​

步骤一:安装 AidGen SDK ​

bash
# 安装 AidGen SDK
sudo aid-pkg update
sudo aid-pkg -i aidgen-sdk
sudo aid-pkg -i aidgen-qnn240
sudo aid-pkg -i aidgen-qnn248

# 拷贝测试代码
cd /home/aidlux/aidllm

cp -r /usr/local/share/aidgen/examples/ ./

步骤二:模型资源获取 ​

bash
# 登录
mms login

# 查找模型
mms list Qwen2.5-0.5B-Instruct

# 下载模型
mms get -m Qwen2.5-0.5B-Instruct -p w4a16 -c qcs8550 -b qnn2.29 -d /home/aidlux/aidllm/

cd /home/aidlux/aidllm/
unzip qnn229_qcs8550_cl4096.zip

步骤三:资源文件确认 ​

文件分布如下:

bash
/home/aidlux/aidllm/qnn229_qcs8550_cl4096
├── tokenizer_config.json
├── tokenizer.json
├── qwen2.5-0.5b-instruct_qnn229_qcs8550_4096_2_of_2.serialized.bin
├── qwen2.5-0.5b-instruct_qnn229_qcs8550_4096_1_of_2.serialized.bin
├── qwen2.5-0.5b-instruct-tokenizer.json
├── qwen2.5-0.5b-instruct-htp.json
├── prompt.conf
├── metadata.json
├── htp_backend_ext_config.json
├── genie_config.json
├── config_linux.json
├── chat.txt
├── aidgen_config.json
├── aidgen_chat_template.txt

步骤四:对话模板设置 ​

💡注意

对话模板请参考模型资源包中的chat.txt 文件

根据大模型的模板修改 test_aidgen_t2t.cpp 文件:

cpp
    // ========================================================================
    // 5. 构建提示词模板 (Qwen2 格式)
    // ========================================================================
    std::string system_prompt =
        "<|im_start|>system\n"
        "You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n";

    auto make_user_turn = [](const std::string& text) -> std::string {
        return "<|im_start|>user\n" + text + "<|im_end|>\n<|im_start|>assistant\n";
    };

步骤五:编译运行 ​

bash
cd /home/aidlux/aidllm/examples

# 编译
mkdir build && cd build
cmake .. && make

cp test_t2t ../../qnn229_qcs8550_cl4096

cd /home/aidlux/aidllm/qnn229_qcs8550_cl4096
./test_t2t aidgen_config.json 'hi'
  • 模型运行成功后,有如下日志回显
bash
============================================================
  Turn 1: Single-turn inference
============================================================
User: hi
Assistant: [API] Generator::run(prompt, callback)
[BOS]Hello! How can I assist you today? Please feel free to ask me any questions.<|im_end|>[EOS]

--- Turn 1 Performance (Generator::get_profiler) ---
  Init Time (us):           573878
  Prompt Token Count:       30
  Time-to-First-Token (us): 32204
  Prompt TPS (tok/s):       1987.33
  Generated Token Count:    18
  Generate Time (us):       187135
  Generate TPS (tok/s):     96.1872