本节将介绍针对 TVM 初学者设计的脚本工具。
开始前如果没有下载示例模型,需要先通过终端下载 resnet 模型:
cd myscripts/ mv resnet50-v2-7-frozen.onnx my_model.onnx
在myscripts目录下新建tvmcpythonintro.py
0、导入
from tvm.driver import tvmc
1、加载模型
将模型导入 TVMC。这一步将机器学习模型从支持的框架,转换为 TVM 的高级图形表示语言 —— Relay。这是为 TVM 中的所有模型统一起点。目前支持的框架:Keras、ONNX、TensorFlow、TFLite 和 PyTorch。
model = tvmc.load('my_model.onnx') # 第 1 步:加载
查看 Relay,可运行 model.summary()
。
所有框架都支持用 shape_dict 参数覆盖输入 shape。对于大多数框架,这是可选的;但对 PyTorch 是必需的,因为 TVM 无法自动搜索它。
model = tvmc.load('my_model.onnx', shape_dict={'data' : [1,3,224,224]}) #第一步: 加载 + shape_dict推荐通过 netron 查看模型 input/shape_dict。打开模型后,单击第一个节点查看输入部分中的 name 和 shape。
2、编译
模型现在是用 Relay 表示的,下一步是将其编译到要运行的硬件(称为 target)。这个编译过程将模型从 Relay,翻译成目标机器可理解的底层语言。
编译模型需要一个 tvm.target 字符串。查看 文档 了解有关 tvm.targets 及其选项的更多信息。一些例子如下:
- cuda (英伟达 GPU)
- llvm (CPU)
- llvm -mcpu=cascadelake(英特尔 CPU)
(上面我理解的是编译到TVM运行时)
package = tvmc.compile(model, target="llvm") # 第 2 步:编译
编译完成后返回一个 package。
参考资料:
使用 TVMC Python 入门:TVM 的高级 API | Apache TVM 中文站 (hyper.ai)
标签:Python,模型,TVM,编译,shape,API,model,TVMC From: https://www.cnblogs.com/xzit201802/p/16949288.html