在算能 SOPHGO TPU 上一键部署主流大语言模型与多模态模型
Deploy LLMs & VLMs on SOPHGO BM1684X / BM1688 / CV186X with a single command
| 日期 | 更新内容 |
|---|---|
| 🔥 2026.04.15 | Qwen3.5 已支持 BM1684X / BM1688,提供 Python 与 C++ Demo,支持图片与视频 → 查看 |
| 2025.10.15 | Qwen3-VL 已支持 BM1684X / BM1688,Python / C++ Demo,支持图片与视频 → 查看 |
| 2025.05.22 | InternVL3 已支持 BM1684X / BM1688,支持图片与视频 → 查看 |
| 2025.04.30 | Qwen2.5-VL 已支持 BM1684X / BM1688,Python / C++ Demo → 查看 |
| 2025.04.29 | 推理模型 Qwen3 已支持 BM1684X / BM1688 → 查看 |
| 2025.03.07 | QwQ-32B 与 DeepSeek-R1-Distill-Qwen-32B 多芯 Demo 已适配 → 查看 |
| 2025.02.05 | 适配 DeepSeek-R1-Distill-Qwen 系列 (1.5B / 7B / 14B) → 查看 |
LLM-TPU 是 SOPHGO 官方维护的开源项目,致力于在算能 BM1684X / BM1688 / CV186X 系列 TPU 芯片上部署主流的 生成式 AI 模型(LLM / VLM)。
┌──────────────┐ tpu-mlir ┌──────────────┐ tpu-runtime ┌──────────────────┐
│ HuggingFace │ ─────────────► │ bmodel │ ───────────────► │ PCIE / SoC 部署 │
│ 原始权重 │ llm_convert │ (量化模型) │ Python / C++ │ BM1684X / 1688 │
└──────────────┘ └──────────────┘ └──────────────────┘
- 🚀 一键编译:
llm_convert.py直接将 HuggingFace 权重导出为 bmodel - 🧩 模型丰富:覆盖 Qwen / Llama / DeepSeek / InternVL / MiniCPM / Phi / ChatGLM 等数十种模型
- 🎯 多模态:支持文本、图像、视频、音频等多模态推理
- ⚡ 高效推理:支持 AWQ/GPTQ等 量化模型、动态编译、KV Cache、多芯并行
- 🛠️ 双语言 Demo:常用模型会提供 Python 与 C++ 参考实现
- 📦 开箱即用:可直接下载预编译 bmodel,无需自行编译
编译模型需要配置 TPU-MLIR 环境(Docker 或源码均可),亦可直接使用各 Demo 中预编译的 bmodel。完整模型列表见
models/。
只需两步即可在 TPU 设备上跑通一个 LLM:
git clone https://github.com/sophgo/LLM-TPU.git
cd LLM-TPU
./run.sh --model qwen2.5vl| 模型 | 命令 |
|---|---|
| Qwen3-4B | ./run.sh --model qwen3 |
| Qwen2.5-VL-3B | ./run.sh --model qwen2.5vl |
| InternVL3-2B | ./run.sh --model internvl3 |
📘 详细步骤请参考 Quick Start。
| 模型 | 支持芯片 | 一键编译 | 备注 |
|---|---|---|---|
| Qwen3.5 | BM1684X / 1688 | ✅ | Python + C++,图片 / 视频 |
| Qwen3-VL | BM1684X / 1688 | ✅ | Python + C++,图片 / 视频 |
| Qwen2.5-VL | BM1684X / 1688 | ✅ | Python + C++ |
| Qwen2-VL | BM1684X / 1688 | ✅ | — |
| InternVL3 | BM1684X / 1688 | ✅ | 支持视频 |
| Gemma3 | BM1684X / 1688 | ✅ | — |
| Qwen-VL / InternVL2 / MiniCPM-V-2.6 / Llama3.2-Vision | BM1684X / 1688 | — | 已部署 |
| 系列 | 代表模型 | 一键编译 |
|---|---|---|
| Qwen | Qwen1.5 / Qwen2 / Qwen2.5 / Qwen3 / QwQ-32B | ✅ |
| DeepSeek | DeepSeek-R1-Distill-Qwen (1.5B / 7B / 14B / 32B) | ✅ |
| Llama | Llama2 / Llama3 | ✅ |
| MiniCPM | MiniCPM4 | ✅ |
| Phi | Phi-3 / Phi-4 | ✅ |
| ChatGLM | ChatGLM3 / ChatGLM4 | ✅ |
| 其他 | Baichuan2 · CodeFuse · Falcon · Gemma / Gemma2 · Mistral · WizardCoder · Yi · Yi34B · LWM-Text-Chat · Megrez · MiniCPM3 · DeepSeek-V2 | — |
仓库 models/ 下当前包含以下模型实现:
LLM: Baichuan2 · ChatGLM2 · ChatGLM3 · CodeFuse · DeepSeek-V2 · GLM4 · Llama2 · Llama3 · LWM · Megrez · MiniCPM3 · MiniCPM4 · Mistral · Phi-3 · Qwen · Qwen1_5 · Qwen2 · Qwen2_5 · Qwen3 · RWKV6 · RWKV7 · WizardCoder · Yi · Yi34B
多模态 (Vision / Video / Audio): DriveMM · Gemma3 · GLM4V · InternVL2 · InternVL3 · Janus-Pro · Llama3_2-Vision · MiniCPM-V-2_6 · MiniCPMV4 · Molmo · NVILA · Qwen2_5_Omni · Qwen2_5_VL · Qwen2_Audio · Qwen2_VL · Qwen3_5 · Qwen3_ASR · Qwen3_VL · VILA1_5
完整源码与转换细节请见各子目录。
以 Qwen2.5-VL 为例:
优先选择 AWQ 或 GPTQ 量化版本,精度更优。
git lfs install
git clone git@hf.co:Qwen/Qwen2.5-VL-3B-Instruct-AWQ参考 TPU-MLIR
llm_convert.py \
-m /workspace/Qwen2.5-VL-3B-Instruct-AWQ \
-s 2048 --max_input_length 1024 \
-c bm1684x \
--max_pixels 672,896 \
-o qwen2.5vl_3b| 参数 | 简写 | 必选 | 说明 |
|---|---|---|---|
--model_path |
-m |
✅ | 权重路径 |
--seq_length |
-s |
✅ | 最大序列长度 |
--max_input_length |
— | 单次最大输入长度,默认等于 seq_length |
|
--quantize |
-q |
量化类型:w4bf16 / w4f16 / bf16 / f16 … |
|
--chip |
-c |
✅ | 目标平台:bm1684x / bm1688 / cv186x |
--q_group_size |
-g |
量化组大小,默认 64 |
|
--max_pixels |
— | VLM 专用,最大像素,如 672,896 或 602112 |
|
--do_sample |
— | 输出包含采样模型,默认关闭 | |
--out_dir |
-o |
✅ | 输出目录 |
💡 量化类型选择:如果是已经量化的模型,不需要指定quantize;未量化模型需要指定。
更多高级参数见 进阶应用。
执行完成后,输出目录会生成对应的 bmodel 与 config 配置目录,可直接加载推理。
| 能力 | 说明 | 启用方式 | 样例 |
|---|---|---|---|
| 动态编译 | 根据真实输入长度推理,减少短输入延时;多模态变尺寸图像也建议启用 | --dynamic |
Qwen3 · Qwen2.5-VL · MiniCPM4 · InternVL3 · Qwen3-VL |
| Prefill with KV Cache | 历史上下文以 KV Cache 形式保留,显著降低多轮对话延时 | --use_block_with_kv--max_input_length--max_prefill_kv_length |
Qwen3-VL · Qwen2.5-VL · Qwen3 · InternVL3 |
| 多芯并行 | 跨多颗 TPU 并行推理,支持更大模型与更高吞吐 | --num_device N |
Qwen2.5 / 2-8 芯 |
| 随机采样 | 使用 generation.json 配置进行采样(默认 greedy) |
--do_sample |
Qwen3 · InternVL3 · MiniCPM4 |
| 多任务复用 | 同一模型加载多次支持多任务,单芯片权重仅加载一次 | — | Qwen2.5-VL multiuser |
| Prefill 共享复用 | 长 prompt 仅 prefill 一次,后续对话共享其 KV Cache | --share_prompt--max_prefill_kv_length |
Qwen2.5 · Qwen3 |
| 模型加密 | 支持第三方库加密 bmodel,推理时调用解密接口 | — | Qwen · Qwen1.5 |
请参考 LLM-TPU FAQ。
- 📘 TPU-MLIR — 编译器主仓库
- 📗 TPU-MLIR 快速入门手册
- 🎬 TPU-MLIR 论文 / 整体工程讲解 (Bilibili)
- ✍️ ChatGLM2 流程解析与 TPU-MLIR 部署
- 🌐 SOPHGO 官网
欢迎通过 Issues 提交问题或建议,亦欢迎 Pull Request 共建生态。 若您对算能芯片或商业合作感兴趣,可通过 SOPHGO 官网 与我们联系。
本项目基于 Apache 2.0 协议开源。第三方组件协议详见 third-party-licenses/。
⭐ 如果本项目对你有帮助,欢迎 Star 支持!⭐

