หากคุณจะเป็นวิศวกรที่พัฒนาด้าน Machine Learning (ML) หรือว่าเป็นนักวิจัยข้อมูล คุณไม่สามารถปฏิเสธได้เลยว่าการคัดกรอง และวิเคราะห์ชุดข้อมูลเพื่อฝึกฝนระบบ Machine Learning นั้นมีความสำคัญเป็นอย่างมาก ซึ่งฐานข้อมูลที่ใช้ก็มีขนาดใหญ่ขึ้นเรื่อย ๆ มีความสัมพันธ์ที่ซับซ้อนมากขึ้นด้วย ส่งผลให้ความต้องการพลังที่ต้องใช้ในการประมวลผลข้อมูลสูงขึ้นตามไปด้วย ถ้าหากประมวลผลได้ช้าก็ส่งผลต่อการพัฒนา หรือความแม่นยำในการคาดคะเนผลลัพธ์ได้ด้วยซ้ำไป
เทคโนโลยี Deep Learning (DL) เป็นส่วนย่อยสำคัญของ ML ที่ใช้ในการจำลองเครือข่ายประสาทเทียม Artificial Neural Networks (ANNs) ซึ่งสำคัญต่อการประเมินผลลัพธ์ หากพลังประมวลผลไม่แรงพอ มันก็จะใช้เวลาในการเรียนรู้ข้อมูลอย่างยาวนาน
สำหรับ หน่วยประมวลผลกลาง (CPU) แบบปกติทั่วไป ไม่สามารถรับมือกับงานจำนวนมหาศาลขนาดนั้นได้ หรือมีพลังไม่มากพอสำหรับการฝึกฝนโมเดล ML แต่ด้วยความก้าวหน้าของ GPU ในยุคนี้ ที่มีการผสานพลัง CUDA Core และ Tensor Core เพื่อทำงานร่วมกัน มันช่วยให้การทำ ML ง่ายขึ้นกว่าเดิมมาก
ความก้าวหน้าในด้านนี้ เครดิตบางส่วนก็ต้องยกให้กับ NVIDIA ที่ได้นำเทคโนโลยีใหม่เข้ามาใส่ใน GPU ด้วย จากการที่ได้พัฒนา Tensor Core กับ CUDA Core ขึ้นมา โดยทั้งคู่ช่วยให้การฝึกฝน ML ทำได้รวดเร็วขึ้นกว่าเดิมมาก อย่างไรก็ดี สองสิ่งนี้แตกต่างกันอย่างไร ? ในบทความนี้จะมาหาคำตอบกัน
GPU (Graphical Processing Unit) หรือหน่วยประมวลกราฟิก เป็นชิปที่ถูกพัฒนาขึ้นมาเพื่อประมวลกราฟิก ทั้ง 2 มิติ และ 3 มิติ ซึ่งก็รวมไปถึงงานแอนิเมชัน, วิดีโอ, ภาพยนตร์ ฯลฯ และในปัจจุบันก็กลายเป็นชิปที่มีบทบาทสำคัญต่อการคำนวณระบบ AI/ML ด้วย อย่างเช่น การฟังคำถาม แล้ววิเคราะห์คำตอบ หรือระบบขับขี่แบบอัตโนมัติ ก็ล้วนแต่ใช้ GPU ในการประมวลผลเป็นหลัก อาจจะฟังดูแปลก แต่อย่างรถยนต์ไฟฟ้า Tesla ก็มี GPU อยู่ภายในตัวเพื่อใช้ในการประมวลผลอยู่ด้วยนะ
ข้อมูลเพิ่มเติม : CPU, GPU และ APU คืออะไร ? แตกต่างกันตรงไหน ใช้แทนกันได้หรือเปล่า ?
Ryzen Embedded V180F ที่อยู่ในรถ Tesla
ภากจาก : https://videocardz.com/newz/tesla-car-computer-features-zen-ryzen-embedded-apu-and-discrete-navi-23-gpu
CUDA หรือ Compute Unified Device Architecture เป็นแพลตฟอร์มการประมวลผลแบบขนาน (Parallel) และรูปแบบการเขียนโมเดลโปรแกรม ที่พัฒนาขึ้นมาโดยบริษัท NVIDIA เพื่อใช้ในการป้อนข้อมูลให้กับ GPU ที่รองรับ CUDA นั่นหมายความว่า GPU นั้นจะไม่ได้คำนวณผลได้แค่กราฟิกเท่านั้น แต่ยังสามารถคำนวณงานด้านอื่น อย่างการประมวลผลข้อมูล หรือ ML ได้อีกด้วย
โดย GPU รุ่นแรกของ NVIDIA ที่มีระบบ CUDA Core คือ GT8800 มันได้ปฏิวัติการออกแบบ และวิธีการทำงานของ GPU อย่างก้าวกระโดด ด้วยการทำงานแบบ Stream processors (SP) หรือที่ปัจจุบันนี้เรียกว่า CUDA นั่นเอง
แม้ CUDA Core จะมีประสิทธิภาพต่ำกว่า Core ของ CPU แต่ว่าจุดแข็งของมันอยู่ที่ "ปริมาณ" อย่างเช่น RTX 4090 นั้นมีมากถึง 16,384 CUDA Core ซึ่งมันสามารถแยกกระจายข้อมูลไปแต่ละ Core เพื่อคำนวณผลแบบขนานไปพร้อมกันได้ทุก Core ทำให้มันสามารถรับมือกับการประมวลผลชุดข้อมูลขนาดใหญ่ได้อย่างรวดเร็ว ซึ่งเป็นคุณสมบัติที่จำเป็นต่อการพัฒนาโมเดล ML เป็นอย่างมาก แม้ CPU จะสามารถคำนวณผลในรูปแบบเดียวกันได้ แต่ CPU ก็มีจำนวน Core น้อยกว่าหลายเท่า อย่าง i9-13900K ก็มีเพียง 24 Core หรือ AMD Ryzen Threadripper ก็มีแค่ 64 Core เท่านั้น
นอกจากนี้ CUDA Core ยังรองรับ APIs ของกราฟิก อย่าง Direct3D, OpenGL หรือ Programming Frameworks อย่าง OpenCL และ OpenMP ได้อีกด้วย
ก่อนที่จะมีการพัฒนา Tensor Core ขึ้นมา การฝึกฝน ML และ DL ตกเป็นความรับผิดชอบของ CUDA Core ถึงแม้ว่ามันจะทำงานได้เร็วกว่า CPU หลายเท่า แต่มันก็ยังไม่สมบูรณ์แบบ NVIDIA จึงแก้ปัญหาด้วยการพัฒนา Tensor Core ขึ้นมา โดยมันมีหน้าที่ในการคำนวณงานด้าน ML และ DL เพียงอย่างเดียว ไม่ไปยุ่งเกี่ยวกับการประมวลผลกราฟิกโดยตรง อย่างการคำนวณค่าแสงของ เทคโนโลยี Ray Tracing ที่ทาง NVIDIA ก็จะใช้ Tensor Core ช่วยวิเคราะห์ว่าแสงควรจะมีสภาพเป็นอย่างไร ก่อนจะส่งผลลัพธ์ให้ CUDA Core ไปเรนเดอร์ต่อ
โดย Tensor Core มันเป็นชิปพิเศษที่มีอยู่ใน GPU บางรุ่นของ NVIDIA มันถูกออกแบบเพื่อทำหน้าที่เพิ่มความเร็วในการประมวลผล Deep Learning และ ปัญญาประดิษฐ์ (Artificial Intelligence หรือ AI) โดยเฉพาะ การทำงานจะผสมผสานระหว่าง "Dynamic Calculations" และ "Mix-Precision computing" ซึ่งช่วยเพิ่มประสิทธิภาพโดยรวมให้สูงขึ้นโดยที่ยังคงความแม่นยำในการประมวลผลเอาไว้อยู่
Precision Computing คือ ความแม่นยำในการคำนวณผลค่าใด ๆ ก็ตาม ซึ่งในด้านนี้ Tensor Core จะมีความแม่นยำต่ำกว่าการคำนวณของ CUDA Core เนื่องจากวิธีการทำงานที่แตกต่างกัน โดย Tensor Core ใช้หลักการ Matrix เพื่อคำนวณค่าข้อมูลเป็นชุด (เช่น 1 1 1 x 1 1 1) เพื่อเพิ่มความเร็วในการคำนวณ ในขณะที่ CUDA Core จะคำนวณเพียง 1 ค่า ต่อ 1 รอบสัญญาณนาฬิกา (เช่น 1 x 1)
คำว่า Tensor นั้น ใช้นิยามถึงประเภทของข้อมูลที่สามารถอยู่ในรูปแบบใดก็ได้ โดยเราสามารถมองว่ามันเป็นที่เก็บข้อมูลที่ในนั้นมีข้อมูลอยู่หลายมิติก็ได้ Tensor Core มักนิยมใช้ทำงานร่วมกับไลบรารี่ซอฟต์แวร์แบบ Open-source อย่าง TensorFlow ซึ่งมันช่วยให้นักพัฒนาสามารถออกแบบ และฝึกฝน ML ได้ง่ายขึ้น เพราะไม่ต้องเริ่มสร้างทุกอย่างด้วยตัวเองใหม่จากศูนย์
ด้วยการปรับแต่งระบบการคำนวณให้ประมวลผลแบบ Matrix ได้รวดเร็วยิ่งขึ้น จากการใช้อัลกอริทึมหลายรูปแบบทำงานร่วมกัน ไม่ว่าจะเป็นการคูณ Matrix หรือการคำนวณแบบ Convolution ซึ่งนิยมใช้ในการทำ Deep Learning มารวมพลังกันทำงาน แม้การรคูณ Matrix จะเป็นการทำงานแบบตรงไปตรงมา แต่ทุกการคำนวณจำเป็นต้องมีการ Registers และ Caches เพื่อทดค่าระหว่างการคำนวณด้วย ส่งผลให้ในแต่ละ Core มีจำนวนงานที่ต้องคำนวณสูงมาก มันจึงเหมาะกับการฝึกฝน ML และ DL ที่มีขนาดใหญ่เป็นอย่างมาก
สรุปง่าย ๆ หากงานที่ทำความแม่นยำเป็นปัจจัยสำคัญ ก็ควรใช้ CUDA Core แต่ถ้าเป็นงานขนาดใหญ่ สามารถยอมรับข้อผิดพลาดที่อาจเกิดขึ้นได้บ้าง Tensor Core ก็จะเหมาะสมกว่า
Tensor Core
| CUDA Core
|
คุณสมบัติ | CUDA Core | Tensor Core |
ความแม่นยำ | สูง | ต่ำ |
ความเร็วในการคำนวณ | ช้า | เร็ว |
Machine Learning | ทำได้ แต่ไม่ใช้ตัวเลือกที่ดีที่สุด | เกิดมาเพื่อสิ่งนี้ |
การนำไปใช้ | ประมวลผลกราฟิกระดับสูง | พัฒนาระบบ AI |
Cycle Reduction | ไม่รองรับ | ลดรอบเพื่อคำนวณทางคณิตศาสตร์ได้ |
การทำงานต่อ 1 รอบสัญญาณ | 1 | หลายครั้ง |
การประมวลผลกราฟิก | เกิดมาเพื่อสิ่งนี้ | ไม่เหมาะสม |
ทั้ง CUDA Core และ Tensor Core เป็นเทคโนโลยีแบบกรรมสิทธิ์ ที่พัฒนาขึ้นมาโดย NVIDIA ดังนั้น ในท้องตลาดจึงไม่มีคู่แข่งมาเปรียบเทียบมากนัก จะมีก็แต่ฮาร์ดแวร์ระดับองค์กรที่สร้างขึ้นมาเพื่อใช้พัฒนา AI โดยเฉพาะ แต่ก็มีราคาที่สูงมาก
ในกลุ่มสินค้าสำหรับบุคคลทั่วไป นอกจาก NVIDIA แล้ว ก็มีแค่ AMD เท่านั้น แต่ว่า AMD เลือกใช้วิธีการอื่นในการทำ Ray Tracing หรือ Dynamic resolution sharpening แทน โดย Sam Naffziger รองประธานอาวุโสแห่งบริษัท AMD ได้เคยสัมภาษณ์เอาไว้ว่า การใส่ชิปเพิ่มเพื่อคำนวณแบบ Matrix มันเกินความจำเป็นต่อผลิตภัณฑ์สำหรับผู้ใช้งานทั่วไป
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |