UMAP ขนาดใหญ่ ทำงานเร็วขึ้นด้วย Multi-GPU: ลดเวลาประมวลผลโดยไม่เสียความแม่นยำ

Uniform Manifold Approximation and Projection (UMAP) เป็นเทคนิคการลดมิติข้อมูลที่ได้รับความนิยมอย่างแพร่หลายสำหรับการแสดงภาพข้อมูล (Visualization) และการสกัดคุณลักษณะ (Feature Extraction) การใช้งาน UMAP นั้นครอบคลุมหลากหลายด้าน ตั้งแต่การวิเคราะห์ข้อมูลเชิงสำรวจ (Exploratory Data Analysis) การสร้างแบบจำลองหัวข้อ (Topic Modeling) ไปจนถึงการวิเคราะห์เซลล์เดี่ยว (Single-cell Analysis)

ในโลกของการวิเคราะห์ข้อมูลที่ข้อมูลมีขนาดใหญ่ขึ้นเรื่อย ๆ กระบวนการ UMAP มักต้องทำซ้ำหลายครั้งเพื่อสำรวจข้อมูลหรือปรับแต่งพารามิเตอร์ ยิ่งชุดข้อมูลมีขนาดใหญ่ขึ้นเท่าใด ต้นทุนในการประมวลผล UMAP แต่ละครั้งก็จะยิ่งสูงขึ้น ทำให้การสำรวจข้อมูลแบบโต้ตอบ (Interactive Exploration) และการวิเคราะห์แบบซ้ำ ๆ ทำได้ยากขึ้น

กุญแจสำคัญ: การสร้างกราฟ kNN แบบ All-Neighbors

หัวใจสำคัญของอัลกอริทึม UMAP คือการสร้างกราฟ k-Nearest Neighbors (kNN) แบบ "all-neighbors" ซึ่งหมายถึงการค้นหาเพื่อนบ้านที่ใกล้ที่สุด k อันดับแรกสำหรับทุกจุดข้อมูลในชุดข้อมูล การสร้างกราฟแบบนี้จะมีความซับซ้อนและใช้ทรัพยากรสูงขึ้นอย่างมาก เมื่อชุดข้อมูลมีขนาดใหญ่ถึงหลักสิบล้านหรือหลายร้อยล้านจุด

NVIDIA cuML และ cuVS: พลิกโฉม UMAP ด้วย Multi-GPU

NVIDIA ได้เปิดตัวฟีเจอร์ใหม่ใน NVIDIA cuML และ NVIDIA cuVS เวอร์ชัน 25.06 ที่ช่วยแก้ปัญหาคอขวดนี้ ด้วยการรองรับการประมวลผลแบบหลาย GPU (Multi-GPU) สำหรับการสร้างกราฟ kNN แบบ all-neighbors ซึ่งช่วยให้สามารถประมวลผล UMAP ได้อย่างมีประสิทธิภาพเต็มรูปแบบ และลดระยะเวลาการทำงานลงอย่างมหาศาล สำหรับชุดข้อมูลที่มีเวกเตอร์หลายสิบล้านถึงหลายร้อยล้าน

UMAP ทำงานบน Multi-GPU ได้อย่างไร?

แนวคิดหลักเบื้องหลังการประมวลผล UMAP ขนาดใหญ่ด้วย Multi-GPU คือการสร้างกราฟ kNN แบบ all-neighbors โดยไม่ต้องให้ชุดข้อมูลทั้งหมดต้องอยู่ในหน่วยความจำ GPU พร้อมกัน วิธีการนี้ทำได้โดยการแบ่งชุดข้อมูลออกเป็นกลุ่มย่อย (Clusters) ที่มีความสมดุล และมีการทับซ้อนกันของเวกเตอร์ระหว่างกลุ่มที่อยู่ใกล้เคียงกัน เพื่อรักษาความสัมพันธ์ของเพื่อนบ้านที่ใกล้ที่สุดข้ามขอบเขตของกลุ่ม

จากนั้น กราฟ kNN จะถูกคำนวณแยกกันสำหรับแต่ละกลุ่มย่อย และนำกราฟเหล่านี้มารวมกันเพื่อสร้างเป็นกราฟ all-neighbors ระดับโลก (Global) การทำเช่นนี้ทำให้สามารถกระจายการคำนวณไปยัง GPU หลายตัวได้ โดยไม่จำเป็นต้องมีการสื่อสารแบบ "all-to-all" ที่ซับซ้อน ซึ่งมักเป็นข้อจำกัดของการประมวลผลแบบกระจายในงานที่ต้องสร้างกราฟ all-neighbors

