ขยายขีดจำกัด AI: การอนุมานข้ามหลาย GPU ด้วย NVIDIA TensorRT

งาน AI เชิงสร้างสรรค์ (Generative AI) กำลังเติบโตอย่างรวดเร็วจนเกินขีดความสามารถของ GPU เพียงตัวเดียว โดยเฉพาะอย่างยิ่งสำหรับนักพัฒนาที่สร้างท่อส่งข้อมูล (pipeline) การสร้างสื่อ (media generation) ความท้าทายสำคัญคือการขยายขนาดการทำงานข้ามอุปกรณ์หลายตัว โดยไม่สูญเสียการปรับแต่งประสิทธิภาพที่ NVIDIA TensorRT มอบให้สำหรับการใช้งานจริง

ข่าวดีคือ NVIDIA TensorRT เวอร์ชัน 11.0 ได้เปิดตัวคุณสมบัติ การอนุมานแบบหลายอุปกรณ์ (Multi-Device Inference) ซึ่งรองรับการทำงานข้าม GPU หลายตัวอย่างเป็นธรรมชาติ ช่วยให้ท่อส่งข้อมูล AI เชิงสร้างสรรค์สามารถทำงานได้อย่างราบรื่นและมีประสิทธิภาพสูง แม้จะทำงานบนอุปกรณ์ Edge ก็ตาม

ทำไมต้องขยายการทำงานข้าม GPU?

โมเดล AI เชิงสร้างสรรค์ โดยเฉพาะโมเดลภาษาขนาดใหญ่ (LLM) และโมเดลสร้างสื่อ มีขนาดใหญ่ขึ้นเรื่อยๆ ทำให้ต้องการหน่วยความจำ (Memory) และพลังประมวลผล (Compute) มหาศาล การใช้ GPU เพียงตัวเดียวอาจไม่เพียงพอ ส่งผลให้เกิดปัญหาคอขวด (bottleneck) ในการทำงาน

การรองรับการอนุมานแบบหลายอุปกรณ์ใน TensorRT 11.0 ช่วยแก้ปัญหานี้ ด้วยการผสานรวมกับ NVIDIA NCCL (NVIDIA Collective Communications Library) ซึ่งเป็นไลบรารีสำหรับการสื่อสารแบบกลุ่มที่มีประสิทธิภาพสูง ทำให้สามารถขยายขนาดการทำงานของท่อส่งข้อมูล AI ไปยัง GPU หลายตัวได้อย่างง่ายดาย โดยยังคงรักษาการปรับแต่งประสิทธิภาพที่สำคัญ เช่น การรวม Kernel (kernel fusions), การจัดการหน่วยความจำ (memory planning), และการควอนไทซ์ (quantization) ที่ TensorRT มอบให้

กลยุทธ์การขนานสำหรับการอนุมานแบบกระจาย

การอนุมานแบบกระจาย (Distributed Inference) สามารถทำได้หลายกลยุทธ์ แต่ละกลยุทธ์มีข้อดีข้อเสียแตกต่างกันไปในด้านการประหยัดหน่วยความจำ, การขยายขนาดการประมวลผล, และภาระการสื่อสาร (Communication Overhead) สองกลยุทธ์หลักที่น่าสนใจคือ:

1. Tensor Parallelism (การขนานเชิงเทนเซอร์)

  • หลักการ: แบ่งส่วนของน้ำหนัก (weights) ของเลเยอร์เดียวออกเป็นส่วนๆ กระจายไปตาม GPU แต่ละตัว GPU แต่ละตัวจะประมวลผลส่วนของตนเอง จากนั้นจึงรวมผลลัพธ์ผ่านการสื่อสารแบบกลุ่ม (collective communication)
  • เหมาะสำหรับ: เมื่อน้ำหนักของเลเยอร์ใดเลเยอร์หนึ่งมีขนาดใหญ่เกินกว่าหน่วยความจำของ GPU เพียงตัวเดียว
  • การปรับปรุง: ใน Transformer block มักจะจับคู่การฉายภาพแบบคอลัมน์ (column-parallel projections) กับการฉายภาพแบบแถว (row-parallel projections) เพื่อให้แต่ละบล็อกต้องการการสื่อสารแบบ AllReduce เพียงครั้งเดียว

