คู่มือทางเทคนิค

ข้อมูลแบบแบ่งส่วนอย่างสมบูรณ์

Fully Sharded Data Parallel (FSDP) เป็นเทคนิคการฝึกแบบกระจายที่แยกพารามิเตอร์ของโมเดล การไล่ระดับสี และสถานะเครื่องมือเพิ่มประสิทธิภาพออกเป็น GPU จำนวนมาก เพื่อให้แต่ละอุปกรณ์เก็บชิ้นส่วนไว้เท่านั้น

อ่าน 2 นาทีอัปเดตล่าสุด

ภาพรวม

It makes training huge models possible on hardware that could never fit the whole model in one GPU's memory.

เจาะลึก

ความเท่าเทียมของข้อมูลแบบดั้งเดิมจะเก็บสำเนาของโมเดลไว้บน GPU ทุกตัว ซึ่งจะทำให้หน่วยความจำและขนาดของโมเดลเป็นตัวพิมพ์ใหญ่เปลือง FSDP ซึ่งได้รับความนิยมโดย PyTorch ของ Meta และได้รับแรงบันดาลใจจาก ZeRO ของ Microsoft แทนที่จะแยกสามสิ่งออกจากอุปกรณ์ต่างๆ ได้แก่ พารามิเตอร์ การไล่ระดับสี และสถานะเครื่องมือเพิ่มประสิทธิภาพ ในระหว่างการส่งต่อ GPU แต่ละตัวจะรวบรวมน้ำหนักเต็มชั่วคราวสำหรับเลเยอร์ที่ประมวลผลผ่านการรวบรวมทั้งหมด รันการคำนวณ จากนั้นปล่อยสำเนาที่รวบรวมไว้ทันที การย้อนกลับทำงานในลักษณะเดียวกัน ตามด้วยการลดการกระจายที่กระจายส่วนการไล่ระดับสีกลับไปยัง GPU ที่เป็นเจ้าของ เนื่องจากอุปกรณ์แต่ละชิ้นจะจัดเก็บแบบจำลองเพียงบางส่วนอย่างถาวร การใช้หน่วยความจำจึงลดลงเป็นเส้นตรงโดยประมาณตามจำนวน GPU ทำให้ทีมสามารถฝึกฝนโมเดลด้วยพารามิเตอร์นับหมื่นหรือหลายร้อยพันล้านได้

ข้อมูลเชิงลึกทางเทคนิค

FSDP แลกเปลี่ยนการสื่อสารเพิ่มเติมเพื่อการประหยัดหน่วยความจำ ตุ้มน้ำหนักของแต่ละชั้นได้รับการสร้างขึ้นใหม่ตามความต้องการ โดยรวบรวมทั้งหมดก่อนใช้งานและทิ้งทันที ในขณะที่การไล่ระดับสีจะถูกรวมเข้าด้วยกันและแบ่งโดยมีการลดการกระจาย การสื่อสารสามารถซ้อนทับกับการคำนวณได้โดยการดึงพารามิเตอร์ของเลเยอร์ถัดไปล่วงหน้าในขณะที่เลเยอร์ปัจจุบันทำงาน ซึ่งซ่อนเวลาแฝงของเครือข่ายไว้มาก การปรับแต่งรายละเอียดการแบ่งส่วน (นโยบายการห่อ) จะรักษาสมดุลของขนาดหน่วยความจำกับค่าใช้จ่ายในการสื่อสาร

ผลกระทบเชิงกลยุทธ์

ต้นทุนและงบประมาณ

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

การตัดสินใจที่ชัดเจนยิ่งขึ้น

การศึกษาด้านเทคนิคช่วยให้ทีมเลือกกลุ่มที่เหมาะสม ไม่ใช่แค่กลุ่มใหม่ล่าสุด

การควบคุมคุณภาพ

ตัวเลือกทางวิศวกรรมที่ดีกว่าจะช่วยลดเหตุการณ์ด้านความน่าเชื่อถือในการผลิต

อนาคตของข้อมูลแบบขนานที่แบ่งใช้อย่างสมบูรณ์

FSDP กำลังกลายเป็นค่าเริ่มต้นสำหรับการฝึกโมเดลขนาดใหญ่แบบเปิด โดยมี FSDP2 ใน PyTorch ปรับปรุงการใช้งานและการแบ่งส่วนตามพารามิเตอร์ คาดหวังการผสานรวมที่เข้มงวดยิ่งขึ้นกับเทนเซอร์และไปป์ไลน์แบบขนานสำหรับโมเดลล้านล้านพารามิเตอร์ การรองรับที่ดีกว่าสำหรับความแม่นยำแบบผสมและ fp8 และการห่ออัตโนมัติที่ชาญฉลาดยิ่งขึ้นซึ่งเลือกขอบเขตการแบ่งส่วนสำหรับคุณ เนื่องจากการเชื่อมต่อระหว่าง GPU ระหว่าง NVLink และ InfiniBand เร็วขึ้น ค่าใช้จ่ายในการสื่อสารของการแบ่งส่วนจะลดลงเรื่อยๆ ทำให้สามารถใช้งานได้จริงในขนาดที่ใหญ่ขึ้นเรื่อยๆ

