NVIDIA Exemplar Cloud: เคล็ดลับปลดล็อกประสิทธิภาพสูงสุดบนโครงสร้างพื้นฐาน AI

การสร้างคลัสเตอร์ประมวลผล AI สองชุดที่ใช้ระบบ NVIDIA H100, GB200 NVL72 หรือ GB300 NVL72 ที่เหมือนกันทุกประการ อาจให้ผลลัพธ์การฝึก (training throughput) ที่แตกต่างกันอย่างมีนัยสำคัญ ทีมงาน NVIDIA พบว่าความแตกต่างนี้อาจสูงถึง 8% ถึง 12% เลยทีเดียว ซึ่งมักเกิดจากช่องว่างของการตั้งค่าที่สะสมกันในระดับ Kernel, Hypervisor, BIOS และ NVIDIA Collective Communications Library (NCCL) ทำให้การติดตั้งใช้งานพลาดเป้าหมาย 95% ที่กำหนดไว้สำหรับ NVIDIA Exemplar Cloud

บทความนี้จะพาไปสำรวจ 4 กรณีศึกษาจริงที่เผยให้เห็นถึงสาเหตุทั่วไปของประสิทธิภาพที่ลดลง เพื่อให้วิศวกรโครงสร้างพื้นฐานสามารถนำไปปรับใช้และปิดช่องว่างเหล่านั้นได้

ทำไมประสิทธิภาพ AI ถึงแตกต่างกันได้?

แม้จะใช้ฮาร์ดแวร์ NVIDIA รุ่นเดียวกัน แต่ประสิทธิภาพการฝึก AI อาจไม่เท่ากันเสมอไป สาเหตุหลักมักมาจากการตั้งค่าที่ซับซ้อนและสะสมกันในหลายระดับ ตั้งแต่ระดับฮาร์ดแวร์ไปจนถึงซอฟต์แวร์ระดับสูง ซึ่งแต่ละจุดที่ตั้งค่าไม่เหมาะสม อาจส่งผลกระทบเล็กน้อย แต่เมื่อรวมกันแล้วก็อาจทำให้ประสิทธิภาพลดลงจนน่าใจหาย

4 สาเหตุหลักที่พบบ่อยในการสูญเสียประสิทธิภาพ AI

จากการตรวจสอบคลัสเตอร์จริง พบรูปแบบปัญหาที่เกิดขึ้นซ้ำๆ ดังนี้:

  • Grace CPU และการตั้งค่า Virtualization: ปัญหาที่เกี่ยวข้องกับ SMMU (System Memory Management Unit), การตั้งค่า IOMMU หรือขนาดของ Page ที่ไม่ตรงกับการคาดหวัง อาจส่งผลกระทบต่อประสิทธิภาพ โดยเฉพาะอย่างยิ่งเมื่อใช้ NVIDIA Grace CPU ในสภาพแวดล้อมเสมือน (Virtual Machine - VM)
  • การจัดการพลังงาน CPU และการจัดวาง Process: การที่คอร์ CPU ทำงานต่ำกว่าความถี่ Turbo ที่ควรจะเป็น, การจัดวาง Process หรือ Thread ไปยังคอร์ที่ไม่เหมาะสม หรือการตั้งค่า NUMA (Non-Uniform Memory Access) ที่ไม่ตรงกับ Topology ของแพลตฟอร์ม อาจทำให้ประสิทธิภาพโดยรวมลดลง
  • Topology ของ Runtime และ NCCL: ไฟล์ Topology ของ Host หรือการตั้งค่า NCCL ที่ถูกต้องบน Node แต่อาจขาดหายไปภายใน Container ที่ใช้สำหรับ Workload หรือสภาพแวดล้อม Launcher อาจนำไปสู่ปัญหาที่มองไม่เห็น
  • Fabric และพฤติกรรม Collective: การตั้งค่า NCCL ที่ไม่ตรงกับ Fabric, ขนาดของข้อความ (Message Size) หรือระดับ Scale ของ Workload การฝึก อาจทำให้เกิดคอขวดในการสื่อสาร

กรณีศึกษา: เจาะลึกปัญหาและวิธีแก้ไข

