เปิดใช้งานการฝึกอบรมที่รวดเร็วยิ่งขึ้นด้วย Amazon SageMaker data Parallel Library | อเมซอนเว็บเซอร์วิส

เปิดใช้งานการฝึกอบรมที่รวดเร็วยิ่งขึ้นด้วย Amazon SageMaker data Parallel Library | อเมซอนเว็บเซอร์วิส

การฝึกอบรมโมเดลภาษาขนาดใหญ่ (LLM) ได้รับความนิยมเพิ่มมากขึ้นในปีที่ผ่านมา โดยมีการเปิดตัวโมเดลที่เผยแพร่ต่อสาธารณะหลายรุ่น เช่น Llama2, Falcon และ StarCoder ขณะนี้ลูกค้ากำลังฝึกอบรม LLM ในขนาดที่ไม่เคยมีมาก่อนตั้งแต่ 1 พันล้านถึงมากกว่า 175 พันล้านพารามิเตอร์ การฝึกอบรม LLM เหล่านี้ต้องใช้ทรัพยากรและเวลาในการประมวลผลจำนวนมาก เนื่องจากต้องใช้หน่วยประมวลผลกราฟิก (GPU) นับแสนถึงหลายพันหน่วยเพื่อจัดการกับชุดข้อมูลและขนาดแบบจำลองการฝึกอบรมที่มีอยู่มากมายในปัจจุบัน ปัญหาคอขวดประการหนึ่งในการฝึกอบรมแบบกระจายอาจเป็นการสื่อสารด้วย GPU ที่จัดการโดย NVIDIA Collective Communication Library (NCCL) ในงานฝึกอบรมที่มีการกระจายขนาดใหญ่บางงาน สามารถใช้เวลาในการสื่อสารระหว่าง GPU ได้มากกว่าการคำนวณ GPU จริง เพื่อบรรเทาปัญหาคอขวดในการสื่อสารของ GPU และช่วยให้การฝึกอบรมเร็วขึ้น อเมซอน SageMaker รู้สึกตื่นเต้นที่จะประกาศการดำเนินการโดยรวม AllGather ที่ได้รับการปรับปรุงให้เหมาะสม โดยเป็นส่วนหนึ่งของ SageMaker Distributed Data Parallel Library (SMDDP) AllGather เป็นการดำเนินการแบบรวมที่ใช้มากที่สุดในโซลูชันการขนานข้อมูลที่มีประสิทธิภาพหน่วยความจำยอดนิยม เช่น เครื่องมือเพิ่มประสิทธิภาพ DeepSpeed ​​Zero Redundancy (ZeRO) และ การขนานข้อมูลแบบแบ่งส่วนอย่างสมบูรณ์ (FSDP)และเป็นผู้สนับสนุนหลักในค่าใช้จ่ายในการสื่อสาร GPU ในโพสต์นี้ เราจะแสดงภาพรวมระดับสูงเกี่ยวกับวิธีการทำงานของ SMDDP วิธีเปิดใช้งาน SMDDP ในสคริปต์การฝึกอบรม Amazon SageMaker และการปรับปรุงประสิทธิภาพที่คุณคาดหวังได้

ภาพรวมโซลูชัน

แบบดั้งเดิม การฝึกอบรมข้อมูลแบบขนาน เกี่ยวข้องกับการจำลองโมเดลทั้งหมดโดยใช้ GPU หลายตัว โดยแต่ละโมเดลจะฝึกฝนในส่วนข้อมูลที่แตกต่างกันจากชุดข้อมูล ในระหว่างการย้อนกลับ การไล่ระดับสีจะถูกเฉลี่ยในหมู่ผู้ปฏิบัติงาน GPU เพื่อให้แบบจำลองแต่ละแบบจำลองได้รับการอัปเดตด้วยค่าการไล่ระดับสีเดียวกัน แม้ว่าจะได้รับการฝึกฝนด้วยชาร์ดข้อมูลที่แตกต่างกันก็ตาม เทคนิคนี้ช่วยให้การฝึกอบรมชุดข้อมูลขนาดใหญ่เร็วขึ้นมากโดยการนำการใช้ข้อมูลการฝึกอบรมไปพร้อมกัน อย่างไรก็ตาม โมเดลขนาดใหญ่บางรุ่นในปัจจุบัน (เช่น Llama2 70B) มีขนาดใหญ่เกินกว่าจะใส่ลงในหน่วยความจำ GPU ได้ทั้งหมด ซึ่งทำให้ข้อมูลแบบขนานแบบเดิมใช้งานไม่ได้ เพื่อเก็บเกี่ยวผลประโยชน์จากข้อมูลแบบขนานต่อไปในขณะที่เอาชนะหน่วยความจำ GPU ที่จำกัด โซลูชันการแบ่งข้อมูลแบบขนาน เช่น DeepSpeed ​​ZeRO, PyTorch FSDP และ Amazon ไลบรารีการขนานแบบจำลอง SageMaker ได้รับความนิยมเพิ่มขึ้น

ในระบบการแบ่งส่วนข้อมูลแบบขนาน แทนที่จะจำลองโมเดลทั้งหมดบนพนักงาน GPU พารามิเตอร์โมเดล การไล่ระดับสี และสถานะเครื่องมือเพิ่มประสิทธิภาพจะถูกแยกย่อยและกระจาย (เช่น การแบ่งส่วน) ทั่วทั้ง GPU ในงานการฝึก ในการคำนวณการส่งไปข้างหน้าและย้อนกลับ พารามิเตอร์จะถูกรวบรวมจากส่วนแบ่งบนพนักงาน GPU อื่นๆ เพื่อสร้างเลเยอร์โมเดลอย่างน้อยหนึ่งเลเยอร์ หลังจากดำเนินการคำนวณแล้ว เลเยอร์เหล่านี้จะถูกปลดปล่อยจากหน่วยความจำเพื่อให้สามารถรวบรวมเลเยอร์ชุดถัดไปได้ โปรดทราบว่ามีหลายรูปแบบของการแบ่งส่วนข้อมูลแบบขนานโดยที่เฉพาะสถานะเครื่องมือเพิ่มประสิทธิภาพและการไล่ระดับสีเท่านั้นที่จะแบ่งส่วน แต่ไม่ใช่พารามิเตอร์โมเดล AllGather ยังคงใช้อยู่ในการแบ่งส่วนข้อมูลแบบขนานประเภทนี้ แต่ก่อนการคำนวณส่งต่อเท่านั้น เพื่อรวบรวมพารามิเตอร์โมเดลที่ได้รับการอัปเดตโดยส่วนแบ่งสถานะการไล่ระดับสีหรือเครื่องมือเพิ่มประสิทธิภาพที่แตกต่างจากพนักงาน GPU อื่นๆ อ้างถึงที่แตกต่างกัน ด่าน DeepSpeed ​​Zero และ SHARD_GRAD_OP กลยุทธ์การแบ่งส่วน FSDP สำหรับรายละเอียดเพิ่มเติม

การดำเนินการแบบรวมของ AllGather จะดำเนินการแต่ละครั้งที่มีการแยกส่วนพารามิเตอร์ - NCCL จัดให้มีการใช้งานโอเพ่นซอร์สมาตรฐานของรูทีนนี้ ดังที่แสดงไว้ต่อไปนี้ ผู้ปฏิบัติงาน GPU แต่ละคนที่เกี่ยวข้องกับ AllGather เริ่มต้นด้วยบัฟเฟอร์อินพุต และจบลงด้วยบัฟเฟอร์อินพุตทั้งหมดจากผู้ปฏิบัติงานรายอื่นที่ต่อกัน เมื่อใช้ AllGather ในการแบ่งส่วนข้อมูลแบบขนาน บัฟเฟอร์อินพุตจะมีส่วนแบ่งพารามิเตอร์โมเดล และบัฟเฟอร์เอาต์พุตขนาดใหญ่จะมีเลเยอร์โมเดลตั้งแต่หนึ่งเลเยอร์ขึ้นไปที่ถูกสร้างขึ้นจากชาร์ดอื่นๆ

ก่อนและหลังการทำงานของ AllGather บน GPU 4 ตัว

แม้ว่าโดยทั่วไป NCCL จะใช้สำหรับ AllGather ในการฝึกอบรมแบบกระจาย แต่การใช้งานระดับต่ำที่ซ่อนอยู่นั้นไม่ได้ปรับให้เหมาะกับโครงสร้างพื้นฐานเครือข่ายของ Amazon Elastic Compute Cloud (Amazon EC2) ดังนั้นประสิทธิภาพของมันจึงอาจทำให้การฝึกอบรมจากต้นทางถึงปลายทางช้าลง ไลบรารี SMDDP เป็นไลบรารีการสื่อสารแบบรวมสำหรับ NVIDIA GPU ที่ทำหน้าที่แทนแบบดรอปอินสำหรับ NCCL และมอบประสิทธิภาพที่ดีขึ้นสำหรับงานการฝึกอบรมแบบกระจายด้วย PyTorch โดยเฉพาะอย่างยิ่ง SMDDP มอบการใช้งาน AllGather ที่ได้รับการปรับปรุงให้เหมาะสมที่สุด ประเภทอินสแตนซ์ p4d/p4de.

เนื่องจากการดำเนินการแบบรวม เช่น AllGather บล็อกการคำนวณการส่งไปข้างหน้าและย้อนกลับ การดำเนินการที่รวดเร็วขึ้นของการดำเนินการเหล่านี้จึงแปลโดยตรงเป็นเวลาการฝึกอบรมตั้งแต่ต้นทางถึงปลายทางที่สั้นลง โดยไม่มีผลข้างเคียงต่อการบรรจบกัน การดำเนินการโดยรวมอื่นๆ ที่ใช้ไม่บ่อยในการฝึกอบรมแบบขนานของข้อมูลชาร์ดจะได้รับการจัดการโดยการถอยกลับไปที่ NCCL

คำแนะนำแบบ

AllGather ที่ปรับให้เหมาะสมกับ AWS

AllGather ที่ปรับให้เหมาะสมกับ AWS ใช้เทคนิคต่อไปนี้เพื่อให้ได้ประสิทธิภาพที่ดีขึ้นบนโครงสร้างพื้นฐาน AWS เมื่อเปรียบเทียบกับ NCCL:

  1. เราย้ายข้อมูลระหว่างอินสแตนซ์ผ่าน อะแดปเตอร์ผ้ายืดหยุ่น (EFA) เครือข่ายที่มีรูปแบบการสื่อสารแบบครบวงจร EFA เป็นโซลูชันเครือข่ายที่มีเวลาแฝงต่ำและมีปริมาณงานสูงของ AWS และรูปแบบแบบ all-to-all สำหรับการสื่อสารเครือข่ายระหว่างโหนดได้รับการปรับแต่งให้เหมาะกับลักษณะของ EFA และโครงสร้างพื้นฐานเครือข่ายของ AWS มากขึ้น โดยต้องใช้แพ็กเก็ตฮอปน้อยลงเมื่อเทียบกับวงแหวนของ NCCL หรือ รูปแบบการสื่อสารแบบต้นไม้
  2. GDRCopy เพื่อประสานการรับส่งข้อมูลเครือข่าย NVLink และ EFA ในพื้นที่ GDRCopy เป็นไลบรารีที่ให้การสื่อสารเวลาแฝงต่ำระหว่างกระบวนการ CPU และเคอร์เนล GPU CUDA ด้วยเทคโนโลยีนี้ เราจึงสามารถส่งการเคลื่อนย้ายข้อมูลภายในโหนดและระหว่างโหนดได้
  3. ลดการใช้มัลติโปรเซสเซอร์สตรีมมิ่ง GPU เพื่อให้พลังการประมวลผลกลับคืนมาให้กับโมเดลเคอร์เนลมากขึ้น อินสแตนซ์ AWS P4d/P4de ติดตั้ง NVIDIA A100 GPU ซึ่งแต่ละตัวมีมัลติโปรเซสเซอร์สำหรับการสตรีม 108 ตัว ในขณะที่ NCCL ต้องใช้มัลติโปรเซสเซอร์สตรีมมิ่งสูงสุด 24 ตัวในการดำเนินการแบบรวม แต่ SMDDP Collectives ใช้มัลติโปรเซสเซอร์สตรีมมิ่งสูงสุดเก้าตัวเท่านั้น มัลติโปรเซสเซอร์สตรีมมิ่งที่บันทึกไว้สามารถรับได้โดยเคอร์เนลประมวลผลโมเดลเพื่อการดำเนินการที่รวดเร็วยิ่งขึ้น

