Tutorial

ติดตั้ง Tensorflow บน Apple Silicon เร็วทะลุจักรวาล

By Arnon Puitrakul - 02 ธันวาคม 2021

ติดตั้ง Tensorflow บน Apple Silicon เร็วทะลุจักรวาล

สำหรับคนที่ใช้งานพวก Deep Learning ทั้งหลายบน Mac เมื่อก่อน เราจะประสบปัญหากันว่า อ้าว ทำไมมันทำงานกับ GPU ของเราไม่ได้ แต่เพราะการมาของ Apple Silicon ทำให้ Apple ออก Version ที่รองรับการทำงานของ GPU บน macOS ผ่าน Graphic API อันเบาบางอย่าง Metal API แล้วบอกเลยว่า มันติดตั้งง่ายกว่าฝั่ง Nvidia เยอะมาก ๆ จากปวดหัวติดตั้ง 2 วันกลายเป็น 5 นาทีเท่านั้นเอง

ติดตั้ง Python

โดยปกติแล้วเราจะติดตั้ง Python อาจจะผ่านพวก Homebrew อะไรก็ว่ากันไป แต่ว่าพอมันเป็น Apple Silicon ที่เป็น ARM มันจะมีปัญหาเพราะพวก Library บางตัวที่มันจะต้องใช้แยกกันระหว่าง x86 กับ ARM ตัวที่เราติดตั้งผ่าน Homebrew มันจะแยกไม่ได้ ทำให้เราจะมีปัญหาในการติดตั้ง Library บางตัว

วิธีการแก้คือ เราจะต้องใช้ Package Manager ที่มี Channel ของ Repository ที่มี Library สำหรับ ARM หนึ่งในตัวที่แนะนำคือ miniforge ซึ่งพวกนี้มันจะคิดให้เราเสร็จหมดไม่ต้องกลัวเรื่องว่าติดตั้งมาแล้วจะใช้ได้มั้ยอะไรนั่นนี่

การติดตั้ง โดยทั่วไปเราจะติดตั้งได้จาก 2 ทางใหญ่ ๆ คือ การติดตั้งผ่าน Homebrew และการโหลด Installer มาลงเองเลย แต่ ๆ ณ วันที่เขียนเราลองติดตั้งผ่าน Homebrew แล้วมันจะมีปัญหากับการติดตั้ง Dependencies ของ Apple เอง เลยนะนำให้เข้าไปโหลด Installer Script จากหน้าเว็บของ Miniforge

sh ~/Downloads/Miniforge3-MacOSX-arm64.sh

เมื่อโหลดมาแล้วให้เขาเปิด Terminal แล้วรัน Script ด้านบน มันก็จะทำการติดตั้ง Miniforge ลงไปในเครื่องเราให้เลย เมื่อติดตั้งเสร็จแล้วมันจะถามว่า เราจะ Init Default Environment มั้ย ถ้าเอาง่ายให้เราตอบ Yes ไปจะง่ายกว่า เมื่อเราติดตั้งเรียบร้อย ที่ด้านหน้าของบรรทัดใน Command Line เราจะมี (base) เขียนอยู่ เป็นชื่อ Environment ที่เรากำลังทำงานอยู่

conda init {bash, fish, powershell, tcsh, xonsh, zsh}

หรือถ้ามันไม่ขึ้น อาจจะเพราะ Conda ไม่ได้ไปใส่ Init Script ที่ Shell ของเรา ถ้าเอาง่าย มันจะมีคำสั่งสำหรับการ Append พวก Init Script ให้เราเลย คือคำสั่งด้านบน แล้วเราก็เลือกว่า เราใช้ Shell อันไหน ถ้าเป็นปกติ Default ของ Mac จะเป็น bash แต่ถ้าใครที่ลงเพิ่มก็ต้องเลือกตามนั้นนะ

ติดตั้ง Tensorflow

conda install -c apple tensorflow-deps

จากนั้น เราจะมาเริ่มขั้นตอนการติดตั้ง Tensorflow กัน เริ่มจากการติดตั้งพวก Dependencies ต่าง ๆ ก่อน ผ่านคำสั่งด้านบนได้เลย

python -m pip install tensorflow-macos
python -m pip install tensorflow-metal

และท้ายสุด เราก็ทำการติดตั้ง Tensorflow และ PluggableDevice เพื่อให้เราสามารถเรียกใช้งาน GPU ได้ เท่านี้เองเราก็ติดตั้ง Tensorflow พร้อมกับการเรียกใช้งาน GPU ได้แล้ว