การใช้งานจริงในโลกแห่งความเป็นจริง

การปรับแต่งโมเดล Llama พารามิเตอร์ 70 พันล้านพารามิเตอร์อย่างละเอียดใน GPU 8 ตัว ซึ่งแยกกันไม่สามารถรับน้ำหนักทั้งหมดได้

ฝึกฝนโมเดลภาษาขนาดใหญ่ล่วงหน้าที่ห้องปฏิบัติการ AI โดยการแบ่งสถานะเครื่องมือเพิ่มประสิทธิภาพ (ซึ่งครองหน่วยความจำร่วมกับ Adam) ใน Accelerator หลายร้อยตัว

นักวิจัยใช้เครื่องห่อ FSDP ของ PyTorch เพื่อฝึกเครื่องแปลงสัญญาณวิชั่นบนคลัสเตอร์ของมหาวิทยาลัยโดยไม่ต้องซื้อ GPU รุ่นเรือธงขนาด 80GB

การรวม FSDP เข้ากับ bfloat16 ที่มีความแม่นยำแบบผสมเพื่อลดหน่วยความจำลงครึ่งหนึ่งโดยประมาณ และเพิ่มความเร็วการประมวลผลการฝึกบนโมเดลหลายรูปแบบ

ความเสี่ยงและรั้ว

การเพิ่มประสิทธิภาพเกณฑ์มาตรฐานหนึ่งรายการสามารถซ่อนจุดอ่อนของระบบในวงกว้างได้

ต้นทุนโครงสร้างพื้นฐานและการบำรุงรักษามักถูกประเมินต่ำไป

ช่องว่างด้านความปลอดภัยและความสามารถในการสังเกตสามารถเพิ่มขึ้นได้เมื่อระบบมีความซับซ้อนมากขึ้น

แผนงานการดำเนินงาน

1

กำหนดเป้าหมายเวลาแฝง คุณภาพ และต้นทุนก่อนนำไปใช้งาน

2

เกณฑ์มาตรฐานภายใต้สภาวะโหลดและข้อมูลจริง

3

การตรวจสอบเครื่องมือเพื่อหาข้อผิดพลาด การเบี่ยงเบน และผลกระทบต่อผู้ใช้

4

เตรียมเส้นทางการย้อนกลับและการตอบสนองต่อเหตุการณ์ก่อนปรับขนาด

สำรวจต่อไป

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Fully Sharded Data Parallel quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

เริ่มแบบทดสอบ

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

คำแนะนำต่อไป

ความเท่าเทียมของข้อมูล

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

What is Fully Sharded Data Parallel?

Fully Sharded Data Parallel (FSDP) เป็นเทคนิคการฝึกแบบกระจายที่แยกพารามิเตอร์ของโมเดล การไล่ระดับสี และสถานะเครื่องมือเพิ่มประสิทธิภาพออกเป็น GPU จำนวนมาก เพื่อให้แต่ละอุปกรณ์เก็บชิ้นส่วนไว้เท่านั้น ทำให้การฝึกโมเดลขนาดใหญ่เป็นไปได้บนฮาร์ดแวร์ที่ไม่สามารถใส่โมเดลทั้งหมดลงในหน่วยความจำของ GPU ตัวเดียวได้

FSDP แบ่งส่วน GPU อะไรบ้างที่ข้อมูลแบบขนานมาตรฐานไม่มี

FSDP แบ่งส่วนพารามิเตอร์ของโมเดล การไล่ระดับสี และสถานะเครื่องมือเพิ่มประสิทธิภาพในอุปกรณ์ต่างๆ ในขณะที่ข้อมูลแบบขนานมาตรฐานจะจำลองโมเดลเต็มบน GPU ทุกตัว

FSDP ใช้การดำเนินการโดยรวมใดเพื่อสร้างน้ำหนักเต็มของเลเยอร์ใหม่ก่อนที่จะคำนวณ

ก่อนที่เลเยอร์จะทำงาน FSDP จะดำเนินการรวบรวมทั้งหมดเพื่อรวบรวมพารามิเตอร์ที่สมบูรณ์จากชิ้นส่วนทั้งหมดเป็นการชั่วคราว จากนั้นจึงปล่อยพารามิเตอร์เหล่านั้นให้ว่างในภายหลัง

เหตุใด FSDP จึงปล่อยน้ำหนักเต็มที่รวบรวมไว้ทันทีหลังจากการคำนวณของเลเยอร์

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

FSDP ได้รับแรงบันดาลใจส่วนใหญ่มาจากแนวทางการเพิ่มประสิทธิภาพหน่วยความจำแบบใดก่อนหน้านี้

การแบ่งส่วนพารามิเตอร์ การไล่ระดับสี และสถานะเครื่องมือเพิ่มประสิทธิภาพของ FSDP เป็นไปตามแนวคิดที่แนะนำใน ZeRO ของ Microsoft จากไลบรารี DeepSpeed ​​อย่างใกล้ชิด

FSDP ซ่อนเวลาแฝงของเครือข่ายจำนวนมากจากการรวบรวมน้ำหนักได้อย่างไร

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