Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> ข้อผิดพลาด Windows

แก้ไข: CPU รองรับ Instructions ที่ TensorFlow Binary ไม่ได้ Compile ใช้ AVX2

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

แก้ไข: CPU รองรับ Instructions ที่ TensorFlow Binary ไม่ได้ Compile ใช้ AVX2

ข้อความเตือนนี้พิมพ์โดย Shared library ของ TensorFlow ตามข้อความ Shared library ไม่รวมชุดคำสั่งที่ CPU ของคุณใช้ได้

สาเหตุของ Warning นี้

หลัง TensorFlow 1.6 Binaries ใช้ AVX instructions ซึ่งอาจไม่รันบน CPU เก่าได้อีกต่อไป CPU เก่าจะไม่รัน AVX ในขณะที่ CPU ใหม่ ผู้ใช้ต้อง Build TensorFlow จาก Source สำหรับ CPU ของตน ด้านล่างเป็นข้อมูลทั้งหมดที่ต้องรู้เกี่ยวกับ Warning นี้ รวมถึงวิธีกำจัด Warning สำหรับการใช้งานในอนาคต

AVX ทำอะไร?

โดยเฉพาะ AVX นำเสนอ FMA (Fused multiply-add) ซึ่งเป็น Floating-point multiply-add operation และ Operation ทั้งหมดทำใน Step เดียว ช่วยเร่งหลาย Operation โดยไม่มีปัญหา ทำให้ Algebra computation เร็วและง่ายขึ้น Dot-product, Matrix multiply, Convolution เป็นต้น ซึ่งเป็น Operation พื้นฐานที่ใช้มากที่สุดสำหรับ Machine-learning training ทุกประเภท CPU ที่รองรับ AVX และ FMA จะเร็วกว่า CPU เก่ามาก แต่ Warning บอกว่า CPU ของคุณรองรับ AVX ดังนั้นเป็นจุดดี

แก้ไข: CPU รองรับ Instructions ที่ TensorFlow Binary ไม่ได้ Compile ใช้ AVX2

ทำไมจึงไม่ใช้เป็น Default?

เพราะ TensorFlow Default Distribution Build โดยไม่มี CPU Extensions โดย CPU Extensions หมายถึง AVX, AVX2, FMA เป็นต้น คำสั่งที่ทำให้เกิดปัญหานี้ไม่ได้ Enable โดย Default บน Default builds ที่มีอยู่ เหตุผลที่ไม่ Enable คือ เพื่อความเข้ากันได้กับ CPU มากที่สุดเท่าที่จะเป็นไปได้ นอกจากนี้ เปรียบเทียบ Extensions นี้ พวกมันช้ากว่าบน CPU มากเมื่อเทียบกับ GPU CPU ใช้สำหรับ Machine-learning ขนาดเล็ก ในขณะที่ GPU คาดหวังใช้เมื่อ Medium หรือ Large-scale Machine-learning training

การแก้ไข Warning!

Warning เหล่านี้เป็นเพียงข้อความง่ายๆ เป้าหมายคือแจ้งให้รู้เกี่ยวกับ Built TensorFlow จาก Source เมื่อ Build TensorFlow จาก Source จะเร็วกว่าบนเครื่อง ดังนั้น Warning ทั้งหมดบอกแค่เรื่อง Build TensorFlow จาก Source

หากมี GPU บนเครื่อง สามารถข้าม Warning เหล่านี้จาก AVX support ได้ เพราะ Operation ที่แพงที่สุดจะ Dispatch ไป GPU Device หากไม่อยากเห็น Error นี้อีก สามารถเพิ่มโค้ดนี้:

Import OS module ใน Main program code และตั้งค่า Mapping Object สำหรับมัน

# For disabling the warning import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

แต่หากอยู่บน Unix ใช้คำสั่ง Export ใน Bash shell

export TF_CPP_MIN_LOG_LEVEL=2

แต่หากไม่มี GPU และต้องการใช้ CPU ให้มากที่สุด ควร Build TensorFlow จาก Source ที่ Optimize สำหรับ CPU ของคุณ พร้อม AVX, AVX2, และ FMA Enabled