การปรับแต่ง UMAP สำหรับ Multi-GPU

การตั้งค่า UMAP สำหรับ Multi-GPU จะเหมือนกับการใช้งาน UMAP บน GPU เดี่ยว โดยมีพารามิเตอร์สำคัญสองตัวที่ช่วยในการปรับสมดุลระหว่างพื้นที่ (Space), เวลา (Time), และคุณภาพ (Quality) ดังนี้:

  • knnnclusters: จำนวนกลุ่มย่อยที่ข้อมูลจะถูกแบ่งออก การเพิ่มค่านี้จะลดจำนวนจุดข้อมูลในแต่ละกลุ่ม ทำให้ข้อมูลที่ต้องโหลดเข้าหน่วยความจำ GPU ของแต่ละตัวน้อยลง
  • knnoverlapfactor: ปัจจัยการทับซ้อนของจุดข้อมูลระหว่างกลุ่มที่อยู่ใกล้เคียงกัน การเพิ่มค่านี้จะช่วยรักษาความสัมพันธ์ของเพื่อนบ้านที่ใกล้ที่สุดได้ดียิ่งขึ้น ส่งผลให้คุณภาพของกราฟ kNN และผลลัพธ์ UMAP ดีขึ้น แต่ก็จะเพิ่มเวลาและหน่วยความจำที่ใช้ในการประมวลผล

การปรับค่า knnnclusters และ knnoverlapfactor ร่วมกัน จะช่วยให้สามารถควบคุมการแลกเปลี่ยนระหว่างทรัพยากรและคุณภาพได้อย่างมีประสิทธิภาพ

ข้อควรพิจารณาในการตั้งค่าจริง

  • ค่าเริ่มต้นที่ดี: knnoverlapfactor=2 มักเป็นจุดเริ่มต้นที่ดีสำหรับผลลัพธ์ที่มีคุณภาพ
  • การปรับเพิ่ม: การเพิ่มค่า knnoverlapfactor ทีละน้อย (เช่น 2 -> 3 -> 4) จะได้ผลดีกับชุดข้อมูลขนาดปานกลาง
  • ชุดข้อมูลขนาดใหญ่: สำหรับชุดข้อมูลที่ใหญ่มากและมี knnnclusters สูง (มากกว่า 100) อาจได้ประโยชน์จากการเพิ่ม knnoverlapfactor ในสัดส่วนที่มากขึ้น (เช่น 2 -> 4 -> 6)
  • การจัดการหน่วยความจำ: เพื่อรักษาการใช้หน่วยความจำให้คงที่ พร้อมทั้งปรับปรุงคุณภาพ ควรเพิ่ม knnoverlapfactor และเพิ่ม knnnclusters ไปพร้อม ๆ กัน

การใช้งาน Multi-GPU UMAP ใน NVIDIA cuML

การใช้งาน Multi-GPU UMAP ใน NVIDIA cuML ทำได้ง่าย เพียงแค่กำหนดค่าเพิ่มเติมเล็กน้อย นอกเหนือจากการใช้งาน cuML UMAP แบบเดิม

  • device_ids: ระบุ ID ของ GPU ที่ต้องการให้เข้าร่วมในการประมวลผล
  • knnnclusters และ knnoverlapfactor: ใช้ควบคุมการสร้างกราฟ kNN แบบ all-neighbors

การเพิ่มจำนวน GPU จะช่วยลดเวลาประมวลผลได้โดยการกระจายการสร้างกราฟ all-neighbors ไปยังอุปกรณ์ต่าง ๆ

ผลลัพธ์ที่น่าประทับใจ

การทดสอบประสิทธิภาพบนชุดข้อมูลขนาดใหญ่ เช่น MIRACL และ Wiki ด้วย GPU NVIDIA H100 จำนวน 8 ตัว แสดงให้เห็นถึงความเร็วที่เพิ่มขึ้นถึง 74 เท่า เมื่อเทียบกับการประมวลผลด้วย CPU ทำให้ UMAP สามารถทำงานกับชุดข้อมูลขนาดหลายร้อยกิกะไบต์ได้ภายในเวลาเพียงไม่กี่นาที แทนที่จะเป็นชั่วโมงหรือวัน อีกทั้งยังคงรักษาคะแนนความน่าเชื่อถือ (Trustworthiness Score) ของผลลัพธ์การฝังตัว (Embeddings) ไว้ได้อย่างสูง

