NVIDIA
September 9, 2023

เมื่อ GPU เป็นมากกว่า AI Processor

Nvidia มี Python library ใหม่สำหรับการใช้ GPU ในการทดแทนการประมวลผลสำหรับ Library Pandas, Numpy, Scipy, Networkx หรือ sklearn โดยเรียกว่า RAPIDS (Rapids.ai) ซึ่งประสิทธิภาพเมื่อเทียบกับ CPU แบบ Multiprocessing แล้วได้ประสิทธิภาพที่สูงกว่า 10 - 1,000 เท่า และปัจจุบัน RAPIDS มียอดดาวน์โหลดแล้วมากกว่า 3 ล้านครั้งและเพิ่มขึ้นอย่างต่อเนื่อง

TL;DR.

Nvidia มี Python library ใหม่สำหรับการใช้ GPU ในการทดแทนการประมวลผลสำหรับ Library Pandas, Numpy, Scipy, Networkx หรือ sklearn โดยเรียกว่า RAPIDS (Rapids.ai) ซึ่งประสิทธิภาพเมื่อเทียบกับ CPU แบบ Multiprocessing แล้วได้ประสิทธิภาพที่สูงกว่า 10 - 1,000 เท่า และปัจจุบัน RAPIDS มียอดดาวน์โหลดแล้วมากกว่า 3 ล้านครั้งและเพิ่มขึ้นอย่างต่อเนื่อง

เกริ่น

ถ้าพูดถึง GPU Nvidia แล้วเราคงนึกถึงการนำ GPU มาใช้ในการ Train and Inference AI เป็นอันดับแรก แต่นอกจากงานฝั่ง AI แล้ว GPU Nvidia สามารถทำงานได้หลากหลายมากกว่างาน AI

Nvidia พยายามจะเปลี่ยนแนวทางจาก GPU ให้กลายเป็น GP-GPU (General Purpose Graphic Processing Unit)

โดยการเปลี่ยนแนวทางนี้เริ่มมาจากการปูทางผ่าน Low level API ตั้งแต่การพัฒนาด้าน I/O, Encode and Decode, Virtual VRAM และ Distributed compute

Low level API ทั้งหมดเป็นพื้นฐานในการพัฒนาขึ้นมาเป็น High level API และ Library สำหรับการใช้งานด้วยภาษา Python เป็นหลัก เพื่อให้ผู้ใช้งานด้าน Data scientist, Data engineer, Data analyst, Machine learning engineer  และ AI Researcher สามารถใช้งานทดแทนงานที่เคยทำอยู่ได้อย่างราบรื่น

กลุ่มของ Library ที่ทาง Nvidia ได้พัฒนาขึ้นมานั้นมีชื่อว่า RAPIDS โดยเป็น Open-source library ทั้งหมดและมีการเผยแพร่ Code ผ่านทาง Github ซึ่งสามารถติดตั้งและทดลองใช้ Library ดังกล่าว ฟรี !!

Library ภายใน RAPIDS นั้นจะถูกสร้างขึ้นมาโดยล้อจาก Library ดั้งเดิมได้แก่

  • Pandas ทดแทนด้วย cuDF
  • sklearn ทดแทนด้วย cuML
  • Networkx ทดแทนด้วย cuGraph
  • Scipy ทดแทนด้วย cuSignal
  • และอื่น ๆ เพิ่มเติม

เรื่องที่ควรรู้ก่อนเริ่มต้นใช้งาน Nvidia RAPIDS

  1. Data Communication
  2. Compute Unit

Data Communication

Data Communication เคยเป็นหนึ่งในปัญหาใหญ่ของการประมวลผลด้วย GPU เพราะการจะประมวลผลด้วย GPU ได้นั้น จำเป็นต้องนำข้อมูลมาไว้ที่ VRAM (GPU Memory) ถึงจะทำการประมวลผลได้ และลำดับกระบวนการที่ต้องทำเมื่อเราโหลดข้อมูลจาก Storage มาประมวลผลที่ GPU คือ

  1. โหลดข้อมูลจาก Storage ด้วย CPU ผ่าน PCIe ไปไว้ที่ Memory
  2. โหลดข้อมูลจาก Memory ด้วย CPU ผ่าน PCIe ไปไว้ที่ VRAM

