
tpu-mlir
把 PyTorch/ONNX 模型一键编译到算能 TPU 上跑起来
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-09-16 · 当前星标 ★ 1016
使用教程
环境要求
- Docker 环境(用于拉取 sophgo/tpuc_dev 镜像)
- Python ≥ 3.10,Ubuntu 22.04(Docker 镜像内已满足)
- 一台 Sophgo TPU 设备(如 BM1684X,PCIe/SoC)用于实际运行 bmodel
- 编译 cpp_demo 需要 cmake 与 make
安装与启动步骤
-
1拉取开发镜像
从 Docker Hub 拉取官方预编译镜像,后续编译与运行都在该容器内进行。
docker pull sophgo/tpuc_dev:latest -
2离线加载镜像
若拉取失败,下载镜像 tar 包后用 docker load 导入,效果与拉取一致。
wget https://sophon-assets.sophon.cn/sophon-prod-s3/drive/25/04/15/16/tpuc_dev_v3.4.tar.gz docker load -i tpuc_dev_v3.4.tar.gz -
3启动容器
以特权模式创建名为 tpu-mlir 的容器,并把当前目录挂载到 /workspace。
docker run --privileged --name tpu-mlir -v $PWD:/workspace -it sophgo/tpuc_dev:latest -
4安装 Python 包
在容器内安装预编译 wheel,即可使用 tpu_mlir 相关工具与 Python 接口。
pip install tpu_mlir -
5编译推理 demo
把 cpp_demo 拷到设备上,用 cmake + make 编译出 pipeline 可执行文件。
mkdir build && cd build cmake .. make mv pipeline .. cd .. -
6运行 bmodel
用编译好的 pipeline 加载 bmodel 与配置,在 TPU 设备上执行推理。
./pipeline -m xxxx.bmodel -c config -
7通用推理脚本
model_runner.py 支持 bmodel/mlir/PyTorch/ONNX/TFLite/Caffe 多种输入格式。
model_runner.py --input resnet18_in_f32.npz --model resnet18_1684x_f32.bmodel --output resnet18_output.npz
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
-m | 是 | pipeline 运行时指定的 bmodel 模型文件路径 | xxxx.bmodel |
-c | 是 | pipeline 运行时指定的配置文件(目录) | config |
--model | 是 | model_runner.py 的模型文件,支持 bmodel/mlir/onnx 等 | resnet18_1684x_f32.bmodel |
--input | 是 | model_runner.py 的输入数据文件(npz) | resnet18_in_f32.npz |
--output | 是 | model_runner.py 的输出结果保存文件(npz) | resnet18_output.npz |
如何确认成功
容器内 pip show tpu_mlir 能看到版本号;执行 ./pipeline 后终端打印出推理结果(README 的 Sample output)。
常见问题
Q:docker pull 拉取镜像失败怎么办?
A:改用离线方式:wget 下载 tpuc_dev_v3.4.tar.gz,再执行 docker load -i tpuc_dev_v3.4.tar.gz 导入本地镜像。
Q:对 Python 版本有要求吗?
A:需要 Python ≥ 3.10、Ubuntu 22.04;官方 Docker 镜像内已满足,无需额外配置。
Q:示例模型在哪里获取?
A:YOLOv5 示例 yolov5s.onnx 已内置在仓库的 regression/model/ 目录下,也可从 ultralytics 发布页下载。
Q:model_runner.py 支持哪些模型格式?
A:支持 bmodel、mlir、PyTorch、ONNX、TFLite、Caffe 六种输入。
Q:为什么必须加 --privileged?
A:README 的容器启动命令使用了特权模式,用于访问 TPU 等设备资源,去掉可能导致设备不可用。
注意事项
- 容器启动需加 --privileged,否则可能无法访问 TPU 设备。
- 用 -v $PWD:/workspace 挂载当前目录,编译产物与模型放在该目录下便于宿主机访问。
- bmodel 需在真实 Sophgo TPU 设备(PCIe/SoC)上运行,编译阶段可在容器内完成。
- README 未给出完整的模型编译(转 bmodel)命令,具体流程请参考官方 Quick Start 文档 https://tpumlir.org/quick_start_en/index.html。
核心亮点
- 基于 MLIR 的完整编译链路,从 ONNX/PyTorch/TFLite 到 TPU 二进制一站式转换
- 支持 INT8 等量化与算子融合,针对 TPU 做内存和调度优化,提升推理效率
- 官方维护,与算能 BM1684X/CV186 等芯片及 SDK 配套,部署路径明确
不足之处
- 强绑定 Sophgo TPU 硬件,无法用于其他厂商芯片,通用性受限
- 社区规模较小,第三方文档和踩坑资料相对有限
适用场景
- 边缘服务器上用 BM1684X 部署视觉检测模型
- 将 LLM 量化后编译到算能 TPU 做本地推理
- 把 PyTorch 训练好的模型转换并部署到算能 AI 加速卡
替代项目
Apache TVM、ONNX Runtime
上一篇:raft
下一篇:SiliconScope
同类项目推荐
comfy-pack
开源
一键锁定打包 ComfyUI 环境,告别部署翻车
A comprehensive toolkit for reliably locking, packing and deploying environments for···
Data-Engineering-Roadmap
开源
一张图理清数据工程学习路径,从入门到实战
Roadmap for Data Engineering
TensorFold
开源
Mac 本地跑大模型,快而不糊,接口直接兼容 OpenAI
LLM Inference Engine for Metal, CUDA and Vulkan.
obelisk
开源
让AI代理记住每次会话,历史经验随时可查
Every past session, subagent, and workflow -- queryable by your agent, browsable by ···
text-embeddings-inference
开源
用 Rust 极速跑嵌入模型,高吞吐低延迟,一键部署生产级 API
A blazing fast inference solution for text embeddings models
ChannelMonitor
开源
定时自动测试渠道模型,故障秒级标记,减少 API 报错
Channel Monitor 是一个用于监控OneAPI/NewAPI/OneHub渠道的工具,它直接读取channels和ab···
k8ssandra-operator
开源
在 K8s 上像管理应用一样管理 Cassandra 集群,自动部署与运维
The Kubernetes operator for K8ssandra
Agent-RAG-LLM_deploy
开源
C++ 部署 Agent+RAG+LLM,让大模型应用真正跑进生产环境
gpt4local
开源
本地跑 GPT,文档问答秒回,OpenAI 接口无缝换
Openai-style, fast & lightweight local language model inference w/ documents