9

การประมวลผลแบบขนานบน GPU และการพัฒนา演化ด้วยวิวัฒนาการ

AI999第5课:方法演化:从优化解到优化算法本身
00:00

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

ใช้วัฒนาการพัฒนาวัฒนาการ: วงจรปิดสองชั้นด้วยการประมวลผลแบบขนานบน GPUส่งการตั้งค่ารุ่นถัดไปลงไปวิวัฒนาการชั้นนอก: ตัวเลือกการตั้งค่าเลือก · ผ่าเหล่า · อัปเดตการตั้งค่าอัลกอริทึม โดยอิงผลป้อนกลับค่าความเหมาะสมผลป้อนกลับค่าความเหมาะสมชั้นรวมการประเมิน: ผลป้อนกลับเชิงสถิติรวบรวมประสิทธิภาพของงานขนานชั้นใน → ประมาณค่าความเหมาะสมของการตั้งค่าแต่ละแบบรวบรวมประสิทธิภาพของงานการรันแบบขนานเป็นชุดบน GPU · ชั้นใน: การตั้งค่า × อินสแตนซ์งานการตั้งค่า θ1การตั้งค่า θ2การตั้งค่า θ3การตั้งค่า θ4แต่ละหน่วย = การรันแบบขนานและการให้คะแนนของการตั้งค่าอัลกอริทึมหนึ่งแบบบนอินสแตนซ์งานหนึ่งรายการทำไมการประมวลผลแบบขนานจึงสำคัญตัวอย่างผลป้อนกลับเพียงพอมากกว่าการประมาณค่าความเหมาะสมเสถียรมากกว่าทิศทางการค้นหาเชื่อถือได้มากกว่ากลไกวงจรปิดปริมาณงานขนานผลป้อนกลับประสิทธิภาพการเลือกการตั้งค่า

สองชั้นต่างทำหน้าที่ของตน

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

ทำไมการประมวลผลแบบขนานบน GPU จึงแทนที่ไม่ได้

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

กลไกหลัก: วงจรปิดหนึ่งวง

ระบบทั้งหมดสรุปได้เป็น "ปริมาณงานขนานของงานชั้นใน → การรวมผลป้อนกลับประสิทธิภาพ → การเลือกการตั้งค่าชั้นนอก" ในลักษณะวงจร: ยิ่งระดับการประมวลผลแบบขนานสูง ตัวอย่างผลป้อนกลับยิ่งเพียงพอ การประมาณค่าความเหมาะสมของชั้นนอกยิ่งเสถียร ทิศทางการปรับปรุงการตั้งค่ายิ่งเชื่อถือได้ การตั้งค่าที่ปรับปรุงแล้วจะถูกส่งกลับไปยังชั้นล่างเพื่อเข้าสู่รอบปริมาณงานขนานถัดไป เป็นวงจรปิดนี้เองที่ทำให้อัลกอริทึมมีความสามารถในการปรับตัวเองให้เหมาะสมอย่างต่อเนื่อง และทำให้ "การใช้วัฒนาการพัฒนาวัฒนาการ" กลายเป็นกระบวนการที่มีประสิทธิภาพและทำงานได้จริง

จุดที่มักเข้าใจผิด
อย่าสับสนสองชั้น: ชั้นในคือ "อัลกอริทึมรันงานและให้คะแนน" ส่วนชั้นนอกคือ "วิวัฒนาการคัดเลือกการตั้งค่า" ผลป้อนกลับต้องมาจากประสิทธิภาพการรันจริงของชั้นในเท่านั้น ไม่ใช่การเดาแบบสุ่มหรือค่าคงที่ที่กำหนดขึ้นเองจากชั้นนอก