กรณีศึกษาที่ 1: GB200 NVL72 ใน VM ช้ากว่า Bare Metal 12%

  • ปัญหา: การฝึก DeepSeek-V3 Mixture-of-Experts (MoE) FP8 ใน VM ช้ากว่า Bare Metal ถึง 12-14%
  • สาเหตุ: การตั้งค่า SMMU บน Arm SMMU ที่ไม่ได้ใช้ประโยชน์จาก Virtual Command Queue (VCMDQ) ทำให้เกิดการเข้าคิวคำสั่งที่ไม่จำเป็น และเกิด Spinlock Contention
  • วิธีแก้ไข: เปิดใช้งาน CMDQV/VCMDQ ใน Host Kernel และเปิดให้ Guest ใช้งาน ซึ่งต้องการ Kernel ที่สร้างด้วยไดรเวอร์ tegra241-cmdqv และการสนับสนุนจาก Hypervisor ที่เหมาะสม
  • ผลลัพธ์: อัตราการเกิด dTLB miss กลับมาใกล้เคียงกับ Bare Metal และช่องว่างของเวลาการฝึก MoE ลดลงเหลืออยู่ในเกณฑ์ที่ยอมรับได้

กรณีศึกษาที่ 2: คลัสเตอร์ H100 สูญเสีย 12% จากปัญหา CPU Contention และ NUMA Misbinding

  • ปัญหา: การฝึก Llama 3 70B บนคลัสเตอร์ H100 SXM5 ช้ากว่า Reference 12%
  • สาเหตุ:
  1. ความถี่ CPU ต่ำ: คอร์ CPU ทำงานที่ 3.0 GHz แทนที่จะเป็น 3.8 GHz (Turbo) เนื่องจาก C-state ถูกจำกัดไว้ที่ C1 ทำให้คอร์ที่ไม่ได้ใช้งานยังคงกินพลังงานแพ็กเกจมากเกินไป
  2. NUMA Remote Traffic สูง: การเข้าถึงหน่วยความจำของ Process ฝึกส่วนใหญ่อยู่ที่ NUMA Node ฝั่งตรงข้าม
  • วิธีแก้ไข:
  1. ปรับการตั้งค่า C-state ใน BIOS ให้สามารถเข้าสู่ C6 ได้ เพื่อเพิ่ม Power Headroom ให้คอร์ที่ทำงานสามารถเร่ง Turbo ได้เต็มที่
  2. แยก Process ของ Hypervisor และ Host Services ออกไปไว้ที่คอร์เฉพาะ (0-7, 56-63) และให้ Process การฝึกทำงานบนคอร์ที่เหลือ
  • ผลลัพธ์: ช่องว่างประสิทธิภาพลดลงจาก 12% เหลือ 3%

กรณีศึกษาที่ 3: GB300 NVL72 ใช้ Fabric 1.6 Tbps ได้ไม่เต็มที่

  • ปัญหา: การฝึก Nemotron-4 15B บน GB300 NVL72 ที่ใช้ NVIDIA ConnectX-8 SuperNICs ช้ากว่า Reference 31% โดยพบปัญหาที่ AllGather และ ReduceScatter
  • สาเหตุ: การตั้งค่า NCCLIBQPSPERCONNECTION มีค่าต่ำเกินไป (Default = 1) เมื่อเทียบกับขนาดของข้อความและการสื่อสารบน Fabric ความเร็วสูง
  • วิธีแก้ไข: เพิ่มค่า NCCLIBQPSPERCONNECTION เป็น 4
  • ผลลัพธ์: เวลาในการทำ AllGather และ ReduceScatter ลดลงอย่างมีนัยสำคัญ ทำให้ประสิทธิภาพโดยรวมดีขึ้น (แต่ต้องทดสอบและปรับให้เหมาะสมกับ Fabric และ Workload แต่ละประเภท)

กรณีศึกษาที่ 4: Environment Variable ที่ไม่ส่งถึง Container

  • ปัญหา: ในการติดตั้ง B200 แบบ Virtualized การฝึกมีความเร็วต่ำกว่า Reference ถึง 13%-53% แม้ว่า nccl-tests บน Host จะทำงานได้ปกติ แต่ AllGather และ ReduceScatter ภายใน Container กลับช้ากว่า 2-4 เท่า
  • สาเหตุ: การตั้งค่า NCCL Topology ที่มองเห็นจาก VM และภายใน Container ไม่ตรงกัน ทำให้การสื่อสารเกิดคอขวด
  • วิธีแก้ไข: ตรวจสอบและตรวจสอบให้แน่ใจว่า Environment Variable และไฟล์ Topology ที่จำเป็นสำหรับ NCCL ถูกส่งผ่านเข้าไปยัง Container ที่ใช้ฝึกอย่างถูกต้อง

ข้อคิดสำคัญสำหรับวิศวกรโครงสร้างพื้นฐาน AI

การเพิ่มประสิทธิภาพสูงสุดให้กับโครงสร้างพื้นฐาน AI นั้น ต้องอาศัยการตรวจสอบและปรับแต่งอย่างละเอียดในหลายระดับ การทำความเข้าใจรูปแบบปัญหาที่พบบ่อยเหล่านี้ จะช่วยให้สามารถระบุและแก้ไขคอขวดได้อย่างรวดเร็ว

  • ตรวจสอบ SMMU และ Virtualization: โดยเฉพาะบน Grace CPU ให้แน่ใจว่ามีการตั้งค่าที่เหมาะสมสำหรับ Workload ที่ต้องการ Memory Mapping สูง
  • ปรับแต่ง CPU Power Management และ NUMA Binding: การตั้งค่า C-state และการจัดวาง Process ให้ถูกต้อง สามารถปลดล็อกประสิทธิภาพ Turbo ของ CPU ได้
  • จูน NCCL Queue-Pair Concurrency: ปรับให้เหมาะสมกับ Scale และ Message Size ของ Workload และ Fabric ที่ใช้งาน
  • ยืนยัน Environment Variable ภายใน Container: ตรวจสอบให้แน่ใจว่าการตั้งค่าทั้งหมดที่จำเป็นสำหรับ NCCL สามารถเข้าถึงได้ภายในสภาพแวดล้อมการฝึกที่ใช้งานจริง

การตรวจสอบเหล่านี้ไม่ใช่การทดแทนการ Validation ด้วย Application จริง แต่เป็นแนวทางที่มีประโยชน์อย่างยิ่งในการค้นหาและแก้ไขปัญหาคอขวดที่อาจเกิดขึ้นได้

#AI #NVIDIA #ExemplarCloud #Infrastructure #Performance

ขอบคุณ แหล่งข้อมูล
https://developer.nvidia.com/blog/nvidia-exemplar-cloud-lessons-for-unlocking-full-performance-on-ai-infrastructure/

NVIDIA Exemplar Cloud: เคล็ดลับปลดล็อกประสิทธิภาพสูงสุดบนโครงสร้างพื้นฐาน AIการสร้างคลัสเตอร์ประมวลผล AI สองชุดที่ใช้ระบบ NVIDIA H100, GB200 NVL72 หรือ GB300 NVL72 ที่เหมือนกันทุกประการ อาจให้ผลลัพธ์การฝึก (training throughput) ที่แตกต่างกันอย่างมีนัยสำคัญ ทีมงาน NVIDIA พบว่าความแตกต่างนี้อาจสูงถึง 8% ถึง 12% เลยทีเดียว ซึ่งมักเกิดจากช่องว่างของการตั้งค่าที่สะสมกันในระดับ Kernel, Hypervisor, BIOS และ NVIDIA Collective Communications Library (NCCL) ทำให้การติดตั้งใช้งานพลาดเป้าหมาย 95% ที่กำหนดไว้สำหรับ NVIDIA Exemplar Cloudบทความนี้จะพาไปสำรวจ 4 กรณีศึกษาจริงที่เผยให้เห็นถึงสาเหตุทั่วไปของประสิทธิภาพที่ลดลง เพื่อให้วิศวกรโครงสร้างพื้นฐานสามารถนำไปปรับใช้และปิดช่องว่างเหล่านั้นได้ทำไมประสิทธิภาพ AI ถึงแตกต่างกันได้?แม้จะใช้ฮาร์ดแวร์ NVIDIA รุ่นเดียวกัน แต่ประสิทธิภาพการฝึก AI อาจไม่เท่ากันเสมอไป สาเหตุหลักมักมาจากการตั้งค่าที่ซับซ้อนและสะสมกันในหลายระดับ ตั้งแต่ระดับฮาร์ดแวร์ไปจนถึงซอฟต์แวร์ระดับสูง ซึ่งแต่ละจุดที่ตั้งค่าไม่เหมาะสม อาจส่งผลกระทบเล็กน้อย แต่เมื่อรวมกันแล้วก็อาจทำให้ประสิทธิภาพลดลงจนน่าใจหาย4 สาเหตุหลักที่พบบ่อยในการสูญเสียประสิทธิภาพ AIจากการตรวจสอบคลัสเตอร์จริง พบรูปแบบปัญหาที่เกิดขึ้นซ้ำๆ ดังนี้:Grace CPU และการตั้งค่า Virtualization: ปัญหาที่เกี่ยวข้องกับ SMMU (System Memory Management Unit), การตั้งค่า IOMMU หรือขนาดของ Page ที่ไม่ตรงกับการคาดหวัง อาจส่งผลกระทบต่อประสิทธิภาพ โดยเฉพาะอย่างยิ่งเมื่อใช้ NVIDIA Grace CPU ในสภาพแวดล้อมเสมือน (Virtual Machine - VM)การจัดการพลังงาน CPU และการจัดวาง Process: การที่คอร์ CPU ทำงานต่ำกว่าความถี่ Turbo ที่ควรจะเป็น, การจัดวาง Process หรือ Thread ไปยังคอร์ที่ไม่เหมาะสม หรือการตั้งค่า NUMA (Non-Uniform Memory Access) ที่ไม่ตรงกับ Topology ของแพลตฟอร์ม อาจทำให้ประสิทธิภาพโดยรวมลดลงTopology ของ Runtime และ NCCL: ไฟล์ Topology ของ Host หรือการตั้งค่า NCCL ที่ถูกต้องบน Node แต่อาจขาดหายไปภายใน Container ที่ใช้สำหรับ Workload หรือสภาพแวดล้อม Launcher อาจนำไปสู่ปัญหาที่มองไม่เห็นFabric และพฤติกรรม Collective: การตั้งค่า NCCL ที่ไม่ตรงกับ Fabric, ขนาดของข้อความ (Message Size) หรือระดับ Scale ของ Workload การฝึก อาจทำให้เกิดคอขวดในการสื่อสารกรณีศึกษา: เจาะลึกปัญหาและวิธีแก้ไขกรณีศึกษาที่ 1: GB200 NVL72 ใน VM ช้ากว่า Bare Metal 12%ปัญหา: การฝึก DeepSeek-V3 Mixture-of-Experts (MoE) FP8 ใน VM ช้ากว่า Bare Metal ถึง 12-14%สาเหตุ: การตั้งค่า SMMU บน Arm SMMU ที่ไม่ได้ใช้ประโยชน์จาก Virtual Command Queue (VCMDQ) ทำให้เกิดการเข้าคิวคำสั่งที่ไม่จำเป็น และเกิด Spinlock Contentionวิธีแก้ไข: เปิดใช้งาน CMDQV/VCMDQ ใน Host Kernel และเปิดให้ Guest ใช้งาน ซึ่งต้องการ Kernel ที่สร้างด้วยไดรเวอร์ tegra241-cmdqv และการสนับสนุนจาก Hypervisor ที่เหมาะสมผลลัพธ์: อัตราการเกิด dTLB miss กลับมาใกล้เคียงกับ Bare Metal และช่องว่างของเวลาการฝึก MoE ลดลงเหลืออยู่ในเกณฑ์ที่ยอมรับได้กรณีศึกษาที่ 2: คลัสเตอร์ H100 สูญเสีย 12% จากปัญหา CPU Contention และ NUMA Misbindingปัญหา: การฝึก Llama 3 70B บนคลัสเตอร์ H100 SXM5 ช้ากว่า Reference 12%สาเหตุ:ความถี่ CPU ต่ำ: คอร์ CPU ทำงานที่ 3.0 GHz แทนที่จะเป็น 3.8 GHz (Turbo) เนื่องจาก C-state ถูกจำกัดไว้ที่ C1 ทำให้คอร์ที่ไม่ได้ใช้งานยังคงกินพลังงานแพ็กเกจมากเกินไปNUMA Remote Traffic สูง: การเข้าถึงหน่วยความจำของ Process ฝึกส่วนใหญ่อยู่ที่ NUMA Node ฝั่งตรงข้ามวิธีแก้ไข:ปรับการตั้งค่า C-state ใน BIOS ให้สามารถเข้าสู่ C6 ได้ เพื่อเพิ่ม Power Headroom ให้คอร์ที่ทำงานสามารถเร่ง Turbo ได้เต็มที่แยก Process ของ Hypervisor และ Host Services ออกไปไว้ที่คอร์เฉพาะ (0-7, 56-63) และให้ Process การฝึกทำงานบนคอร์ที่เหลือผลลัพธ์: ช่องว่างประสิทธิภาพลดลงจาก 12% เหลือ 3%กรณีศึกษาที่ 3: GB300 NVL72 ใช้ Fabric 1.6 Tbps ได้ไม่เต็มที่ปัญหา: การฝึก Nemotron-4 15B บน GB300 NVL72 ที่ใช้ NVIDIA ConnectX-8 SuperNICs ช้ากว่า Reference 31% โดยพบปัญหาที่ AllGather และ ReduceScatterสาเหตุ: การตั้งค่า NCCLIBQPSPERCONNECTION มีค่าต่ำเกินไป (Default = 1) เมื่อเทียบกับขนาดของข้อความและการสื่อสารบน Fabric ความเร็วสูงวิธีแก้ไข: เพิ่มค่า NCCLIBQPSPERCONNECTION เป็น 4ผลลัพธ์: เวลาในการทำ AllGather และ ReduceScatter ลดลงอย่างมีนัยสำคัญ ทำให้ประสิทธิภาพโดยรวมดีขึ้น (แต่ต้องทดสอบและปรับให้เหมาะสมกับ Fabric และ Workload แต่ละประเภท)กรณีศึกษาที่ 4: Environment Variable ที่ไม่ส่งถึง Containerปัญหา: ในการติดตั้ง B200 แบบ Virtualized การฝึกมีความเร็วต่ำกว่า Reference ถึง 13%-53% แม้ว่า nccl-tests บน Host จะทำงานได้ปกติ แต่ AllGather และ ReduceScatter ภายใน Container กลับช้ากว่า 2-4 เท่าสาเหตุ: การตั้งค่า NCCL Topology ที่มองเห็นจาก VM และภายใน Container ไม่ตรงกัน ทำให้การสื่อสารเกิดคอขวดวิธีแก้ไข: ตรวจสอบและตรวจสอบให้แน่ใจว่า Environment Variable และไฟล์ Topology ที่จำเป็นสำหรับ NCCL ถูกส่งผ่านเข้าไปยัง Container ที่ใช้ฝึกอย่างถูกต้องข้อคิดสำคัญสำหรับวิศวกรโครงสร้างพื้นฐาน AIการเพิ่มประสิทธิภาพสูงสุดให้กับโครงสร้างพื้นฐาน AI นั้น ต้องอาศัยการตรวจสอบและปรับแต่งอย่างละเอียดในหลายระดับ การทำความเข้าใจรูปแบบปัญหาที่พบบ่อยเหล่านี้ จะช่วยให้สามารถระบุและแก้ไขคอขวดได้อย่างรวดเร็วตรวจสอบ SMMU และ Virtualization: โดยเฉพาะบน Grace CPU ให้แน่ใจว่ามีการตั้งค่าที่เหมาะสมสำหรับ Workload ที่ต้องการ Memory Mapping สูงปรับแต่ง CPU Power Management และ NUMA Binding: การตั้งค่า C-state และการจัดวาง Process ให้ถูกต้อง สามารถปลดล็อกประสิทธิภาพ Turbo ของ CPU ได้จูน NCCL Queue-Pair Concurrency: ปรับให้เหมาะสมกับ Scale และ Message Size ของ Workload และ Fabric ที่ใช้งานยืนยัน Environment Variable ภายใน Container: ตรวจสอบให้แน่ใจว่าการตั้งค่าทั้งหมดที่จำเป็นสำหรับ NCCL สามารถเข้าถึงได้ภายในสภาพแวดล้อมการฝึกที่ใช้งานจริงการตรวจสอบเหล่านี้ไม่ใช่การทดแทนการ Validation ด้วย Application จริง แต่เป็นแนวทางที่มีประโยชน์อย่างยิ่งในการค้นหาและแก้ไขปัญหาคอขวดที่อาจเกิดขึ้นได้#AI #NVIDIA #ExemplarCloud #Infrastructure #Performancehttps://developer.nvidia.com/blog/nvidia-exemplar-cloud-lessons-for-unlocking-full-performance-on-ai-infrastructure/
Shared content
DEVELOPER.NVIDIA.COM
NVIDIA Exemplar Cloud: Lessons for Unlocking Full Performance on AI Infrastructure
Two AI computing clusters built from identical NVIDIA H100, GB200 NVL72, or GB300 NVL72 systems can deliver materially different training throughput. We routinely see 8% to 12%
4 Commentarii 0 Distribuiri 163 Views 0 previzualizare