2. Context Parallelism (การขนานเชิงบริบท)

  • หลักการ: แบ่งลำดับข้อมูลนำเข้า (input sequence) ออกตามมิติของลำดับ โดย GPU แต่ละตัวจะประมวลผลเพียงส่วนหนึ่งของลำดับเท่านั้น การดำเนินการแบบกลุ่มจะทำให้ข้อมูลลำดับทั้งหมดพร้อมใช้งานเมื่อจำเป็น เช่น ในการคำนวณ Attention
  • เหมาะสำหรับ: เวิร์กโหลดที่ใช้ลำดับยาว (long-sequence workloads) โดยเฉพาะอย่างยิ่งสำหรับโมเดล Diffusion และ DiT ซึ่งการคำนวณ Attention มีการปรับขนาดแบบควอดราติก (quadratic scaling) ตามความยาวลำดับ
  • การปรับปรุง:
  • AllGather KV: แลกเปลี่ยนส่วนของ Key (K) และ Value (V) ผ่าน AllGather collective ก่อนการคำนวณ Attention ในแต่ละ GPU ทำให้แต่ละ GPU สามารถ Attend กับลำดับทั้งหมดได้
  • Ring Attention: ซ้อนทับการสื่อสารและการประมวลผล GPU แต่ละตัวประมวลผล Query (Q) ในขณะที่ Key (K) และ Value (V) ถูกส่งผ่านในรูปแบบวงแหวน (ring topology) ช่วยลดการใช้หน่วยความจำ
  • DeepSpeed Ulysses: แบ่งตัวอย่างข้อมูลตามมิติลำดับข้าม GPU ที่เข้าร่วม จากนั้นใช้ All-to-All collective เพื่อส่ง Q, K, V ให้แต่ละ GPU ได้รับข้อมูลลำดับเต็ม แต่สำหรับชุดของ Attention heads ที่ไม่ซ้ำกัน ทำให้สามารถประมวลผล Attention พร้อมกันได้

TensorRT 11.0 รองรับ IDistCollectiveLayer primitives ซึ่งจำเป็นสำหรับกลยุทธ์การขนานต่างๆ โดยบทความนี้จะเน้นที่ Context Parallelism เนื่องจากเป็นปัจจัยหลักที่ส่งผลต่อต้นทุนในท่อส่งข้อมูลการสร้างสื่อยุคใหม่

การทดสอบประสิทธิภาพ: การสร้างสื่อด้วย Context Parallelism

การทดสอบนี้ประเมินประสิทธิภาพการอนุมานแบบหลายอุปกรณ์ของ TensorRT สำหรับเวิร์กโหลดการสร้างสื่อที่ออกแบบมาเพื่อการใช้งานจริงใน C++ โดยใช้ท่อส่งข้อมูล AI เชิงสร้างสรรค์สองแบบ:

  1. การสร้างวิดีโอด้วย NVIDIA Cosmos 3: โมเดล Cosmos3-Nano สามารถสร้างภาพ วิดีโอ เสียง และรูปแบบอื่นๆ จากอินพุตหลายรูปแบบ (multimodal inputs)
  2. การสร้างภาพด้วย FLUX.1: โมเดล FLUX.1-dev สามารถสร้างภาพจากคำอธิบายข้อความ

โมเดลเหล่านี้ถูกพัฒนาด้วย PyTorch จากนั้นแปลงเป็น NVIDIA TensorRT engine ด้วย Torch-TensorRT เพื่อให้สามารถนำไปใช้ในแอปพลิเคชัน C++ ได้

ผลการทดสอบบนโหนดเดียวที่มี 8 GPU พบว่า:

  • DeepSpeed Ulysses เป็นกลยุทธ์ที่ให้ ความหน่วงแฝงต่ำที่สุด (lowest latency) สำหรับการสร้างสื่อแบบ Diffusion ที่มีบริบทความยาวมาก (หลายหมื่นโทเค็น)
  • Ring Attention ก็แสดงประสิทธิภาพการขยายขนาดที่ดีเช่นกัน โดยเฉพาะเมื่อใช้ถึง 4 GPU

เริ่มต้นใช้งาน TensorRT กับคุณสมบัติ Multi-Device

TensorRT รองรับการอนุมานแบบหลายอุปกรณ์ โดยให้เครือข่ายเดียวสามารถทำงานข้าม GPU หลายตัวผ่าน Primitive การสื่อสารแบบกระจายที่มีอยู่แล้ว ขั้นตอนการทำงานโดยรวมคล้ายคลึงกับ TensorRT แบบอุปกรณ์เดียว แต่มีการเพิ่มเลเยอร์การสื่อสารแบบกระจายเข้าไป

ขั้นตอนการใช้งานเบื้องต้น:

  1. ดาวน์โหลด TensorRT 11: จาก NVIDIA Developer Portal
  2. ติดตั้ง TensorRT 11: ตามคำแนะนำ
  3. เตรียมเครื่อง: เครื่องที่มี GPU หลายตัว (Single-node, Multi-GPU)
  4. ติดตั้ง OpenMPI: ในสภาพแวดล้อมการพัฒนาของคุณ
  5. สร้างเครือข่ายสำหรับการอนุมานแบบหลายอุปกรณ์:
  • เปิดใช้งานการอนุมานแบบหลายอุปกรณ์ผ่าน IDistCollectiveLayer สำหรับการสื่อสารข้าม GPU
  • สามารถเพิ่ม Collective Operations ได้โดยตรงใน TensorRT network ด้วย INetworkDefinition::addDistCollective
  1. สร้าง Execution Context:
  2. ตั้งค่า Communicator และ Enqueue Inference:
  • NCCL communicator ต้องยังคงใช้งานได้ตลอดอายุของ Execution Context ที่ใช้งานอยู่
  1. รันแอปพลิเคชันด้วย OpenMPI: บน GPU 8 ตัว โดยแต่ละ Rank จะเลือก CUDA device ของตนเอง, เริ่มต้น NCCL, สร้าง TensorRT engine, สร้าง Execution context, และเชื่อมต่อ NCCL communicator

การรองรับการอนุมานแบบหลายอุปกรณ์ใน TensorRT 11.0 เปิดโอกาสให้นักพัฒนาสามารถขยายขีดจำกัดของโมเดล AI เชิงสร้างสรรค์ได้อย่างมีประสิทธิภาพ โดยเฉพาะอย่างยิ่งสำหรับเวิร์กโหลดที่มีความต้องการทรัพยากรสูง


คำถามที่พบบ่อย

การอนุมานแบบหลายอุปกรณ์ (Multi-Device Inference) คืออะไร?

คือ ความสามารถของ NVIDIA TensorRT ที่ให้โมเดลเดียวสามารถทำงานข้าม GPU หลายตัวได้ โดยใช้ประโยชน์จากการสื่อสารแบบกระจายที่มีประสิทธิภาพ

กลยุทธ์ Context Parallelism เหมาะกับงานประเภทใด?

เหมาะอย่างยิ่งสำหรับเวิร์กโหลดที่ใช้ลำดับข้อมูลนำเข้ายาว (long sequences) เช่น ในการสร้างสื่อ (media generation) ที่ต้องประมวลผล Attention จำนวนมาก

DeepSpeed Ulysses และ Ring Attention ต่างกันอย่างไร?

DeepSpeed Ulysses ใช้ All-to-All collective เพื่อรวม Attention heads ที่แบ่งส่วนกัน ส่วน Ring Attention จะซ้อนทับการประมวลผลและการสื่อสารในรูปแบบวงแหวนเพื่อประหยัดหน่วยความจำ

สามารถใช้ Torch-TensorRT ร่วมกับการอนุมานแบบหลายอุปกรณ์ได้หรือไม่?

ได้ การใช้ Torch-TensorRT ช่วยให้นักพัฒนาสามารถแปลงและปรับใช้โมเดล PyTorch ขนาดใหญ่ได้อย่างมีประสิทธิภาพในสภาพแวดล้อมการผลิต

#AI #TensorRT #NVIDIA #GenerativeAI #DeepLearning #GPU

ขอบคุณ แหล่งข้อมูล
https://developer.nvidia.com/blog/scaling-ai-inference-across-multiple-gpus-using-nvidia-tensorrt-with-multi-device-inference-support/