ลำดับกระบวนการดังกล่าว เกิดการทำงานที่ซ้ำซ้อน เพราะไม่มีความจำเป็นที่ต้องนำข้อมูลไปพักไว้ที่ Memory โดยไม่มีความเกี่ยวข้องในการประมวลผล

ทำให้เกิดการ Develop Low level API ขึ้นมาใหม่ 1 API โดยมีชื่อเรียกว่า Magnum IO GPUDirect storage

Magnum IO ช่วยทำให้สามารถโหลดข้อมูลจาก Storage มายัง VRAM ได้โดยตรง ไม่จำเป็นต้องผ่าน Memory อีกต่อไป ทำให้มีประสิทธิภาพในการเคลื่อนย้ายข้อมูลได้ดีมากยิ่งขึ้นมากถึง 3 เท่า

Compute Unit

Streaming Multiprocessor  (SM) design ถือเป็นอีกหนึ่งเรื่องที่ควรเรียนรู้ก่อนใช้งาน GPU เนื่องจากมีลักษณะการออกแบบเฉพาะตัวสูงและมีความหลากหลายในการออกแบบ ซึ่งหนึ่งสถาปัตยกรรมย่อยสามารถออกแบบ SM ได้มากกว่า 1 รูปแบบ ทำให้การใช้งาน GPU นั้นมีความซับซ้อนขึ้นไปอีก

จุดสังเกตสำหรับ SM คือการที่มีประเภทของการประมวลผล Cuda และ Tensor มีลักษณะรวมถึง Library ที่รองรับแตกต่างกัน โดยมีข้อเปรียบเทียบดังนี้  

  1. Cuda core คือ Cuda core ถือเป็น Core พื้นฐานสำหรับการประมวลผลด้วย GPU ซึ่ง Cuda core นั้นเป็น Core ดั้งเดิมตั้งแต่สถาปัตยกรรมย่อยยุคแรกของ Nvidia และใช้มาตลอดจนถึงปัจจุบัน ทำให้มี Backward compatibility ที่ดี และมีการรองรับชุดคำสั่ง (Instruction set) ที่หลากหลาย การออกแบบ Cuda core นั้นจะมีประเภทการประมวลผลหลักคือ FP64 (Floating point 64 bit) และ FP32 (Floating point 32 bit) เป็นหลัก บางสถาปัตยกรรมย่อยความสามารถของ FP64 อาจจะสูงกว่า FP32 แต่บางสถาปัตยกรรมย่อย FP32 ก็จะมีประสิทธิภาพสูงกว่า FP64 ขึ้นอยู่กับสถาปัตยกรรมย่อยนั้น ๆ
  2. Tensor core คือ Tensor processing unit เป็น Core พิเศษที่ถูกเพิ่มเข้ามาใน SM ตั้งแต่สถาปัตยกรรม Turing  Tensor core ถูกออกแบบมาเพื่อตอบสนองการใช้งาน Matrix Multiplication เป็นหลัก ไม่ว่าจะเป็นชุดคำสั่งใหม่สำหรับการประมวลผล Matrix Multiplication โดยเฉพาะ หรือแม้แต่ Computer Precision ที่เพิ่มเข้ามาใหม่อย่างไม่เคยมีมาก่อน เช่น Tensor Float 32 Bit, Brain Float 16 Bit หรือ Floating point 8 Bit ส่งผลให้การประมวลผล Algorithm Multi Layer Peceptron นั้นถูกเพิ่มความเร็วขึ้นอย่างมหาศาล (มากกว่า 8 เท่า) ทำให้ Nvidia GPU ได้รับชื่อเสียงในเรื่องของการ Training and Inference Deep learning model นับตั้งแต่นั้นเป็นต้นมา

ประสิทธิภาพในการประมวลผลของ GPU นั้นถือเป็นอีกหนึ่งเรื่องควรศึกษาทุกครั้งก่อนเลือกซื้อ GPU เพราะแต่ละรุ่นย่อยของ GPU นั้นมีประสิทธิภาพที่แตกต่างกัน เนื่องจากจำนวนของ Cuda core ที่ไม่เท่ากันแล้ว บางรุ่นยังมีจำนวน Tensor Core ที่มากน้อยแตกต่างกันไปตามจุดประสงค์ของรุ่นนั้น ๆ