การใช้

กลุ่ม SMDDP ผสานรวมกับ PyTorch ผ่านทาง กลุ่มกระบวนการ นามธรรมใน torch.distributed โมดูล. กลุ่มกระบวนการกำหนดอินเทอร์เฟซสำหรับการดำเนินการร่วมกันทั่วไป เช่น AllGather, ลดการกระจาย, AllReduce ฯลฯ ผู้ใช้สามารถเขียนโค้ดแบบกระจายทั่วไป จากนั้นเลือกโค้ดพื้นฐาน backendซึ่งจัดเตรียมการใช้งานสำหรับการดำเนินการเหล่านี้โดยอิงตามอุปกรณ์ประมวลผลที่ใช้ งานการฝึก CPU มักจะใช้ gloo or mpi แบ็กเอนด์ในขณะที่ NVIDIA GPU ใช้ nccl แบ็กเอนด์

ไลบรารี SMDDP เข้ามาในรูปภาพโดยการลงทะเบียนตัวเองเป็นแบ็กเอนด์ที่กำหนดเองในกลุ่มกระบวนการที่เป็นนามธรรม ซึ่งทำได้โดยคำสั่งนำเข้า ซึ่งแสดงในตัวอย่างโค้ดต่อไปนี้ จากนั้น เมื่อเลือกแบ็กเอนด์สำหรับงานฝึกอบรมแบบกระจายที่ใช้ GPU ของคุณ เพียงเปลี่ยน nccl กับ smddp. smddp แบ็กเอนด์ปฏิบัติตามความหมายเดียวกันกับ nccl แบ็กเอนด์และรองรับสถานการณ์การฝึกอบรมเดียวกัน

ความเร็วลึก

import smdistributed.dataparallel.torch.torch_smddp
deepspeed.init_distributed(dist_backend="smddp") # replacing "nccl"

เอฟเอสดีพี

import smdistributed.dataparallel.torch.torch_smddp
dist.init_process_group(backend="smddp")  # replacing "nccl"

มาตรฐาน

เราเปรียบเทียบประสิทธิภาพของ AllGather แบบสแตนด์อโลน โดยที่การดำเนินการโดยรวมจะดำเนินการแยกกันโดยไม่มีการฝึกโมเดลใดๆ ด้านล่างนี้คือผลลัพธ์ตัวอย่างบนอินสแตนซ์ 32 p4d ที่เปรียบเทียบ NCCL และ SMDDP AllGather แกน X แสดงถึงขนาดเอาต์พุตของ AllGather และแกน Y แสดงถึงอัตราการใช้งานเครือข่ายของเครือข่าย EFA 4 Gbps ของ p400d กราฟย่อย 4 กราฟแสดงถึงรูปแบบกลุ่มการสื่อสารทั่วไปโดยที่เรามี 1, 2, 4 และ 8 อันดับต่ออินสแตนซ์ p4d ที่เข้าร่วมในการดำเนินการ AllGather ตามลำดับ