ขยายขีดจำกัด AI: การอนุมานข้ามหลาย GPU ด้วย NVIDIA TensorRTงาน AI เชิงสร้างสรรค์ (Generative AI) กำลังเติบโตอย่างรวดเร็วจนเกินขีดความสามารถของ GPU เพียงตัวเดียว โดยเฉพาะอย่างยิ่งสำหรับนักพัฒนาที่สร้างท่อส่งข้อมูล (pipeline) การสร้างสื่อ (media generation) ความท้าทายสำคัญคือการขยายขนาดการทำงานข้ามอุปกรณ์หลายตัว โดยไม่สูญเสียการปรับแต่งประสิทธิภาพที่ NVIDIA TensorRT มอบให้สำหรับการใช้งานจริงข่าวดีคือ NVIDIA TensorRT เวอร์ชัน 11.0 ได้เปิดตัวคุณสมบัติ การอนุมานแบบหลายอุปกรณ์ (Multi-Device Inference) ซึ่งรองรับการทำงานข้าม GPU หลายตัวอย่างเป็นธรรมชาติ ช่วยให้ท่อส่งข้อมูล AI เชิงสร้างสรรค์สามารถทำงานได้อย่างราบรื่นและมีประสิทธิภาพสูง แม้จะทำงานบนอุปกรณ์ Edge ก็ตามทำไมต้องขยายการทำงานข้าม GPU?โมเดล AI เชิงสร้างสรรค์ โดยเฉพาะโมเดลภาษาขนาดใหญ่ (LLM) และโมเดลสร้างสื่อ มีขนาดใหญ่ขึ้นเรื่อยๆ ทำให้ต้องการหน่วยความจำ (Memory) และพลังประมวลผล (Compute) มหาศาล การใช้ GPU เพียงตัวเดียวอาจไม่เพียงพอ ส่งผลให้เกิดปัญหาคอขวด (bottleneck) ในการทำงานการรองรับการอนุมานแบบหลายอุปกรณ์ใน TensorRT 11.0 ช่วยแก้ปัญหานี้ ด้วยการผสานรวมกับ NVIDIA NCCL (NVIDIA Collective Communications Library) ซึ่งเป็นไลบรารีสำหรับการสื่อสารแบบกลุ่มที่มีประสิทธิภาพสูง ทำให้สามารถขยายขนาดการทำงานของท่อส่งข้อมูล AI ไปยัง GPU หลายตัวได้อย่างง่ายดาย โดยยังคงรักษาการปรับแต่งประสิทธิภาพที่สำคัญ เช่น การรวม Kernel (kernel fusions), การจัดการหน่วยความจำ (memory planning), และการควอนไทซ์ (quantization) ที่ TensorRT มอบให้กลยุทธ์การขนานสำหรับการอนุมานแบบกระจายการอนุมานแบบกระจาย (Distributed Inference) สามารถทำได้หลายกลยุทธ์ แต่ละกลยุทธ์มีข้อดีข้อเสียแตกต่างกันไปในด้านการประหยัดหน่วยความจำ, การขยายขนาดการประมวลผล, และภาระการสื่อสาร (Communication Overhead) สองกลยุทธ์หลักที่น่าสนใจคือ:1. Tensor Parallelism (การขนานเชิงเทนเซอร์)หลักการ: แบ่งส่วนของน้ำหนัก (weights) ของเลเยอร์เดียวออกเป็นส่วนๆ กระจายไปตาม GPU แต่ละตัว GPU แต่ละตัวจะประมวลผลส่วนของตนเอง จากนั้นจึงรวมผลลัพธ์ผ่านการสื่อสารแบบกลุ่ม (collective communication)เหมาะสำหรับ: เมื่อน้ำหนักของเลเยอร์ใดเลเยอร์หนึ่งมีขนาดใหญ่เกินกว่าหน่วยความจำของ GPU เพียงตัวเดียวการปรับปรุง: ใน Transformer block มักจะจับคู่การฉายภาพแบบคอลัมน์ (column-parallel projections) กับการฉายภาพแบบแถว (row-parallel projections) เพื่อให้แต่ละบล็อกต้องการการสื่อสารแบบ AllReduce เพียงครั้งเดียว2. Context Parallelism (การขนานเชิงบริบท)หลักการ: แบ่งลำดับข้อมูลนำเข้า (input sequence) ออกตามมิติของลำดับ โดย GPU แต่ละตัวจะประมวลผลเพียงส่วนหนึ่งของลำดับเท่านั้น การดำเนินการแบบกลุ่มจะทำให้ข้อมูลลำดับทั้งหมดพร้อมใช้งานเมื่อจำเป็น เช่น ในการคำนวณ Attentionเหมาะสำหรับ: เวิร์กโหลดที่ใช้ลำดับยาว (long-sequence workloads) โดยเฉพาะอย่างยิ่งสำหรับโมเดล Diffusion และ DiT ซึ่งการคำนวณ Attention มีการปรับขนาดแบบควอดราติก (quadratic scaling) ตามความยาวลำดับการปรับปรุง:AllGather KV: แลกเปลี่ยนส่วนของ Key (K) และ Value (V) ผ่าน AllGather collective ก่อนการคำนวณ Attention ในแต่ละ GPU ทำให้แต่ละ GPU สามารถ Attend กับลำดับทั้งหมดได้Ring Attention: ซ้อนทับการสื่อสารและการประมวลผล GPU แต่ละตัวประมวลผล Query (Q) ในขณะที่ Key (K) และ Value (V) ถูกส่งผ่านในรูปแบบวงแหวน (ring topology) ช่วยลดการใช้หน่วยความจำDeepSpeed Ulysses: แบ่งตัวอย่างข้อมูลตามมิติลำดับข้าม GPU ที่เข้าร่วม จากนั้นใช้ All-to-All collective เพื่อส่ง Q, K, V ให้แต่ละ GPU ได้รับข้อมูลลำดับเต็ม แต่สำหรับชุดของ Attention heads ที่ไม่ซ้ำกัน ทำให้สามารถประมวลผล Attention พร้อมกันได้TensorRT 11.0 รองรับ IDistCollectiveLayer primitives ซึ่งจำเป็นสำหรับกลยุทธ์การขนานต่างๆ โดยบทความนี้จะเน้นที่ Context Parallelism เนื่องจากเป็นปัจจัยหลักที่ส่งผลต่อต้นทุนในท่อส่งข้อมูลการสร้างสื่อยุคใหม่การทดสอบประสิทธิภาพ: การสร้างสื่อด้วย Context Parallelismการทดสอบนี้ประเมินประสิทธิภาพการอนุมานแบบหลายอุปกรณ์ของ TensorRT สำหรับเวิร์กโหลดการสร้างสื่อที่ออกแบบมาเพื่อการใช้งานจริงใน C++ โดยใช้ท่อส่งข้อมูล AI เชิงสร้างสรรค์สองแบบ:การสร้างวิดีโอด้วย NVIDIA Cosmos 3: โมเดล Cosmos3-Nano สามารถสร้างภาพ วิดีโอ เสียง และรูปแบบอื่นๆ จากอินพุตหลายรูปแบบ (multimodal inputs)การสร้างภาพด้วย FLUX.1: โมเดล FLUX.1-dev สามารถสร้างภาพจากคำอธิบายข้อความโมเดลเหล่านี้ถูกพัฒนาด้วย PyTorch จากนั้นแปลงเป็น NVIDIA TensorRT engine ด้วย Torch-TensorRT เพื่อให้สามารถนำไปใช้ในแอปพลิเคชัน C++ ได้ผลการทดสอบบนโหนดเดียวที่มี 8 GPU พบว่า:DeepSpeed Ulysses เป็นกลยุทธ์ที่ให้ ความหน่วงแฝงต่ำที่สุด (lowest latency) สำหรับการสร้างสื่อแบบ Diffusion ที่มีบริบทความยาวมาก (หลายหมื่นโทเค็น)Ring Attention ก็แสดงประสิทธิภาพการขยายขนาดที่ดีเช่นกัน โดยเฉพาะเมื่อใช้ถึง 4 GPUเริ่มต้นใช้งาน TensorRT กับคุณสมบัติ Multi-DeviceTensorRT รองรับการอนุมานแบบหลายอุปกรณ์ โดยให้เครือข่ายเดียวสามารถทำงานข้าม GPU หลายตัวผ่าน Primitive การสื่อสารแบบกระจายที่มีอยู่แล้ว ขั้นตอนการทำงานโดยรวมคล้ายคลึงกับ TensorRT แบบอุปกรณ์เดียว แต่มีการเพิ่มเลเยอร์การสื่อสารแบบกระจายเข้าไปขั้นตอนการใช้งานเบื้องต้น:ดาวน์โหลด TensorRT 11: จาก NVIDIA Developer Portalติดตั้ง TensorRT 11: ตามคำแนะนำเตรียมเครื่อง: เครื่องที่มี GPU หลายตัว (Single-node, Multi-GPU)ติดตั้ง OpenMPI: ในสภาพแวดล้อมการพัฒนาของคุณสร้างเครือข่ายสำหรับการอนุมานแบบหลายอุปกรณ์:เปิดใช้งานการอนุมานแบบหลายอุปกรณ์ผ่าน IDistCollectiveLayer สำหรับการสื่อสารข้าม GPUสามารถเพิ่ม Collective Operations ได้โดยตรงใน TensorRT network ด้วย INetworkDefinition::addDistCollectiveสร้าง Execution Context:ตั้งค่า Communicator และ Enqueue Inference:NCCL communicator ต้องยังคงใช้งานได้ตลอดอายุของ Execution Context ที่ใช้งานอยู่รันแอปพลิเคชันด้วย OpenMPI: บน GPU 8 ตัว โดยแต่ละ Rank จะเลือก CUDA device ของตนเอง, เริ่มต้น NCCL, สร้าง TensorRT engine, สร้าง Execution context, และเชื่อมต่อ NCCL communicatorการรองรับการอนุมานแบบหลายอุปกรณ์ใน TensorRT 11.0 เปิดโอกาสให้นักพัฒนาสามารถขยายขีดจำกัดของโมเดล AI เชิงสร้างสรรค์ได้อย่างมีประสิทธิภาพ โดยเฉพาะอย่างยิ่งสำหรับเวิร์กโหลดที่มีความต้องการทรัพยากรสูงคำถามที่พบบ่อยการอนุมานแบบหลายอุปกรณ์ (Multi-Device Inference) คืออะไร?คือ ความสามารถของ NVIDIA TensorRT ที่ให้โมเดลเดียวสามารถทำงานข้าม GPU หลายตัวได้ โดยใช้ประโยชน์จากการสื่อสารแบบกระจายที่มีประสิทธิภาพกลยุทธ์ Context Parallelism เหมาะกับงานประเภทใด?เหมาะอย่างยิ่งสำหรับเวิร์กโหลดที่ใช้ลำดับข้อมูลนำเข้ายาว (long sequences) เช่น ในการสร้างสื่อ (media generation) ที่ต้องประมวลผล Attention จำนวนมากDeepSpeed Ulysses และ Ring Attention ต่างกันอย่างไร?DeepSpeed Ulysses ใช้ All-to-All collective เพื่อรวม Attention heads ที่แบ่งส่วนกัน ส่วน Ring Attention จะซ้อนทับการประมวลผลและการสื่อสารในรูปแบบวงแหวนเพื่อประหยัดหน่วยความจำสามารถใช้ Torch-TensorRT ร่วมกับการอนุมานแบบหลายอุปกรณ์ได้หรือไม่?ได้ การใช้ Torch-TensorRT ช่วยให้นักพัฒนาสามารถแปลงและปรับใช้โมเดล PyTorch ขนาดใหญ่ได้อย่างมีประสิทธิภาพในสภาพแวดล้อมการผลิต#AI #TensorRT #NVIDIA #GenerativeAI #DeepLearning #GPUhttps://developer.nvidia.com/blog/scaling-ai-inference-across-multiple-gpus-using-nvidia-tensorrt-with-multi-device-inference-support/
Shared content
DEVELOPER.NVIDIA.COM
Scaling AI Inference Across Multiple GPUs Using NVIDIA TensorRT with Multi-Device Inference Support
Generative AI workloads are rapidly outgrowing the memory and compute budget of single GPUs. For inference developers building media generation pipelines, the challenge is scaling across multiple…
4 Comments 0 Shares 420 Views 0 Reviews