หน่วยการวัดผลเชิงทฤษฏีนั้นจะใช้หน่วย FLOPS (Floating point Operations Per Second) และ OPS (Operations Per Second) โดยค่าดังกล่าวยิ่งเยอะยิ่งดี

สำหรับการวัดผลโดยการใช้งาน Deep learning นั้นจะถูกวัดผลโดย MLPerfs (MLCommons ) โดยเป็นการวัดผลการ Training and Inference Model โดยเฉพาะ

RAPIDS

วันนี้จะมาแนะนำ Library น่ารู้จัก 3 ตัวได้แก่ cuDF, cuML และ cuCIM

การใช้งาน RAPIDS นั้นสามารถทดลองใช้งานผ่าน Google colab, AWS Sagemaker หรือ Docker contain ผ่าน Nvidia runtime toolkit เริ่มต้นใช้งานผ่าน RAPIDS | GPU Accelerated Data Science ได้เลย

CUDF

cuDF ถูกออกแบบมาเพื่อทดแทนการใช้งาน Pandas ที่ใช้งานบน CPU เป็นหลัก โดยข้อแตกต่างหลักระหว่าง Pandas และ cuDF คือ cuDF ถูกพัฒนาขึ้นมาโดยใช้ Columnar memory format ทำให้การเข้าถึงข้อมูลนั้นเข้าถึงในรูปแบบ Column เป็นหลัก

ประสิทธิภาพและหน้าตาของ Code cuDF เมื่อเทียบกับ Pandas

ข้อควรรู้สำหรับการใช้งาน cuDF

cuDF นั้นจะมีประสิทธิภาพ Outperform Pandas เมื่อมีขนาด Data ในการประมวลผลมากกว่าจุด ๆ หนึ่ง โดยส่วนใหญ่แล้วในการทดลองวัดประสิทธิภาพ cuDF จะใช้ Data ที่มีขนาดมากกว่า 1M Row และ 10 Column หรือ Data shape (1000000,10) เป็นต้นไป ดังนั้นถ้า Data ที่นำเข้ามาประมวลผลมีขนาดน้อยกว่าตัวอย่าง การใช้งาน Pandas จะมีโอกาสที่มีประสิทธิภาพที่สูงกว่า

CUML

cuML ถูกออกแบบมาเพื่อใช้งานทดแทน sklearn และ xgboost ซึ่งการใช้งาน cuML นั้นจะ Implement machine learning algorithm ให้สามารถใช้งานบน GPU ได้ จากเดิมที่เราใช้งานได้แค่บน CPU ซึ่ง cuML นั้นสามารถใช้งานร่วมกับ cuDF โดยไม่จำเป็นต้องคัดลอกข้อมูลใหม่อีกครั้งหนึ่ง (Zero data copy) ทำให้สามารถลดคอขวดในด้านของ Data communication

ประสิทธิภาพและหน้าตาของ Code cuML เมื่อเทียบกับ sklearn

ข้อควรรู้สำหรับการใช้งาน cuML

cuML นั้นควรใช้งานร่วมกับ cuDF ตั้งแต่ต้นเพื่อช่วยให้ Data communication ไม่เกิดการทำงานซ้ำซ้อนและ cuML นั้นยังสามารถใช้งานร่วมกับ Deep learning framwork อื่นเช่น pytorch หรือ tensorflow โดยไม่จำเป็นต้องคัดลอกข้อมูลซ้ำ (Zero data copy) ได้อีกด้วย

CUCIM

cuCIM ถูกออกแบบมาเพื่อใช้งานทดแทน skimage และ openslide ซึ่งเป็นการทำงานกับรูปภาพที่มีจำนวนมิติมากกว่า 2 มิติและไฟล์รูปภาพขนาดใหญ่ โดยรองรับไฟล์นามสกุล เช่น Aperio ScanScope Virtual Slide (SVS), Philips TIFF และ Multi-resolution RGB TIFF ซึ่ง cuCIM ยังได้รับคุณสมบัติ Zero data copy เมื่อใช้งานร่วมกับ pytorch, tensorflow หรือ cupy (numpy like) และ RAPIDS library อื่น ๆ

อนาคตของ RAPIDS และ Ecosystem

