警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
轉自 濤哥帶你學編程
安裝TensorFlow(CPU版本),使用pip install tensorflow安裝,安裝一切順利,但是在跑一個簡單的程序時,遇到如下情況:
大概意思是:你的CPU支持AVX擴展,但是你安裝的TensorFlow版本無法編譯使用。
原因:
除了通常的算術和邏輯,現(xiàn)代CPU提供了許多低級指令,稱為擴展,例如, SSE2,SSE4,AVX等來自維基百科:
高級矢量擴展(AVX)是英特爾在2008年3月提出的英特爾和AMD微處理器的x86指令集體系結構的擴展,英特爾首先通過Sandy Bridge處理器在2011年第一季度推出,隨后由AMD推出Bulldozer處理器在2011年第三季度.AVX提供了新功能,新指令和新編碼方案。
特別是,AVX引入了融合乘法累加(FMA)操作,加速了線性代數(shù)計算,即點積,矩陣乘法,卷積等。幾乎所有機器學習訓練都涉及大量這些操作,因此將會支持AVX和FMA的CPU(最高達300%)更快。該警告指出您的CPU確實支持AVX(hooray!)。
在此強調一下:
這只限于CPU。如果你有一個GPU,你不應該關心AVX的支持,因為大多數(shù)昂貴的操作將被分派到一個GPU設備上(除非明確地設置)。在這種情況下,您可以簡單地忽略此警告。
那為什么會出現(xiàn)這種警告呢?
由于tensorflow默認分布是在沒有CPU擴展的情況下構建的,例如SSE4.1,SSE4.2,AVX,AVX2,FMA等。默認版本(來自pip install tensorflow的版本)旨在與盡可能多的CPU兼容。另一個觀點是,即使使用這些擴展名,CPU的速度也要比GPU慢很多,并且期望在GPU上執(zhí)行中型和大型機器學習培訓。
解決方法:
如果安裝的是GPU版本
如果你有一個GPU,你不應該關心AVX的支持,因為大多數(shù)昂貴的操作將被分派到一個GPU設備上(除非明確地設置)。在這種情況下,您可以簡單地忽略此警告:
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
如果安裝的是CPU版本(pip install tensorflow)
-
1.在代碼中加入如下代碼,忽略警告:
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
2.編譯TensorFlow源碼
如果您沒有GPU并且希望盡可能多地利用CPU,那么如果您的CPU支持AVX,AVX2和FMA,則應該從針對CPU優(yōu)化的源構建tensorflow。在這個問題中已經討論過這個問題,也是這個GitHub問題。 Tensorflow使用稱為bazel的ad-hoc構建系統(tǒng),構建它并不是那么簡單,但肯定是可行的。在此之后,不僅警告消失,tensorflow性能也應該改善。參考:
https://stackoverflow.com/questions/47068709/your-cpu-supports-instructions-that-this-tensorflow-binary-was-not-compiled-to-u?answertab=votes#tab-top
總結
以上是生活随笔為你收集整理的警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TensorFlow CPU环境 SSE
- 下一篇: 达摩院年终预测出炉:AI for Sci