การใช้เครือข่ายของ SMDDP และ NCCL AllGather บน 32 โหนด

เกณฑ์มาตรฐานขนาดเล็กเหล่านี้แสดงให้เห็นว่า SMDDP มีประสิทธิภาพเหนือกว่า NCCL ด้วยคุณลักษณะสำคัญสองประการ:

  1. ประสิทธิภาพสูงสุดของ SMDDP (การใช้แบนด์วิดท์ประมาณ 90%) สูงกว่าของ NCCL (การใช้แบนด์วิธประมาณ 80%) ในการกำหนดค่าทั้งหมด
  2. SMDDP เข้าถึงประสิทธิภาพสูงสุดที่ขนาดบัฟเฟอร์เล็กกว่า NCCL มาก สิ่งนี้จะปรับปรุงความเร็วการฝึกเป็นพิเศษสำหรับโมเดลขนาดเล็กหรือเมื่อผู้ใช้ตั้งค่าขนาดบัฟเฟอร์ AllGather ขนาดเล็กใน DeepSpeed ​​(โดยที่ขนาด AllGather ไม่จำเป็นต้องเท่ากับขนาดเลเยอร์)

เกณฑ์มาตรฐานการฝึกอบรมโมเดล

ในงานฝึกอบรมขนาดใหญ่ที่การสื่อสารด้วย GPU เป็นปัญหาคอขวดที่สำคัญ SMDDP สามารถปรับปรุงความเร็วการฝึกอบรมได้อย่างเห็นได้ชัด ตามที่วัดโดยรุ่น TFLOPS/GPU

องค์ประกอบ ประสิทธิภาพ
โมเดล/เทรนนิ่ง Cluster โซลูชันการขนานข้อมูลแบบแบ่งส่วน รุ่น TFLOPS/GPU พร้อม NCCL รุ่น TFLOPS/GPU พร้อม SMDDP % เร่งความเร็ว
13B ลามะ2
ความยาวตอน: 4096
ขนาดแบตช์ทั่วโลก: โทเค็น 4M
64 p4d.24xlarge โหนด (512 NVIDIA A100 GPU) ไพทอร์ช FSDP 97.89 121.85 24.40%
65B GPT-นีโอเอ็กซ์
ความยาวตอน: 2048
ขนาดแบตช์ทั่วโลก: โทเค็น 4M
64 p4d.24xlarge โหนด (512 NVIDIA A100 GPU) DeepSpeed ​​Zero สเตจ 3* 99.23 108.66 9.50%

*Megatron-DeepSpeed ​​ของ EleutherAI มีการใช้พื้นที่เก็บข้อมูล ความเท่าเทียมของเทนเซอร์ยังเปิดใช้งานด้วยดีกรีเทนเซอร์-ขนานที่ XNUMX

หมายเหตุ: โมเดล TFLOPS/GPU อิงตามการคำนวณการใช้งาน Model FLOPS ที่กำหนดไว้ในรายงาน โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม และตัวเลขการวัดประสิทธิภาพในที่อื่นอาจอ้างอิงฮาร์ดแวร์ TFLOPS/GPU เป็นตัวชี้วัดประสิทธิภาพ ฮาร์ดแวร์ TFLOPS/GPU สามารถประมาณได้เป็น 4/3 x รุ่น TFLOPS/GPU

สรุป

