TPU-MLIR 是一款开源的机器学习编译器,可将来自 PyTorch、ONNX、TFLite、Caffe
以及 HuggingFace LLM 的预训练网络,转换为可在算能(Sophgo)TPU 上高效运行的
.bmodel 文件。两层 MLIR Dialect 设计让从算法到芯片的路径既清晰、
可重定向,又易于扩展。
围绕三个简洁的 Python 入口构建,整个流程脚本化、可复现。
将原始模型导入与框架无关的 Top Dialect。
$ model_transform.py \ --model_name yolov5s \ --model_def yolov5s.onnx \ --input_shapes [[1,3,640,640]] \ --mlir yolov5s.mlir
可选:基于少量数据生成 INT8 校准表。
$ run_calibration.py yolov5s.mlir \ --dataset ../COCO2017 \ --input_num 100 \ -o yolov5s_cali_table
下沉到 TPU Dialect,针对目标芯片产出 .bmodel。
$ model_deploy.py \ --mlir yolov5s.mlir \ --quantize INT8 \ --processor bm1684x \ --model yolov5s_int8.bmodel
支持多框架输入、多精度输出,构建在易于扩展的 MLIR 之上。
开箱即用支持 PyTorch、ONNX、TFLite 与 Caffe;其他框架可经 ONNX 转换接入。
原生支持 HuggingFace LLM —— 包含 AWQ、GPTQ、AutoRound 等量化形态 —— 通过统一的 llm_convert.py 一键编译。
F32 / F16 / BF16 / INT8 / W4A16 / W8A16,并提供基于校准的 INT8 训练后量化。
同一条 MLIR 流水线即可覆盖 bm1684x、bm1688 等多款算能 TPU 处理器。
图级与张量级的深度优化 —— Layer Group、前后处理融合 —— 让 TPU 持续繁忙、显存搬运保持低位。
视觉(YOLO 系列)、语音(Whisper)以及大语言模型(Qwen3.5、Qwen3-VL、MiniCPM-V-4 ……)均在持续回归。
选定前端、确定精度,部署到您所使用的目标芯片。
以下并非完整清单,仅为 TPU-MLIR 回归与示例流程中常见的代表性模型族。
llm_convert.py 编译后在算能 BM1684X 上运行对话。两条路径都假设您已使用官方 sophgo/tpuc_dev Docker 镜像并执行了 pip install tpu_mlir。
# 1. 从 HuggingFace 拉取量化模型 $ git lfs install $ git clone https://huggingface.co/Intel/Qwen3.5-2B-int4-AutoRound # 2. 编译为面向 BM1684X 的 bmodel $ llm_convert.py \ -m /workspace/Qwen3.5-2B-int4-AutoRound \ --max_input_length 1024 -s 2048 \ -c bm1684x --max_pixels 768,768 \ -o qwen3.5_2b # → qwen3.5_2b/*.bmodel ✔ 即可上 TPU 运行
# 1) 前端转换 → Top Dialect MLIR $ model_transform.py \ --model_name yolov5s \ --model_def ../yolov5s.onnx \ --input_shapes [[1,3,640,640]] \ --mlir yolov5s.mlir # 2) INT8 校准 $ run_calibration.py yolov5s.mlir \ --dataset ../COCO2017 --input_num 100 \ -o yolov5s_cali_table # 3) 下沉为 bmodel $ model_deploy.py \ --mlir yolov5s.mlir --quantize INT8 \ --calibration_table yolov5s_cali_table \ --processor bm1684x \ --model yolov5s_int8.bmodel
您所需要的一切深入资料,提供中英文版本。