RAPIDS ถือเป็นอีกหนึ่ง Innovation ที่น่าประทับใจและน่าจับตามองให้ช่วง 3 - 5 ปีนี้ ทั้งในแง่ของประสิทธิภาพของงานเทียบกับ CPU และในแง่ของการประยุกต์ใช้งาน GPU ที่มีโอกาสแพร่หลายมากยิ่งขึ้น

แต่ก็ยังมีความท้าทายที่ต้องควรระวังก่อนใช้งาน RAPIDS ทั้งความท้าทายในด้านของ Developer ที่จำเป็นต้องเรียนรู้การใช้งาน GPU เพิ่มมาขึ้น รวมถึงวิธีการ Monitor, Validate และ Debug RAPIDS

ทิ้งท้าย Developer Community

การใช้งาน GPGPU เป็นสิ่งที่น่าตื่นเต้น, ท้าทาย และ เป็นความเสี่ยง การรวมกลุ่มของ Developer เพื่อสร้าง Community สำหรับการแชร์ Case study, Tutorial หรือ Succeed case จึงเป็นสิ่งสำคัญ ดังนั้น จึงเป็นที่มาของการเริ่มต้นสร้าง Nvidia User Group Thailand ขึ้นมา เพื่อเป็นแหล่งรวบรวมข้อมูลการใช้งาน, ปัญหาที่ควรระวัง, วิธีการแก้ไขปัญหา และกรณีศึกษา โดยทาง VulturePrime เป็นผู้ดูแลและรับบทผู้เขียน How-to, Tutorial, Trick, FAQ, Highlight Feature, Vendor list, News update, Feature update และอื่น ๆ พร้อมทั้งเปิดโอกาสให้ Partner และ  Member มีส่วนร่วมในการแลกเปลี่ยนความรู้ตลอดจนการจัดกิจกรรมให้ความรู้ หรือ workshop

เราหวังว่า เราจะสามารถผลักดันความสามารถและเพิ่มความเป็นไปได้ทางเทคโนโลยีให้แก่สมาชิกทุกท่านให้ทัดเทียมกับระดับนานาชาติ ผ่านการมีส่วนร่วมจากทุกภาคส่วน

Nvidia Omniverse: The Future of Collaboration and Simulation
NVIDIA
Oct 26

Nvidia Omniverse: The Future of Collaboration and Simulation

เทคโนโลยีโลกเสมือน หรือ Metaverse เป็นหนึ่งในเทคโนโลยีที่ถูกพูดถึงเป็นอย่างมากในช่วงปีที่ผ่านมา แต่ก่อนจะไปถึงโลกเสมือนที่อาจจะเป็นอนาคตอันไกลหรืออันใกล้ เรามารู้จักกับ “Nvidia Omniverse” แพลตฟอร์มเรือธงของ Nvidia กับเทคโนโลยี Simulation ที่ตอบสนองเราได้แบบเรียลไทม์กัน
Nvidia Clara : with Medtronic
NVIDIA
Jun 15

Nvidia Clara : with Medtronic

ในงาน GTC 2023 NVIDIA ได้ประกาศความร่วมมือกับ Medtronic ผู้ให้บริการเทคโนโลยีด้านการดูแลสุขภาพรายใหญ่ที่สุดของโลก เพื่อพัฒนาแพลตฟอร์ม AI ด้านการดูแลสุขภาพและนำเทคโนโลยี AI มาช่วยในการดูแลผู้ป่วย
Nvidia Clara : Solutions for Healthcare
NVIDIA
Jun 15

Nvidia Clara : Solutions for Healthcare

นอกจากการสร้างแพลตฟอร์มเพื่อตอบโจทย์อุตสาหกรรมด้านยานยนต์และการผลิตแล้ว Nvidia ยังมีความสนใจที่จะตอบสนองความต้องการและช่วยเหลืออุตสาหกรรมด้านอื่น ๆ อีก ในวันนี้เราจะมาเล่าถึงอีกหนึ่งแพลตฟอร์มของ Nvidia ที่สร้างขึ้นมาสำหรับช่วยเหลืออุตสาหกรรมด้านการแพทย์โดยเฉพาะ ซึ่งก็คือ Nvidia Clara นั่นเอง
Aa

© 2023, All Rights Reserved, VulturePrime co., ltd.