เช็คการทำงาน

>>> tf.config.list_physical_devices()
[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'), PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

สุดท้าย เพื่อให้มั่นใจว่า Tensorflow กับ GPU ของเราแล้วจริง ๆ สิ่งที่เราติดตั้งลงไปมันจะมองเห็นว่าเป็น Plugable Device ตัวนึง ทำให้เราสามารถใช้ คำสั่งด้านบนในการเช็คได้ โดยเราจะต้องได้ 2 Device โดยเฉพาะ GPU ในตัวที่ 2 ถ้ามีครบเท่านี้ เราก็สามารถใช้งาน GPU บน Mac ผ่าน Tensorflow ได้เรียบร้อยแล้ว

สรุป

การติดตั้ง Tensorflow บน macOS เมื่อก่อนอาจจะเป็นเรื่องที่น่าปวดหัว เพราะมันใช้งานบน GPU ไม่ได้ ต้องใช้แต่บน CPU มาตลอด จนตอนนี้ Apple ทำให้รองรับ GPU เป็นที่เรียบร้อยแล้ว แล้วยังทำให้การติดตั้งมันง่ายมาก ๆ เราไม่ต้องไปตั้งค่า Environment อะไรเลย ติดตั้งครั้งแรก เราใช้เวลาน้อยมาก ๆ ไม่กี่นาทีเท่านั้นเอง วิธีที่เราเล่าในวันนี้ก็เป็นวิธีการติดตั้ง Tensorflow พร้อมกับการใช้งาน GPU อย่างง่าย ๆ แต่จะบอกว่า การติดตั้งที่เราเอาให้ดูวันนี้ ถ้าเราเอาไปรันมันจะยังไม่ได้ใช้ Neural Engine นะ พวกนั้น เราจะต้องมี Library เพิ่มเพื่อที่จะแปลง Model ให้รองรับ Neural Engine

Read Next...

การสร้าง SSD Storage Pool บน Synology DSM

การสร้าง SSD Storage Pool บน Synology DSM

สำหรับคนที่ใช้ Synology NAS บางรุ่นจะมีช่อง M.2 สำหรับเสียบ NVMe SSD โดยพื้นฐาน Synology บอกว่ามันสำหรับการทำ Cache แต่ถ้าเราต้องการเอามันมาทำเป็น Storage ละ มันจะทำได้มั้ย วันนี้เราจะมาเล่าวิธีการทำกัน...

Multiprogramming, Multiprocessing และ Multithreading

Multiprogramming, Multiprocessing และ Multithreading

หลังจากที่เรามาเล่าเรื่อง malloc() มีคนอยากให้มาเล่าเรื่อง pthread เพื่อให้สามารถยัด Content ที่ละเอียด และเข้าใจง่ายในเวลาที่ไม่นานเกินไป เลยจะมาเล่าพื้นฐานที่สำคัญของคำ 3 คำคือ Multiprogramming, Multitasking, Multiprocessing และ Multithreading...

Synology NAS และ SSD Cache จำเป็นจริง ๆ เหรอ เหมาะกับระบบแบบใด

Synology NAS และ SSD Cache จำเป็นจริง ๆ เหรอ เหมาะกับระบบแบบใด

ใน Synology NAS มีความสามารถนึงที่น่าสนใจคือ การใช้ SSD เป็น Cache สำหรับระบบ ที่ทำให้ Performance ในการอ่านเขียน เร็วขึ้นกว่าเดิมมาก ๆ แน่นอนว่า เราลองละ วันนี้เราจะมาเล่าให้อ่านกันว่า หากใครคิดที่จะทำ มันเหมาะ หรือ ไม่เหมาะกับการใช้งานของเรา...

ฮาวทูย้าย Synology Add-on Package ไปอีก Volume

ฮาวทูย้าย Synology Add-on Package ไปอีก Volume

เรื่องราวเกิดจากการที่เราต้องย้าย Add-on Package ใน DSM และคิดว่าหลาย ๆ คนน่าจะต้องประสบเรื่องราวคล้าย ๆ กัน วันนี้เราจะมาเล่าวิธีการว่า เราทำยังไง เจอปัญหาอะไร และ แก้ปัญหาอย่างไรให้ได้อ่านกัน...