主要特性
- 兼容 OpenAI 的 API:可直接替代 OpenAI Chat Completions API
- 模型完全在 NPU 上运行,提供快速性能,同时释放 CPU/GPU 以处理其他任务。
- 多模型支持:支持 qwen3-4b-instruct、llama3.1-8b 等 LLM,以及 qwen3-4b-VL 等 VLM。可轻松从 AI Hub 添加其他 LLM/VLM。
- 自动上下文管理:会话过长时进行智能摘要
- 基于线程的会话:跨请求维持对话上下文,允许您在同一容器实例中的 LLM 和 VLM 调用之间切换。
设置
以下步骤假设您已完成设备设置(IQ-9075 EVK 或 IQ-8275 EVK)。设备设置完成后,按照以下步骤安装并运行 LLM/VLM 微服务容器。在此示例中,我们会将一个 LLM 和一个 VLM 模型复制到设备上,并使用容器的单一实例同时运行这两个模型。1
安装所需的软件包
2
设置 Docker
3
下载 LLM/VLM 模型
我们先从 Hugging Face 下载针对 QCS9075 优化的 qwen3-4b-instruct 模型作为入门。您可以在 Qualcomm AI Hub 页面上找到可用的 LLM 和 VLM 模型列表——可使用左侧的筛选器选择您感兴趣的芯片组和模型类型。
直接下载:
直接下载:
IQ-8275 EVK
IQ-8275 EVK
IQ-9075 EVK
IQ-9075 EVK
4
安装 LLM/VLM 模型
在下载了 zip 文件后,将其复制到设备并解压。此示例假设您在
您的模型目录现在应类似于:
您的模型目录现在应类似于:
~/models 创建了一个模型目录。IQ-9075 EVK
IQ-9075 EVK
~/models/qwen3_4b_instruct_2507-genie-w4a16-qualcomm_qcs9075/~/models/qwen2_5_vl_7b_instruct-genie-w4a16-qualcomm_qcs9075/IQ-8275 EVK
IQ-8275 EVK
~/models/qwen3_4b_instruct_2507-genie-w4a16-qualcomm_qcs8275/~/models/qwen2_5_vl_7b_instruct-genie-w4a16-qualcomm_qcs8275/5
将 docker compose 文件安装到您的设备上
从 CodeLinaro 部署目录下载适用于您设备的 Docker Compose 文件。
IQ-9075 EVK
IQ-9075 EVK
IQ-8275 EVK
IQ-8275 EVK
后续步骤使用
docker-compose-qcs9100-ubuntu.yaml。如果您使用的是 IQ-8275,请在每个命令中替换为 docker-compose-qcs8300-ubuntu.yaml。6
配置您的 LLM/VLM 容器
编辑您复制到设备上的 Docker Compose 文件以进行配置:
在
在
environment: 下:- GENAI_PORT:更改要暴露服务的端口号(默认值:9001)
- MAX_ACTIVE_MODELS:服务同时保持加载的不同模型的最大数量。当请求新模型且已达到上限时,最近最少使用的模型将被卸载以腾出空间。每个加载的模型都会占用 DSP/NPU 资源和内存。(默认值:2)
- GENAI_CONTEXT_CAPPING:每个模型允许使用的上下文窗口的安全上限。设置后,每个模型的原生上下文大小会被降低到 min(original_size, cap)。这限制了内存使用,有助于避免资源受限设备上出现内存不足的情况。(默认值:2048)
volumes: 下:- GENAI_MODEL_DIR:更改为指向您的模型目录。在此示例中,我们使用 ~/models,因此更改为:
${GENAI_MODEL_DIR:-~/models}:/mnt/work/models/
7
启动容器
如果容器不存在,docker compose 文件会自动将其下载到您的设备,并使用您配置的设置运行。
8
验证 LLM 是否正常工作
打开浏览器并访问
http://<Device IP address>:<port>/docs 以打开 API 浏览器。
在 /v1/chat/completions/ API 中:1
选择 'Try it out'
2
将请求正文替换为
3
点击 'Execute' 发送请求
您应该会在下方页面看到响应。

9
验证 VLM 是否正常工作
打开浏览器并访问
http://<Device IP address>:<port>/docs 以打开 API 浏览器。
在 /v1/chat/completions/ API 中:1
选择 'Try it out'
2
将请求正文替换为
3
点击 'Execute' 发送请求
您应该会在下方页面看到响应。请注意,VLM 可能需要几秒钟才能运行。

在此前调用 LLM 之后首次调用 VLM(或反之),响应会有轻微延迟,因为容器需要卸载之前的 LLM 并加载 VLM。后续调用将执行得快得多。
10
停止容器
完成后,您可以使用以下命令停止容器:

