CPU ของคุณรองรับคำแนะนำที่ TensorFlow ไบนารีนี้ไม่ได้รวบรวมเพื่อใช้: AVX AVX2


656

ฉันยังใหม่กับ TensorFlow ฉันเพิ่งติดตั้งมัน (เวอร์ชั่น Windows CPU) และได้รับข้อความต่อไปนี้:

ติดตั้ง tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc2 สำเร็จแล้ว

จากนั้นเมื่อฉันพยายามวิ่ง

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
sess.run(hello)
'Hello, TensorFlow!'
a = tf.constant(10)
b = tf.constant(32)
sess.run(a + b)
42
sess.close()

(ซึ่งฉันพบผ่านhttps://github.com/tensorflow/tensorflow )

ฉันได้รับข้อความต่อไปนี้:

2017-11-02 01: 56: 21.698935: IC: \ tf_jenkins \ home \ workspace \ rel-win \ M \ windows \ PY \ 36 \ tensorflow \ core \ platform \ cpu_feature_guard.cc: 137] CPU ของคุณรองรับคำแนะนำนี้ TensorFlow ไบนารีไม่ได้รวบรวมเพื่อใช้: AVX AVX2

แต่เมื่อฉันวิ่ง

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

มันทำงานตามที่ควรและเอาท์พุทHello, TensorFlow!ซึ่งบ่งชี้ว่าการติดตั้งนั้นประสบความสำเร็จแน่นอน แต่มีบางอย่างที่ผิดปกติ

คุณรู้หรือไม่ว่าปัญหาคืออะไรและจะแก้ไขได้อย่างไร


33
ถ้าใช้งานได้ข้อมูลที่พ่นออกมานั้นหมายความว่ามันไม่เร็วเท่าที่ควร เพื่อกำจัดมันคุณสามารถติดตั้งได้จากแหล่งดูที่นี่
Ben

ฉันกำลังเผชิญปัญหาเดียวกันกับคำสั่งที่คุณสามารถทำงานได้สำเร็จ >>> sess = tf.Session() 2017-11-05 18:02:44.670825: I C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instruct ions that this TensorFlow binary was not compiled to use: AVX AVX2
M. Oguz Ozcan

@Ben ดังนั้นมันเป็นเพียงคำเตือน แต่ทุกอย่างจะทำงานได้ดี? (อย่างน้อยจากมุมมองของผู้เริ่มต้น)
bvdb

1
หากต้องการคอมไพล์ Tensorflow ด้วยคำแนะนำ AVX ดูคำตอบ
Sreeragh AR

2
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2ผมได้รับข้อความที่คล้ายกันมากในสถานการณ์เดียวกันข้อความเป็น
ฮามิดเฮดาร์เรียน

คำตอบ:


818

คำเตือนนี้เกี่ยวกับอะไร?

ซีพียูรุ่นใหม่ให้คำแนะนำระดับต่ำจำนวนมากนอกเหนือจากเลขคณิตและตรรกะตามปกติซึ่งรู้จักกันในชื่อส่วนขยายเช่น SSE2, SSE4, AVX และอื่น ๆ จากWikipedia :

Advanced Vector Extensions ( AVX ) เป็นส่วนขยายของสถาปัตยกรรมชุดคำสั่ง x86 สำหรับไมโครโปรเซสเซอร์จาก Intel และ AMD ที่เสนอโดย Intel ในเดือนมีนาคม 2008 และได้รับการสนับสนุนครั้งแรกจาก Intel ด้วยโปรเซสเซอร์ Sandy Bridge ที่จัดส่งในไตรมาสที่ 1 ปี 2011 และต่อมา ในไตรมาสที่ 3 ปี 2011 AVX นำเสนอคุณสมบัติใหม่คำแนะนำใหม่และรูปแบบการเข้ารหัสใหม่

โดยเฉพาะอย่างยิ่ง AVX แนะนำการดำเนินการหลอมรวมทวีคูณ (FMA) ซึ่งเพิ่มความเร็วในการคำนวณพีชคณิตเชิงเส้นนั่นคือ dot-product เมทริกซ์คูณคูณ convolution ฯลฯ เกือบทุกการฝึกอบรมการเรียนรู้ด้วยเครื่องจักรเกี่ยวข้องกับการดำเนินการเหล่านี้อย่างมาก เร็วขึ้นบน CPU ที่รองรับ AVX และ FMA (สูงถึง 300%) คำเตือนระบุว่า CPU ของคุณรองรับ AVX (ไชโย!)

ฉันต้องการที่จะเน้นที่นี่: มันเป็นเรื่องของCPU เท่านั้น

ทำไมมันไม่ใช้แล้ว

เนื่องจากการกระจายเริ่มต้นของ tenorflow ถูกสร้างขึ้นโดยไม่มีส่วนขยายของ CPUเช่น SSE4.1, SSE4.2, AVX, AVX2, FMA เป็นต้นการสร้างเริ่มต้น (ส่วนหนึ่งจากpip install tensorflow) นั้นมีวัตถุประสงค์เพื่อให้เข้ากันได้กับ CPU มากที่สุดเท่าที่จะทำได้ อีกเหตุผลหนึ่งคือแม้ว่า CPU ส่วนขยายเหล่านี้จะช้ากว่า GPU มากและคาดว่าสำหรับการฝึกอบรมการเรียนรู้ด้วยเครื่องขนาดกลางและขนาดใหญ่ที่จะใช้งานบน GPU

คุณควรทำอะไร?

หากคุณมี GPUคุณไม่ควรสนใจการสนับสนุน AVX เนื่องจาก ops ที่แพงที่สุดจะถูกส่งไปยังอุปกรณ์ GPU (เว้นแต่จะไม่ได้กำหนดไว้อย่างชัดเจน) ในกรณีนี้คุณสามารถเพิกเฉยต่อคำเตือนนี้ได้

# Just disables the warning, doesn't enable AVX/FMA
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

... หรือโดยการตั้งค่าexport TF_CPP_MIN_LOG_LEVEL=2หากคุณใช้ระบบปฏิบัติการยูนิกซ์ Tensorflow ทำงานได้ดี แต่คุณจะไม่เห็นคำเตือนที่น่ารำคาญเหล่านี้


หากคุณไม่มี GPUและต้องการใช้ CPU ให้มากที่สุดคุณควรสร้างเทนเซอร์โฟลวจากแหล่งที่ปรับให้เหมาะสมสำหรับCPU ของคุณด้วยการเปิดใช้งาน AVX, AVX2 และ FMA หาก CPU ของคุณรองรับ มันถูกกล่าวถึงในคำถามนี้และปัญหา GitHub นี้ด้วย Tensorflow ใช้ระบบการสร้างโฆษณาที่เรียกว่าbazelและการสร้างมันไม่ใช่เรื่องเล็กน้อย แต่ก็เป็นไปได้อย่างแน่นอน หลังจากนี้ไม่เพียง แต่การเตือนจะหายไปประสิทธิภาพการทำงานของ tenorflow ก็ควรปรับปรุงเช่นกัน


29
เป็นมูลค่าการกล่าวขวัญว่าการให้บริการ TensorFlow มีการติดตั้งแยกต่างหากสำหรับซีพียูที่ไม่ได้รับการปรับปรุงและซีพียูที่ได้รับการปรับปรุง (AVX, SSE4.1, ฯลฯ ) รายละเอียดอยู่ที่นี่: github.com/tensorflow/serving/blob/…
Chris Fregly

9
ตามคำตอบที่ถูกลบไปสำหรับคำถามนี้ AVX512F สำหรับ i9-7900x (Skylake-AVX512) ที่มี GPU (GTX1080Ti) "ทำให้ได้รับ 28% 68s-> 48s สำหรับ CIFAR10 1,000 iterations" คุณแน่ใจหรือว่าเป็นคำแนะนำที่ดีที่จะไม่สนใจคำเตือนเมื่อใช้ GPU? หากความคิดเห็นนั้นไม่ใช่ของปลอมจะปรากฏว่ามีบางสิ่งที่จะได้รับจากชุดคำสั่ง CPU ในบางกรณี
Peter Cordes

1
@PeterCordes ถ้าเป็นเช่นนั้นฉันจะรวมไว้ในคำตอบของฉันอย่างแน่นอน แต่คำสั่ง "โมเดลของฉันเร็วขึ้น 30%" ฟังดูเหมือนกับ "โปรแกรม C ++ ของฉันเพิ่มความเร็วขึ้น 30%" รุ่นอะไรกันแน่? มีการจัดวาง CPU ด้วยตนเองหรือไม่? การถ่ายโอนข้อมูลเป็นอย่างไร? เช่นอาจมีงานจำนวนมากใน numpy แน่นอนว่ามันเป็นไปได้ที่จะทำให้ซีพียูเป็นคอขวดและมีคำถามมากมายเกี่ยวกับมันใน SO มันมักจะถือว่าเป็นข้อผิดพลาด
Maxim

2
@Maxim: ข้อความทั้งหมดของคำตอบที่ถูกลบคือ " ในการทดสอบของฉันคำสั่ง AVX512F บน I9 (7900x) GPU (GTX1080Ti) ทำให้ได้รับ 28% 68s-> 48s สำหรับ CIFAR10 1000 iterations " น่าเสียดายที่ไม่มีรายละเอียด (หรือเครื่องหมายวรรคตอนไวยากรณ์หรือการจัดรูปแบบ)
Peter Cordes

2
เห็นได้ชัดว่าหากคุณใช้ Mac จะไม่ใช้ GPU, stackoverflow.com/questions/46364917//
Dent Arthur Dent Dent

156

อัพเดต binary tensorflow สำหรับ CPU & OS ของคุณโดยใช้คำสั่งนี้

pip install --ignore-installed --upgrade "Download URL"

สามารถดาวน์โหลด URL ของไฟล์ whl ได้ที่นี่

https://github.com/lakshayg/tensorflow-build


1
ฉันพยายามบน Windows 10 wuth URL stackoverflow.com/questions/47068709/... ฉันได้รับข้อผิดพลาดว่า zipfile.BadZipFile: ไฟล์ไม่ใช่ไฟล์ซิป
Thusitha Thilina Dayaratne

1
มันทำงานได้เมื่อฉันดาวน์โหลดและใช้รุ่นที่ดาวน์โหลด
Thusitha Thilina Dayaratne

1
ทุกคนที่ได้รับ "ข้อผิดพลาดว่า zipfile.BadZipFile: ไฟล์ไม่ใช่ไฟล์ซิป" ควรได้รับลิงก์ดิบอย่างเช่น cuda9.2avx2 ลิงก์คือgithub.com/fo40225/tensorflow-windows-wheel/raw/master/1.9.0/
Yeasin Ar Rahman

5
สำหรับ windows ฉันลองทำสิ่งนี้ ถอนการติดตั้ง tensorflow ที่มีอยู่โดยใช้ "pip uninstall tenorflow" จากนั้นติดตั้งใหม่โดยใช้ "pip install <พา ธ ไปยังไฟล์ WHL ที่ดาวน์โหลด>" ดาวน์โหลดไฟล์ WHL นี้ลงในคอมพิวเตอร์ของคุณ - github.com/fo40225/tensorflow-windows-wheel/blob/master/1.10.0/…ถ้าคุณมี 3.6 Python และ 64-bit windows (ละเว้น amd ที่คุณเห็น) มิฉะนั้นให้ย้อนกลับไปเป็น GitHub แล้วค้นหา WHL ที่ถูกต้อง ใช้งานได้
กษัตริย์

3
ทำงานให้ฉัน Ubuntu 16.04.4, Python 3.5.2, gcc 5.4.0 - ดาวน์โหลด whl และติดตั้ง ขณะนี้ใช้อินสแตนซ์ p2.xLarge aws ประสิทธิภาพเพิ่มขึ้นจาก 16 วินาทีต่อการทำซ้ำเป็น 9 วินาทีสำหรับการออกกำลังกายตรวจจับวัตถุที่กำหนดเองด้วย 230 คลาสที่ทำงานบน Faster R-CNN ที่รวดเร็วขึ้น
Apricot

27

การเพิ่มประสิทธิภาพ CPU ด้วย GPU

มีประสิทธิภาพที่เพิ่มขึ้นคุณสามารถรับได้โดยการติดตั้ง TensorFlow จากแหล่งข้อมูลแม้ว่าคุณจะมี GPU และใช้สำหรับการฝึกอบรมและการอนุมาน เหตุผลคือการดำเนินการ TF บางอย่างมีการใช้งาน CPU เท่านั้นและไม่สามารถทำงานบน GPU ของคุณได้

นอกจากนี้ยังมีเคล็ดลับการเพิ่มประสิทธิภาพที่ใช้งาน CPU ของคุณได้ดี คู่มือประสิทธิภาพของ TensorFlowแนะนำต่อไปนี้:

การวางการดำเนินงานไปป์ไลน์อินพุตบน CPU สามารถปรับปรุงประสิทธิภาพได้อย่างมาก การใช้ซีพียูสำหรับไพพ์ไลน์อินพุตจะปล่อย GPU เพื่อมุ่งเน้นไปที่การฝึกฝน

เพื่อประสิทธิภาพที่ดีที่สุดคุณควรเขียนรหัสเพื่อใช้งาน CPU และ GPU ของคุณเพื่อทำงานควบคู่และไม่ทิ้งทุกอย่างไว้ใน GPU ของคุณหากคุณมี การมีไบนารีของ TensorFlow ที่ปรับให้เหมาะกับ CPU ของคุณสามารถชำระเวลาทำงานที่บันทึกไว้เป็นชั่วโมงและคุณต้องทำเพียงครั้งเดียว



