- GPU มีบทบาทสำคัญใน แมชชีนเลิร์นนิง สมัยใหม่ และเป็นสถาปัตยกรรมที่รวม Streaming Multiprocessors (SMs) จำนวนมากซึ่งออกแบบมาสำหรับการคำนวณเมทริกซ์คูณความเร็วสูง เข้ากับ HBM (หน่วยความจำแบนด์วิดท์สูง)
- SM ของ GPU แบ่งเป็น Tensor Core (เมทริกซ์คูณ) และ CUDA Core (การคำนวณเวกเตอร์) รองรับทั้งการประมวลผลแบบขนานขนาดใหญ่และการเขียนโปรแกรมที่ยืดหยุ่น
- GPU และ TPU ต่างกันทั้งในด้านโครงสร้างภายในและการจัดวางเครือข่าย โดย GPU มี ความเป็นอเนกประสงค์ และ ความสามารถในการขยายระบบ สูงกว่า แต่การดึงประสิทธิภาพสูงสุดออกมาต้องพิจารณาปัจจัยมากกว่า
- ภายใน โหนด (Node) สามารถสื่อสารระหว่าง GPU ได้ด้วยความเร็วสูงมากผ่าน NVLink และ NVSwitch ส่วนระหว่างโหนดจะเชื่อมต่อผ่านเครือข่ายอย่าง InfiniBand เพื่อรองรับการฝึกแบบกระจายขนาดใหญ่
- Collectives บน GPU (เช่น AllReduce, AllGather เป็นต้น) มีประสิทธิภาพที่แตกต่างกันมากตามโครงสร้างฮาร์ดแวร์และลำดับชั้นของเครือข่าย และในทางปฏิบัติมักได้ต่ำกว่าค่าแบนด์วิดท์เชิงทฤษฎี
GPU คืออะไร?
- ML GPU สมัยใหม่ (เช่น H100, B200) ประกอบด้วย Streaming Multiprocessor (SM) ตั้งแต่หลายสิบถึงหลายร้อยตัวที่ออกแบบมาเพื่อการคำนวณเมทริกซ์คูณ พร้อมด้วย หน่วยความจำ HBM ความเร็วสูง
- ในแต่ละ SM มี Tensor Core (เมทริกซ์คูณ), Warp Scheduler (การคำนวณเวกเตอร์) และ SMEM (แคชบนชิป)
- ต่างจาก TPU ตรงที่ GPU สามารถประมวลผลแบบขนานขนาดใหญ่ได้อย่างยืดหยุ่นมากกว่าผ่าน SM มากกว่า 100 ตัว
โครงสร้างรายละเอียดของ SM
- SM ถูกแบ่งเป็น 4 subpartition และในแต่ละ subpartition จะมี Tensor Core, CUDA Core (การคำนวณเวกเตอร์), Warp Scheduler, register file เป็นต้น
- CUDA Core รับหน้าที่คำนวณเลขคณิตเวกเตอร์ (SIMD/SIMT) ส่วน Tensor Core ถูกออกแบบเฉพาะสำหรับเมทริกซ์คูณ
- ค่า FLOPs ของ Tensor Core สูงกว่าอย่างมาก และจะประมวลผลได้เร็วยิ่งขึ้นเมื่อใช้ความละเอียดต่ำ
- GPU รุ่นใหม่ (เช่น B200) เพิ่ม TMEM ขนาดใหญ่เพื่อรองรับอินพุตของ Tensor Core ปริมาณมาก
ความยืดหยุ่นของ CUDA Core
- CUDA Core ของ GPU ใช้โมเดล SIMT (Single Instruction Multiple Threads) ทำให้สามารถรันคำสั่งเดียวกันแบบขนานบนหลายเธรดได้
- แต่ละเธรดมี instruction pointer (program counter) แยกกัน จึงมีความยืดหยุ่น เช่น การแตกแขนงตามเงื่อนไข แต่หากมี instruction divergence มากภายใน warp จะทำให้ประสิทธิภาพลดลง
- แต่ละ CUDA Core มีสถานะแยกของตนเองและเข้าถึงหน่วยความจำได้อย่างอิสระ (ขณะที่ TPU ประมวลผลได้เฉพาะหน่วยความจำที่ต่อเนื่องกัน)
การจัดตาราง/ความขนาน
- SM จะจัดตาราง warp จำนวนมาก (สูงสุด 64 ตัว) ให้รันพร้อมกัน และแต่ละ warp scheduler จะรันได้หนึ่งโปรแกรมในแต่ละครั้ง
- ด้วยโครงสร้างนี้ GPU จึงมีทั้งความยืดหยุ่นสูงและความสามารถในการประมวลผลพร้อมกันในระดับสูง
โครงสร้างหน่วยความจำของ GPU
- GPU มี HBM เป็นหน่วยความจำที่ใหญ่ที่สุด และยังมีลำดับชั้นของหน่วยความจำอื่น ๆ เช่น L2/L1(SMEM)/TMEM/register
สรุปสเปกของ GPU รุ่นใหม่
- จำนวน SM (Streaming Multiprocessor), ความถี่สัญญาณนาฬิกา, หน่วยความจำ, FLOPs, แบนด์วิดท์ (BW) แตกต่างกันไปในแต่ละรุ่น
- ความจุหน่วยความจำ (HBM), แบนด์วิดท์, FLOPs (สำหรับเลขทศนิยม/จำนวนเต็ม/ความละเอียดต่ำ) เพิ่มขึ้นอย่างต่อเนื่องในแต่ละเจเนอเรชัน
- คุณลักษณะสำคัญจากตาราง (ละไว้): Blackwell (B200) มี HBM 192GB, HBM BW 8.0TB/s, FP8 FLOPs 4.5e15 เป็นต้น
- การพัฒนาฮาร์ดแวร์ในแต่ละเจเนอเรชันเห็นได้ชัดจากความจุ register และแคชบนชิป (SMEM) รวมถึงการเพิ่ม TMEM
เปรียบเทียบ GPU/TPU
- GPU มีความเป็นอเนกประสงค์และถูกออกแบบแบบโมดูลาร์ด้วย SM ขนาดเล็กจำนวนมาก (หน่วยขนาน) พร้อมการควบคุมฮาร์ดแวร์จำนวนมาก ทำให้เข้าใจและปรับแต่งได้ยากกว่า
- TPU ประกอบด้วย Tensor Core ขนาดใหญ่จำนวนน้อยและ vector ALU (VPU) จำนวนมาก ใช้วิธีควบคุมแบบ single-thread จึงทำให้ฮาร์ดแวร์เรียบง่ายและลดต้นทุนได้
- ด้วยเหตุนี้ TPU จึงต้องพึ่งการปรับแต่งโดยคอมไพเลอร์อย่างมาก ขณะที่ GPU สามารถรันหลายเคอร์เนลแบบอิสระได้ จึงใช้งานได้สะดวกกว่า
- ในแง่ ประสิทธิภาพ/ราคา ช่วงหลัง H200 GPU มี FLOPs/s มากกว่า TPU v5p ประมาณ 2 เท่า, HBM มากกว่า 1.5 เท่า และราคาสูงกว่าราว 2.5 เท่า
- TPU มี VMEM (แคชบนชิป) มากและเร็วกว่า ซึ่งอาจเป็นข้อได้เปรียบอย่างมากในงานอย่างการอนุมานโมเดล LLM
ประเด็นคำถาม-คำตอบเกี่ยวกับฮาร์ดแวร์ GPU
- fp32 CUDA core ของ H100 มีทั้งหมด 16,896 คอร์ (132 SM x 4 x 32) ส่วน B200 มี 18,944 คอร์
- FLOPs ของการคำนวณเวกเตอร์บน H100 อยู่สูงสุดราว 33.5TFLOPs/s ซึ่งต่ำกว่าค่า FLOPs ของเมทริกซ์คูณบน Tensor Core (990TFLOPs/s) ประมาณ 30 เท่า
- ความจุรวมของ L1/SMEM และ register ของ H100 คือ 66MB ส่วน TPU VMEM คือ 120MB
- อัตราส่วนระหว่าง bandwidth (แบนด์วิดท์) และ FLOPs (ความหนาแน่นการคำนวณเชิงทฤษฎี) ของทั้ง H100/B200 อยู่ที่ประมาณ 280-300 ใกล้เคียงกับ TPU
เครือข่ายของ GPU (โครงสร้างการสื่อสาร)
โครงสร้างโหนด/คลัสเตอร์
- GPU node มักรวม GPU 8 ตัวเข้าด้วยกัน โดยเชื่อมต่อแบบแบนด์วิดท์เต็มโดยตรงผ่าน NVLink (ความเร็วสูงมาก) และ NVSwitch (สวิตช์)
- ระหว่างโหนด สามารถสเกลเอาต์ได้ด้วย InfiniBand (หรือ Ethernet เป็นต้น)
- GPU รุ่นล่าสุด (Blackwell) รองรับโครงสร้างที่ขยายได้ถึง 72 โหนด
คุณลักษณะตามลำดับชั้นของเครือข่าย
- ภายในโหนด (ขอบเขต NVLink): egress ต่อ GPU เท่ากับ 450GB/s (H100), 900GB/s (B200) และ NVSwitch สูงสุด 1.6TB/s
- ชั้นบนของโหนด (InfiniBand Leaf/Spine): โครงสร้าง Leaf Switch (8 ตัว) ~ Spine Switch (16 ตัว) โดยยังคงแบนด์วิดท์เต็มเชิงทฤษฎี 400GB/s ระหว่าง GPU ถึง GPU
- ในสถาปัตยกรรมขนาดใหญ่อย่าง SuperPod มีได้ถึง 1024 GPU (128 โหนด) และ GB200 (โหนด 72 GPU) มีแบนด์วิดท์เพิ่มขึ้น 9 เท่า (3600GB/s)
ประเด็นด้านประสิทธิภาพเครือข่าย
- ในทางทฤษฎี โครงสร้างเครือข่าย (Full Fat Tree) ถูกออกแบบให้ให้แบนด์วิดท์สูงสุดได้แม้กระทั่งระหว่างโหนดต่อโหนด
- เมื่อขยายเป็น 1024~4096 GPU จะใช้วิธีจัดลำดับชั้นโดยเพิ่ม Spine/Core Switch มากขึ้น เนื่องจากข้อจำกัดของพอร์ตฮาร์ดแวร์
- การเปลี่ยนจาก แบนด์วิดท์ภายในโหนด (450GB/s) ไปเป็น แบนด์วิดท์ระหว่างโหนด (400GB/s) ส่งผลให้ประสิทธิภาพของ collectives แตกต่างกัน
โครงสร้างของ Collectives
- รองรับ collectives ระดับสูง เช่น AllGather, AllReduce (รวมผล), AllToAll (กระจาย)
- ภายในโหนดจะเชื่อมต่อโดยตรงผ่าน NVLink จึงให้ประสิทธิภาพที่ดีที่สุดได้ (ตาม B/W เชิงทฤษฎี) ส่วนระหว่างโหนดจะผ่าน InfiniBand
- ใช้ไลบรารี NCCL, NVSHMEM ของ NVIDIA
การวิเคราะห์ประสิทธิภาพของ Collectives
- AllGather/ReduceScatter: ใช้การติดตั้งแบบ ring ตาม B/W (อิง H100 ที่ 450GB/s) และสำหรับข้อความขนาดเล็กอาจใช้แบบ tree ได้
- AllToAll: แต่ละ GPU ส่งข้อมูลไปยัง GPU ปลายทางโดยตรง เป็นวิธีที่หารจาก B/W ด้วย N จึงเร็วกว่าในโหนดราว 2 เท่าในทางทฤษฎี
- ผลการวัดจริงใน AllReduce อยู่ที่ราว 370GB/s ซึ่งยังไม่ถึงค่าสูงสุดของฮาร์ดแวร์
- เมื่อเทียบกับ TPU ต้องเป็นงานข้อมูลขนาดใหญ่ (หลายสิบ MB ถึง GB) จึงจะเข้าใกล้ Peak Bandwidth ของฮาร์ดแวร์
สรุปและข้อสังเกต
- GPU มีจุดเด่นด้านความเป็นอเนกประสงค์และการขยายระบบ แต่ระดับความยากในการปรับแต่งประสิทธิภาพและการสังเกตพฤติกรรมตามโครงสร้างฮาร์ดแวร์/เครือข่ายนั้นสูงกว่า TPU
- เครือข่าย (Intra-Node/NVLink/InfiniBand/Leaf/Spine ฯลฯ) คือหัวใจของประสิทธิภาพในการฝึกขนาดใหญ่ และต้องระวังความต่างระหว่างแบนด์วิดท์จริงกับแบนด์วิดท์เชิงทฤษฎี
- ความเข้าใจเรื่อง collectives และโครงสร้างเครือข่ายเป็นองค์ประกอบสำคัญสำหรับการฝึก/ให้บริการ โมเดลแบบกระจายขนาดใหญ่มาก
- กระบวนการวิเคราะห์คอขวดและเงื่อนไขที่เหมาะสมที่สุดจำเป็นต้องอาศัยทั้ง benchmark จริงและความเข้าใจในรายละเอียดโครงสร้างของฮาร์ดแวร์
ยังไม่มีความคิดเห็น