การแสดงภาพข้อมูลขนาดใหญ่ด้วย UMAP

การเปรียบเทียบผลลัพธ์การฝังตัว (Embeddings) ที่สร้างขึ้นจากชุดข้อมูล MIRACL ขนาด 106 ล้านเวกเตอร์ x 2048 มิติ โดยใช้การประมวลผลบน CPU เทียบกับการใช้ cuML UMAP แบบ Multi-GPU แสดงให้เห็นว่า ผลลัพธ์ที่ได้มีการรักษาโครงสร้างโดยรวม (Global Structure) ไว้ได้เป็นอย่างดี แม้ว่าภาพอาจดูแตกต่างกันเล็กน้อยเนื่องจากการแปลงสเกล การเลื่อนตำแหน่ง หรือการหมุน

ผลลัพธ์ที่ได้นี้ยืนยันว่าการสร้างกราฟ all-neighbors บน GPU สามารถรักษาความสัมพันธ์ของเพื่อนบ้านที่จำเป็นต่อการสร้างภาพข้อมูลคุณภาพสูง แม้ในระดับสเกลที่ใหญ่มากก็ตาม

สรุป

NVIDIA cuML และ cuVS ได้นำพา UMAP ไปสู่อีกระดับ ด้วยการรองรับ Multi-GPU ที่ช่วยให้การประมวลผลข้อมูลขนาดใหญ่ทำได้รวดเร็วขึ้นอย่างก้าวกระโดด โดยไม่สูญเสียความแม่นยำหรือคุณภาพของผลลัพธ์ นี่คือเครื่องมือสำคัญที่จะช่วยให้นักวิเคราะห์ข้อมูลสามารถสำรวจและทำความเข้าใจชุดข้อมูลที่มีขนาดมหึมาได้อย่างมีประสิทธิภาพยิ่งขึ้น

#UMAP #MultiGPU #NVIDIA #cuML #DataScience #MachineLearning

ขอบคุณ แหล่งข้อมูล
https://developer.nvidia.com/blog/run-massive-scale-umap-in-minutes-using-multiple-gpus-without-losing-accuracy/

