โครงข่ายประสาทเทียมขนาดใหญ่เป็นหัวใจสำคัญของความก้าวหน้าใน AI ล่าสุด แต่การฝึกอบรมพวกเขาเป็นความท้าทายด้านวิศวกรรมและการวิจัยที่ยาก ซึ่งต้องมีการจัดกลุ่ม GPU เพื่อทำการคำนวณแบบซิงโครไนซ์เพียงครั้งเดียว เมื่อขนาดของคลัสเตอร์และโมเดลเติบโตขึ้น ผู้ปฏิบัติงานการเรียนรู้ด้วยเครื่องได้พัฒนาเทคนิคที่หลากหลายขึ้นเพื่อขนานกับการฝึกโมเดลบน GPU หลายตัว เมื่อมองแวบแรก การทำความเข้าใจเทคนิคการขนานเหล่านี้อาจดูยากเย็น แต่ด้วยการสันนิษฐานเพียงเล็กน้อยเกี่ยวกับโครงสร้างของการคำนวณ เทคนิคเหล่านี้จะชัดเจนขึ้นมาก ณ จุดนั้น คุณเพียงแค่ส่งผ่านบิตทึบแสงจาก A ไป B ราวกับเป็นเครือข่าย เปลี่ยนรถรับส่งไปรอบๆ แพ็กเก็ต
ไม่มีความเท่าเทียม
การฝึกอบรมโครงข่ายประสาทเทียมเป็นกระบวนการที่ทำซ้ำได้ ในการทำซ้ำทุกครั้ง เราจะส่งต่อผ่านแบบจำลองของ ชั้น เพื่อคำนวณผลลัพธ์สำหรับตัวอย่างการฝึกอบรมแต่ละรายการในชุดข้อมูล จากนั้นก็ผ่านไปอีกทางหนึ่ง ย้อนกลับ ผ่านชั้นต่างๆ เผยแพร่ว่าแต่ละพารามิเตอร์ส่งผลต่อผลลัพธ์สุดท้ายโดยการคำนวณ a . มากน้อยเพียงใด ลาด เกี่ยวกับแต่ละพารามิเตอร์ การไล่ระดับสีเฉลี่ยสำหรับชุดงาน พารามิเตอร์ และสถานะการปรับให้เหมาะสมต่อพารามิเตอร์บางส่วนจะถูกส่งไปยังอัลกอริธึมการปรับให้เหมาะสม เช่น อาดัมซึ่งคำนวณพารามิเตอร์ของการวนซ้ำครั้งถัดไป (ซึ่งควรมีประสิทธิภาพที่ดีขึ้นเล็กน้อยในข้อมูลของคุณ) และสถานะการปรับให้เหมาะสมต่อพารามิเตอร์ใหม่ เมื่อการฝึกอบรมซ้ำไปซ้ำมากับชุดข้อมูล แบบจำลองจะพัฒนาเพื่อสร้างผลลัพธ์ที่แม่นยำยิ่งขึ้น
เทคนิคการขนานแบบต่างๆ แบ่งกระบวนการฝึกอบรมนี้ในมิติต่างๆ ซึ่งรวมถึง:
- ความเท่าเทียมกันของข้อมูล—เรียกใช้ชุดย่อยต่างๆ ของแบทช์บน GPU ที่ต่างกัน
- ไปป์ไลน์ขนาน—เรียกใช้เลเยอร์ต่างๆ ของโมเดลบน GPU ที่ต่างกัน
- ความขนานของเทนเซอร์—แบ่งการคำนวณสำหรับการดำเนินการเดียว เช่น การคูณเมทริกซ์เพื่อแยกเป็น GPU
- ส่วนผสมของผู้เชี่ยวชาญ—ประมวลผลแต่ละตัวอย่างเพียงเศษเสี้ยวของแต่ละเลเยอร์
(ในโพสต์นี้ เราจะถือว่าคุณกำลังใช้ GPU เพื่อฝึกโครงข่ายประสาทเทียมของคุณ แต่แนวคิดเดียวกันกับที่ใช้เครือข่ายอื่น ตัวเร่งโครงข่ายประสาทเทียม.)
ข้อมูลคู่ขนาน
ข้อมูลแบบขนาน การฝึกอบรมหมายถึงการคัดลอกพารามิเตอร์เดียวกันไปยัง GPU หลายตัว (มักเรียกว่า "คนงาน") และกำหนดตัวอย่างที่แตกต่างกันให้กับแต่ละรายการเพื่อประมวลผลพร้อมกัน ความเท่าเทียมกันของข้อมูลเพียงอย่างเดียวยังคงต้องการให้โมเดลของคุณพอดีกับหน่วยความจำของ GPU ตัวเดียว แต่ให้คุณใช้ประโยชน์จากการคำนวณของ GPU จำนวนมากโดยเสียค่าใช้จ่ายในการจัดเก็บสำเนาพารามิเตอร์ที่ซ้ำกันจำนวนมาก ดังที่กล่าวไปแล้ว มีกลยุทธ์ในการเพิ่ม RAM ที่มีประสิทธิภาพสำหรับ GPU ของคุณ เช่น การถ่ายโอนพารามิเตอร์ไปยังหน่วยความจำ CPU ชั่วคราวระหว่างการใช้งาน
เนื่องจากแต่ละข้อมูลผู้ปฏิบัติงานคู่ขนานอัปเดตสำเนาของพารามิเตอร์ พวกเขาจำเป็นต้องประสานงานเพื่อให้แน่ใจว่าผู้ปฏิบัติงานแต่ละคนยังคงมีพารามิเตอร์ที่คล้ายคลึงกัน แนวทางที่ง่ายที่สุดคือการแนะนำการสื่อสารแบบบล็อคระหว่างพนักงาน: (1) คำนวณระดับความลาดชันของผู้ปฏิบัติงานแต่ละคนอย่างอิสระ (2) เฉลี่ยการไล่ระดับข้ามคนงาน; และ (3) คำนวณพารามิเตอร์ใหม่เดียวกันของผู้ปฏิบัติงานแต่ละคนอย่างอิสระ ขั้นตอนที่ (2) เป็นค่าเฉลี่ยการบล็อกซึ่งต้องมีการถ่ายโอนข้อมูลค่อนข้างมาก (ตามสัดส่วนกับจำนวนพนักงานคูณด้วยขนาดของพารามิเตอร์ของคุณ) ซึ่งอาจส่งผลเสียต่อปริมาณการฝึกอบรมของคุณ มีหลากหลาย แผนการซิงโครไนซ์แบบอะซิงโครนัส เพื่อขจัดค่าใช้จ่ายนี้ แต่ส่งผลเสียต่อประสิทธิภาพการเรียนรู้ ในทางปฏิบัติ ผู้คนมักยึดติดกับวิธีการแบบซิงโครนัส
เส้นขนานของท่อ
กับ ท่อคู่ขนานline การฝึกอบรม เราแบ่งส่วนโมเดลตามลำดับระหว่าง GPU GPU แต่ละตัวมีพารามิเตอร์เพียงเศษเสี้ยว ดังนั้นรุ่นเดียวกันจึงใช้หน่วยความจำต่อ GPU ตามสัดส่วนที่น้อยลง
ตรงไปตรงมาในการแบ่งโมเดลขนาดใหญ่ออกเป็นชิ้นๆ ของเลเยอร์ที่ต่อเนื่องกัน อย่างไรก็ตาม มีการขึ้นต่อกันตามลำดับระหว่างอินพุตและเอาต์พุตของเลเยอร์ ดังนั้นการใช้งานแบบไร้เดียงสาอาจนำไปสู่เวลาว่างจำนวนมากในขณะที่ผู้ปฏิบัติงานรอเอาต์พุตจากเครื่องก่อนหน้าเพื่อใช้เป็นอินพุต ช่วงเวลารอเหล่านี้เรียกว่า "ฟองสบู่" ซึ่งสิ้นเปลืองการคำนวณที่เครื่องเดินเบาสามารถทำได้
เราสามารถนำแนวคิดจากความเท่าเทียมของข้อมูลมาใช้ใหม่เพื่อลดค่าใช้จ่ายของฟองสบู่ โดยให้พนักงานแต่ละคนประมวลผลชุดย่อยขององค์ประกอบข้อมูลในคราวเดียว ซึ่งช่วยให้เราสามารถซ้อนการคำนวณใหม่กับเวลารอได้อย่างชาญฉลาด แนวคิดหลักคือการแบ่งหนึ่งชุดออกเป็นหลายไมโครแบตช์ แต่ละไมโครแบตช์ควรจะเร็วกว่าตามสัดส่วนในการประมวลผล และผู้ปฏิบัติงานแต่ละคนเริ่มทำงานกับไมโครแบตช์ถัดไปทันทีที่พร้อมใช้งาน ดังนั้นจึงเป็นการเร่งการดำเนินการไปป์ไลน์ ด้วยไมโครแบตช์ที่เพียงพอ พนักงานสามารถใช้งานได้เกือบตลอดเวลาโดยมีฟองอากาศน้อยที่สุดที่จุดเริ่มต้นและจุดสิ้นสุดของขั้นตอน การไล่ระดับสีจะถูกเฉลี่ยในไมโครแบตช์ และการอัปเดตพารามิเตอร์จะเกิดขึ้นก็ต่อเมื่อไมโครแบตช์ทั้งหมดเสร็จสิ้น
จำนวนคนงานที่แบบจำลองถูกแบ่งออกโดยทั่วไปเรียกว่า ความลึกของท่อ.
ในระหว่างการส่งต่อ ผู้ปฏิบัติงานจำเป็นต้องส่งเอาต์พุต (เรียกว่าการเปิดใช้งาน) ของชั้นเลเยอร์ไปยังผู้ปฏิบัติงานคนถัดไปเท่านั้น ระหว่างการย้อนกลับ จะส่งเฉพาะการไล่ระดับของการเปิดใช้งานเหล่านั้นไปยังผู้ปฏิบัติงานคนก่อน มีพื้นที่การออกแบบขนาดใหญ่ในการกำหนดเวลาบัตรผ่านเหล่านี้และวิธีรวมการไล่ระดับสีในไมโครแบตช์ GPipe ให้แต่ละกระบวนการของผู้ปฏิบัติงานส่งต่อและย้อนกลับอย่างต่อเนื่อง จากนั้นจึงรวมการไล่ระดับสีจากไมโครแบตช์หลายชุดพร้อมกันในตอนท้าย ไปป์ดรีม แทนที่จะกำหนดเวลาให้พนักงานแต่ละคนดำเนินการส่งผ่านไปข้างหน้าและข้างหลังแทน
เทนเซอร์ขนาน
ความเท่าเทียมของไปป์ไลน์แยกโมเดล "ในแนวตั้ง" ทีละชั้น นอกจากนี้ยังสามารถ "แบ่งแนวนอน" การดำเนินการบางอย่างภายในเลเยอร์ ซึ่งมักจะเรียกว่า เทนเซอร์ขนาน การฝึกอบรม. สำหรับโมเดลที่ทันสมัยมากมาย (เช่น the หม้อแปลงไฟฟ้า) คอขวดของการคำนวณกำลังคูณเมทริกซ์แบตช์การเปิดใช้งานกับเมทริกซ์น้ำหนักขนาดใหญ่ การคูณเมทริกซ์ สามารถคิดได้ว่าเป็นผลิตภัณฑ์ดอทระหว่างคู่ของแถวและคอลัมน์ เป็นไปได้ที่จะคำนวณผลิตภัณฑ์ dot อิสระบน GPU ต่างๆ หรือคำนวณส่วนต่างๆ ของผลิตภัณฑ์ dot แต่ละรายการบน GPU ที่ต่างกันและสรุปผลลัพธ์ ด้วยกลยุทธ์ใดวิธีหนึ่ง เราสามารถแบ่งเมทริกซ์น้ำหนักเป็น "ชาร์ด" ที่มีขนาดเท่ากัน โฮสต์ชาร์ดแต่ละรายการบน GPU ที่แตกต่างกัน และใช้ชาร์ดนั้นเพื่อคำนวณส่วนที่เกี่ยวข้องของผลิตภัณฑ์เมทริกซ์โดยรวมก่อนที่จะสื่อสารในภายหลังเพื่อรวมผลลัพธ์
ตัวอย่างหนึ่งคือ เมกะทรอน-LMซึ่งขนานกับการคูณเมทริกซ์ภายในเลเยอร์การเอาใจใส่ตนเองของ Transformer และ MLP PTD-ป ใช้เทนเซอร์ ข้อมูล และความเท่าเทียมกันของไปป์ไลน์ กำหนดการของไปป์ไลน์กำหนดเลเยอร์ที่ไม่ต่อเนื่องกันหลายชั้นให้กับแต่ละอุปกรณ์ ลดค่าใช้จ่ายของบับเบิ้ลที่ค่าใช้จ่ายในการสื่อสารในเครือข่ายมากขึ้น
บางครั้งอินพุตไปยังเครือข่ายสามารถขนานกันข้ามมิติด้วยการคำนวณแบบขนานในระดับสูงที่สัมพันธ์กับการสื่อสารข้าม ความเท่าเทียมกันของลำดับ เป็นแนวคิดหนึ่งที่ลำดับอินพุตถูกแบ่งออกเป็นหลายตัวอย่างตามช่วงเวลา ซึ่งลดการใช้หน่วยความจำสูงสุดตามสัดส่วนโดยอนุญาตให้การคำนวณดำเนินการกับตัวอย่างที่มีขนาดที่ละเอียดยิ่งขึ้น
ส่วนผสมของผู้เชี่ยวชาญ (MoE)
กับ ส่วนผสมของผู้เชี่ยวชาญ (MoE) วิธีการ ใช้เพียงเศษเสี้ยวของเครือข่ายในการคำนวณเอาท์พุตสำหรับอินพุทตัวใดตัวหนึ่ง ตัวอย่างหนึ่งคือต้องมีชุดน้ำหนักจำนวนมาก และเครือข่ายสามารถเลือกชุดที่จะใช้ผ่านกลไกเกตในเวลาอนุมานได้ ซึ่งช่วยให้มีพารามิเตอร์มากขึ้นโดยไม่ต้องเสียค่าใช้จ่ายในการคำนวณเพิ่มขึ้น ตุ้มน้ำหนักแต่ละชุดเรียกว่า "ผู้เชี่ยวชาญ" ด้วยความหวังว่าเครือข่ายจะเรียนรู้ที่จะมอบหมายการคำนวณและทักษะเฉพาะทางให้กับผู้เชี่ยวชาญแต่ละคน ผู้เชี่ยวชาญที่แตกต่างกันสามารถโฮสต์บน GPU ต่างๆ ได้ ซึ่งเป็นวิธีที่ชัดเจนในการขยายจำนวน GPU ที่ใช้สำหรับโมเดล
จีฮาร์ด ปรับขนาด MoE Transformer ได้สูงถึง 600 พันล้านพารามิเตอร์ด้วยโครงร่างที่แยกเฉพาะเลเยอร์ MoE ผ่านอุปกรณ์ TPU หลายเครื่อง และเลเยอร์อื่นๆ จะถูกทำซ้ำอย่างสมบูรณ์ สวิตช์หม้อแปลง ปรับขนาดโมเดลเป็นพารามิเตอร์หลายล้านล้านรายการโดยมีค่าพื้นที่ว่างที่สูงกว่าโดยกำหนดเส้นทางอินพุตหนึ่งรายการไปยังผู้เชี่ยวชาญเพียงรายเดียว
การออกแบบการประหยัดหน่วยความจำอื่น ๆ
มีกลยุทธ์การคำนวณอื่น ๆ อีกมากมายที่จะทำให้การฝึกอบรมโครงข่ายประสาทเทียมขนาดใหญ่มีความสะดวกมากขึ้น ตัวอย่างเช่น:
-
ในการคำนวณการไล่ระดับสี คุณต้องบันทึกการเปิดใช้งานดั้งเดิมไว้ ซึ่งสามารถใช้ RAM ของอุปกรณ์ได้มาก จุดตรวจ (เรียกอีกอย่างว่าการเปิดใช้งานการคำนวณใหม่) เก็บชุดย่อยของการเปิดใช้งานและคำนวณค่ากลางใหม่ในเวลาที่เหมาะสมระหว่างการย้อนกลับ วิธีนี้ช่วยประหยัดหน่วยความจำได้มากโดยต้องเสียค่าประมวลผลในการส่งต่อแบบเต็มเพิ่มเติมอย่างน้อยหนึ่งครั้ง เรายังสามารถแลกเปลี่ยนระหว่างการคำนวณและต้นทุนหน่วยความจำได้อย่างต่อเนื่องโดย การคำนวณการเปิดใช้งานแบบเลือกใหม่ซึ่งเป็นส่วนย่อยของจุดตรวจสอบของการเปิดใช้งานที่ค่อนข้างแพงในการจัดเก็บ แต่ถูกกว่าในการคำนวณ
-
การฝึกอบรมความแม่นยำแบบผสม คือการฝึกโมเดลโดยใช้ตัวเลขที่มีความแม่นยำต่ำกว่า (โดยทั่วไป FP16). คันเร่งสมัยใหม่สามารถเข้าถึงการนับ FLOP ที่สูงขึ้นได้มากด้วยตัวเลขที่มีความแม่นยำต่ำกว่า และคุณยังประหยัด RAM ของอุปกรณ์อีกด้วย ด้วยความระมัดระวังอย่างเหมาะสม โมเดลที่ได้จะสูญเสียความแม่นยำไปแทบไม่มี
-
การขนถ่าย คือการโหลดข้อมูลที่ไม่ได้ใช้ชั่วคราวไปยัง CPU หรือระหว่างอุปกรณ์ต่างๆ และอ่านกลับในภายหลังเมื่อจำเป็น การใช้งานที่ไร้เดียงสาจะทำให้การฝึกอบรมช้าลงอย่างมาก แต่การใช้งานที่ซับซ้อนจะดึงข้อมูลล่วงหน้าเพื่อให้อุปกรณ์ไม่ต้องรอ การนำแนวคิดนี้ไปใช้อย่างหนึ่งคือ ศูนย์ ซึ่งจะแยกพารามิเตอร์ การไล่ระดับสี และสถานะของเครื่องมือเพิ่มประสิทธิภาพในฮาร์ดแวร์ที่มีอยู่ทั้งหมด และทำให้เป็นจริงตามความจำเป็น
-
เครื่องมือเพิ่มประสิทธิภาพหน่วยความจำที่มีประสิทธิภาพ ได้รับการเสนอให้ลดขนาดหน่วยความจำของสถานะการทำงานที่ดูแลโดยตัวเพิ่มประสิทธิภาพเช่น อดาแฟกเตอร์.
-
การอัด สามารถใช้สำหรับเก็บผลลัพธ์ระดับกลางในเครือข่าย ตัวอย่างเช่น, ส่วนสำคัญ บีบอัดการเปิดใช้งานที่บันทึกไว้สำหรับการย้อนกลับ ดัล·อี บีบอัดการไล่ระดับสีก่อนที่จะซิงโครไนซ์
ที่ OpenAI เรากำลังฝึกอบรมและปรับปรุงโมเดลขนาดใหญ่จากโครงสร้างพื้นฐานที่อยู่ภายใต้ทุกวิถีทางเพื่อปรับใช้สำหรับปัญหาในโลกแห่งความเป็นจริง หากคุณต้องการนำแนวคิดจากโพสต์นี้ไปปฏิบัติ โดยเฉพาะอย่างยิ่งที่เกี่ยวข้องกับทีมวิจัยด้านการปรับขนาดและการวิจัยประยุกต์ของเรา การว่าจ้าง!
- a
- เกี่ยวกับเรา
- เร่ง
- ถูกต้อง
- ข้าม
- เพิ่มเติม
- ความก้าวหน้า
- AI
- ขั้นตอนวิธี
- ทั้งหมด
- การอนุญาต
- ในหมู่
- จำนวน
- อื่น
- ประยุกต์
- ใช้
- เข้าใกล้
- รอบ
- ใช้ได้
- เฉลี่ย
- baseline
- กลายเป็น
- ก่อน
- การเริ่มต้น
- กำลัง
- ระหว่าง
- ขาว
- พันล้าน
- ฟองสบู่
- ซึ่ง
- บาง
- ท้าทาย
- ราคาถูก
- Choose
- การติดต่อสื่อสาร
- การสื่อสาร
- คมนาคม
- การคำนวณ
- การคำนวณ
- คำนวณ
- การคำนวณ
- ติดต่อกัน
- บริโภค
- การบริโภค
- เรื่อย
- อย่างต่อเนื่อง
- ประสานงาน
- การทำสำเนา
- แกน
- ได้
- ข้อมูล
- ปรับใช้
- ออกแบบ
- พัฒนา
- เครื่อง
- อุปกรณ์
- ต่าง
- ยาก
- Dimension
- มิติ
- ลง
- ในระหว่าง
- มีประสิทธิภาพ
- อย่างมีประสิทธิภาพ
- ที่มีประสิทธิภาพ
- องค์ประกอบ
- ช่วยให้
- ชั้นเยี่ยม
- โดยเฉพาะอย่างยิ่ง
- ตัวอย่าง
- ตัวอย่าง
- การปฏิบัติ
- ชำนาญ
- ผู้เชี่ยวชาญ
- เร็วขึ้น
- ข้อเสนอแนะ
- ชื่อจริง
- รอยพระบาท
- ข้างหน้า
- ราคาเริ่มต้นที่
- เต็ม
- โดยทั่วไป
- GitHub
- เหลือบมอง
- GPU
- GPUs
- เกิดขึ้น
- ฮาร์ดแวร์
- มี
- จุดสูง
- สูงกว่า
- ถือ
- เป็นเจ้าภาพ
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- ทำอย่างไร
- อย่างไรก็ตาม
- HTTPS
- ความคิด
- ความคิด
- ภาพ
- การดำเนินงาน
- การปรับปรุง
- รวมทั้ง
- เพิ่ม
- เพิ่มขึ้น
- ที่เพิ่มขึ้น
- ขึ้น
- อิสระ
- แสดง
- โครงสร้างพื้นฐาน
- อินพุต
- IT
- ที่รู้จักกัน
- ใหญ่
- ชั้น
- นำ
- ชั้นนำ
- เรียนรู้
- การเรียนรู้
- เส้น
- เครื่อง
- เรียนรู้เครื่อง
- เครื่อง
- ทำ
- คณิตศาสตร์
- มดลูก
- วิธี
- หน่วยความจำ
- ไมโครซอฟท์
- แบบ
- โมเดล
- ข้อมูลเพิ่มเติม
- มากที่สุด
- หลาย
- คูณ
- ความต้องการ
- เครือข่าย
- เครือข่าย
- จำนวน
- ตัวเลข
- Nvidia
- การดำเนินการ
- การดำเนินการ
- การเพิ่มประสิทธิภาพ
- อื่นๆ
- ทั้งหมด
- ส่วนหนึ่ง
- รูปแบบไฟล์ PDF
- คน
- การปฏิบัติ
- ที่มีประสิทธิภาพ
- จุด
- เป็นไปได้
- การปฏิบัติ
- ก่อน
- ปัญหาที่เกิดขึ้น
- เงินที่ได้
- กระบวนการ
- ก่อ
- ผลิตภัณฑ์
- ผลิตภัณฑ์
- เสนอ
- การให้
- แรม
- RE
- มาถึง
- เมื่อเร็ว ๆ นี้
- ลด
- ลด
- หมายถึง
- ตรงประเด็น
- แสดง
- ต้อง
- การวิจัย
- ส่งผลให้
- ผลสอบ
- วิ่ง
- วิ่ง
- กล่าวว่า
- เดียวกัน
- ประหยัด
- ขนาด
- ปรับ
- โครงการ
- รูปแบบ
- เลือก
- ชุด
- การติดตั้ง
- คล้ายคลึงกัน
- เดียว
- ขนาด
- ทักษะ
- So
- บาง
- ซับซ้อน
- ช่องว่าง
- เฉพาะ
- แยก
- แยก
- สถานะ
- สหรัฐอเมริกา
- ยังคง
- จัดเก็บ
- ร้านค้า
- กลยุทธ์
- กลยุทธ์
- สวิตซ์
- เทคนิค
- พื้นที่
- ตลอด
- ปริมาณงาน
- เวลา
- ครั้ง
- การค้า
- การฝึกอบรม
- การถ่ายโอน
- ล้านล้าน
- ความเข้าใจ
- บันทึก
- การปรับปรุง
- us
- ใช้
- มักจะ
- นำไปใช้
- ความหลากหลาย
- ต่างๆ
- รอ
- ในขณะที่
- วิกิพีเดีย
- ภายใน
- ไม่มี
- ผู้ปฏิบัติงาน
- แรงงาน
- การทำงาน
- ของคุณ