前言
有人说当下的AI热潮不过是算力堆砌的产物。现在层出不穷的各种大模型大训练集,使用复杂精致的技术在排行榜上不断刷新分数,这些人似乎忘了一件事情,AI模型最终是要落地的,是要用的,如果不能普及开去那和在象牙塔中精心雕刻雕塑又有什么区别呢?尽管现在有不少简单易用的框架都支持硬件加速,但gpu高昂的成本和厂家自我研发的诸如NPU之类的框架复杂度依然存在。所以本文将以一个天真可爱的想法展开,如果我就是个穷鬼,掏不起钱买显卡,只有一个五年前的Intel低端cpu,但我也想玩时下流行的style transfer GAN,该怎么办?
环境
首先迎来本文的主角1号,我们的style transfer模型xxx.onnx:
处于隐私保护,这里不能透露主角的姓名,只能通过输入输出来管中窥豹捏。
可以看到输入是1,?,?,3,输出是?,?,?,3,我们确认这是个nhwc的输入,和onnx的标准输入形状ncwh是不一样的捏,据说这点会影响性能推理,但实测下来并没有。此外,?号表示动态输入,说明这个模型的输入输出都没有固定形状。如果你还是听不懂的话,就是图片进模型图片出模型捏,像下面这样:
原图:
生成图:
然后是本文主角2号,咱们高贵的奔腾cpu:
最后是本文主角3号:
python3.10.6
Onnxruntime1.14.0
加速
1.基准测试
import onnxruntime as ort
options = ort.SessionOptions()
options.enable_profiling = True #记录性能开关
result = session.run