# ncnn_llm **Repository Path**: open-ai-tech/ncnn_llm ## Basic Information - **Project Name**: ncnn_llm - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-16 - **Last Updated**: 2026-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
基于 ncnn 的 LLM、VLM、OCR、翻译和嵌入模型推理运行时。
--- `ncnn_llm` 提供一个轻量级 C++ 运行时,用于在 [ncnn](https://github.com/Tencent/ncnn) 上运行语言模型和嵌入模型。项目关注可落地的本地推理场景,包括边缘设备、桌面 CPU 和支持 Vulkan 的 GPU。 本项目源自 **nihui** 对 ncnn `kvcache` 的实验性工作,并在此基础上扩展出可复用的示例、模型加载、分词器、视觉预处理、OCR 推理和嵌入模型 API。 ## 特性 - 统一的聊天和视觉语言模型 CLI 示例 - 支持 KV cache 的自回归解码,可运行在 CPU 或 Vulkan 后端 - 支持 Qwen / MiniCPM 风格的 LLM - 支持 Qwen VL 图文输入 - 提供 GLM-OCR 图像文字识别示例 - 提供 NLLB 翻译示例 - 提供文本嵌入和多模态嵌入 API - 支持 BPE 和 Unigram 分词器 - 使用 xmake 构建,示例程序保持小而独立 ## 支持模型 | 类别 | 模型 | 状态 | 说明 | | --- | --- | --- | --- | | LLM | YoutuLLM | 已支持 | 聊天 / 文本生成 | | LLM | MiniCPM4 | 已支持 | 聊天 / 文本生成 | | LLM | Qwen3 | 已支持 | 聊天 / 文本生成 | | VLM | Qwen3.5 | 已支持 | 图像 + 文本输入 | | VLM | Qwen2.5-VL | 已支持 | 图像 + 文本输入 | | OCR | GLM-OCR | 已支持 | OCR | | OCR | HunyuanOCR | 已支持 | OCR | | ASR | Qwen3 ASR | 已支持 | ASR | | 翻译 | NLLB | 已支持 | 翻译 | | 嵌入 | Jina-Embeddings-v5-Text-Nano | 已支持 | 768 维文本嵌入 | | 嵌入 | Jina-CLIP-v2 | 已支持 | 1024 维文本 + 图像嵌入 | ## 快速开始 ### 1. 依赖 - `xmake` - 从 `master` 分支构建的 ncnn ### 2. 克隆仓库 ```bash git clone https://github.com/futz12/ncnn_llm.git cd ncnn_llm ``` ### 3. 构建 ```bash xmake build ``` 只构建单个 target: ```bash xmake build llm_ncnn_run ``` ### 4. 下载模型 从下面的镜像下载已转换的 ncnn 模型目录: https://mirrors.sdu.edu.cn/ncnn_modelzoo/ 将模型目录放到 `assets/` 下,例如: ```text assets/ └── qwen3_0.6b/ ├── model.json ├── *.ncnn.param ├── *.ncnn.bin └── tokenizer files ``` ## CLI 聊天 `llm_ncnn_run` 是主要的交互式示例,支持文本模型和视觉语言模型。 ```bash xmake run llm_ncnn_run --model ./assets/qwen3_0.6b ``` 指定运行参数: ```bash xmake run llm_ncnn_run --model ./assets/qwen3_0.6b --threads 4 xmake run llm_ncnn_run --model ./assets/qwen3_0.6b --vulkan --vulkan-device 0 ``` 视觉语言输入: ```bash xmake run llm_ncnn_run --model ./assets/qwen2.5_vl_3b --image ./assets/test.jpg ``` ### CLI 选项 | 选项 | 说明 | | --- | --- | | `--model` | 模型目录 | | `--threads` | CPU 线程数 | | `--vulkan` | 启用 Vulkan 计算 | | `--vulkan-device` | Vulkan 设备编号 | | `--image` | VLM 输入图像路径 | | `--builtin-tools` | 启用内置演示工具 | 示例会话: ```text llm_ncnn_run (cli). Type 'exit' or 'quit' to end the conversation. User: Hello Assistant: Hello! How can I help you today? ``` ## OCR GLM-OCR 使用专用的图像 prefill 路径,并复用共享文本解码运行时。 ```bash xmake build ocr_main xmake run ocr_main --model ./assets/glm_ocr --image ./test_ocr.png --prompt "Read the text in the image." ``` 输出示例: ```text Generating text: Hello World 123 ``` ## 嵌入模型 `ncnn_embedding` 为文本嵌入和 CLIP 风格的图文嵌入提供统一 API。 ### 文本嵌入 ```bash xmake build embedding_main xmake run embedding_main --model ./assets/jina-embeddings-v5-text-nano ``` ### CLIP 多模态嵌入 ```bash xmake build clip_main xmake run clip_main --model ./assets/jina_clip_v2 --image ./assets/ganyu.jpg ``` ### C++ API ```cpp #include "ncnn_embedding.h" ncnn_embedding embed("./assets/jina_clip_v2", false, 4); std::vector