问题描述
环境:Tensorflow 2.4、Intel-Tensorflow 2.4
据我所知,pb 格式的 Tensorflow 模型可以在 ML.NET 上加载。
但是,我使用的是量化包 LPOT (https://github.com/intel/lpot),它利用了英特尔优化的 Tensorflow (https://github.com/Intel-tensorflow/tensorflow)。尽管 Intel-Tensorflow 是基于 Tensorflow 构建的,但它使用了一些在 Tensorflow 上没有注册 OpKernel 的量化操作(例如,'QuantizedMatmulWithBiasAndDequantize' 在 TF 上已被弃用)。因此,量化模型无法在未安装 Intel-Tensorflow 的原生 Tensorflow 环境下运行。
我的目标是在 ML.NET 上运行这个量化的 pb Intel-Tensorflow 模型,有谁知道 ML.NET 是否支持 Intel-Tensorflow?或者有没有其他方法可以做到这一点?
非常感谢任何帮助/建议。
解决方法
ML.NET 中支持的 oneDNN 取决于 ML.NET 集成。如果他们在 TensorFlow C++ API 中启用 oneDNN,ML.NET 就可以支持 oneDNN。
您可以尝试在启用了英特尔 OneDNN 的 ML.NET 环境中安装 股票 Tensorflow 2.5。您可以从此链接安装库存 Tensorflow 轮:https://pypi.org/project/tensorflow/#files
安装wheel文件:pip install __.whl
。
要启用oneDNN优化,请设置环境变量TF_ENABLE_ONEDNN_OPTS:
set TF_ENABLE_ONEDNN_OPTS=1
要确保显示详细日志:set DNNL_VERBOSE=1
有关 oneDNN 详细模式的更多信息,请参阅:https://oneapi-src.github.io/oneDNN/dev_guide_verbose.html
有关面向 tensorflow 的 Intel 优化的更多信息,请参阅:https://software.intel.com/content/www/us/en/develop/articles/intel-optimization-for-tensorflow-installation-guide.html