ในโพสต์นี้ เราได้แสดงให้คุณเห็นวิธีเร่งความเร็วงานการฝึกอบรมข้อมูลที่แบ่งส่วนพร้อมกันบน Amazon SageMaker ได้อย่างมากด้วยการเปลี่ยนแปลงโค้ดเพียงสองบรรทัด การฝึกอบรมแบบกระจายขนาดใหญ่กำลังแพร่หลายมากขึ้นตามการเกิดขึ้นหรือ LLM แต่การฝึกอบรมขนาดนี้ทำให้มีค่าใช้จ่ายสูง ด้วยการลดปัญหาคอขวดในการสื่อสารระหว่าง GPU SMDDP ช่วยให้คุณฝึกอบรมได้เร็วขึ้นในขนาดและประหยัดทรัพยากรการประมวลผล คุณสามารถค้นหาตัวอย่าง SMDDP เพิ่มเติมพร้อมการฝึกอบรม Sharded Data แบบขนานได้ใน ตัวอย่าง Amazon SageMaker พื้นที่เก็บข้อมูล GitHub


เกี่ยวกับผู้เขียน

เปิดใช้งานการฝึกอบรมที่รวดเร็วยิ่งขึ้นด้วย Amazon SageMaker data Parallel Library | Amazon Web Services PlatoBlockchain ข้อมูลอัจฉริยะ ค้นหาแนวตั้ง AI.อาปูร์ คุปตะ เป็นวิศวกรพัฒนาซอฟต์แวร์ที่ AWS ซึ่งมุ่งเน้นการสร้างระบบการเรียนรู้เชิงลึกที่เหมาะสมที่สุดสำหรับโครงสร้างพื้นฐานและฮาร์ดแวร์ของ AWS เขาสนใจคอมพิวเตอร์แบบกระจาย ระบบการเรียนรู้เชิงลึก และเครื่องเร่งความเร็ว ML นอกเหนือจากงาน Apoorv ชอบท่องเที่ยว เดินป่า และเล่นวิดีโอเกม

เปิดใช้งานการฝึกอบรมที่รวดเร็วยิ่งขึ้นด้วย Amazon SageMaker data Parallel Library | Amazon Web Services PlatoBlockchain ข้อมูลอัจฉริยะ ค้นหาแนวตั้ง AI.การัน ดิมัน เป็นวิศวกรพัฒนาซอฟต์แวร์ที่ AWS ซึ่งประจำอยู่ในโตรอนโต ประเทศแคนาดา เขามีความหลงใหลอย่างมากเกี่ยวกับพื้นที่แมชชีนเลิร์นนิงและการสร้างโซลูชันเพื่อเร่งปริมาณงานประมวลผลแบบกระจาย

เปิดใช้งานการฝึกอบรมที่รวดเร็วยิ่งขึ้นด้วย Amazon SageMaker data Parallel Library | Amazon Web Services PlatoBlockchain ข้อมูลอัจฉริยะ ค้นหาแนวตั้ง AI.รูฮาน ปราสาด เป็นวิศวกรพัฒนาซอฟต์แวร์ที่ AWS ซึ่งกำลังทำงานเพื่อทำให้การฝึกอบรมการเรียนรู้เชิงลึกแบบกระจายเร็วขึ้น ถูกลง และใช้งานได้ง่ายขึ้นบน SageMaker นอกเวลางาน Ruhan ชอบเล่นเทนนิส ท่องเที่ยว และทำอาหาร

เปิดใช้งานการฝึกอบรมที่รวดเร็วยิ่งขึ้นด้วย Amazon SageMaker data Parallel Library | Amazon Web Services PlatoBlockchain ข้อมูลอัจฉริยะ ค้นหาแนวตั้ง AI.จ้าวฉี จู เป็นวิศวกรพัฒนาซอฟต์แวร์อาวุโสที่ AWS ซึ่งหลงใหลเกี่ยวกับระบบแบบกระจายและการเพิ่มประสิทธิภาพระดับต่ำ เขาสนุกกับการดูการแข่งขันฟุตบอลขณะดื่มโซดา (แบบไม่ควบคุมอาหาร)

ประทับเวลา:

เพิ่มเติมจาก AWS Machine Learning AWS