12

สำหรับ Windows (ขอขอบคุณเจ้าของ f040225) ไปที่นี่: https://github.com/fo40225/tensorflow-windows-wheelเพื่อดึง URL สำหรับสภาพแวดล้อมของคุณตามการรวมกันของ "tf + python + cpu_instruction_extension" จากนั้นใช้ cmd นี้เพื่อติดตั้ง:

pip install --ignore-installed --upgrade "URL"

หากคุณพบข้อผิดพลาด "ไฟล์ไม่ใช่ไฟล์ซิป" ให้ดาวน์โหลด. what ไปยังคอมพิวเตอร์ของคุณและใช้ cmd นี้เพื่อติดตั้ง:

pip install --ignore-installed --upgrade /path/target.whl

ชิ้น GPU ถูกแบ่งออกเป็นชิ้นส่วนและระบุว่าเป็นไฟล์. 7z วิธีการรวมเข้าด้วยกัน?
user3496060

@ user3496060 ฉันใช้ winrar เพื่อคลายการบีบอัดไฟล์แยก
Alan Dursun

8

หากคุณใช้Pip version ของ tensorflow นั่นหมายความว่าคอมไพล์แล้วและคุณเพิ่งติดตั้ง โดยทั่วไปคุณติดตั้ง tensorflow-gpu แต่เมื่อคุณดาวน์โหลดจากพื้นที่เก็บข้อมูลและพยายามที่จะสร้างคุณควรสร้างมันด้วยการสนับสนุน CPU AVX หากคุณเพิกเฉยคุณจะได้รับคำเตือนทุกครั้งเมื่อคุณรันบน cpu


ฉันจะหลีกเลี่ยงข้อผิดพลาดนี้ได้อย่างไรฉันควรทำสิ่งใดบ้าง
jitsm555

2
นี่ไม่ใช่ข้อผิดพลาด มันเป็นคำเตือนว่า thensorflow ไม่รองรับ AVX สำหรับ cpu หากคุณไม่ต้องการที่จะเห็นมันเพียงแค่ปิดมันโดยการตั้งค่าos.environ ['TF_CPP_MIN_LOG_LEVEL'] = '2'
Hazarapet Tunanyan

5

วิธีที่ง่ายที่สุดที่ฉันพบในการแก้ไขคือถอนการติดตั้งทุกอย่างแล้วติดตั้ง tensorflow-gpu รุ่นที่ระบุ:

  1. ถอนการติดตั้ง tensorflow:
    pip uninstall tensorflow
  1. ถอนการติดตั้ง tensorflow-gpu: (ตรวจสอบให้แน่ใจว่าได้ใช้สิ่งนี้แม้ว่าคุณจะไม่แน่ใจว่าได้ติดตั้งไว้หรือไม่ก็ตาม
    pip uninstall tensorflow-gpu
  1. ติดตั้งรุ่น tensorflow-gpu เฉพาะ:
    pip install tensorflow-gpu==2.0.0
    pip install tensorflow_hub
    pip install tensorflow_datasets

คุณสามารถตรวจสอบว่ามันทำงานได้โดยการเพิ่มรหัสต่อไปนี้ลงในไฟล์หลาม:

from __future__ import absolute_import, division, print_function, unicode_literals

import numpy as np

import tensorflow as tf
import tensorflow_hub as hub
import tensorflow_datasets as tfds

print("Version: ", tf.__version__)
print("Eager mode: ", tf.executing_eagerly())
print("Hub Version: ", hub.__version__)
print("GPU is", "available" if tf.config.experimental.list_physical_devices("GPU") else "NOT AVAILABLE")

เรียกใช้ไฟล์จากนั้นเอาต์พุตควรเป็นดังนี้:

Version:  2.0.0
Eager mode:  True
Hub Version:  0.7.0
GPU is available

หวังว่านี่จะช่วยได้


ModuleNotFoundError: ไม่มีโมดูลชื่อ 'tensorflow_hub'
D Adams

ModuleNotFoundError: ไม่มีโมดูลชื่อ 'tensorflow_datasets'
D Adams

ลองติดตั้งโมดูลแยกต่างหาก: pip install tensorflow_hubและpip install tensorflow_datasets
James Brett

yup -> เพียงแค่พยายามเป็นประโยชน์อย่างครบถ้วนในคำตอบของคุณ
D Adams

โอ้ฉันจำไม่ได้ว่าต้องติดตั้งแยกต่างหาก ขอบคุณ!
James Brett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.