UMAP ขนาดใหญ่ ทำงานเร็วขึ้นด้วย Multi-GPU: ลดเวลาประมวลผลโดยไม่เสียความแม่นยำUniform Manifold Approximation and Projection (UMAP) เป็นเทคนิคการลดมิติข้อมูลที่ได้รับความนิยมอย่างแพร่หลายสำหรับการแสดงภาพข้อมูล (Visualization) และการสกัดคุณลักษณะ (Feature Extraction) การใช้งาน UMAP นั้นครอบคลุมหลากหลายด้าน ตั้งแต่การวิเคราะห์ข้อมูลเชิงสำรวจ (Exploratory Data Analysis) การสร้างแบบจำลองหัวข้อ (Topic Modeling) ไปจนถึงการวิเคราะห์เซลล์เดี่ยว (Single-cell Analysis)ในโลกของการวิเคราะห์ข้อมูลที่ข้อมูลมีขนาดใหญ่ขึ้นเรื่อย ๆ กระบวนการ UMAP มักต้องทำซ้ำหลายครั้งเพื่อสำรวจข้อมูลหรือปรับแต่งพารามิเตอร์ ยิ่งชุดข้อมูลมีขนาดใหญ่ขึ้นเท่าใด ต้นทุนในการประมวลผล UMAP แต่ละครั้งก็จะยิ่งสูงขึ้น ทำให้การสำรวจข้อมูลแบบโต้ตอบ (Interactive Exploration) และการวิเคราะห์แบบซ้ำ ๆ ทำได้ยากขึ้นกุญแจสำคัญ: การสร้างกราฟ kNN แบบ All-Neighborsหัวใจสำคัญของอัลกอริทึม UMAP คือการสร้างกราฟ k-Nearest Neighbors (kNN) แบบ "all-neighbors" ซึ่งหมายถึงการค้นหาเพื่อนบ้านที่ใกล้ที่สุด k อันดับแรกสำหรับทุกจุดข้อมูลในชุดข้อมูล การสร้างกราฟแบบนี้จะมีความซับซ้อนและใช้ทรัพยากรสูงขึ้นอย่างมาก เมื่อชุดข้อมูลมีขนาดใหญ่ถึงหลักสิบล้านหรือหลายร้อยล้านจุดNVIDIA cuML และ cuVS: พลิกโฉม UMAP ด้วย Multi-GPUNVIDIA ได้เปิดตัวฟีเจอร์ใหม่ใน NVIDIA cuML และ NVIDIA cuVS เวอร์ชัน 25.06 ที่ช่วยแก้ปัญหาคอขวดนี้ ด้วยการรองรับการประมวลผลแบบหลาย GPU (Multi-GPU) สำหรับการสร้างกราฟ kNN แบบ all-neighbors ซึ่งช่วยให้สามารถประมวลผล UMAP ได้อย่างมีประสิทธิภาพเต็มรูปแบบ และลดระยะเวลาการทำงานลงอย่างมหาศาล สำหรับชุดข้อมูลที่มีเวกเตอร์หลายสิบล้านถึงหลายร้อยล้านUMAP ทำงานบน Multi-GPU ได้อย่างไร?แนวคิดหลักเบื้องหลังการประมวลผล UMAP ขนาดใหญ่ด้วย Multi-GPU คือการสร้างกราฟ kNN แบบ all-neighbors โดยไม่ต้องให้ชุดข้อมูลทั้งหมดต้องอยู่ในหน่วยความจำ GPU พร้อมกัน วิธีการนี้ทำได้โดยการแบ่งชุดข้อมูลออกเป็นกลุ่มย่อย (Clusters) ที่มีความสมดุล และมีการทับซ้อนกันของเวกเตอร์ระหว่างกลุ่มที่อยู่ใกล้เคียงกัน เพื่อรักษาความสัมพันธ์ของเพื่อนบ้านที่ใกล้ที่สุดข้ามขอบเขตของกลุ่มจากนั้น กราฟ kNN จะถูกคำนวณแยกกันสำหรับแต่ละกลุ่มย่อย และนำกราฟเหล่านี้มารวมกันเพื่อสร้างเป็นกราฟ all-neighbors ระดับโลก (Global) การทำเช่นนี้ทำให้สามารถกระจายการคำนวณไปยัง GPU หลายตัวได้ โดยไม่จำเป็นต้องมีการสื่อสารแบบ "all-to-all" ที่ซับซ้อน ซึ่งมักเป็นข้อจำกัดของการประมวลผลแบบกระจายในงานที่ต้องสร้างกราฟ all-neighborsการปรับแต่ง UMAP สำหรับ Multi-GPUการตั้งค่า UMAP สำหรับ Multi-GPU จะเหมือนกับการใช้งาน UMAP บน GPU เดี่ยว โดยมีพารามิเตอร์สำคัญสองตัวที่ช่วยในการปรับสมดุลระหว่างพื้นที่ (Space), เวลา (Time), และคุณภาพ (Quality) ดังนี้:knnnclusters: จำนวนกลุ่มย่อยที่ข้อมูลจะถูกแบ่งออก การเพิ่มค่านี้จะลดจำนวนจุดข้อมูลในแต่ละกลุ่ม ทำให้ข้อมูลที่ต้องโหลดเข้าหน่วยความจำ GPU ของแต่ละตัวน้อยลงknnoverlapfactor: ปัจจัยการทับซ้อนของจุดข้อมูลระหว่างกลุ่มที่อยู่ใกล้เคียงกัน การเพิ่มค่านี้จะช่วยรักษาความสัมพันธ์ของเพื่อนบ้านที่ใกล้ที่สุดได้ดียิ่งขึ้น ส่งผลให้คุณภาพของกราฟ kNN และผลลัพธ์ UMAP ดีขึ้น แต่ก็จะเพิ่มเวลาและหน่วยความจำที่ใช้ในการประมวลผลการปรับค่า knnnclusters และ knnoverlapfactor ร่วมกัน จะช่วยให้สามารถควบคุมการแลกเปลี่ยนระหว่างทรัพยากรและคุณภาพได้อย่างมีประสิทธิภาพข้อควรพิจารณาในการตั้งค่าจริงค่าเริ่มต้นที่ดี: knnoverlapfactor=2 มักเป็นจุดเริ่มต้นที่ดีสำหรับผลลัพธ์ที่มีคุณภาพการปรับเพิ่ม: การเพิ่มค่า knnoverlapfactor ทีละน้อย (เช่น 2 -> 3 -> 4) จะได้ผลดีกับชุดข้อมูลขนาดปานกลางชุดข้อมูลขนาดใหญ่: สำหรับชุดข้อมูลที่ใหญ่มากและมี knnnclusters สูง (มากกว่า 100) อาจได้ประโยชน์จากการเพิ่ม knnoverlapfactor ในสัดส่วนที่มากขึ้น (เช่น 2 -> 4 -> 6)การจัดการหน่วยความจำ: เพื่อรักษาการใช้หน่วยความจำให้คงที่ พร้อมทั้งปรับปรุงคุณภาพ ควรเพิ่ม knnoverlapfactor และเพิ่ม knnnclusters ไปพร้อม ๆ กันการใช้งาน Multi-GPU UMAP ใน NVIDIA cuMLการใช้งาน Multi-GPU UMAP ใน NVIDIA cuML ทำได้ง่าย เพียงแค่กำหนดค่าเพิ่มเติมเล็กน้อย นอกเหนือจากการใช้งาน cuML UMAP แบบเดิมdevice_ids: ระบุ ID ของ GPU ที่ต้องการให้เข้าร่วมในการประมวลผลknnnclusters และ knnoverlapfactor: ใช้ควบคุมการสร้างกราฟ kNN แบบ all-neighborsการเพิ่มจำนวน GPU จะช่วยลดเวลาประมวลผลได้โดยการกระจายการสร้างกราฟ all-neighbors ไปยังอุปกรณ์ต่าง ๆผลลัพธ์ที่น่าประทับใจการทดสอบประสิทธิภาพบนชุดข้อมูลขนาดใหญ่ เช่น MIRACL และ Wiki ด้วย GPU NVIDIA H100 จำนวน 8 ตัว แสดงให้เห็นถึงความเร็วที่เพิ่มขึ้นถึง 74 เท่า เมื่อเทียบกับการประมวลผลด้วย CPU ทำให้ UMAP สามารถทำงานกับชุดข้อมูลขนาดหลายร้อยกิกะไบต์ได้ภายในเวลาเพียงไม่กี่นาที แทนที่จะเป็นชั่วโมงหรือวัน อีกทั้งยังคงรักษาคะแนนความน่าเชื่อถือ (Trustworthiness Score) ของผลลัพธ์การฝังตัว (Embeddings) ไว้ได้อย่างสูงการแสดงภาพข้อมูลขนาดใหญ่ด้วย UMAPการเปรียบเทียบผลลัพธ์การฝังตัว (Embeddings) ที่สร้างขึ้นจากชุดข้อมูล MIRACL ขนาด 106 ล้านเวกเตอร์ x 2048 มิติ โดยใช้การประมวลผลบน CPU เทียบกับการใช้ cuML UMAP แบบ Multi-GPU แสดงให้เห็นว่า ผลลัพธ์ที่ได้มีการรักษาโครงสร้างโดยรวม (Global Structure) ไว้ได้เป็นอย่างดี แม้ว่าภาพอาจดูแตกต่างกันเล็กน้อยเนื่องจากการแปลงสเกล การเลื่อนตำแหน่ง หรือการหมุนผลลัพธ์ที่ได้นี้ยืนยันว่าการสร้างกราฟ all-neighbors บน GPU สามารถรักษาความสัมพันธ์ของเพื่อนบ้านที่จำเป็นต่อการสร้างภาพข้อมูลคุณภาพสูง แม้ในระดับสเกลที่ใหญ่มากก็ตามสรุปNVIDIA cuML และ cuVS ได้นำพา UMAP ไปสู่อีกระดับ ด้วยการรองรับ Multi-GPU ที่ช่วยให้การประมวลผลข้อมูลขนาดใหญ่ทำได้รวดเร็วขึ้นอย่างก้าวกระโดด โดยไม่สูญเสียความแม่นยำหรือคุณภาพของผลลัพธ์ นี่คือเครื่องมือสำคัญที่จะช่วยให้นักวิเคราะห์ข้อมูลสามารถสำรวจและทำความเข้าใจชุดข้อมูลที่มีขนาดมหึมาได้อย่างมีประสิทธิภาพยิ่งขึ้น#UMAP #MultiGPU #NVIDIA #cuML #DataScience #MachineLearninghttps://developer.nvidia.com/blog/run-massive-scale-umap-in-minutes-using-multiple-gpus-without-losing-accuracy/
Shared content
DEVELOPER.NVIDIA.COM
Run Massive-Scale UMAP in Minutes Using Multiple GPUs—Without Losing Accuracy
Uniform Manifold Approximation and Projection (UMAP) is a dimensionality reduction technique widely used for visualization and feature extraction. Applications range across exploratory data analysis…
7 Commentaires 0 Parts 527 Vue 0 Aperçu