# ระบบวิวัฒนาการอัจฉริยะ EvoX และการปฏิบัติงานวิจัยทางวิทยาศาสตร์แบบ AI Native — เอกสารประกอบการสอน

เวลาเรียน: 1 · หน้าสไลด์: 16

## แนวทางการอ่าน

- [บทที่ 4｜หัวข้อ: ฐานการประมวลผลสมัยใหม่และการวิวัฒนาการแบบขนานด้วยเทนเซอร์](#lecture-lesson-1)

---

<a id="lecture-lesson-1"></a>

## บทที่ 4｜หัวข้อ: ฐานการประมวลผลสมัยใหม่และการวิวัฒนาการแบบขนานด้วยเทนเซอร์

<a id="lecture-page-1"></a>

### ฐานการประมวลผลสมัยใหม่และการวิวัฒนาการแบบขนานด้วยเทนเซอร์

*หน้า 1*

> **เป้าหมายของหน้า:** เรียนรู้ว่า EvoX จัดระเบียบประชากร การประเมิน และสถานะให้เป็นเทนเซอร์ที่คำนวณได้ทั้งก้อนอย่างไร เพื่อก้าวข้ามคอขวดแบบอนุกรมดั้งเดิมและบรรลุการเร่งความเร็วในระดับขนาดใหญ่

> **เป้าหมายของหน้า**
>
> หน้านี้เป็นบทเปิดของบทที่ 4 ชี้ให้เห็นปัญหาหลักที่บทนี้ต้องแก้ไข — เมื่อขนาดประชากร จำนวนครั้งการประเมิน และจำนวนรอบการวนซ้ำของอัลกอริทึมวิวัฒนาการเพิ่มขึ้นเรื่อย ๆ วิธีการประมวลผลแบบอนุกรมทีละ个体 ทีละขั้นตอนแบบดั้งเดิมจะกลายเป็นคอขวดที่ชัดเจน แกนหลักของบทนี้คือการดูว่า EvoX จัดระเบียบประชากร การประเมิน และสถานะใหม่ให้เป็นเทนเซอร์ที่สามารถเข้าร่วมการคำนวณได้ทั้งก้อนอย่างไร เพื่อให้ได้การเร่งความเร็วที่เป็นรูปธรรมในสถานการณ์ขนาดใหญ่

> **ลำดับการอธิบาย**
>
> สามารถเริ่มด้วยคำถามเชิงสาธิตที่ตรงไปตรงมา — "ถ้าในประชากรมียี่สิบหมื่น個个体 เรายังต้องวนลูปทีละตัว จะเกิดอะไรขึ้น?" เพื่อนำทางให้นักศึกษาตระหนักถึงการสิ้นเปลืองทั้งด้านเวลาและการใช้ฮาร์ดแวร์จากการวนลูปแบบอนุกรม จากนั้นจึงให้ทิศทางคำตอบของบทนี้: มองทั้งประชากรเป็นชุดข้อมูลชุดหนึ่ง มองการอัปเดตหนึ่งรุ่นเป็นการคำนวณแบบกลุ่มครั้งหนึ่ง ให้การคำนวณสามารถลงสู่ฮาร์ดแวร์แบบขนานได้ทั้งก้อน สุดท้ายจึงนำเข้าสู่บทบาทของ Runtime ซึ่งรับผิดชอบในการจัดตารางพลังการประมวลผลที่แตกต่างกันขณะที่ยังคงความสามารถในการประกอบอัลกอริทึม

**ประเด็นการสอน**

- 1. การแสดงออกแบบเทนเซอร์ — ประชากร การประเมินความเหมาะสม และสถานะภายในของอัลกอริทึมไม่ใช่個体ที่กระจัดกระจายอีกต่อไป แต่ถูกจัดระเบียบเป็นเทนเซอร์ที่มีรูปร่างสม่ำเสมอ ทำให้วิวัฒนาการหนึ่งรุ่นสามารถแสดงออกเป็นการคำนวณแบบกลุ่มหลายครั้ง ข้อดีคือรูปแบบการคำนวณเป็นระเบียบ ง่ายต่อการทำเวกเตอร์ไรเซชัน และยังทำให้คำอธิบายอัลกอริทึมชุดเดียวกันสามารถปรับใช้กับขนาดประชากรที่แตกต่างกันได้ 2. การก้าวข้ามคอขวดแบบอนุกรม — ในการใช้งานแบบดั้งเดิม การประเมินและการอัปเดตสถานะมักทำทีละ个体 เมื่อขนาดใหญ่ขึ้น ค่าใช้จ่ายในการวนลูปและการรอการซิงโครไนซ์จะกลายเป็นตัวกำหนดเวลาทำงานหลัก
- หลังการทำเป็นกลุ่ม ค่าใช้จ่ายเหล่านี้ถูกเฉลี่ยและ吞吐เพิ่มขึ้นอย่างชัดเจน 3. บทบาทการจัดตารางของ Runtime — Runtime อยู่ระหว่างคำอธิบายอัลกอริทึมกับฮาร์ดแวร์ระดับล่าง รับผิดชอบในการกระจายการคำนวณแบบกลุ่มไปยัง CPU, GPU และพลังการประมวลผลที่แตกต่างกัน ทำให้ผู้เขียนอัลกอริทึมไม่ต้องเขียนตรรกะใหม่สำหรับอุปกรณ์แต่ละชนิด พร้อมกันนั้นยังรักษาความสามารถในการประกอบขององค์ประกอบอัลกอริทึม ทำให้ตัวดำเนินการและกลยุทธ์ที่แตกต่างกันสามารถเชื่อมต่อกันได้อย่างอิสระโดยไม่ทำลายความสามารถในการขนาน

**คำสำคัญที่ครอบคลุม**

- การทำเป็นเทนเซอร์、การคำนวณแบบกลุ่ม、คอขวดแบบอนุกรม、การเร่งความเร็วขนาดใหญ่、การจัดตารางพลังการประมวลผลที่แตกต่างกัน、ความสามารถในการประกอบอัลกอริทึม

**ตรวจสอบความเข้าใจ**

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

> **คำแนะนำการเชื่อมต่อ**
>
> หลังจากยืนยันว่านักศึกษาได้สร้างสายโซ่เหตุและผลพื้นฐาน "การทำเป็นเทนเซอร์ → การคำนวณแบบกลุ่ม → การเร่งความเร็วแบบขนาน" แล้ว จึงเข้าสู่หน้าถัดไป เพื่อดูว่าประชากรและสถานะถูกจัดระเบียบเป็นเทนเซอร์อย่างไร และ Runtime จัดตารางอย่างไร

<a id="lecture-page-2"></a>

### ฐานการประมวลผลสมัยใหม่และการวิวัฒนาการแบบขนานด้วยเทนเซอร์

*หน้า 2*

> **เป้าหมายของหน้า:** ผู้เรียนควรเข้าใจความขัดแย้งระหว่างความต้องการพลังการประมวลผลขนาดใหญ่ของวิทยาการวิวัฒนาการสมัยใหม่กับสถาปัตยกรรมดั้งเดิม

> **เป้าหมายของหน้า**
>
> เข้าใจความขัดแย้งระหว่างความต้องการพลังการประมวลผลขนาดใหญ่ของวิทยาการวิวัฒนาการสมัยใหม่กับสถาปัตยกรรมแบบอนุกรมดั้งเดิม; เชี่ยวชาญแนวคิดการจัดระเบียบประชากร การประเมิน และสถานะเป็นเทนเซอร์เพื่อขับเคลื่อนวิวัฒนาการแบบขนานเป็นกลุ่ม; ตระหนักถึงการขยายตัวของโมเดลขนาดใหญ่ต่อการสร้าง候选 และการแลกเปลี่ยนเชิงสถาปัตยกรรมระดับระบบที่ตามมา

> **ลำดับการอธิบาย**
>
> เริ่มจากชี้ให้เห็นความขัดแย้งหลัก "ความหลากหลาย → จำนวนครั้งการประเมิน → ค่าใช้จ่ายในการจัดการสถานะและการจัดตาราง" จากนั้นอธิบายว่าทำไมการวนลูปแบบอนุกรมถึงชนเพดานก่อน; ต่อมาจึงขยายสามระดับของการทำเป็นเทนเซอร์ — เทนเซอร์ประชากร เทนเซอร์การประเมิน และเทนเซอร์สถานะ พร้อมสรุปคำศัพท์หลัก "การขนานแบบกลุ่ม"; จากนั้นอธิบายว่าโมเดลขนาดใหญ่ผลักดันการสร้าง候选ไปสู่ขอบเขตใหม่อย่างไร; สุดท้ายลงสู่ตัวอย่างสถานการณ์ EvoX และการแลกเปลี่ยนระดับระบบ พร้อมจัดการแบบฝึกหัดและกรณีศึกษา

**ประเด็นการสอน**

- วิวัฒนาการพึ่งพาความหลากหลายของประชากร และความหลากหลายจะแปลงเป็นจำนวนครั้งการประเมิน ค่าใช้จ่ายในการจัดการสถานะและการจัดตารางโดยตรง ในการวนลูปแบบ CPU ทีละ个体แบบดั้งเดิม แต่ละ个体ต้องเรียกฟังก์ชันเป้าหมายแยก อัปเดตสถานะแยก บันทึก日志แยก
- เมื่อประชากรเติบโตจากไม่กี่สิบเป็นหลายพัน จำนวนครั้งการประเมินและเวลานาฬิกาแขวนเพิ่มขึ้นเกือบเชิงเส้น เมื่อการจำลองครั้งเดียวมีค่าใช้จ่ายสูง 吞吐โดยรวมจะถูกล็อกไว้ที่ "จังหวะแกนเดียว" ยิ่งมีความหลากหลายสูง ยิ่งประเมินแพง คอขวดแบบอนุกรมยิ่งชัดเจน วิธีการทำเป็นเทนเซอร์คือจัดระเบียบประชากร การประเมิน และสถานะใหม่ให้เป็นเทนเซอร์ที่คำนวณได้ทั้งก้อน เทนเซอร์ประชากรซ้อนพารามิเตอร์候选ทั้งหมดเป็นเทนเซอร์สองมิติ "จำนวน个体 × มิติ" การเรียกตัวดำเนินการครั้งเดียวก็เสร็จการกลายพันธุ์และการอัปเดตทั้งประชากร
- เทนเซอร์การประเมินจัดแพ็กคำขอประเมินแบบกลุ่มส่งลงไป ให้ GPU หรือบริการประมวลผลแบบกลุ่มดำเนินการขนานแล้วรวมค่าที่ส่งคืน
- เทนเซอร์สถานะดูแลสถานะกลาง เช่น ความเหมาะสม ปริมาณการละเมิดข้อจำกัด การจัดอันดับ ในรูปเทนเซอร์ ทำให้การเลือก การจัดเรียง และการอัปเดตคำนวณได้ทั้งก้อน ทั้งสามรวมกันคือ "การขนานแบบกลุ่ม" ซึ่งเปลี่ยนภาระการคำนวณจากความหลากหลายให้กลายเป็นขนาดที่吞吐ดูดซับได้ ดังนั้นจึงไม่ใช่รายละเอียดการปรับแต่ง แต่เป็นปัญหาโครงสร้างพื้นฐานของวิทยาการวิวัฒนาการสมัยใหม่ เมื่อขนาดการคำนวณถูกเปิดออก ปัญหาสำคัญเปลี่ยนจาก "คำนวณได้ไหม" เป็น "候选มาจากไหน" โมเดลขนาดใหญ่สามารถเข้าใจภาษาธรรมชาติ โค้ด ความรู้เฉพาะทาง และบริบทของโครงการ และสร้าง候选ที่มีโครงสร้างซับซ้อนจากสิ่งเหล่านั้น ทำให้วัตถุวิวัฒนาการขยายจากพารามิเตอร์เชิงตัวเลขไปสู่โปรแกรม อัลกอริทึม ไปจนถึงสถานะระบบที่สมบูรณ์
- วิธีการเข้ารหัสและการกลายพันธุ์ที่เคยพึ่งพาการออกแบบของมนุษย์ เริ่มให้โมเดลมีส่วนร่วมในการสร้างได้ สองพลังจึงมาบรรจบกัน: GPU ทำให้ความเป็นไปได้จำนวนมากถูกสำรวจพร้อมกัน โมเดลขนาดใหญ่ทำให้ระบบสร้างความเป็นไปได้ที่หลากหลายยิ่งขึ้น และกลไกวิวัฒนาการรับผิดชอบในการส่ง候选เข้าสู่ภารกิจจริง ตัดสินใจผ่านการดำเนินการและการประเมินว่าการเปลี่ยนแปลงใดควรค่าแก่การรักษา สำหรับวิศวกรอัลกอริทึมและนักพัฒนาระบบ นี่ไม่ใช่การปรับแต่งเฉพาะจุด แต่เป็นการแลกเปลี่ยนเชิงสถาปัตยกรรม: ต้องสร้างสมดุลระดับระบบระหว่างความหลากหลายของการสร้าง候选 吞吐ของการคำนวณแบบกลุ่ม และความซับซ้อนทางวิศวกรรม ความหลากหลายเป็นเงื่อนไขเบื้องต้นของประสิทธิผลของวิวัฒนาการ แต่ต้องถูกย่อยด้วย吞吐 ในสถานการณ์ EvoX ถ้ายังใช้การวนลูป CPU แบบอนุกรมประเมินทีละ个体 ขนาดประชากรจะถูกจำกัดด้วย吞吐
- เมื่อเปลี่ยนเป็นการขนานแบบกลุ่มด้วยเทนเซอร์ ในรอบเดียวกันก็สามารถจัดระเบียบพารามิเตอร์ สถานะการประเมินและการอัปเดตของ候选จำนวนมากพร้อมกัน ทำให้ "รักษาความหลากหลาย" และ "การสำรวจขนาดใหญ่" เป็นไปได้พร้อมกันในทางวิศวกรรม

**คำสำคัญที่ครอบคลุม**

- การขนานแบบกลุ่ม、การทำเป็นเทนเซอร์、เทนเซอร์ประชากร、เทนเซอร์การประเมิน、เทนเซอร์สถานะ、คอขวดแบบอนุกรม、การสร้าง候选、การแลกเปลี่ยนระดับระบบ

**การจัดการแบบฝึกหัด**

หน้านี้มีคำถามแบบเลือกตอบ 5 ข้อและคำถามกรณีศึกษา 1 ข้อ รวม 2 คำถาม คำถามเลือกตอบตรวจสอบความขัดแย้งหลัก วิธีการดำเนินการของการขนานแบบกลุ่ม บทบาทของโมเดลขนาดใหญ่ การแลกเปลี่ยนระดับระบบหลังการ迁移 และการเปลี่ยนแปลงโดยตรงในสถานการณ์ EvoX เมื่อตอบให้จับสองแกนหลัก: หนึ่งคือสายโซ่เหตุและผล "ความหลากหลาย → ปริมาณการคำนวณ → คอขวดแบบอนุกรม → การขนานแบบกลุ่ม"; สองคือการแบ่งงาน "โมเดลขนาดใหญ่รับผิดชอบสร้าง候选ที่หลากหลายยิ่งขึ้น กลไกการประเมินรับผิดชอบตัดสินว่า候选ใดควรค่าแก่การรักษา" คำถามกรณีศึกษาข้อแรกต้องการวินิจฉัยคอขวดแบบอนุกรมและอธิบายว่าการทำเป็นเทนเซอร์เปลี่ยนวิธีการจัดระเบียบจากสามจุด: ประชากร การประเมิน และสถานะ; ข้อที่สองต้องการตัดสินใจแลกเปลี่ยนจากมิติต่าง ๆ เช่น ความหลากหลายของ候选 vs 吞吐แบบกลุ่ม ผลตอบแทนการสำรวจ vs ความซับซ้อนทางวิศวกรรม 吞吐แบบกลุ่ม vs ความเที่ยงตรงของการประเมิน

คำตอบที่ถูกต้องควรเชื่อมโยงกับแนวคิดในหน้านี้และอธิบายเหตุผล; หากตัดสินผิด ให้กลับไปที่สายโซ่เหตุและผล "ความหลากหลาย → จำนวนครั้งการประเมิน → ค่าใช้จ่ายในการจัดการสถานะและการจัดตาราง" และแยกแยะระหว่าง "การเร่งลูปแบบอนุกรมเดียวกัน" กับ "การเปลี่ยนวิธีการจัดระเบียบการคำนวณ"

**ตรวจสอบความเข้าใจ**

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

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

<a id="lecture-page-3"></a>

### ความท้าทายด้านความหลากหลายทางวิวัฒนาการและขนาดการคำนวณ

*หน้า 3*

> **เป้าหมายของหน้า:** ผู้เรียนควรเข้าใจแรงกดดันด้านการคำนวณที่เกิดจากการแลกเปลี่ยนหลายเป้าหมายและความหลากหลายของ候选ในปัญหาจริง

> **เป้าหมายของหน้า**
>
> เข้าใจแรงกดดันด้านการคำนวณที่เกิดจากการแลกเปลี่ยนหลายเป้าหมายและความหลากหลายของ候选 เชี่ยวชาญแนวคิด Pareto front ความสัมพันธ์แบบครอบงำ และความตึงเครียดระหว่างการรักษาความหลากหลายกับค่าใช้จ่ายในการประเมิน

**ประเด็นการสอน**

- เมื่อปัญหา มีเพียงเป้าหมายเดียว จึงมีคำตอบที่ดีที่สุดเพียงหนึ่งเดียว ปัญหาทางวิศวกรรมจริงมักมีหลายเป้าหมายที่ขัดแย้งกัน (แรงยกกับแรงต้าน ความแม่นยำกับเวลาหน่วง ประสิทธิภาพกับต้นทุน) ในกรณีนี้ "คำตอบที่ดี" คือชุดคำตอบแลกเปลี่ยนที่ไม่ครอบงำกันเอง นั่นคือ Pareto front เปรียบเทียบทีละรายการว่า A ไม่แย่กว่า B ในทุกเป้าหมายหรือไม่ → มีอย่างน้อยหนึ่งเป้าหมายที่ A ดีกว่าอย่างเคร่งครัดหรือไม่ → ทั้งสองข้อเป็นจริงจึงจะถือว่า A ครอบงำ B ถ้ามีเพียงข้อเดียวที่ A แย่กว่า ทั้งสองไม่ครอบงำกันและอาจอยู่บน front ได้ แกนนอน f1 แกนตั้ง f2 ยิ่งน้อยยิ่งดี
- กลุ่ม A เอนไปทาง f1 ต่ำ กลุ่ม B ทางสายกลาง กลุ่ม C เอนไปทาง f2 ต่ำ
- จุดสีเทาคือคำตอบที่ถูกครอบงำ ผู้ตัดสินใจต้องการพื้นที่แลกเปลี่ยนที่ทั้ง front เป็นตัวแทน ไม่ใช่จุดเดียวที่อัลกอริทึมเลือกมา หมายถึงความแตกต่างเชิงโครงสร้างที่กระจายตามทิศทางการแลกเปลี่ยนต่าง ๆ บน Pareto front การครอบคลุมทิศทาง — เติมเต็มปลายซ้าย ส่วนกลาง ปลายขวาล่างของ front
- การรักษาความแตกต่าง — 候选ที่เกือบเหมือนกันเทียบเท่ากับหนึ่งตัว
- คุณค่าต่อการตัดสินใจ — ความชอบมักชัดเจนภายหลัง การรักษา候选ที่แตกต่างช่วยให้เลือกใหม่ได้โดยไม่มีค่าใช้จ่าย ยิ่งความหลากหลายสูง พื้นที่ค้นหายิ่งกว้าง ขนาดประชากรยิ่งใหญ่ จำนวนครั้งการประเมินยิ่งมาก เมื่อการประเมินพึ่งพาการจำลองความเที่ยงตรงสูง (เช่น การคำนวณอากาศพลศาสตร์ปีก supercritical ใช้เวลาหลายชั่วโมง) ค่าใช้จ่ายการประเมินครั้งเดียวถูกขยายเป็นคอขวดหลัก วิธีรับมือที่พบบ่อย: ใช้แบบจำลองตัวแทนแทนการประเมินความเที่ยงตรงสูงส่วนใหญ่
- จัดสรรงบประมาณความเที่ยงตรงสูงที่มีจำกัดให้候选ที่ขยายการครอบคลุม front ได้ดีที่สุดก่อน
- จัดสรรงบประมาณใหม่ระหว่างขนาดประชากรกับจำนวนรุ่น อย่าสับสนความหลากหลายกับสัญญาณรบกวนแบบสุ่มหรือการรันหลายรอบ ความหลากหลายที่แท้จริงคือความแตกต่างเชิงโครงสร้างตามทิศทาง
- การรบกวนแบบสุ่มเพียงอย่างเดียวไม่สามารถขยายการครอบคลุม front และไม่สามารถลดความยากในการตัดสินใจได้ คำใบ้แบบฝึกหัด (คำถามเลือกตอบ 5 ข้อ + วิเคราะห์กรณี 1 ข้อ): Pareto front คือชุดคำตอบแลกเปลี่ยนที่ไม่ครอบงำกัน คำตอบสองข้อใด ๆ ต่างมีจุดดีและจุดด้อยในเป้าหมายต่างกัน A ดีกว่าใน f1, B ดีกว่าใน f2 ทั้งสองไม่ครอบงำกันและอาจอยู่บน front ได้ ความหลากหลายคือความแตกต่างเชิงโครงสร้างที่กระจายตามทิศทางการแลกเปลี่ยนต่าง ๆ บน Pareto front ซึ่งให้บริการการตัดสินใจโดยตรง การครอบคลุมทิศทางการแลกเปลี่ยนที่กว้างขึ้นต้องใช้พื้นที่ค้นหา ขนาดประชากร และจำนวนครั้งการประเมินเป้าหมายที่มากขึ้น ดังนั้นยิ่งความหลากหลายสูง ความท้าทายด้านขนาดการคำนวณยิ่งมาก การใช้แบบจำลองตัวแทนรับผิดชอบการประเมินส่วนใหญ่และรวมงบประมาณความเที่ยงตรงสูงที่มีจำกัดเพื่อขยายการครอบคลุม front สามารถบรรเทาความตึงเครียดระหว่างขนาดกับความหลากหลายได้ การออกแบบปีก supercritical สิ่งที่ส่งมอบควรเป็นชุดคำตอบ候选ที่อยู่บน Pareto front ครอบคลุมทิศทางการแลกเปลี่ยนต่าง ๆ ไม่ใช่方案เดียว
- มาตรการบรรเทาความตึงเครียดรวมถึงแบบจำลองตัวแทน การจัดสรรงบประมาณ优先级 การปรับสัดส่วนประชากรกับจำนวนรุ่น การกรองแบบหลายระดับความเที่ยงตรง เป็นต้น

**ตรวจสอบความเข้าใจ**

ให้นักศึกษาอธิบายความสัมพันธ์แบบครอบงำและ Pareto front ด้วยคำพูดของตนเอง และยกตัวอย่างว่าทำไมความหลากหลายจึงนำมาซึ่งแรงกดดันด้านการคำนวณ หากนักศึกษาสับสนระหว่างความหลากหลายกับการรบกวนแบบสุ่ม สามารถกลับไปที่ "สูตรตรวจสอบตนเอง" — 候选มากแค่ไหน ถ้าเบียดกันอยู่มุมเดียวกันของ front ก็ยังไม่มีความหลากหลาย

> **คำแนะนำการเชื่อมต่อ**
>
> หลังจากยืนยันว่านักศึกษาสามารถแยกแยะระหว่างคำตอบที่ดีที่สุดจุดเดียวกับชุดคำตอบแลกเปลี่ยน และเข้าใจต้นทุนของความหลากหลายแล้ว จึงเข้าสู่เนื้อหาเกี่ยวกับการวิวัฒนาการแบบขนานด้วยเทนเซอร์ในหน้าถัดไป

<a id="lecture-page-4"></a>

### คอขวดประสิทธิภาพของลูป CPU แบบอนุกรมดั้งเดิม

*หน้า 4*

> **เป้าหมายของหน้า:** ผู้เรียนควรตระหนักถึงข้อจำกัดด้านประสิทธิภาพของลูป CPU แบบอนุกรมดั้งเดิมเมื่อจัดการการประเมิน候选หลายหมื่นครั้ง

**ประเด็นการสอน**

- จำนวนครั้งการประเมินทั้งหมด ≈ ขนาดประชากร × จำนวนรุ่น; เวลาการประเมินแบบอนุกรม ≈ จำนวนครั้งการประเมินทั้งหมด × เวลาการประเมินครั้งเดียว คำนวณสองปริมาณนี้ก่อน แล้วจึงตัดสินว่าคอขวดคุ้มค่าที่จะปรับปรุงหรือไม่
- การวนลูปที่ชั้นอินเทอร์preter การตรวจสอบขอบเขตและการกระจายชนิดทีละ个体 การเข้าถึงหน่วยความจำที่ไม่ต่อเนื่อง การซิงโครไนซ์และการย้ายข้อมูลบ่อยครั้ง จะรวมกันเป็นค่าใช้จ่ายคงที่แบบอนุกรม การปรับแต่งเฉพาะตัวดำเนินการเองสามารถลดได้เพียงส่วนเล็ก ๆ เท่านั้น
- วาดเวลานาฬิกาแขวนภายใต้ขนาดประชากรต่าง ๆ: เส้นตรง近似แสดงว่าการดำเนินการยังเป็นแบบอนุกรม รูปขั้นบันไดแสดงว่าจัดเป็นกลุ่มแล้ว รูปร่างของเส้นโค้งบอกถึงที่มาของคอขวดได้ดีกว่าตัวเลขจุดเดียว

> **เป้าหมายของหน้า**
>
> หน้านี้ต้องการให้นักศึกษาตระหนักว่า เมื่อการประเมิน候选ถึงระดับหลายหมื่นครั้ง ลูป CPU แบบอนุกรมดั้งเดิมจะกลายเป็นส่วนที่แคบที่สุดในไปป์ไลน์วิวัฒนาการทั้งหมด; คอขวดนี้อยู่ในระดับโมเดลการดำเนินการ ไม่ใช่การเขียนตัวดำเนินการ单个หรือข้อบกพร่องของโค้ด การประมวลผลแบบกลุ่ม การทำเป็นเทนเซอร์ และการจัดตารางแบบขนานในภายหลัง คือทิศทางการปรับปรุงที่มุ่งเป้าไปที่คอขวดเชิงโครงสร้างนี้
>
> ลำดับการอธิบายและประเด็นการสอน:
>
> วิวัฒนาการพึ่งพาความหลากหลาย ความหลากหลายนำมาซึ่งการเติบโตแบบทวีคูณของขนาดประชากรและจำนวนครั้งการประเมิน จำนวนครั้งการประเมินทั้งหมด ≈ ขนาดประชากร × จำนวนรุ่น; เวลาการประเมินแบบอนุกรม ≈ จำนวนครั้งการประเมินทั้งหมด × เวลาการประเมินครั้งเดียว เมื่อจำนวนครั้งการประเมินถึงระดับ 10⁵ เวลานาฬิกาแขวนแบบอนุกรมเพิ่มขึ้น近似เชิงเส้น
>
> ในภาพเปรียบเทียบการประมวลผลแบบอนุกรมทีละตัวกับการประมวลผลแบบขนานเป็นกลุ่ม แกนนอนคือจำนวนครั้งการประเมิน候选 10³, 10⁴, 10⁵ แกนตั้งคือเวลานาฬิกาแขวนแบบปรับมาตรฐาน เส้นโค้งอนุกรมเพิ่มขึ้น近似เชิงเส้น; เส้นโค้งขนานเพิ่มขึ้นแบบขั้นบันได ส่วนสีเข้มแสดงค่าใช้จ่ายในการจัดตารางและการย้ายข้อมูล ข้อสรุปสำคัญคือ: ภายใต้ปริมาณงานเท่ากัน การเพิ่มขึ้นของเวลาขนานถูกกำหนดโดยจำนวนกลุ่มมากกว่าจำนวน个体 การใช้รูปร่างของเส้นโค้งอธิบายที่มาของคอขวดได้ดีกว่าการดูตัวเลขจุดเดียว
>
> การใช้งานที่ตรงไปตรงมาที่สุดคือมองทั้งประชากรเป็นลิสต์ วนลูปดึง个体ทีละตัว → ถอดรหัสเป็นพารามิเตอร์เฉพาะ → เรียกฟังก์ชันการประเมิน → เขียนความเหมาะสมกลับ การวนซ้ำที่อยู่ติดกันแทบไม่สามารถทับซ้อนกันได้: ผลการประเมินไม่กลับมา การเขียนกลับก็ไม่สามารถดำเนินการได้; การเขียนกลับไม่เสร็จ 个体ถัดไปก็ไม่มีที่วางผลลัพธ์ ดังนั้นหน่วยประมวลผลแบบขนาน เช่น หลายแกน SIMD GPU จึงว่างเปล่าเป็นส่วนใหญ่
>
> จำนวนครั้งการประเมินที่บวมเชิงเส้น; การดำเนินการทีละตัวที่ชั้นอินเทอร์พรีเตอร์ รวมถึงการวนลูปทีละ个体 การตรวจสอบขอบเขตและการกระจายชนิด นำมาซึ่งค่าใช้จ่ายคงที่ที่สูง; การเข้าถึงหน่วยความจำและการย้ายข้อมูลที่ไม่ต่อเนื่อง 个体ที่ดึงทีละตัวมักไม่ต่อเนื่องในหน่วยความจำ อัตราการเข้าถึงแคชต่ำ; การซิงโครไนซ์และการจัดตาราง เพื่อดึง个体ถัดไป สายการดำเนินการหยุดและกลับมาซ้ำ ๆ การปรับแต่งภายในตัวดำเนินการเท่านั้นสามารถลดได้เพียงส่วนเล็ก ๆ
>
> ตัวอย่างเช่น ประชากร 1000 รุ่น 100 รุ่น จำนวนครั้งการประเมินทั้งหมดประมาณ 1000 × 100 = 10⁵ ครั้ง ถ้าการประเมินครั้งเดียวเฉลี่ย 1 ms เพียงขั้นตอนการประเมินแบบอนุกรมก็ใช้เวลาประมาณ 100 วินาที ยังไม่รวมการคำนวณตัวดำเนินการและค่าใช้จ่ายในการจัดตาราง; ถ้าเพื่อรักษาความหลากหลายเพิ่มจำนวนการรีสตาร์ทจาก 1 ครั้งเป็น 5 ครั้ง ค่าใช้จ่ายเพิ่มขึ้น近似เชิงเส้นเป็นประมาณ 500 วินาที ถ้าปริมาณงานเท่ากันจัดเป็นกลุ่มและมอบให้ฮาร์ดแวร์แบบขนานประมวลผล เวลานาฬิกาแขวนถูกกำหนดโดยจำนวนกลุ่มและเวลาต่อกลุ่มเป็นหลัก
>
> เมื่อการประเมินครั้งเดียวถูกมาก (ระดับไมโครวินาที) หรือประชากรเล็กมาก (ต่ำกว่าระดับร้อย) ค่าใช้จ่ายในการจัดตารางและหน่วยความจำอาจมากกว่าค่าใช้จ่ายในการคำนวณ ช่องว่างระหว่างอนุกรมกับขนานแคบลงอย่างชัดเจน ผลตอบแทนส่วนเพิ่มของการทำเป็นเทนเซอร์ลดลง คอขวดจะย้ายไปที่ความละเอียดของการจัดตารางและแบนด์วิดท์หน่วยความจำ ดังนั้นการตัดสินว่าคุ้มค่าที่จะปรับปรุงโมเดลการดำเนินการหรือไม่ ต้องประเมินร่วมกับค่าใช้จ่ายในการประเมินและขนาด
>
> คอขวดประสิทธิภาพของลูป CPU แบบอนุกรมเป็นเชิงโครงสร้าง การแก้ไขอย่างแท้จริงต้องเปลี่ยนจากการทีละตัวเป็นการทีละกลุ่ม นั่นคือการประมวลผลแบบกลุ่ม การทำเป็นเทนเซอร์ และการจัดตารางแบบขนาน ซึ่งเป็นแรงจูงใจโดยตรงสำหรับการออกแบบกราฟการคำนวณแบบเทนเซอร์ในภายหลัง

**คำสำคัญที่ครอบคลุม**

- ลูป CPU แบบอนุกรม、การขนานแบบกลุ่ม、เวลานาฬิกาแขวน、จำนวนครั้งการประเมิน候选、จำนวนกลุ่ม、ค่าใช้จ่ายที่ชั้นอินเทอร์พรีเตอร์、การเข้าถึงหน่วยความจำที่ไม่ต่อเนื่อง、การซิงโครไนซ์และการจัดตาราง、คอขวดเชิงโครงสร้าง、การทำเป็นเทนเซอร์

**การจัดการแบบฝึกหัด**

หน้านี้มีคำถามเลือกตอบ 5 ข้อ แนะนำให้ถามนักศึกษาว่าเหตุผลในการตัดสินคืออะไรก่อน แล้วจึงให้ผลป้อนกลับ

ข้อ 1 ถามถึงข้อจำกัดของโมเดลการดำเนินการที่สำคัญที่สุดของลูปแบบอนุกรม คำตอบคือ "การวนซ้ำที่อยู่ติดกันยากที่จะทับซ้อนกัน หน่วยประมวลผลแบบขนาน เช่น หลายแกน SIMD GPU ว่างเปล่าเป็นส่วนใหญ่" ประเด็นป้อนกลับ: กระบวนการดึง个体 → ถอดรหัส → ประเมิน → เขียนกลับที่ดำเนินการทีละตัว ทำให้แต่ละ个体กลายเป็นขั้นตอนอนุกรมที่เป็นอิสระ ฮาร์ดแวร์ขาดงานอิสระที่สามารถดำเนินการพร้อมกันได้; คอขวดไม่ใช่คำนวณความเหมาะสมไม่ได้ แต่เป็นช่วงเวลาเดียวกันมีเพียง个体เดียวที่ถูกประมวลผล

ข้อ 2 ถามว่าเมื่อประชากร 1000 รุ่น 100 รุ่น การประเมินครั้งเดียว 1 ms เวลานาฬิกาแขวนแบบอนุกรมของขั้นตอนการประเมินเพียงอย่างเดียวเป็นเท่าใด คำตอบประมาณ 100 วินาที แนวทางการคำนวณ: จำนวนครั้งการประเมินทั้งหมดประมาณ 1000 × 100 = 10⁵ ครั้ง แล้วคูณด้วย 1 ms

ข้อ 3 ถามว่าข้อใดไม่ใช่ปัจจัยที่ขยายค่าใช้จ่ายคงที่ของลูปแบบอนุกรม คำตอบคือ "การจัดตารางประมวลผลแบบกลุ่มด้วยเทนเซอร์" ประเด็นป้อนกลับ: การประมวลผลแบบกลุ่มด้วยเทนเซอร์เป็นทิศทางการปรับปรุงที่บรรเทาคอขวด ไม่ใช่แหล่งที่มาของค่าใช้จ่ายที่ขยายขึ้นเองของลูปแบบอนุกรม; ค่าใช้จ่ายแบบอนุกรมมาจากการเข้าถึงหน่วยความจำที่ไม่ต่อเนื่อง การตรวจสอบขอบเขตและการกระจายชนิดทีละ个体 การวนลูปที่ชั้นอินเทอร์พรีเตอร์ เป็นต้น

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

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

**กิจกรรมในชั้นเรียน**

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

ประมาณเวลานาฬิกาแขวนของขั้นตอนการประเมินเพียงอย่างเดียวในการใช้งานแบบอนุกรมปัจจุบัน และอธิบายการเปลี่ยนแปลงหลังจำนวนการรีสตาร์ทเพิ่มจาก 1 ครั้งเป็น 5 ครั้ง แล้วตัดสินจุดเน้นของการปรับแต่ง คำตอบอ้างอิง: 1000 × 100 = 10⁵ ครั้งการประเมิน คูณ 1 ms ประมาณ 100 วินาที; รีสตาร์ท 5 ครั้งประมาณ 5 × 10⁵ ครั้งการประเมิน นั่นคือประมาณ 500 วินาที เวลานาฬิกาแขวนบวม近似เชิงเส้น ซึ่งแสดงว่าการปรับแต่งระดับคงที่ภายในตัวดำเนินการได้ผลจำกัด จุดเน้นของการปรับแต่งควรอยู่ที่ระดับโมเดลการดำเนินการ นั่นคือการประมวลผลแบบกลุ่ม การทำเป็นเทนเซอร์ และการจัดตารางแบบขนาน ให้เวลานาฬิกาแขวนถูกกำหนดโดยจำนวนกลุ่มไม่ใช่จำนวน个体

ถ้าเปลี่ยนเป็นโมเดลการดำเนินการแบบขนานเป็นกลุ่ม ยังต้องพิจารณาเงื่อนไขขอบเขตใดเพื่อตัดสินว่าการปรับปรุงคุ้มค่าหรือไม่ คำตอบอ้างอิง: หนึ่ง ค่าใช้จ่ายและขนาดของการประเมิน ถ้าการประเมินครั้งเดียวลดลงถึงระดับไมโครวินาที หรือประชากรลดลงต่ำกว่าระดับร้อย ค่าใช้จ่ายในการจัดตารางและการย้ายหน่วยความจำอาจมากกว่าค่าใช้จ่ายในการคำนวณ ผลตอบแทนแบบขนานลดลง; สอง ข้อจำกัดของจำนวนกลุ่มและขนาดกลุ่ม ขนาดกลุ่มถูกจำกัดด้วยหน่วยความจำ GPU แบนด์วิดท์หน่วยความจำ เวลาคำนวณต่อกลุ่ม กลุ่มใหญ่เกินไปจะเพิ่มเวลาต่อกลุ่มและค่าใช้จ่ายในการซิงโครไนซ์; สาม การจัดวางข้อมูลและการเข้าถึงหน่วยความจำ ถ้า候选个体ไม่สามารถจัดเป็นเทนเซอร์ที่ต่อเนื่องและทำเวกเตอร์ไรเซชันได้ การประมวลผลแบบกลุ่มยังคงลดประสิทธิภาพลงเนื่องจากการเข้าถึงหน่วยความจำที่ไม่ต่อเนื่อง โดยรวมแล้ว เฉพาะเมื่อจำนวนครั้งการประเมินและค่าใช้จ่ายการประเมินครั้งเดียวมีขนาดใหญ่พอ ผลตอบแทนจากการปรับปรุงโมเดลการดำเนินการจึงมีนัยสำคัญ

**ตรวจสอบความเข้าใจ**

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

> **คำแนะนำการเชื่อมต่อ**
>
> หลังจากยืนยันว่านักศึกษาสามารถอธิบาย "แบบอนุกรมเป็นคอขวดของโมเดลการดำเนินการ หลังการขนานแบบกลุ่ม เวลานาฬิกาแขวนถูกกำหนดโดยจำนวนกลุ่ม" แล้ว จึงเข้าสู่เนื้อหาการออกแบบกราฟการคำนวณแบบเทนเซอร์และการจัดตารางแบบขนานในภายหลัง

**แหล่งอ้างอิง**

วิวัฒนาการพึ่งพาความหลากหลาย และความหลากหลายหมายถึงปริมาณการคำนวณมหาศาล ลูป CPU แบบอนุกรมดั้งเดิมมีประสิทธิภาพต่ำเมื่อจัดการการประเมิน候选หลายหมื่นครั้ง

<a id="lecture-page-5"></a>

### จากรายการ候选สู่กราฟการคำนวณแบบเทนเซอร์

*หน้า 5*

> **เป้าหมายของหน้า:** ผู้เรียนควรเชี่ยวชาญการเปลี่ยนแปลงหลักในการแปลงกระบวนการวิวัฒนาการจากการแสดงเป็นรายการเป็นกราฟการคำนวณแบบเทนเซอร์

> **เป้าหมายของหน้า**
>
> ผู้เรียนควรเชี่ยวชาญการเปลี่ยนแปลงหลักในการแปลงกระบวนการวิวัฒนาการจากการแสดงเป็นรายการเป็นกราฟการคำนวณแบบเทนเซอร์ และสามารถอธิบายได้ว่าทำไมวิวัฒนาการจึงต้องการการคำนวณแบบเทนเซอร์เป็นกลุ่ม และการทำเป็นเทนเซอร์เปลี่ยนวิธีการแสดงออกของกระบวนการวิวัฒนาการอย่างไร

**ประเด็นการสอน**

- วิวัฒนาการพึ่งพาความหลากหลาย ต้องประเมินคำตอบ候选หลายหมื่นถึงหลายล้าน個 ถ้าเขียน候选เป็นอาร์เรย์ของอ็อบเจกต์ธรรมดาและประเมินด้วยการวนลูปทีละรายการ เวลาส่วนใหญ่จะถูกใช้ไปกับการจัดตารางทีละรายการและการควบคุมของภาษาโฮสต์ ไม่ใช่การคำนวณเชิงตัวเลขจริง นี่คือสาเหตุรากของความไม่มีประสิทธิภาพของลูป CPU แบบอนุกรมดั้งเดิม ชุด候选 ผลการประเมิน และสถานะอัลกอริทึมถูกจัดระเบียบเป็นเทนเซอร์อย่างสม่ำเสมอ ทั้งรุ่นของ候选เขียนเป็นเทนเซอร์候选ที่มีรูปร่าง [ขนาดประชากร, มิติคำตอบ]
- หนึ่ง candidate ไม่ใช่อ็อบเจกต์อิสระอีกต่อไป แต่เป็นสไลซ์หรือหนึ่งแถวในเทนเซอร์ แผนภาพในหน้าก็ขยายตามลำดับนี้: รายการ候选ทางซ้ายประมวลผลทีละรายการ เทนเซอร์候选ตรงกลาง กราฟการคำนวณทางขวามีการกลายพันธุ์ การประเมิน การเลือก และการอัปเดตสถานะตามลำดับ การดำเนินการเช่นการกลายพันธุ์กระทำโดยตรงกับทั้งประชากร การเรียกครั้งเดียวเสร็จการอัปเดต候选ทั้งหมด
- การประเมินเขียนเป็น evaluate(เทนเซอร์候选) ได้ผลลัพธ์ทั้งรุ่นในครั้งเดียว หน่วยการประเมินเปลี่ยนจาก "個" เป็น "กลุ่ม" การเลือกและการอัปเดตสถานะไม่ใช่เพียงตรรกะการควบคุมแบบอนุกรมอีกต่อไป แต่เป็นโหนดในกราฟ จึงได้รับโอกาสในการปรับแต่งการคอมไพล์ เช่น การหลอมรวมตัวดำเนินการและการจัดตารางแบบขนาน ตรรกะของอัลกอริทึม เช่น การกระจายการกลายพันธุ์และแรงกดดันการเลือก ไม่ได้ถูกเขียนใหม่
- สิ่งที่ถูกเขียนใหม่คือวิธีการแสดงออก นี่ไม่ใช่แค่การย้ายลูปไปยังอุปกรณ์ที่เร็วกว่า แต่เป็นการจัดระเบียบข้อมูลและตัวดำเนินการโดยใช้เทนเซอร์เป็นหน่วยประมวลผลขั้นต่ำ ถ้ายังยึดติดกับ "หนึ่ง candidate เท่ากับหนึ่งอ็อบเจกต์อิสระ" ฮาร์ดแวร์แบบขนานที่กว้างเพียงใดก็สามารถป้อนข้อมูลได้เพียงแบบอนุกรม การเปลี่ยนผ่านสำคัญของหน้านี้สามารถจำได้ว่า "จากรายการ候选สู่กราฟการคำนวณแบบเทนเซอร์"
- เห็นตัวดำเนินการแบบกลุ่ม ก็นึกถึง "คำนวณทั้งกลุ่มพร้อมกัน"

**คำสำคัญที่ครอบคลุม**

- การคำนวณแบบเทนเซอร์、เทนเซอร์候选、ตัวดำเนินการแบบกลุ่ม、การประเมินแบบกลุ่ม、กราฟการคำนวณ、การปรับแต่งการคอมไพล์、ขนาดประชากร、มิติคำตอบ

**การจัดการแบบฝึกหัด**

คำตอบของคำถามเลือกตอบข้อ 1 ควรมุ่งไปที่ค่าใช้จ่ายคงที่ของการจัดตารางทีละรายการและการควบคุมของภาษาโฮสต์ ไม่ใช่การขาดพลังการประมวลผลหรือความหลากหลายไม่เพียงพอ เมื่อป้อนกลับให้เน้นว่ายิ่ง候选มาก สัดส่วนค่าใช้จ่ายส่วนนี้ยิ่งสูง

หนึ่งคำตอบ候选สอดคล้องกับหนึ่งสไลซ์ในเทนเซอร์候选 เช่น หนึ่งแถว; มันไม่ผูกเป็นอ็อบเจกต์ภาษาโฮสต์อิสระอีกต่อไป

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

ผลลัพธ์การประเมินเป็นไปได้มากที่สุดคือ [ขนาดประชากร] หรือ [ขนาดประชากร, จำนวนเป้าหมาย]; การประเมินสร้างตัวชี้วัดหนึ่งตัวหรือหนึ่งชุดสำหรับแต่ละ候选ตามมิติประชากร

EvoX ในระดับการแสดงออกเปลี่ยนการประมวลผลแบบรายการทีละ candidate เป็นกราฟการคำนวณแบบกลุ่มที่ใช้เทนเซอร์เป็นพลเมืองชั้นหนึ่ง

การค้นหาปีกอากาศพลศาสตร์ 50000 ตัว การใช้งานเดิมคอขวดหลักอยู่ที่ชั้นการจัดระเบียบข้อมูลและการจัดตาราง: การเข้าถึงอ็อบเจกต์ทีละ candidate การเรียกฟังก์ชันทีละรายการ การเปรียบเทียบทีละครั้งและการอัปเดตสถานะด้วยมือ และการประมวลผลเพียงหนึ่ง candidate ต่อครั้ง ไม่สามารถเติมความกว้างแบบขนานของฮาร์ดแวร์ได้ การปรับปรุงแบบเทนเซอร์ไม่เปลี่ยนแรงกดดันการเลือกและการกระจายการกลายพันธุ์ แต่รวม候选 ผลการประเมิน และสถานะอัลกอริทึมเป็นเทนเซอร์ ให้การกลายพันธุ์และการประเมินกระทำกับทั้งประชากรในครั้งเดียว ถ้าต้องการให้การเลือกและการอัปเดตสถานะได้รับการปรับแต่งการคอมไพล์ด้วย ควรตั้งเทนเซอร์候选เป็น [50000, 48]; ผลลัพธ์การประเมินเป็น [50000] หรือ [50000, จำนวนเป้าหมาย]; การกลายพันธุ์มีผลกับเทนเซอร์候选ทั้งตัว; การเลือกใช้การจัดทำดัชนีเทนเซอร์หรือมาสก์;
การอัปเดตสถานะเขียนเป็นโหนดรีดักชันตามมิติประชากร เช่น หาค่าต่ำสุดหรือหาค่าเฉลี่ย

**ตรวจสอบความเข้าใจ**

รูปร่างของเทนเซอร์候选คืออะไร? รูปร่างผลลัพธ์ของการประเมินครั้งเดียวคืออะไร? สองขั้นตอนใดเปลี่ยนจากตรรกะการควบคุมแบบอนุกรมเป็นโหนดกราฟการคำนวณ? ตอบได้ทั้งสามข้อแสดงว่าเชี่ยวชาญการเปลี่ยนผ่านหลักของหน้านี้แล้ว

> **คำแนะนำการเชื่อมต่อ**
>
> หลังจากยืนยันว่านักศึกษาสามารถอธิบายการเปลี่ยนแปลง "จากรายการ候选สู่กราฟการคำนวณแบบเทนเซอร์" ด้วยคำพูดของตนเองได้แล้ว จึงเข้าสู่การประยุกต์ใช้ ตัวอย่าง หรือสรุปในหน้าถัดไป

<a id="lecture-page-6"></a>

### การจัดระเบียบประชากร การประเมิน และสถานะแบบเทนเซอร์

*หน้า 6*

> **เป้าหมายของหน้า:** ผู้เรียนควรเข้าใจวิธีแมปข้อมูลประชากร การประเมินความเหมาะสม และตัวแปรสถานะให้เป็นโครงสร้างเทนเซอร์อย่างสม่ำเสมอ

> **เป้าหมายของหน้า**
>
> เข้าใจวิธีแมปข้อมูลประชากร การประเมินความเหมาะสม และสถานะการทำงานของอัลกอริทึมให้เป็นโครงสร้างเทนเซอร์อย่างสม่ำเสมอ สร้างสัญญาข้อมูลแบบรวมที่เป็นหนึ่งเดียวที่คำนวณเป็นกลุ่มได้ พักอาศัยบนอุปกรณ์ได้ และทำซ้ำได้

> **ลำดับการอธิบาย**
>
> เริ่มด้วยสามคำถาม — ประชากรคืออะไร ประเมินเป็นอย่างไร รันถึงขั้นตอนใด; จากนั้นจับคู่กับสามประเภทของคอนเทนเนอร์ — เทนเซอร์ประชากร [N, D] เมทริกซ์การประเมินและข้อจำกัด [N, M] และ [N, K] คอนเทนเนอร์สถานะแบบรวม; สุดท้ายอธิบายว่าการประเมินแบบกลุ่มและการพักสถานะบนอุปกรณ์เปลี่ยนการวนลูปทีละ个体เป็นการคำนวณทั้งกลุ่มอย่างไร

**ประเด็นการสอน**

- จัดระเบียบคำตอบ候选 N ตัวเป็นเทนเซอร์การเข้ารหัส [N, D] N คือมิติกลุ่ม D คือมิติคุณลักษณะ ปกติวาง N ไว้นอกสุด เพื่อให้ตัวดำเนินการเดียวกันกระทำกับทั้งกลุ่มได้ในครั้งเดียว ถ้า个体ประกอบด้วยพารามิเตอร์หลายส่วน สามารถแยกเป็นบล็อกฟิลด์ [N, D1] + [N, D2] + … ได้
- 个体ที่มีความยาวผันแปรใช้การเติมและการมาสก์หรือการแบ่งบัคเก็ต เพื่อหลีกเลี่ยงโครงสร้างที่แตกต่างกันทำลายการคำนวณทั้งกลุ่ม การประเมินแบบกลุ่มครั้งเดียวสร้างเมทริกซ์ความเหมาะสม [N, M]
- หลายเป้าหมาย หลายข้อจำกัด และตัวชี้วัดเพิ่มเติมสามารถวางขนานเป็น [N, M+K] หรือจัดเก็บแยกตาราง สิ่งสำคัญคือหลีกเลี่ยงการวนลูปเรียกฟังก์ชันการประเมินทีละ个体 รุ่น สถานะตัวเลขสุ่ม ไฮเปอร์พารามิเตอร์ของกลยุทธ์ คำตอบที่ดีที่สุด แคชประวัติ สถานะการจัดอันดับหรือการสุ่มตัวอย่าง ก็เข้าสู่เทนเซอร์หรือคอนเทนเนอร์สถานะที่มีโครงสร้าง เพื่อรับประกันการทำซ้ำได้ การติดตามได้ และการอัปเดตเป็นกลุ่มได้ การรวมเป็นเทนเซอร์เดียวสามารถลดการไปกลับระหว่างโฮสต์กับอุปกรณ์ ลดค่าใช้จ่ายในการวนลูป และให้พื้นฐานข้อมูลสำหรับการขนานตัวดำเนินการในภายหลัง
- แต่ต้องระวังความถูกต้องของการมาสก์ การสิ้นเปลืองจากการเติม การขยายตัวของเมทริกซ์การประเมินเนื่องจากจำนวนเป้าหมายที่เพิ่มขึ้น และค่าใช้จ่ายในการซิงโครไนซ์สถานะ

> **คำใบ้สื่อ**
>
> - แผนภาพการจัดวางหน่วยความจำวางเทนเซอร์ประชากร เมทริกซ์การประเมิน เมทริกซ์ข้อจำกัด และคอนเทนเนอร์สถานะแบบรวมไว้ภายใต้ความหมายหน่วยความจำอุปกรณ์เดียวกัน สามารถเตือนผู้เรียนให้ใส่ใจลูกศร "การประเมินแบบกลุ่ม" ที่แสดงถึงการเรียกครั้งเดียวประมวลผลทั้งกลุ่ม ไม่ใช่การเรียกทีละ个体 เมื่อ N=1024, D=50, M=2 ประชากรเป็น [1024, 50] ค่าการประเมินเป็น [1024, 2] ข้อจำกัดเป็น [1024, K] generation สามารถเก็บเป็นสเกลาร์ best_x สามารถเก็บเป็นเทนเซอร์หนึ่งมิติ [D] rng_state สามารถแสดงด้วยเทนเซอร์จำนวนเต็มที่มีความยาวเหมาะสม การอัปเดตแต่ละรุ่นสามารถทำเสร็จบนมิติกลุ่มเดียวกันได้ทั้งหมด

**การจัดการแบบฝึกหัด**

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

ข้อความที่สมเหตุสมผลควรเน้นการประเมินแบบกลุ่มสร้าง [N, M] และ [N, K] ไม่ใช่การวนลูปทีละ个体 เมื่อตัดสินสามารถเชื่อมโยงรูปร่างเมทริกซ์และพื้นฐานการประเมินแบบกลุ่มได้

ข้อความที่สมเหตุสมผลควรอธิบายว่ารุ่น สถานะตัวเลขสุ่ม คำตอบที่ดีที่สุด ฯลฯ ก็ถูกรวมไว้ในคอนเทนเนอร์สถานะแบบรวมด้วย สะดวกสำหรับการทำเช็คพอยต์และการทำซ้ำ ถ้าคำตอบหยุดอยู่ที่ "ใส่ข้อมูลลงในเทนเซอร์" ให้เตือนว่าต้องใส่ใจการจัดการสถานะและการทำซ้ำด้วย

สำหรับสถานการณ์ N=2048, D=100, M=3, K=5 แนะนำประชากร [2048, 100] การประเมิน [2048, 3] ข้อจำกัด [2048, 5]; ตัวแปรสถานะเช่น generation ใช้เทนเซอร์สเกลาร์ best_x ใช้ [100] rng_state ใช้เทนเซอร์จำนวนเต็ม แคชประวัติสามารถใช้ [T, 2048, 100] หรือจัดเก็บแบบบีบอัด เมื่อประเมินแบบกลุ่ม ให้ทำเวกเตอร์ไรเซชันฟังก์ชันการประเมิน ให้รับ [N, D] และส่งคืน [N, M] และ [N, K]; 个体ที่มีความยาวผันแปรใช้การเติมและการมาสก์หรือการแบ่งบัคเก็ต หลังคำนวณให้เพิกเฉยส่วนที่ไม่ถูกต้องตามมาสก์

**ตรวจสอบความเข้าใจ**

ให้ผู้เรียนหนึ่งคนอธิบายด้วยประโยคเดียวว่าทำไม N ควรเป็นมิติกลุ่มชั้นนอกสุด และอธิบายอย่างน้อยหนึ่งตัวแปรสถานะว่าทำไมต้องทำเป็นเทนเซอร์ ถ้าคำตอบหยุดอยู่ที่ "ใส่ข้อมูลลงในเทนเซอร์" ให้เสริม: สิ่งสำคัญคือสัญญาข้อมูลแบบรวมและการดำเนินการตัวดำเนินการทั้งกลุ่ม

> **คำแนะนำการเชื่อมต่อ**
>
> หลังจากยืนยันว่าผู้เรียนสามารถแยกแยะคอนเทนเนอร์สี่ประเภท: ประชากร การประเมิน ข้อจำกัด และสถานะแล้ว จึงเข้าสู่ตัวอย่าง การประยุกต์ใช้ หรือสรุปในหน้าถัดไป

<a id="lecture-page-7"></a>

### การขนานตัวดำเนินการและการปรับแต่งการคอมไพล์

*หน้า 7*

> **เป้าหมายของหน้า:** ผู้เรียนควรเข้าใจกลไกการปรับแต่งการคอมไพล์ระดับล่างเมื่อการกลายพันธุ์ การผสมข้าม ฯลฯ กระทำกับทั้งประชากร

> **เป้าหมายของหน้า**
>
> เข้าใจว่าในฐานการประมวลผลสมัยใหม่ของ EvoX หน่วยดำเนินการขั้นต่ำของตัวดำเนินการวิวัฒนาการเปลี่ยนจาก "个体" เป็น "เทนเซอร์ประชากร"; เชี่ยวชาญว่าตัวดำเนินการแบบเทนเซอร์และการคอมไพล์กราฟการคำนวณเพิ่ม吞吐ของการวิวัฒนาการแบบกลุ่มอย่างไร ขณะที่ยังคงความหมายของอัลกอริทึมไม่เปลี่ยนแปลง

> **ลำดับการอธิบาย**
>
> สร้างการตัดสิน "ตัวดำเนินการกระทำกับใคร" ก่อน แล้วเปรียบเทียบความแตกต่างของการดำเนินการระหว่างการวนลูปทีละ个体กับตัวดำเนินการระดับเทนเซอร์ จากนั้นอธิบายวิธีการปรับแต่งของการคอมไพล์กราฟการคำนวณจากลำดับตัวดำเนินการเป็นแผนการดำเนินการ สุดท้ายใช้กรณีศึกษาและแบบฝึกหัดเสริมหลักการ "ประสิทธิภาพเปลี่ยนไป ความหมายไม่เปลี่ยน"

**ประเด็นการสอน**

- 1. เทนเซอร์ประชากรมิรูปร่าง [N, D] N คือขนาดประชากร D คือมิติตัวแปรการตัดสินใจ ตัวดำเนินการเช่นการกลายพันธุ์ การผสมข้าม การเลือกสามารถกระทำโดยตรงกับเทนเซอร์ประชากรทั้งตัว การเรียกครั้งเดียวครอบคลุม个体ทั้ง N ตัว
- มิติ个体ทำหน้าที่เป็นมิติกลุ่ม อุปกรณ์สามารถดำเนินการขนานขนาดใหญ่ได้ 吞吐ขยายตามขนาดประชากร 2. การเขียนทีละ个体เช่น for ind in population: ind = mutate(ind) จะแยกตัวดำเนินการแต่ละตัวเป็น N 次การเรียกเล็ก ๆ นำมาซึ่งการจัดตารางเฟรมเวิร์กและการเปิดเคอร์เนลบ่อยครั้ง
- แต่ละกลุ่มมีเพียง 1 อุปกรณ์หน่วยขนานยากที่จะเติมเต็ม การสร้างและปล่อยผลลัพธ์กลางซ้ำ ๆ ยังเพิ่มค่าใช้จ่ายในการจัดสรรหน่วยความจำ GPU และการย้ายข้อมูล กุญแจของการปรับปรุงคือ population = mutate(population_tensor) ให้ตัวดำเนินการดำเนินการโดยใช้เทนเซอร์ประชากรเป็นหน่วย 3. การคอมไพล์กราฟการคำนวณจัดระเบียบ "การกลายพันธุ์ → การผสมข้าม → การเลือก" เป็นกราฟการคำนวณ ทำการปรับแต่งทั่วทั้งกราฟ: การหลอมรวมตัวดำเนินการสามารถรวมการดำเนินการทีละองค์ประกอบหลายรายการเป็นเคอร์เนลน้อยลง ลดเทนเซอร์กลางและการอ่านเขียน
- การสร้างเคอร์เนลและการจัดตารางใช้จำนวนครั้งการเปิดเคอร์เนลน้อยลงเพื่อเสร็จการวิวัฒนาการทั้งรุ่น
- การใช้หน่วยความจำซ้ำวางแผนบัฟเฟอร์ล่วงหน้าสำหรับผลลัพธ์กลาง ลดค่าใช้จ่ายในการจัดสรรและการย้าย การปรับแต่งเปลี่ยนเพียง "คำนวณอย่างไร" ไม่เปลี่ยน "คำนวณอะไร" จำนวนเคอร์เนล ขนาดเทนเซอร์กลาง กลยุทธ์หน่วยความจำและการจัดตารางสามารถเปลี่ยนได้ แต่ความหมายเชิงตรรกะของการกลายพันธุ์ การผสมข้าม การเลือก ลำดับการรวมตัวดำเนินการ และวิธีการใช้ตัวเลขสุ่มควรคงเดิม
- ภายใต้เมล็ดสุ่มเดียวกัน วิถีและผลลัพธ์แต่ละรุ่นก่อนและหลังการปรับแต่งควรสอดคล้องกัน เข้าใจผิดว่าการทำเป็นเทนเซอร์คือการเปลี่ยนอัลกอริทึมวิวัฒนาการ หรือคิดว่าการปรับแต่งการคอมไพล์จะทำให้อัลกอริทึม "ฉลาดขึ้น" การทำเป็นเทนเซอร์เพียงนำตัวดำเนินการเดียวกันไปกระทำกับเทนเซอร์ประชากรทั้งตัว
- การปรับแต่งการคอมไพล์ก็ตกอยู่ที่ชั้นการดำเนินการเท่านั้น หลังการปรับแต่ง ถ้าไม่ทำการตรวจสอบการถดถอย อาจเข้าใจผิดว่าความแตกต่างของการใช้งานเป็นการปรับปรุงอัลกอริทึมได้ง่าย

> **คำใบ้สื่อ**
>
> - ในภาพด้านซ้ายคือเทนเซอร์ประชากร [N, D] และ个体ทั้งหมด ตรงกลางคือกราฟการคำนวณตัวดำเนินการวิวัฒนาการ "การกลายพันธุ์ → การผสมข้าม → การเลือก" ด้านขวาเปรียบเทียบก่อนการคอมไพล์ "การวนลูปทีละ个体 การเปิดเคอร์เนลหลายครั้ง มิติกลุ่มเป็น 1" และหลังการคอมไพล์ "กราฟการคำนวณที่หลอมรวม เคอร์เนล GPU ที่มีประสิทธิภาพจำนวนน้อย การส่งต่อแบบกลุ่มหนึ่งครั้งเสร็จการวิวัฒนาการทั้งรุ่น" สามารถใช้กระบวนการนี้ช่วยนักศึกษาเชื่อมโยงการทำเป็นเทนเซอร์กับการปรับแต่งการคอมไพล์

**การจัดการแบบฝึกหัด**

แบบฝึกหัดในหน้านี้เกี่ยวกับความละเอียดของการดำเนินการและการรักษาความหมาย

การเรียกตัวดำเนินการกลายพันธุ์ครั้งหนึ่งปกติกระทำกับเทนเซอร์ประชากรทั้งตัว [N, D]; ไม่ใช่เวกเตอร์ค่าฟังก์ชันเป้าหมาย และไม่ใช่เวกเตอร์การตัดสินใจของ个体单个

ลูป Python/CPU ทีละ个体ช้า เพราะการเรียกขนาดเล็กจำนวนมากนำมาซึ่งค่าใช้จ่ายในการจัดตารางและเฟรมเวิร์ก และมิติกลุ่มเป็น 1 อัตราการใช้อุปกรณ์ต่ำ

ผลประโยชน์หลักของการหลอมรวมตัวดำเนินการคือการรวมการดำเนินการทีละองค์ประกอบหลายรายการเป็นเคอร์เนลน้อยลง ลดเทนเซอร์กลางและจำนวนครั้งการเปิดเคอร์เนล; ไม่เปลี่ยนการกระจายความน่าจะเป็นหรือความหมายของตัวดำเนินการ

เปลี่ยนเพียงวิธีการดำเนินการ ไม่เปลี่ยนความหมายเชิงตรรกะและลำดับการรวมของการกลายพันธุ์ การผสมข้าม การเลือก

การปรับปรุง population[i] = mutate(ind) ควรเปลี่ยนเป็น population = mutate(population_tensor) และมอบลำดับตัวดำเนินการให้การคอมไพล์กราฟการคำนวณปรับแต่ง; การลด N เปลี่ยนไวยากรณ์ลูป หรือใช้เพียง CPU หลายเธรดไม่ได้แก้ปัญหาความละเอียดของการดำเนินการ

ตัวอย่างกลยุทธ์วิวัฒนาการที่มีขนาดประชากร N = 4096 มิติ D = 128 การใช้งานเริ่มต้นมีอัตราการใช้อุปกรณ์ต่ำกว่า 30% เวลาต่อรุ่นเพิ่มขึ้น近似เชิงเส้นตาม N การใช้หน่วยความจำ GPU สูง การวินิจฉัยควรอยู่ที่ความละเอียดของการดำเนินการ: การวนลูปทีละ个体ขยายค่าใช้จ่ายคงที่เป็น N เท่า มิติกลุ่มเสื่อมลงเป็น 1 หน่วยขนานเติมไม่เต็ม ผลลัพธ์กลางถูกสร้างและปล่อยซ้ำ ๆ การปรับปรุงแบ่งเป็นสามขั้น: ขั้นแรกทำตัวดำเนินการเป็นเทนเซอร์ ให้การกลายพันธุ์ การผสมข้าม การเลือกกระทำโดยตรงกับเทนเซอร์ [N, D]; ขั้นที่สองเปิดใช้การคอมไพล์กราฟการคำนวณ ทำการหลอมรวมตัวดำเนินการ การสร้างเคอร์เนล การใช้หน่วยความจำซ้ำ และการปรับแต่งการจัดตาราง; ขั้นที่สามกำหนดเมล็ดสุ่มคงที่ทำการตรวจสอบการถดถอย เปรียบเทียบเส้นโค้งความเหมาะสมที่ดีที่สุดแต่ละรุ่นและสถิติประชากรก่อนและหลังการปรับแต่ง

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

**ตรวจสอบความเข้าใจ**

ตัวดำเนินการวิวัฒนาการหนึ่งตัวควรกระทำกับ个体单个หรือเทนเซอร์ประชากรทั้งตัว? สายโซ่สมมูลจากการหลอมรวมตัวดำเนินการถึงอัตราการใช้อุปกรณ์คืออะไร? จะตรวจสอบได้อย่างไรว่าการปรับแต่งไม่เปลี่ยนความหมายของอัลกอริทึม? คำตอบที่คาดหวัง: กระทำกับเทนเซอร์ประชากร [N, D]; ยิ่งหลอมรวมมาก การเปิดเคอร์เนลยิ่งน้อย การอ่านเขียนเทนเซอร์กลางยิ่งน้อย อัตราการใช้อุปกรณ์ยิ่งสูง; ใช้เมล็ดสุ่มเดียวกันเปรียบเทียบเส้นโค้งความเหมาะสมที่ดีที่สุดแต่ละรุ่นและสถิติประชากรก่อนและหลังการปรับแต่ง

> **คำแนะนำการเชื่อมต่อ**
>
> หลังจากยืนยันว่านักศึกษาสามารถแยกแยะการทำเป็นเทนเซอร์กับการคอมไพล์กราฟการคำนวณ และสามารถใช้การถดถอยด้วยเมล็ดเดียวกันตรวจสอบความหมายที่ไม่เปลี่ยนแปลงได้แล้ว จึงเข้าสู่ตัวอย่าง การประยุกต์ใช้ หรือสรุปในหน้าถัดไป

<a id="lecture-page-8"></a>

### การออกแบบสถาปัตยกรรมฐานแบบเปิดและแยกส่วน

*หน้า 8*

> **เป้าหมายของหน้า:** ผู้เรียนควรเข้าใจหลักการออกแบบแยกส่วนและแบ่งองค์ประกอบหลักของสถาปัตยกรรมฐาน EvoX

> **เป้าหมายของหน้า**
>
> เข้าใจหลักการออกแบบของฐานแบบเปิดและแยกส่วน EvoX และการแบ่งหน้าที่ของห้าโมดูลหลัก สามารถใช้ "ขอบเขตโมดูล" ตัดสินตำแหน่งที่ความต้องการจะตก

> **ลำดับการอธิบาย**
>
> ให้การตัดสินหลักก่อน — นักวิจัยไม่ควรใช้เวลากับการสื่อสารแบบขนาน การจัดสรรอุปกรณ์ และการทนต่อความผิดพลาดแบบกระจาย; จากนั้นนำเข้าห้าโมดูลระดับแรก สุดท้ายใช้แผนภาพสถาปัตยกรรมอธิบายความสัมพันธ์แบบชั้นระหว่างตรรกะวิวัฒนาการชั้นบนกับการจัดตารางแบบรวมชั้นล่าง

**ประเด็นการสอน**

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

**การจัดการแบบฝึกหัด**

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

เมื่อป้อนกลับ ให้นักศึกษากลับไปที่ "ขอบเขตหน้าที่ของห้าโมดูล" หาหลักฐานก่อน แล้วจึงอธิบายว่าทำไมตัวเลือกอื่นถึงทำลายขอบเขตหรือสับสนหน้าที่

ในการขยายคลัสเตอร์ GPU หลายโหนด โมดูลอัลกอริทึม โมดูลปัญหา ขั้นตอนการทำงาน โมดูลการติดตามควรคงเดิม เพราะหน้าที่ของ它们ไม่เกี่ยวข้องกับรูปแบบพลังการประมวลผล; สิ่งที่ต้องแก้ไขหรือกำหนดค่าใหม่คือตัวจัดตาราง Runtime ถ้าโต้แย้งระหว่าง "การจัดสรรอุปกรณ์และการสื่อสารที่เขียนด้วยมือภายในตัวดำเนินการ" กับ "พึ่งพาตัวจัดตาราง Runtime ทั้งหมด" กุญแจของการประเมินคือการเปลี่ยนแปลงตกอยู่ที่ชั้นใด: การจัดสรรอุปกรณ์และการสื่อสารเป็นของชั้นการดำเนินการ การเขียนลงในตัวดำเนินการจะ耦合รายละเอียดพลังการประมวลผลเข้าไปในโมดูลอัลกอริทึม แผนการตรวจสอบคือเปรียบเทียบเวลาต้นทางถึงปลายทาง อัตราการใช้อุปกรณ์ สัดส่วนค่าใช้จ่ายการสื่อสารระหว่างการจัดตาราง Runtime ล้วน ๆ กับการจัดตารางที่เขียนด้วยมือบนปัญหาการปรับให้เหมาะสมแบบผสมเดียวกัน และบันทึกค่าใช้จ่ายเมื่อ迁移ไปยังฮาร์ดแวร์ประเภทอื่นหรือภารกิจการเรียนรู้แบบเสริมกำลัง;
พิจารณาการ下沉เฉพาะจุดก็ต่อเมื่อมีผลตอบแทนที่ชัดเจนและทำซ้ำได้เท่านั้นที่สามารถชดเชยค่าใช้จ่ายในการ耦合และการ迁移ได้

**ตรวจสอบความเข้าใจ**

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

<a id="lecture-page-9"></a>

### การแบ่งโมดูลอัลกอริทึมและปัญหา

*หน้า 9*

> **เป้าหมายของหน้า:** ผู้เรียนควรเข้าใจหน้าที่และวิธีการมีปฏิสัมพันธ์ของโมดูลอัลกอริทึมและโมดูลปัญหาในสถาปัตยกรรมฐาน

> **เป้าหมายของหน้า**
>
> เข้าใจขอบเขตหน้าที่ สัญญาอินเทอร์เฟซของการแบ่งระหว่างโมดูลอัลกอริทึมและโมดูลปัญหาในฐานแบบเปิดและแยกส่วน EvoX และความหมายของการแบ่งนี้ต่อปัญหาหลายเป้าหมาย มีข้อจำกัด และมีผลป้อนกลับที่มีค่าใช้จ่ายสูง

> **ลำดับการอธิบาย**
>
> เริ่มด้วยประโยคเดียวที่ยึดการแบ่งงาน — โมดูลอัลกอริทึมตอบ "ค้นหาอย่างไร" โมดูลปัญหาตอบ "ประเมินอะไร สภาพแวดล้อมให้ผลป้อนกลับอย่างไร" จากนั้นขยายอินพุตและเอาต์พุตของทั้งสอง สุดท้ายลงสู่การขยายตัวอย่างอิสระ การประกอบได้ และการ迁移ได้ที่เกิดจากสัญญาอินเทอร์เฟซที่มั่นคง

**ประเด็นการสอน**

- 1. โมดูลอัลกอริทึมห่อกลยุทธ์การค้นหาและกลไกวิวัฒนาการ รับผิดชอบการสร้างคำตอบ候选 การเริ่มต้นประชากร การกลายพันธุ์ การผสมข้าม การเลือก การรักษาชนชั้น elite และการควบคุมการค้นหา เช่น จำนวนรอบวนซ้ำ ขนาดประชากร การรีสตาร์ทและเกณฑ์การลู่เข้า การจัดตารางพารามิเตอร์ตัวดำเนินการ จุดสำคัญคือมันพึ่งพาเพียงสมมติฐานนามธรรมว่า "คำตอบ候选จะถูกประเมิน" ไม่สนใจความหมายทางกายภาพและรูปแบบเฉพาะของฟังก์ชันเป้าหมาย 2. โมดูลปัญหากำหนดเกณฑ์การประเมินและผลป้อนกลับของสภาพแวดล้อม แปลงคำตอบ候选เป็นผลป้อนกลับที่เปรียบเทียบได้ เช่น ค่าเป้าหมาย ความเหมาะสม ปริมาณการละเมิดข้อจำกัด หรือผลลัพธ์การมีปฏิสัมพันธ์กับสภาพแวดล้อมหนึ่งครั้ง
- พร้อมกันประกาศมิติตัวแปร ช่วงค่า และกฎของพื้นที่ที่เป็นไปได้ ให้อัลกอริทึมรู้ว่าสร้างคำตอบ候选ที่ไหน โมดูลปัญหาให้การประเมินที่สอดคล้องกันสำหรับชุดคำตอบ候选เดียวกัน ทำให้个体ต่าง ๆ รุ่นต่าง ๆ หรือแม้แต่อัลกอริทึมต่าง ๆ เปรียบเทียบข้ามกันได้ โมดูลอัลกอริทึมส่งชุดคำตอบ候选 โมดูลปัญหาส่งคืนผลการประเมินที่มีโครงสร้าง (เวกเตอร์เป้าหมาย ปริมาณการละเมิดข้อจำกัด และข้อมูลวินิจฉัยเสริมที่เป็นทางเลือก) โมดูลอัลกอริทึมใช้สิ่งนี้ในการอัปเดตประชากรและขับเคลื่อนรุ่นถัดไป การไปกลับ "ส่ง—คืน" หนึ่งครั้งคือวิวัฒนาการหนึ่งรุ่น ทิศทางของความถูกต้องสำคัญ: ฝั่งอัลกอริทึมส่งคำตอบ候选ที่รอการประเมิน ฝั่งปัญหาส่งคืนผลการประเมิน การขยายตัวอย่างอิสระ — เพิ่มหรือเปลี่ยนอัลกอริทึมไม่ส่งผลต่อคำจำกัดความปัญหา แก้ไขหรือเพิ่มปัญหาไม่ต้องเขียนโมดูลอัลกอริทึมใหม่
- ประกอบได้ — โมดูลปัญหาเดียวกันสามารถเชื่อมต่อกับอัลกอริทึมวิวัฒนาการต่าง ๆ โมดูลอัลกอริทึมเดียวกันสามารถสลับไปยังโมดูลปัญหาต่าง ๆ ได้
- 迁移ได้ — ตราบใดที่สัญญามั่นคง ทั้งสองฝั่งสามารถใช้ซ้ำ แทนที่ และ迁移ข้ามภารกิจได้ ปัญหาทางวิศวกรรมจริง เช่น การออกแบบปีก supercritical มักมีหลายเป้าหมายที่ขัดแย้งกัน ข้อจำกัดที่ซ้อนกัน และผลป้อนกลับที่มีค่าใช้จ่ายสูงและเบาบางพร้อมกัน โมดูลปัญหาแปลงหลายเป้าหมายและข้อจำกัดเป็นผลการประเมินที่เปรียบเทียบได้อย่างสม่ำเสมอ ใช้แบบจำลองตัวแทนลดค่าใช้จ่ายเมื่อจำเป็น
- โมดูลอัลกอริทึมรักษาชุด候选ที่หลากหลาย รองรับผู้เชี่ยวชาญในการแลกเปลี่ยนระหว่างแรงยก แรงต้าน และส่วนเผื่อความปลอดภัย ดังนั้นสัญญาไม่สามารถ承载เพียงความเหมาะสมสเกลาร์เดียว ต้อง承载เวกเตอร์เป้าหมายและปริมาณการละเมิดข้อจำกัดด้วย มิฉะนั้นข้อมูลหลายเป้าหมายและข้อจำกัดจะสูญหายอย่างถาวรที่อินเทอร์เฟซ

**คำสำคัญที่ครอบคลุม**

- โมดูลอัลกอริทึม、โมดูลปัญหา、ชุดคำตอบ候选、ผลการประเมิน、เวกเตอร์เป้าหมาย、ปริมาณการละเมิดข้อจำกัด、สัญญาอินเทอร์เฟซ、การขยายตัวอย่างอิสระ、ประกอบได้、迁移ได้、แบบจำลองตัวแทน การเขียนฟังก์ชันเป้าหมาย การจัดการข้อจำกัด หรือกฎฮิวริสติกเฉพาะปัญหาลงในโมดูลอัลกอริทึม หรือใช้การเลือกและการอัปเดตประชากรในโมดูลปัญหา จะทำให้ทั้งสองฝั่ง耦合ใหม่ คำถามตรวจสอบตนเองคือ: "ถ้าแก้เพียงแบบจำลองทางกายภาพ ฉันต้องเปลี่ยนเพียงโมดูลปัญหาใช่ไหม?" คำตอบต้องเป็นยืนยัน อินเทอร์เฟซต้อง "แคบแต่ครบ": แคบหมายถึงฟิลด์น้อยและมั่นคง ส่งเพียงชุดคำตอบ候选และผลการประเมินสองประเภทข้อมูล
- ครบหมายถึงข้อมูลสำคัญต้องไม่ขาดหาย เวกเตอร์เป้าหมาย ปริมาณการละเมิดข้อจำกัด มิติตัวแปรและขอบเขตต้องเก็บไว้ การส่งคืนเพียงความเหมาะสมสเกลาร์เดียวเป็นข้อบกพร่องของการออกแบบที่แก้ไขภายหลังได้ยากที่สุด

> **คำใบ้แบบฝึกหัด**
>
> - คำถามเลือกตอบห้าข้อตรวจสอบตามลำดับ — ใครรับผิดชอบการค้นหา หน้าที่หลักของโมดูลปัญหา ทิศทางกระแสข้อมูลของสัญญา การขยายตัวอย่างอิสระหลังการแยกส่วน ผลของการใช้ความเหมาะสมสเกลาร์เดียว คำตอบที่ถูกต้องชี้ไปตามลำดับ: โมดูลอัลกอริทึมสร้างคำตอบ候选และอัปเดตประชากร
> - โมดูลปัญหาแปลงคำตอบ候选เป็นค่าเป้าหมาย ปริมาณการละเมิดข้อจำกัด หรือผลลัพธ์การมีปฏิสัมพันธ์กับสภาพแวดล้อม
> - โมดูลอัลกอริทึมสร้างชุดคำตอบ候选 โมดูลปัญหาส่งคืนผลการประเมิน
> - ตราบใดที่สัญญาไม่เปลี่ยน เมื่อแทนที่ฝั่งใดฝั่งหนึ่ง อีกฝั่งไม่ต้องเขียนใหม่
> - การทิ้งข้อมูลข้อจำกัดจะทำให้อัลกอริทึมไม่ได้รับผลป้อนกลับข้อจำกัด ปัญหาที่มีข้อจำกัดจัดการได้ยาก เมื่อป้อนกลับ ถ้านักศึกษาตอบถูก ให้ขอให้อธิบายเหตุผล
> - ถ้าตอบผิด นำกลับไปที่ "ใครค้นหา ใครประเมิน" และ "สัญญาครบถ้วนหรือไม่" สองจุดเพื่อตัดสินใหม่ เมื่อ迁移การปรับให้เหมาะสมทางอากาศพลศาสตร์ปีกไปสู่การลดน้ำหนักโครงสร้างปีก การเปลี่ยนอัลกอริทึมวิวัฒนาการไม่ต้องเขียนโมดูลปัญหาใหม่ เพราะโมดูลปัญหาสัญญากับภายนอกเพียง "อินพุตชุดคำตอบ候选 เอาต์พุตผลการประเมิน" ไม่เกี่ยวข้องกับกลไกการเลือก การอัปเดต หรือการจัดเรียงภายในอัลกอริทึม เมื่อใช้อัลกอริทึมเดียวกันซ้ำสำหรับการลดน้ำหนักโครงสร้าง โมดูลปัญหาต้องส่งคืนข้อมูลอย่างน้อยสามประเภท: ค่าเป้าหมาย (น้ำหนักโครงสร้าง ถ้ามีตัวชี้วัดความแข็งก็เป็นเวกเตอร์เป้าหมาย) ปริมาณการละเมิดข้อจำกัด (ระดับการล้ำเส้นของข้อจำกัดความแข็งและความเป็นไปได้ทางเรขาคณิต) มิติตัวแปรและช่วงค่าของพื้นที่ค้นหา ขาดไม่ได้ เพราะอัลกอริทึมรับผิดชอบเพียงการค้นหา ต้องการค่าเป้าหมายเพื่อตัดสินดีกว่าแย่ ต้องการปริมาณการละเมิดข้อจำกัดเพื่อแยกแยะที่เป็นไปได้กับเป็นไปไม่ได้ ต้องการขอบเขตที่สอดคล้องกันเพื่อสร้างคำตอบ候选ที่ถูกต้อง

**กิจกรรมในชั้นเรียน**

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

**ตรวจสอบความเข้าใจ**

สุ่มให้นักศึกษาหนึ่งคนอธิบายกระแสข้อมูล "ชุดคำตอบ候选 ⇄ ผลการประเมิน" ด้วยคำพูดของตนเอง และอธิบายว่าทำไมการส่งคืนเพียงความเหมาะสมสเกลาร์เดียวจะทำลายการจัดการปัญหาที่มีข้อจำกัด

> **คำแนะนำการเชื่อมต่อ**
>
> หลังจากยืนยันว่านักศึกษาสามารถแยกแยะการค้นหากับการประเมิน และสามารถอธิบายได้ว่าสัญญาต้อง "แคบแต่ครบ" แล้ว จึงเข้าสู่ตัวอย่าง การประยุกต์ใช้ หรือสรุปในหน้าถัดไป

<a id="lecture-page-10"></a>

### การจัดการขั้นตอนการทำงานและโมดูลการติดตาม

*หน้า 10*

> **เป้าหมายของหน้า:** ผู้เรียนควรเข้าใจบทบาทของขั้นตอนการทำงานและการควบคุมโมดูลการติดตามในการจัดการกระบวนการวิวัฒนาการ

> **เป้าหมายของหน้า**
>
> หลังเรียนหน้านี้ ผู้เรียนควรสามารถแยกแยะหน้าที่ของโมดูลขั้นตอนการทำงานกับโมดูลการติดตาม และอธิบายว่าทั้งสองเปลี่ยนลูปวิวัฒนาการจาก "กล่องดำที่ไม่รู้จัก" เป็นกระบวนการที่ควบคุมได้ สังเกตได้ ตัดสินได้ แทรกแซงได้ และทำซ้ำได้อย่างไร

> **ลำดับการอธิบาย**
>
> เริ่มด้วยประโยคเดียวที่สร้างการแบ่งงาน — ขั้นตอนการทำงานตอบ "รันตามลำดับอะไร" การติดตามตอบ "ตอนนี้รันถึงไหน ดีไหม ต้องขยับหรือไม่" จากนั้นขยายลำดับ ขอบย้อนกลับ และขอบเขตระยะของขั้นตอนการทำงาน แล้วอธิบายว่าการติดตามเก็บสถานะ เปิดเผยตัวชี้วัด และขับเคลื่อนการตัดสินใจอย่างไร สุดท้ายรวบเป็นสามขอบเขตหน้าที่กับค่าใช้จ่ายของการสังเกตได้ และใช้ตัวอย่างการวิวัฒนาการแบบเทนเซอร์บน GPU เชื่อมตรรกะทั้งชุด

**ประเด็นการสอน**

- 1. โมดูลขั้นตอนการทำงานจัดเรียงขั้นตอนและการพึ่งพา ไม่ใช่ตรรกะของอัลกอริทึมเอง มันกำหนดลำดับ ขอบย้อนกลับ และขอบเขตระยะของ "การเริ่มต้น → การประเมิน (แบบกลุ่ม) → การเลือก → การกลายพันธุ์/การผสมข้าม → การอัปเดตสถานะ → การตัดสินสิ้นสุด" และเชื่อมโมดูลอัลกอริทึมกับโมดูลปัญหาผ่านอินเทอร์เฟซแบบรวม กุญแจของการจัดเรียงอยู่ที่ความละเอียดและขอบเขต: มอง "การประเมินแบบกลุ่มครั้งหนึ่ง" เป็นระยะที่จัดตารางได้ทั้งก้อน ไม่ใช่推进ทีละ个体
- ขอบเขตระยะเป็นทั้งจุดสุ่มตัวอย่างการติดตามและจุดสลับการจัดตารางพร้อมกัน 2. โมดูลการติดตามเป็นชั้นการเก็บและเปิดเผยสถานะการทำงาน ติดตามขนาดประชากร จำนวนครั้งการประเมิน การกระจายความเหมาะสม การลู่เข้าและความหลากหลาย เวลาต่อรุ่น หน่วยความจำ GPU และ吞吐 อย่างต่อเนื่อง แต่จุดประสงค์ของการสังเกตไม่ใช่การบันทึก แต่เป็นการตัดสินใจ: ตัวชี้วัดใช้สำหรับทริกเกอร์การสิ้นสุด การหยุดเร็ว การรีสตาร์ท การสลับพารามิเตอร์หรือกลยุทธ์ สร้างวงปิด "การติดตาม → การตัดสิน → การแทรกแซง" 3. การควบคุมได้ยังต้องการสถานะที่สามารถซีเรียลไลซ์ได้ การบันทึกและกู้คืนเช็คพอยต์ทำให้วิวัฒนาการระยะยาวสามารถหยุดและรันต่อได้ ความล้มเหลวสามารถระบุตำแหน่งได้ การทดลองทำซ้ำได้ พร้อมกันนั้น การแยกส่วนต้องการให้การติดตามติดตั้งผ่าน callback หรือ hook ไม่รุกล้ำโมดูลอัลกอริทึมและปัญหา ดังนั้นคอนโซล 日志 แผงเส้นโค้งและแบ็กเอนด์การติดตามที่แตกต่างกันสามารถสลับได้โดยไม่ต้องแก้ไขอัลกอริทึมหลัก ขั้นตอนการทำงานจัดการ "ลำดับและระยะ" การติดตามจัดการ "สถานะและตัวชี้วัด" ตัวจัดตารางเวลารันไทม์จัดการ "ทรัพยากรและการแมปแบบขนาน" ข้อผิดพลาดที่พบบ่อยคือการยัดการแมปทรัพยากรหรือตรรกะอัลกอริทึมลงในขั้นตอนการทำงาน หรือยัดการควบคุมลำดับลงในการติดตาม ทำให้เกิดการ耦合และไม่สามารถทำซ้ำได้ การสังเกตได้ก็มีค่าใช้จ่ายเช่นกัน: การสุ่มตัวอย่างความถี่สูงและการส่งกลับแบบซิงโครนัสอาจขัดจังหวะไปป์ไลน์แบบขนาน ดังนั้นความถี่การสุ่มตัวอย่าง วิธีการรวมตัวชี้วัด และกลยุทธ์การเขียนลงดิสก์แบบอะซิงโครนัสต้องแลกเปลี่ยนตามจุดประสงค์ของการทดลอง ขั้นตอนการทำงานจัดตาราง "การประเมินแบบกลุ่ม" เป็นระยะหนึ่งทั้งก้อน
- โมดูลการติดตามบันทึกความเหมาะสมที่ดีที่สุดและเฉลี่ย ความหลากหลายของประชากร และเวลาต่อรุ่นภายในระยะเดียวกันตามรุ่น
- เมื่อตัวชี้วัดหยุดชะงักติดต่อกัน N รุ่น ทริกเกอร์การตัดสินสิ้นสุดหรือสลับไปยังกลยุทธ์ที่มีการรบกวนมากขึ้น พร้อมเขียนเช็คพอยต์ลงดิสก์แบบซิงโครนัส ทำให้การวิวัฒนาการครั้งนี้ทั้งทำซ้ำได้และรันต่อจากจุดที่หยุดได้

**คำสำคัญที่ครอบคลุม**

- โมดูลขั้นตอนการทำงาน、โมดูลการติดตาม、ขั้นตอนและการพึ่งพา、ขอบเขตระยะ、ขอบย้อนกลับ、การประเมินแบบกลุ่ม、การสังเกตได้、การติดตาม→การตัดสิน→การแทรกแซง、เช็คพอยต์、callback/hook、ขอบเขตหน้าที่、ค่าใช้จ่ายในการสุ่มตัวอย่าง

> **คำใบ้แบบฝึกหัด**
>
> - แบบฝึกหัดในหน้านี้เกี่ยวกับห้าการตัดสิน วัตถุที่ขั้นตอนการทำงานจัดเรียงโดยตรงคือขั้นตอนและการพึ่งพา ไม่ใช่สูตรตัวดำเนินการ การแมปหน่วยความจำ GPU หรือการเข้ารหัสฟังก์ชันเป้าหมาย
> - การจัดตารางการประเมินแบบกลุ่มเป็นระยะทั้งก้อน เพราะความละเอียดและขอบเขตเหมาะสมกว่า ขอบเขตระยะทำหน้าที่สุ่มตัวอย่างการติดตามและสลับการจัดตารางพร้อมกัน
> - จุดประสงค์พื้นฐานของการติดตามคือการตัดสินใจ ไม่ใช่การเก็บถาวรภายหลัง
> - การติดตั้งผ่าน callback หรือ hook เพื่อแยกส่วน ทำให้แบ็กเอนด์การติดตามสลับได้
> - การสังเกตได้ต้องแลกเปลี่ยนความถี่การสุ่มตัวอย่าง การรวมตัวชี้วัด และกลยุทธ์การเขียนลงดิสก์ เพราะการสุ่มตัวอย่างความถี่สูงอาจรบกวนไปป์ไลน์แบบขนาน เมื่อตอบถูก เน้นว่าเหตุผลมาจากสองเส้น "ลำดับและระยะ" และ "การติดตาม→การตัดสิน→การแทรกแซง"
> - เมื่อตอบผิด กลับไปที่ขอบเขตหน้าที่ แยกแยะสี่ประเภท: ตรรกะอัลกอริทึม การแมปทรัพยากร การควบคุมลำดับ และการเก็บสถานะ

**ตรวจสอบความเข้าใจ**

สามารถใช้กรณี "การหยุดชะงักที่น่าสงสัยของการวิวัฒนาการแบบเทนเซอร์ระยะยาว" ตรวจสอบความเชี่ยวชาญ ใช้ขอบเขตระยะแยกเวลาของการประเมินแบบกลุ่ม การเลือก การกลายพันธุ์ การอัปเดตสถานะออกจากกัน ตัดสินว่าการเพิ่มขึ้นของเวลาต่อรุ่นมาจากระยะใด; จากนั้นซ้อนเส้นโค้งความเหมาะสมเฉลี่ยที่หยุดชะงักและความหลากหลายที่ลดลง ตัดสินว่าลู่เข้าสู่ความเสถียรหรือติดอยู่ในจุดที่เหมาะสมเฉพาะที่ แผนการจัดการจัดตาม "การติดตาม → การตัดสิน → การแทรกแซง": ชั้นการติดตามเก็บจำนวนรุ่นที่ความเหมาะสมหยุดชะงัก ความหลากหลาย และเวลาต่อรุ่น; ชั้นการตัดสินกำหนด "การปรับปรุงต่ำกว่าเกณฑ์ติดต่อกัน N รุ่นและความหลากหลายต่ำกว่าขอบเขตล่าง" เป็นการหยุดชะงัก "เวลาต่อรุ่นเกินเกณฑ์" เป็นความผิดปกติของทรัพยากร; ชั้นการแทรกแซงทริกเกอร์การสลับกลยุทธ์ การหยุดเร็ว หรือการรีสตาร์ท และปรับขนาดกลุ่มหรือการแมปแบบขนานสำหรับความผิดปกติของเวลา

ก่อนการจัดการให้เขียนเช็คพอยต์ลงดิสก์ก่อน รับประกันการทดลองทำซ้ำได้ ความล้มเหลวระบุตำแหน่งได้ วิวัฒนาการระยะยาวหยุดและรันต่อได้

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

<a id="lecture-page-11"></a>

### ตัวจัดตาราง Runtime และการจัดการพลังการประมวลผลที่แตกต่างกัน

*หน้า 11*

> **เป้าหมายของหน้า:** ผู้เรียนควรเชี่ยวชาญบทบาทหลักของตัวจัดตาราง Runtime ในการจัดสรรฮาร์ดแวร์ที่แตกต่างกันและความสามารถในการประกอบอัลกอริทึม

> **เป้าหมายของหน้า**
>
> เชี่ยวชาญตำแหน่งของตัวจัดตาราง Runtime ใน EvoX — เป็นศูนย์กลางการดำเนินการที่เชื่อมตรรกะอัลกอริทึมกับฮาร์ดแวร์ทางกายภาพ รับผิดชอบการแมปอัลกอริทึมวิวัฒนาการชั้นบน คำจำกัดความปัญหา และขั้นตอนการทำงานไปยังทรัพยากรพลังการประมวลผลที่แตกต่างกัน เช่น GPU อุปกรณ์เร่งความเร็ว (TPU/NPU) และคลัสเตอร์แบบกระจาย และรักษาความสามารถในการประกอบที่มีประสิทธิภาพของโมดูลอัลกอริทึมขณะปิดบังความแตกต่างของฮาร์ดแวร์

> **ลำดับการอธิบาย**
>
> 1. แยกแยะชั้นอัลกอริทึมกับชั้นการดำเนินการก่อน ชั้นอัลกอริทึมสนใจ "ทำอะไร" Runtime สนใจ "ทำที่ไหน ทำอย่างไร" การแยกนี้เป็นกุญแจของการเข้าใจสถาปัตยกรรม EvoX
>
> การจัดตารางพลังการประมวลผลที่แตกต่างกัน จัดการ GPU อุปกรณ์เร่งความเร็ว และคลัสเตอร์แบบกระจายแบบรวม จัดสรรภารกิจ ตัวดำเนินการ และกราฟการคำนวณเทนเซอร์ไปยังแบ็กเอนด์ที่เหมาะสม; การประสานการพึ่งพาและสถานะ รับประกันความสัมพันธ์การพึ่งพาภารกิจและสถานะการดำเนินการซิงโครไนซ์อย่างถูกต้อง; อินเทอร์เฟซการจัดตารางแบบรวม ทำให้ชั้นอัลกอริทึมไม่ต้องผูกกับอุปกรณ์หรือรูปแบบคลัสเตอร์เฉพาะเมื่อส่งภารกิจ; ความสามารถในการประกอบของโมดูล รองรับการรวม การแทนที่ และการใช้ซ้ำของอัลกอริทึม ปัญหา ตัวดำเนินการ และแบ็กเอนด์การดำเนินการตามโมดูล
>
> เมื่ออัลกอริทึมวิวัฒนาการชุดเดียวกันสลับจาก GPU เครื่องเดียวไปยังคลัสเตอร์หลายเครื่อง โค้ดชั้นอัลกอริทึมคงเดิม Runtime แมปภารกิจการคำนวณและแบ็กเอนด์การดำเนินการใหม่ นักวิจัยจึงสามารถมุ่งเน้นนวัตกรรมอัลกอริทึมโดยไม่ต้องเขียนโค้ดใหม่สำหรับฮาร์ดแวร์แต่ละชนิด
>
> ชั้นบนคือชั้นอัลกอริทึมและขั้นตอนการทำงาน (โมดูลอัลกอริทึม คำจำกัดความปัญหา ขั้นตอนการทำงาน) ตรงกลางคือตัวจัดตาราง Runtime และอินเทอร์เฟซการจัดตารางแบบรวม ชั้นล่างคือชั้นพลังการประมวลผลที่แตกต่างกัน (GPU, TPU/NPU, คลัสเตอร์แบบกระจาย); ส่งภารกิจ ตัวดำเนินการ และกราฟการคำนวณลง ส่งสถานะและผลลัพธ์ขึ้น

**ประเด็นการสอน**

- Runtime ไม่ได้ใช้อัลกอริทึมวิวัฒนาการ และไม่กำหนดฟังก์ชันเป้าหมายของปัญหา
- หน้าที่ของมันคือการจัดตารางและการแมป ทรัพยากรการดำเนินการที่มันจัดการคือทรัพยากรฮาร์ดแวร์ เช่น GPU อุปกรณ์เร่งความเร็ว และคลัสเตอร์แบบกระจาย
- โค้ดต้นทางของโมดูลอัลกอริทึมเป็นของชั้นอัลกอริทึม ไม่ใช่วัตถุที่ Runtime จัดตาราง ชั้นอัลกอริทึมเพียงอธิบายว่าจะทำอะไร ไม่ต้องสนใจว่าทำบนฮาร์ดแวร์อะไร ดังนั้นอัลกอริทึมชุดเดียวกันสามารถ迁移ไปยังสภาพแวดล้อมเครื่องเดียว การ์ดหลายใบ หรือข้ามคลัสเตอร์ได้ ความสามารถในการประกอบหมายถึงการรวม การแทนที่ และการใช้ซ้ำของอัลกอริทึม ปัญหา ตัวดำเนินการ และแบ็กเอนด์การดำเนินการได้อย่างอิสระ ไม่ถูกล็อกไว้กับแบ็กเอนด์ฮาร์ดแวร์เดียว

**คำสำคัญที่ครอบคลุม**

- ตัวจัดตาราง Runtime、การจัดตารางพลังการประมวลผลที่แตกต่างกัน、การประสานการพึ่งพาและสถานะ、อินเทอร์เฟซการจัดตารางแบบรวม、ความสามารถในการประกอบของโมดูล、GPU、อุปกรณ์เร่งความเร็ว、TPU/NPU、คลัสเตอร์แบบกระจาย、ชั้นอัลกอริทึม、ชั้นการดำเนินการ

> **คำใบ้สื่อ**
>
> - หน้านี้มีแผนภาพสถาปัตยกรรมของตัวจัดตาราง Runtime ที่เชื่อมอุปกรณ์ฮาร์ดแวร์กับอัลกอริทึมชั้นบน ในภาพชั้นบนคือชั้นอัลกอริทึมและขั้นตอนการทำงาน ตรงกลางคือตัวจัดตาราง Runtime และอินเทอร์เฟซการจัดตารางแบบรวม ชั้นล่างคือชั้นพลังการประมวลผลที่แตกต่างกัน
> - ลูกศรแสดงการกระจายภารกิจ/ตัวดำเนินการ/กราฟการคำนวณลง และการส่งสถานะ/ผลลัพธ์ขึ้น เมื่ออธิบายภาพสามารถให้นักศึกษาเล่าตามลูกศรว่า "ชั้นบนส่งอะไร Runtime ทำอะไร ชั้นล่างส่งคืนอะไร"

**การจัดการแบบฝึกหัด**

คำตอบที่ถูกต้องของคำถามเลือกตอบข้อ 1 คือการแมปอัลกอริทึมและขั้นตอนการทำงานไปยังทรัพยากรพลังการประมวลผลที่แตกต่างกัน และปิดบังความแตกต่างของฮาร์ดแวร์ ประเด็นป้อนกลับ: Runtime เป็นศูนย์กลางการดำเนินการ ไม่ได้ใช้อัลกอริทึม และไม่กำหนดปัญหา

Runtime จัดการทรัพยากรการดำเนินการฮาร์ดแวร์ โค้ดต้นทางเป็นเนื้อหาของชั้นอัลกอริทึม

คำตอบที่ถูกต้องของคำถามเลือกตอบข้อ 3 คือผ่านอินเทอร์เฟซการจัดตารางแบบรวม ชั้นอัลกอริทึมไม่ต้องผูกกับอุปกรณ์หรือรูปแบบคลัสเตอร์เฉพาะ ประเด็นป้อนกลับ: การลดการ耦合หมายความว่าชั้นอัลกอริทึมไม่ต้องเขียนโค้ดต่างกันสำหรับฮาร์ดแวร์แต่ละชนิด

คำตอบที่ถูกต้องของคำถามเลือกตอบข้อ 4 คือการรวม การแทนที่ และการใช้ซ้ำของอัลกอริทึม ปัญหา ตัวดำเนินการ และแบ็กเอนด์การดำเนินการตามโมดูล ประเด็นป้อนกลับ: ความสามารถในการประกอบแสดงออกในการรวมและแทนที่องค์ประกอบได้อย่างอิสระ

คำตอบที่ถูกต้องของคำถามเลือกตอบข้อ 5 คือการแมปภารกิจการคำนวณและแบ็กเอนด์การดำเนินการใหม่ โค้ดชั้นอัลกอริทึมคงเดิม ประเด็นป้อนกลับ: Runtime ปรับการแมปภารกิจแบบไดนามิก ชั้นอัลกอริทึมไม่ต้องแก้ไข

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

**ตรวจสอบความเข้าใจ**

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

> **คำแนะนำการเชื่อมต่อ**
>
> หลังจากยืนยันว่านักศึกษาสามารถอธิบายบทบาทการจัดตารางและการแมปของ Runtime และสามารถใช้อินเทอร์เฟซแบบรวมและความสามารถในการประกอบอธิบายการ迁移ข้ามฮาร์ดแวร์ได้แล้ว จึงเข้าสู่ตัวอย่าง การประยุกต์ใช้ หรือสรุปในหน้าถัดไป

<a id="lecture-page-12"></a>

### การประยุกต์ใช้หลายสาขาที่รองรับโดยฐานแบบรวม

*หน้า 12*

> **เป้าหมายของหน้า:** ผู้เรียนควรเข้าใจว่าฐานแบบรวมนี้รองรับภารกิจที่หลากหลาย เช่น การเรียนรู้แบบเสริมกำลัง การเขียนโปรแกรมเชิงพันธุกรรม และการปรับให้เหมาะสมแบบผสมอย่างไร

> **ลำดับการอธิบาย**
>
> เริ่มด้วยประโยคเดียวที่ชี้ "ฐานแบบรวม = การเข้าถึงแบบเปิด + การดำเนินการแบบเทนเซอร์ + การจัดตาราง Runtime เมื่อเห็น 'การประยุกต์ใช้หลายสาขา' ให้ตรวจสอบตนเองด้วยสามคำถาม: ภารกิจเข้าถึงด้วยอะไร? คำตอบ候选ประเมินเป็นกลุ่มอย่างไร? ใครจัดการพลังการประมวลผลและสถานะแบบรวม?" จากนั้นอธิบายว่าทำไมจึงสำคัญโดยเชื่อมกับตัวอย่าง แผนภาพ หรือคำสำคัญในหน้า

**ประเด็นการสอน**

- ฐานแบบรวม = การเข้าถึงแบบเปิด + การดำเนินการแบบเทนเซอร์ + การจัดตาราง Runtime เมื่อเห็น "การประยุกต์ใช้หลายสาขา" ให้ตรวจสอบตนเองด้วยสามคำถาม: ภารกิจเข้าถึงด้วยอะไร? คำตอบ候选ประเมินเป็นกลุ่มอย่างไร? ใครจัดการพลังการประมวลผลและสถานะแบบรวม?
- การดำเนินการขั้นของสภาพแวดล้อมแบบขนาน วิวัฒนาการโครงสร้างต้นไม้โปรแกรม และการแมปเทนเซอร์แบบไม่ต่อเนื่องเป็นของชั้นการปรับใช้
- กระบวนการประเมิน การจัดการสถานะ การจัดระเบียบตัวดำเนินการ และการจัดตารางเป็นของชั้นที่ใช้ร่วมกัน ถ้าเขียนโครงสร้างเฉพาะทางของสาขาใดลงในตรรกะการจัดตารางที่ใช้ร่วมกันโดยตรง แสดงว่าเลือกระดับนามธรรมผิด
- หน้านี้ตอบเพียง "ฐานแบบรวมรองรับอะไรได้บ้าง" เมื่อพบคำถามเกี่ยวกับ吞吐 ค่าใช้จ่ายในการจัดตาราง รายละเอียดการดำเนินการเทนเซอร์แบบกลุ่ม ให้วางไว้ในขอบเขตการเรียนรู้ด้านประสิทธิภาพการคำนวณและวิธีการเทนเซอร์แบบกลุ่มในภายหลัง ไม่ต้อง纠结ที่นี่

การประยุกต์ใช้หลายสาขาที่รองรับโดยฐานแบบรวม

11

AI999

ฐานการประมวลผลสมัยใหม่และการวิวัฒนาการแบบขนานด้วยเทนเซอร์

ภารกิจการควบคุมและการตัดสินใจต้องการมีปฏิสัมพันธ์อย่างต่อเนื่องกับสภาพแวดล้อมที่เปลี่ยนแปลง ภารกิจการออกแบบโครงสร้างต้องการค้นหาในพื้นที่โปรแกรมและนิพจน์ที่มีความยาวผันแปร ภารกิจการจัดสรรทรัพยากรและการวางแผนเส้นทางต้องการแก้ในพีชคณิตและการจัดเรียงแบบไม่ต่อเนื่องและข้อจำกัด ถ้าสร้างระบบแยกสำหรับปัญหาแต่ละประเภท อินเทอร์เฟซการประเมิน การจัดเก็บสถานะ ไลบรารีตัวดำเนินการ และการจัดตารางพลังการประมวลผลต้องใช้งานซ้ำทั้งหมด ค่าใช้จ่ายในการ迁移ทางวิศวกรรมสูงมาก แนวคิดหลักของฐานแบบรวม คือการใช้โครงสร้างพื้นฐานวิวัฒนาการชุดเดียวกัน承载ภารกิจที่แตกต่างเหล่านี้ ให้การประยุกต์ใช้หลายสาขาใช้การประเมิน สถานะ ตัวดำเนินการ และการจัดการพลังการประมวลผลร่วมกัน

การเข้าถึงแบบเปิด (ใช้ข้อกำหนดการลงทะเบียนและอินเทอร์เฟซแบบรวม接入ภารกิจ) การดำเนินการแบบเทนเซอร์ (จัดระเบียบคำตอบ候选เป็นกลุ่ม ประเมินแบบขนานเป็นกลุ่ม) การจัดตารางเวลารันไทม์ (จัดสรรภารกิจบนพลังการประมวลผลที่แตกต่างและดูแลสถานะ) ทั้งสามร่วมกันรับประกันการใช้ซ้ำข้ามสาขา และอธิบายว่าทำไมความสามารถ "จัดหาฐานการเข้าถึงแบบเปิดแบบรวมสำหรับการเรียนรู้แบบเสริมกำลัง การเขียนโปรแกรมเชิงพันธุกรรม และการปรับให้เหมาะสมแบบผสม" จึงควรค่าแก่การอภิปรายแยก

การประยุกต์ใช้หลายสาขาที่รองรับโดยฐานแบบรวม ฐานการเข้าถึงแบบเปิดเดียวกัน · ใช้กระบวนการประเมิน การจัดการสถานะ การจัดระเบียบตัวดำเนินการ และการจัดตารางพลังการประมวลผลร่วมกัน ความสามารถของฐาน / สาขาภารกิจ การเรียนรู้แบบเสริมกำลัง การเขียนโปรแกรมเชิงพันธุกรรม การปรับให้เหมาะสมแบบผสม การเข้าถึงแบบเปิด อินเทอร์เฟซการเข้าถึงสภาพแวดล้อม การ接入โครงสร้างโปรแกรม การ接入คำตอบและข้อจำกัด การมีปฏิสัมพันธ์กับสภาพแวดล้อมแบบขนาน การสุ่มตัวอย่างหลายสภาพแวดล้อมแบบกลุ่ม — — วิวัฒนาการโครงสร้างต้นไม้โปรแกรม — การกลายพันธุ์/การผสมข้าม — การแก้แบบเทนเซอร์ การประเมินชุดกลยุทธ์ การทำเทนเซอร์โครงสร้าง 候选และข้อจำกัดแบบกลุ่ม Runtime การจัดตารางและการจัดการสถานะ การจัดตารางและสถานะร่วม การจัดตารางและสถานะร่วม การจัดตารางและสถานะร่วม ชั้นการปรับใช้: ดูดซับความแตกต่างของสาขา —— การดำเนินการขั้นของสภาพแวดล้อมแบบขนาน · วิวัฒนาการโครงสร้างต้นไม้โปรแกรม · การแมปเทนเซอร์แบบไม่ต่อเนื่อง ฐานแบบรวม: การเข้าถึงแบบเปิด · การดำเนินการแบบเทนเซอร์ · การจัดตาราง Runtime และการจัดการสถานะ ภารกิจทั่วไปสามประเภทลงสู่ฐานเดียวกันอย่างไร การเรียนรู้แบบเสริมกำลัง: ฐานจัดหาความสามารถในการมีปฏิสัมพันธ์กับสภาพแวดล้อมแบบขนาน รองรับการสุ่มตัวอย่างหลายอินสแตนซ์ของสภาพแวดล้อมเป็นกลุ่ม การประเมินชุดกลยุทธ์候选แบบขนาน และสร้างวงปิดกับการปรับให้เหมาะสมแบบวิวัฒนาการ

ฐานรองรับวิวัฒนาการของโครงสร้างที่มีความยาวผันแปรและเป็นลำดับชั้น เช่น ต้นไม้โปรแกรม สามารถจัดการการแสดงโครงสร้างและการกลายพันธุ์ การผสมข้ามในกระบวนการประชากรและการประเมินแบบรวม การปรับให้เหมาะสมแบบผสม: ปรับการตัดสินใจแบบไม่ต่อเนื่อง การเลือก การจัดเรียง และเป้าหมายที่มีข้อจำกัดให้เป็นการแก้แบบเทนเซอร์ เพิ่ม吞吐การค้นหาผ่าน候选แบบกลุ่มและการประเมินแบบขนาน อะไรใช้ร่วมกัน ปรับอะไร ความแตกต่างของสาขาถูกดูดซับโดยชั้นการปรับใช้: การเรียนรู้แบบเสริมกำลังเน้นการขนานของการดำเนินการขั้นของสภาพแวดล้อม การเขียนโปรแกรมเชิงพันธุกรรมเน้นวิวัฒนาการของโครงสร้างต้นไม้โปรแกรม การปรับให้เหมาะสมแบบผสมเน้นการแมปการตัดสินใจแบบไม่ต่อเนื่องไปยังเทนเซอร์ ทั้งสามใช้การจัดตาราง Runtime และการจัดการสถานะชั้นล่างร่วมกัน — ใช้กระบวนการประเมิน ตัว承载สถานะ วิธีการจัดระเบียบตัวดำเนินการ และการจัดการพลังการประมวลผลร่วมกัน ไม่ใช่สร้างระบบใหม่สำหรับปัญหาแต่ละประเภท

ถ้าเขียนโครงสร้างเฉพาะทางของสาขาใดลงในตรรกะการจัดตารางที่ใช้ร่วมกันโดยตรง แสดงว่าเลือกระดับนามธรรมผิด ขอบเขตของหน้านี้ หน้านี้มุ่งเน้น "ฐานแบบรวมรองรับอะไรได้บ้าง" ไม่ขยายการเปรียบเทียบประสิทธิภาพเฉพาะและการจัดตารางรายละเอียดการใช้งาน; ส่วนหลัง留给ส่วนประสิทธิภาพการคำนวณและวิธีการเทนเซอร์แบบกลุ่มในภายหลัง

คุณค่าหลักของการเข้าถึงแบบเปิดแบบรวมคืออะไร?

ให้สาขาต่าง ๆ ใช้การประเมิน สถานะ ตัวดำเนินการ และการจัดการพลังการประมวลผลร่วมกัน ลดค่าใช้จ่ายในการ迁移ทางวิศวกรรมอย่างมีนัยสำคัญ

ใช้อัลกอริทึมแบบรวมแทนการเรียนรู้แบบเสริมกำลัง การเขียนโปรแกรมเชิงพันธุกรรม และการปรับให้เหมาะสมแบบผสม

บีบอัดทุกภารกิจเป็นการแสดงเวกเตอร์ความยาวคงที่แบบเดียวกัน

สร้างระบบและชุดเครื่องมืออิสระใหม่สำหรับปัญหาแต่ละประเภทใหม่

รูปแบบภารกิจต่างกัน แต่ข้อกำหนดการ接入 การประเมินแบบกลุ่ม การจัดการสถานะและการจัดตารางพลังการประมวลผลใช้ร่วมกันได้ ปัญหาใหม่เพียงอธิบายความแตกต่างในชั้นการปรับใช้

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

ถูกต้อง คำตอบนี้เชื่อมโยงกับแนวคิดในหน้านี้และอธิบายเหตุผล

โปรดกลับไปที่คำอธิบายในหน้านี้ หาหลักฐานหรือตัวอย่างสำคัญก่อนตัดสิน

ในสถานการณ์การเรียนรู้แบบเสริมกำลัง ฐานแบบรวมจัดหาความสามารถสำคัญใดเป็นหลัก?

ตัวดำเนินการกลายพันธุ์และผสมข้ามต้นไม้โปรแกรม

รองรับเพียงการดำเนินการขั้นแบบอนุกรมของอินสแตนซ์สภาพแวดล้อมเดียว

การสุ่มตัวอย่างหลายอินสแตนซ์ของสภาพแวดล้อมเป็นกลุ่มและเก็บวิถี การประเมินชุดกลยุทธ์候选แบบขนาน

อินเทอร์เฟซการสร้างแบบจำลองการจัดเรียงและข้อจำกัดแบบไม่ต่อเนื่อง

หลายอินสแตนซ์ของสภาพแวดล้อม推进พร้อมกัน เก็บวิถีเป็นกลุ่ม ประเมินกลยุทธ์候选แบบขนาน สร้างวงปิดกับการปรับให้เหมาะสมแบบวิวัฒนาการ

วิวัฒนาการโครงสร้างต้นไม้โปรแกรมเป็นจุดปรับใช้ของการเขียนโปรแกรมเชิงพันธุกรรม การสร้างแบบจำลองข้อจำกัดแบบไม่ต่อเนื่องเป็นจุดปรับใช้ของการปรับให้เหมาะสมแบบผสม; กุญแจของการเรียนรู้แบบเสริมกำลังคือการขนานแบบกลุ่มของการมีปฏิสัมพันธ์กับสภาพแวดล้อม ไม่ใช่แบบอนุกรมอินสแตนซ์เดียว

เมื่อภารกิจการเขียนโปรแกรมเชิงพันธุกรรม接入ฐานแบบรวม ลักษณะสำคัญที่ฐานต้องรองรับคืออะไร?

ประมวลผลเฉพาะเวกเตอร์จำนวนจริงความยาวคงที่

การแสดงและวิวัฒนาการของโครงสร้างที่มีความยาวผันแปรและเป็นลำดับชั้น เช่น ต้นไม้โปรแกรม รวมถึงการกลายพันธุ์และการผสมข้ามโครงสร้าง

ต้องบังคับเข้ารหัสต้นไม้โปรแกรมเป็นสตริงไบนารีความยาวคงที่ก่อนวิวัฒนาการ

ประมวลผลเฉพาะฟังก์ชันเป้าหมายต่อเนื่องที่ไม่มีข้อจำกัด

คำตอบ候选ของการเขียนโปรแกรมเชิงพันธุกรรมคือโครงสร้างโปรแกรมที่มีความยาวผันแปรและเป็นลำดับชั้น ฐานต้อง容纳การแสดงนี้ในกระบวนการประชากรและการประเมินแบบรวม และรองรับการกลายพันธุ์และการผสมข้ามที่สอดคล้อง

เวกเตอร์ความยาวคงที่เป็นการแสดงของการปรับให้เหมาะสมแบบต่อเนื่องทั่วไป; ลักษณะสำคัญของการเขียนโปรแกรมเชิงพันธุกรรมคือโครงสร้างต้นไม้โปรแกรมที่มีความยาวผันแปรและเป็นลำดับชั้น และการดำเนินการวิวัฒนาการที่มุ่งเป้าไปที่โครงสร้าง

เมื่อภารกิจการปรับให้เหมาะสมแบบผสม接入ฐานแบบรวม งานปรับใช้ที่สำคัญที่สุดคืออะไร?

ยกเลิกข้อจำกัดทั้งหมด เก็บเพียงเป้าหมายเดียว

เขียนปัญหาใหม่เป็นภารกิจการฝึกเครือข่ายประสาทเทียมแบบต่อเนื่องที่หาอนุพันธ์ได้

คอมไพล์ตัวแก้ปัญหาเฉพาะสำหรับแต่ละอินสแตนซ์ของปัญหา

ปรับการตัดสินใจแบบไม่ต่อเนื่อง การเลือก การจัดเรียง และเป้าหมายที่มีข้อจำกัดให้เป็นการแก้แบบเทนเซอร์

คำตอบ候选และข้อจำกัดถูกจัดเป็นกลุ่ม ใช้ความสามารถ候选แบบกลุ่มและการประเมินแบบขนานของฐานซ้ำ

การคอมไพล์ตัวแก้ปัญหาเฉพาะต่ออินสแตนซ์เท่ากับกลับไปที่เส้นทางเก่าของ "การสร้างระบบใหม่"; การละทิ้งข้อจำกัดก็เปลี่ยนปัญหาตัวเอง ทั้งสองไม่ใช่การปรับใช้ที่ฐานต้องการ

เกี่ยวกับการแบ่งงานของชั้นที่ใช้ร่วมกันและชั้นการปรับใช้ ข้อใดเข้าใจถูกต้อง?

ตรรกะการจัดตารางต้องเขียนแยกสำหรับการเรียนรู้แบบเสริมกำลัง การเขียนโปรแกรมเชิงพันธุกรรม และการปรับให้เหมาะสมแบบผสม

ชั้นการปรับใช้ทำเพียงการแสดงอินเทอร์เฟซ ไม่มีส่วนร่วมในการแปลงความหมายของภารกิจใด ๆ

ชั้นที่ใช้ร่วมกันรับผิดชอบวิวัฒนาการโครงสร้างต้นไม้โปรแกรม ชั้นการปรับใช้รับผิดชอบการดำเนินการขั้นของสภาพแวดล้อม

ความแตกต่างของสาขาถูกดูดซับโดยชั้นการปรับใช้ ทั้งสามภารกิจใช้การจัดตาราง Runtime และการจัดการสถานะชั้นล่างร่วมกัน

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

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

รันไทม์เดียวกัน承载สามภารกิจที่แตกต่างกัน

อ่านสถานการณ์ ตอบคำถาม

ทีมงานอัลกอริทึมกำลังสร้างแพลตฟอร์มการคำนวณวิวัฒนาการ ก่อนหน้านี้พวกเขาดูแลสามระบบอิสระสำหรับการเรียนรู้แบบเสริมกำลังการควบคุม การถดถอยเชิงสัญลักษณ์ (การค้นหาโครงสร้างโปรแกรม) และการวางแผนเส้นทางโลจิสติกส์: แต่ละระบบมีอินเทอร์เฟซการประเมิน การจัดเก็บสถานะ และการจัดตารางพลังการประมวลผลของตัวเอง โค้ดซ้ำซ้อนรุนแรง เปลี่ยนภารกิจก็ต้องเขียนกระบวนการใหม่ แผนใหม่เปลี่ยนเป็นการใช้ฐานแบบรวมหนึ่งเดียว承载สามภารกิจนี้: ภารกิจการเรียนรู้แบบเสริมกำลัง推进หลายอินสแตนซ์ของสภาพแวดล้อมพร้อมกันและเก็บวิถี; ภารกิจการเขียนโปรแกรมเชิงพันธุกรรมประเมินประชากรต้นไม้โปรแกรมแบบขนาน; ภารกิจการปรับให้เหมาะสมแบบผสมจัดระเบียบคำตอบ候选และข้อจำกัดเป็นกลุ่มเทนเซอร์ ให้การจัดตารางแบบรวมจัดสรรพลังการประมวลผลที่แตกต่างกัน

1. ทำไมทีมถึงเลิกดูแลระบบแยกสำหรับปัญหาแต่ละประเภท? อธิบายจากมุมมองของการใช้ซ้ำและค่าใช้จ่ายในการ迁移

การ接入ภารกิจ การประเมินแบบกลุ่มของคำตอบ候选 การจัดการสถานะของ候选และประชากร การจัดระเบียบตัวดำเนินการ และการจัดตารางพลังการประมวลผล การดูแลแยกหมายความว่าความสามารถเหล่านี้ถูกใช้งานซ้ำสามครั้ง ภารกิจใหม่ใดก็ต้องสร้างกระบวนการใหม่ ค่าใช้จ่ายในการ迁移ทางวิศวกรรมสูงมาก ฐานแบบรวมให้สามภารกิจใช้กระบวนการประเมิน ตัว承载สถานะ วิธีการจัดระเบียบตัวดำเนินการ และการจัดการพลังการประมวลผลชุดเดียวกันซ้ำ ภารกิจใหม่เพียงอธิบายความแตกต่างของตัวเองในชั้นการปรับใช้ก็สามารถ接入ได้

2. โปรดระบุความแตกต่างที่สามภารกิจดูดซับในชั้นการปรับใช้ตามลำดับ และอธิบายว่าพวกมันใช้ซ้ำอะไรในชั้นที่ใช้ร่วมกัน

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

จำสามเสาหลักก่อน

ฐานแบบรวม = การเข้าถึงแบบเปิด + การดำเนินการแบบเทนเซอร์ + การจัดตาราง Runtime เมื่อเห็น "การประยุกต์ใช้หลายสาขา" ให้ตรวจสอบตนเองด้วยสามคำถาม: ภารกิจเข้าถึงด้วยอะไร? คำตอบ候选ประเมินเป็นกลุ่มอย่างไร? ใครจัดการพลังการประมวลผลและสถานะแบบรวม?

แยกแยะชั้นที่ใช้ร่วมกันและชั้นการปรับใช้

การดำเนินการขั้นของสภาพแวดล้อมแบบขนาน วิวัฒนาการโครงสร้างต้นไม้โปรแกรม และการแมปเทนเซอร์แบบไม่ต่อเนื่องเป็นของชั้นการปรับใช้; กระบวนการประเมิน การจัดการสถานะ การจัดระเบียบตัวดำเนินการ และการจัดตารางเป็นของชั้นที่ใช้ร่วมกัน ถ้าเขียนโครงสร้างเฉพาะทางของสาขาใดลงในตรรกะการจัดตารางที่ใช้ร่วมกันโดยตรง แสดงว่าเลือกระดับนามธรรมผิด

ขอบเขตของหน้านี้

หน้านี้ตอบเพียง "ฐานแบบรวมรองรับอะไรได้บ้าง" เมื่อพบคำถามเกี่ยวกับ吞吐 ค่าใช้จ่ายในการจัดตาราง รายละเอียดการดำเนินการเทนเซอร์แบบกลุ่ม ให้วางไว้ในขอบเขตการเรียนรู้ด้านประสิทธิภาพการคำนวณและวิธีการเทนเซอร์แบบกลุ่มในภายหลัง ไม่ต้อง纠结ที่นี่

step-1

ผู้เรียนควรเข้าใจว่าฐานแบบรวมนี้รองรับภารกิจที่หลากหลาย เช่น การเรียนรู้แบบเสริมกำลัง การเขียนโปรแกรมเชิงพันธุกรรม และการปรับให้เหมาะสมแบบผสมอย่างไร

lesson_4

lesson_4_slide_11

จากฉบับร่าง EvoClass

จัดหาฐานการเข้าถึงแบบเปิดแบบรวมสำหรับการเรียนรู้แบบเสริมกำลัง การเขียนโปรแกรมเชิงพันธุกรรม และการปรับให้เหมาะสมแบบผสม

lesson_id_distribution

67ee25ab22558e4ae0e13f24b7c34c2da1218107cceb1cd331b38fc3521a9743

**แหล่งอ้างอิง**

จากฉบับร่าง EvoClass (หน้า 4-4)

> **คำใบ้สื่อ**
>
> - จัดหาฐานการเข้าถึงแบบเปิดแบบรวมสำหรับการเรียนรู้แบบเสริมกำลัง การเขียนโปรแกรมเชิงพันธุกรรม และการปรับให้เหมาะสมแบบผสม

**กิจกรรมในชั้นเรียน**

ให้ใช้ตัวอย่างที่ใกล้เคียงกับประสบการณ์ของนักศึกษาเพื่อเล่าเนื้อหาในหน้านี้ และให้นักศึกษาอธิบายความสัมพันธ์ระหว่างตัวอย่างนี้กับ "ฐานแบบรวม = การเข้าถึงแบบเปิด + การดำเนินการแบบเทนเซอร์ + การจัดตาราง Runtime เมื่อเห็น 'การประยุกต์ใช้หลายสาขา' ให้ตรวจสอบตนเองด้วยสามคำถาม: ภารกิจเข้าถึงด้วยอะไร? คำตอบ候选ประเมินเป็นกลุ่มอย่างไร? ใครจัดการพลังการประมวลผลและสถานะแบบรวม?"

> **เป้าหมายที่สอดคล้อง**
>
> - เชี่ยวชาญวิธีการแสดงกระบวนการวิวัฒนาการเป็นการคำนวณแบบกลุ่มเทนเซอร์
> - เข้าใจบทบาทของ Runtime ในการจัดตารางพลังการประมวลผลที่แตกต่างกันและการรักษาความสามารถในการประกอบอัลกอริทึม

**ตรวจสอบความเข้าใจ**

สุ่มให้นักศึกษาหนึ่งคนสรุปประเด็นสำคัญของหน้านี้ด้วยคำพูดของตนเอง ผู้สอนเสริมคำสำคัญที่ขาดหายตามคำตอบ

> **คำแนะนำการเชื่อมต่อ**
>
> หลังจากยืนยันว่านักศึกษาสามารถอธิบายความสัมพันธ์หลักของหน้านี้ได้แล้ว จึงเข้าสู่ตัวอย่าง การประยุกต์ใช้ หรือสรุปในหน้าถัดไป

<a id="lecture-page-13"></a>

### การปฏิบัติเปรียบเทียบประสิทธิภาพการคำนวณ

*หน้า 13*

> **เป้าหมายของหน้า:** ผู้เรียนควรเข้าใจความแตกต่างของประสิทธิภาพระหว่างการ遍历แบบอนุกรม CPU กับการประมวลผลแบบกลุ่มเทนเซอร์ GPU ผ่านการเปรียบเทียบเชิงปฏิบัติ

> **เป้าหมายของหน้า**
>
> นำการเปรียบเทียบประสิทธิภาพการคำนวณลงสู่การปฏิบัติที่ทำซ้ำได้ครั้งหนึ่ง เข้าใจความแตกต่างของประสิทธิภาพต้นทางถึงปลายทางระหว่างการ遍历个体แบบอนุกรม CPU กับการประมวลผลแบบกลุ่มเทนเซอร์ GPU เข้าใจว่าการเร่งความเร็วมาจากไหน ค่าใช้จ่ายคืออะไร ขอบเขตอยู่ที่ไหน

> **ลำดับการอธิบาย**
>
> ให้เส้นฐานสองเส้นบนภารกิจวิวัฒนาการเดียวกันก่อน ดูแผนภูมิแท่งเปรียบเทียบประสิทธิภาพ จากนั้นอธิบายโปรโตคอลการวัดที่ทำซ้ำได้ สุดท้ายสรุปแหล่งที่มาของผลตอบแทน เงื่อนไขข้อจำกัด และข้อสรุปเชิงปฏิบัติ

**ประเด็นการสอน**

- ใช้ลูปเรียกฟังก์ชันการประเมินทีละ个体 แต่ละรุ่นต้องมีการจัดตาราง การอัปเดตสถานะ และการรวบรวมผลลัพธ์ N ครั้งอิสระ การควบคุมลูป ค่าใช้จ่ายอินเทอร์พรีเตอร์ และการเข้าถึงหน่วยความจำที่กระจัดกระจายจะเจือจางพลังการประมวลผลที่มีประสิทธิภาพ
- ยิ่ง个体มาก สัดส่วนของต้นทุนที่ไม่ใช่การคำนวณยิ่งสูง จัดระเบียบประชากร อินพุตการประเมิน และสถานะการทำงานเป็นเทนเซอร์ ดำเนินการประเมินและตัวดำเนินการเป็นกลุ่มบน GPU การเรียกครั้งเดียวครอบคลุมชุด候选ทั้งหมด ลดลูปแบบอนุกรมและจำนวนครั้งการจัดตารางอย่างมาก ภายใต้เงื่อนไขปัญหาเดียวกัน ประชากรเดียวกัน เมล็ดสุ่มเดียวกัน และอุ่นเครื่องและซิงโครไนซ์อุปกรณ์ก่อนจับเวลา ลูปอนุกรม CPU เป็น基准 1.0× การประมวลผลแบบกลุ่ม GPU b=64 ประมาณ 2.2× b=256 ประมาณ 4.5× b=1024 ประมาณ 7.1× ในภาพแสดงค่าสัมพัทธ์ของเวลาต่อรุ่น ยิ่งขนาดกลุ่มใหญ่ ค่าใช้จ่ายคงที่ยิ่งถูกเฉลี่ยได้ง่าย ปัญหาคงที่ ขนาดประชากร จำนวนรุ่น และเมล็ดสุ่มคงที่
- บันทึกเวลาจริงต่อรุ่น เวลารวม 吞吐 (การประเมิน/วินาที) อัตราการเร่ง ระดับการใช้ GPU และหน่วยความจำ GPU ก่อนจับเวลาต้องอุ่นเครื่อง กำจัดอิทธิพลของการคอมไพล์ครั้งแรกและการจัดสรรหน่วยความจำ GPU
- จุดจับเวลาต้องซิงโครไนซ์อุปกรณ์
- แยกสถิติเวลาการคำนวณกับเวลาการส่งข้อมูลระหว่างโฮสต์กับอุปกรณ์ ขาดขั้นตอนใดขั้นตอนหนึ่ง อัตราการเร่งอาจคลาดเคลื่อน ผลตอบแทนมาจากการขนานแบบกลุ่ม ตัวดำเนินการแบบเทนเซอร์ และการขนานภายในอุปกรณ์ ทำให้การเรียกครั้งเดียวประมวลผลชุด候选ทั้งหมด
- ข้อจำกัดรวมถึงขนาดกลุ่ม มิติปัญหา ระดับการทำเวกเตอร์ไรเซชันของฟังก์ชันการประเมิน ค่าใช้จ่ายการคัดลอกระหว่างโฮสต์กับอุปกรณ์ และค่าใช้จ่ายในการเปิดเคอร์เนล กลุ่มเล็กเกินไปจะถูกค่าใช้จ่ายในการเปิดกลืนผลตอบแทน
- ถ้าฟังก์ชันการประเมินไม่สามารถทำเวกเตอร์ไรเซชันได้ การประมวลผลแบบกลุ่มแทบไม่มีโอกาสแสดง ลำดับที่ถูกต้องคือตรวจสอบก่อนว่าฟังก์ชันการประเมินสามารถทำเป็นกลุ่มได้หรือไม่ แล้วจึงเปรียบเทียบการใช้งาน CPU กับ GPU ข้อได้เปรียบด้านประสิทธิภาพสุดท้ายควรตกอยู่ที่ "ได้รับรุ่นหรือ方案候选มากขึ้นภายใต้งบประมาณการคำนวณเดียวกัน" และใช้สิ่งนี้ตัดสินวิธีการติดตั้งและการออกแบบการทดลอง ไม่ใช่ poursuit ตัวเลขอัตราการเร่งเพียงอย่างเดียว

**การจัดการแบบฝึกหัด**

คำตอบที่ถูกต้องของข้อ 1 คือ "ค่าใช้จ่ายในการจัดตาราง อินเทอร์พรีเตอร์ และการเข้าถึงหน่วยความจำที่กระจัดกระจายที่เกิดจากการเรียกฟังก์ชันการประเมินแยกสำหรับแต่ละ个体" เส้นฐานแบบอนุกรมสร้างการจัดตารางและการอัปเดตสถานะ N ครั้งอิสระต่อรุ่น การควบคุมลูป ค่าใช้จ่ายอินเทอร์พรีเตอร์ และการเข้าถึงหน่วยความจำที่กระจัดกระจายจะเจือจางพลังการประมวลผลที่มีประสิทธิภาพ; ในขณะนี้ยังไม่มีการเปิดเคอร์เนล GPU และการคัดลอก

คำตอบที่ถูกต้องของข้อ 2 คือจัดระเบียบประชากร อินพุตการประเมิน และสถานะการทำงานเป็นเทนเซอร์ การเรียกครั้งเดียวครอบคลุมชุด候选ทั้งหมด แกนหลักของการเร่งคือการขนานแบบกลุ่มและการทำเป็นเทนเซอร์ ไม่ใช่การเปลี่ยนความแม่นยำ ขนาดประชากร หรือจำนวนเมล็ด

โปรโตคอลมาตรฐานของข้อ 3 คือตรึงปัญหา ขนาดประชากร จำนวนรุ่น และเมล็ด อุ่นเครื่องและซิงโครไนซ์อุปกรณ์ก่อนจับเวลา และแยกเวลาการคำนวณกับเวลาการส่งข้อมูล

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

เมื่อระดับการทำเวกเตอร์ไรเซชันของฟังก์ชันการประเมินต่ำ ข้อได้เปรียบของการประมวลผลแบบกลุ่ม GPU ลดลงอย่างชัดเจน และอาจมีผลตอบแทนจำกัดเนื่องจากค่าใช้จ่ายในการคัดลอกและเปิดเคอร์เนล; การเร่งไม่คงที่และไม่เพิ่มขึ้นอย่างไร้ขีดจำกัดตามขนาดกลุ่มที่เพิ่มขึ้น

การปฏิบัติกรณี:

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

2. อัตราการเร่งเพียงประมาณ 1.2 เท่าภายใต้กลุ่มเล็ก b=8 ไม่ขัดแย้ง ผลตอบแทนของการประมวลผลแบบกลุ่มถูกจำกัดร่วมกันโดยขนาดกลุ่ม ค่าใช้จ่ายในการเปิดเคอร์เนล และค่าใช้จ่ายในการส่งข้อมูล; เมื่อกลุ่มเล็กเกินไป ปริมาณงานที่ขนานได้บนอุปกรณ์ไม่เพียงพอ ค่าใช้จ่ายคงที่คิดเป็นสัดส่วนเวลาต่อรุ่นที่มาก ระดับการขนานที่มีประสิทธิภาพไม่สามารถเฉลี่ยต้นทุนเหล่านี้ได้ อัตราการเร่งจึงใกล้ 1 ตามธรรมชาติ แนะนำให้เพิ่มขนาดกลุ่มภายในขอบเขตที่หน่วยความจำ GPU อนุญาต พยายามทำเวกเตอร์ไรเซชันฟังก์ชันการประเมินและตรรกะหลังการประมวลผลทั้งหมด และวัดใหม่ตามโปรโตคอลมาตรฐาน รายงานเวลาต่อรุ่น เวลารวม 吞吐 และอัตราการเร่งแยกกัน เพื่อตัดสินว่าผลตอบแทนตกอยู่ที่เป้าหมายการได้รับรุ่นหรือ候选มากขึ้นภายใต้งบประมาณเดียวกันจริงหรือไม่

**ตรวจสอบความเข้าใจ**

สุ่มให้นักศึกษาอธิบายด้วยคำพูดของตนเองว่าทำไมต้องตรวจสอบว่าฟังก์ชันการประเมินสามารถทำเวกเตอร์ไรเซชันได้ก่อน แล้วจึงเปรียบเทียบ CPU กับ GPU; และอธิบายว่าการอุ่นเครื่องกับการซิงโครไนซ์อุปกรณ์แก้ปัญหาอะไรตามลำดับ

> **คำแนะนำการเชื่อมต่อ**
>
> หลังจากยืนยันว่านักศึกษาสามารถแยกแยะแหล่งที่มาของผลตอบแทนกับเงื่อนไขข้อจำกัด และสามารถแปลงการเร่งเป็นผลตอบแทนงบประมาณได้แล้ว จึงเข้าสู่ตัวอย่าง การประยุกต์ใช้ หรือสรุปในหน้าถัดไป

<a id="lecture-page-14"></a>

### วิธีการหลักของการคำนวณแบบกลุ่มเทนเซอร์

*หน้า 14*

> **เป้าหมายของหน้า:** ผู้เรียนควรเสริมสร้างวิธีการหลักในการแสดงกระบวนการวิวัฒนาการเป็นการคำนวณแบบกลุ่มเทนเซอร์

> **เป้าหมายของหน้า**
>
> เสริมสร้างวิธีการหลักในการแสดงกระบวนการวิวัฒนาการเป็นการคำนวณแบบกลุ่มเทนเซอร์ เข้าใจความสัมพันธ์ระหว่างมิติกลุ่ม ตัวดำเนินการแบบกลุ่ม การปรับแต่งกราฟการคำนวณ และตัวชี้วัด吞吐 และสามารถระบุการทำเป็นกลุ่มเท็จ

> **ลำดับการอธิบาย**
>
> เทนเซอร์候选 X เป็น [N × D] เป้าหมายและข้อจำกัด F เป็น [N × M] ผลลัพธ์การประเมิน Y เป็น [N × M]; มิติกลุ่ม N อยู่ชั้นนอกสุดเสมอ D และ M อธิบายจำนวนตัวแปรและจำนวนรายการเป้าหมายของ candidate เดียว
>
> แมปประชากร เป้าหมาย/ข้อจำกัด ผลลัพธ์การประเมิน และสถานะวิวัฒนาการให้เป็นเทนเซอร์ที่มีมิติกลุ่มอย่างสม่ำเสมอ ปริมาณสถานะดูแลด้วยสเกลาร์หรือบัฟเฟอร์เทนเซอร์เล็ก ไม่ใช่บันทึกทีละ个体ในอ็อบเจกต์ Python
>
> การกลายพันธุ์ X′ = X + σ·randn(X) การผสมข้ามจับคู่และรวมตัวใหม่ตามมิติ N การเลือก idx = topk(F, k) การประเมิน Y = fθ(X) จุดสำคัญไม่ใช่表达式单个 แต่เป็น候选ทั้งหมดใช้กราฟการดำเนินการเทนเซอร์เดียวกัน การเรียกแบบกลุ่มครั้งเดียวแทนการเรียก single candidate N ครั้ง; ข้อจำกัดและการล้ำเส้นสามารถจัดการภายในกลุ่มการดำเนินการเดียวกันด้วยเทนเซอร์มาสก์
>
> การหลอมรวมตัวดำเนินการลดการเปิดเคอร์เนล การขนานภายในกลุ่มให้候选ทั้งหมดดำเนินการพร้อมกัน การดำเนินการแบบอะซิงโครนัสทับซ้อนการคำนวณและการส่งข้อมูล การใช้หน่วยความจำซ้ำลดการจัดสรรเทนเซอร์กลาง
>
> เปลี่ยนจากความหน่วงขั้นตอนเดียวเป็น候选/วินาที หรือรุ่น/วินาที เพราะการเรียกแบบกลุ่มครั้งเดียว承载候选ทั้งกลุ่ม 吞吐โดยรวมจึงสะท้อนประสิทธิภาพการค้นหา
>
> การฝังตัวดำเนินการแบบกลุ่มในลูป Python ทีละ个体จะนำค่าใช้จ่ายอินเทอร์พรีเตอร์และค่าใช้จ่ายเปิดเคอร์เนลกลับมา มิติกลุ่มเป็นเพียงชื่อ วิธีการตรวจสอบตนเอง: ในขั้นตอนวิวัฒนาการหนึ่งขั้น ระดับการจัดตารางควรมีเพียง "กลุ่ม" ไม่มี "个体"

**ประเด็นการสอน**

- มิติกลุ่ม N คือจำนวน候选 เมื่อรูปร่างตรงกัน การกลายพันธุ์ การผสมข้าม การเลือก และการประเมินสามารถดำเนินการแบบกลุ่มตามมิติ N ได้โดยตรง ผลตอบแทนโดยตรงของการทำเป็นเทนเซอร์มาจากการลดจำนวนครั้งการเรียกและค่าใช้จ่ายในการจัดตาราง ไม่ใช่การเปลี่ยนจำนวน候选หรือเพิ่มความแม่นยำจุดเดียว randn(X) สร้างเทนเซอร์การรบกวนแบบสุ่มที่มีรูปร่างเดียวกับ X การรบกวนเป็นแบบทีละองค์ประกอบ σ ควบคุมความเข้ม topk(F, k) เลือกดัชนีของ候选 k ตัวแรกตามมิติกลุ่ม N วัตถุของการเลือกคือ candidate ไม่ใช่ตัวแปรหรือรายการเป้าหมาย การดำเนินการแบบกลุ่มเปลี่ยนตำแหน่งของคอขวดประสิทธิภาพ ความหน่วงยังวัดได้ แต่การวัดประสิทธิภาพขนาดต้องดูว่าหน่วยเวลาทำ candidate ได้กี่個หรือกี่รุ่น

**คำสำคัญที่ครอบคลุม**

- การคำนวณแบบกลุ่มเทนเซอร์、มิติกลุ่ม N、สัญญารูปร่าง、ตัวดำเนินการแบบกลุ่ม、การปรับแต่งกราฟการคำนวณ、吞吐、候选/วินาที、รุ่น/วินาที、การทำเป็นกลุ่มเท็จ

> **คำใบ้สื่อ**
>
> - แผนภาพในหน้านี้มีธีม "กระบวนการวิวัฒนาการ → กราฟการคำนวณแบบกลุ่มเทนเซอร์" สามคอลัมน์ตามลำดับคือ ①การจัดระเบียบแบบเทนเซอร์ ②ตัวดำเนินการแบบกลุ่ม ③การปรับแต่งการคอมไพล์และ吞吐 กระดานดำหรือแผนที่ความคิดสามารถขยายตามสามคอลัมน์นี้ และเน้นตัวชี้วัด吞吐 "候选/วินาที · รุ่น/วินาที" ในคอลัมน์ที่สาม

> **คำใบ้แบบฝึกหัด**
>
> - คำถามเลือกตอบ 5 ข้อตรวจสอบสัญญารูปร่าง ผลตอบแทนประสิทธิภาพของการทำเป็นเทนเซอร์ ความหมายของ表达式การกลายพันธุ์ ความหมายการเลือกของ topk เหตุผลในการเปลี่ยนเกียร์ของตัวชี้วัด การป้อนกลับคำตอบสามารถเน้น: เมื่อถูกต้องเชื่อมโยงกับสัญญารูปร่างหรือวิธีการเรียกอธิบายเหตุผล
> - เมื่อผิดกลับไปที่คำอธิบายในหน้านี้ หาหลักฐานสำคัญก่อนตัดสิน คำถามกรณี "การ迁移ลูปวิวัฒนาการทีละ个体ไปสู่การดำเนินการแบบกลุ่มเทนเซอร์" ต้องการอธิบายวิธีจัดระเบียบ candidate เป้าหมาย และสถานะเป็นเทนเซอร์และประมวลผลแบบกลุ่มตามมิติ N และการแลกเปลี่ยนระหว่างการปรับแต่งกราฟการคำนวณกับหน่วยความจำ GPU ไม่เพียงพอ จุดสำคัญของคำตอบรวมถึง X:[N×D], F:[N×M], Y=fθ(X), สถานะใช้สเกลาร์หรือบัฟเฟอร์เทนเซอร์เล็ก
> - การกลายพันธุ์ การผสมข้าม การเลือก การประเมินดำเนินการแบบกลุ่มตามมิติ N
> - การปรับแต่งสามารถทำการหลอมรวมตัวดำเนินการ การขนานภายในกลุ่ม การดำเนินการแบบอะซิงโครนัส การใช้หน่วยความจำซ้ำ
> - เมื่อหน่วยความจำ GPU ไม่เพียงพอสามารถใช้การแบ่งบล็อกหรือการดำเนินการแบบกลุ่มเล็ก ลดความแม่นยำเชิงตัวเลข ย่ออายุการใช้งานเทนเซอร์กลาง แต่候选ทั้งหมดภายในรุ่นเดียวกันควรมีมาตรฐานการเปรียบเทียบที่สอดคล้องกัน

**กิจกรรมในชั้นเรียน**

ให้นักศึกษาอธิบายด้วยคำพูดของตนเองว่า "ทำไมมิติกลุ่ม N ควรอยู่นอกสุด" และยกตัวอย่างง่าย ๆ เช่น N=4, D=3, M=2 เขียนรูปร่างของ X, F, Y อธิบายว่าการเรียกแบบกลุ่มครั้งเดียวแทนการเรียก single candidate หลายครั้งได้อย่างไร

**ตรวจสอบความเข้าใจ**

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

> **คำแนะนำการเชื่อมต่อ**
>
> หลังจากยืนยันว่านักศึกษาสามารถอธิบายความสัมพันธ์ระหว่างสัญญารูปร่างกับการดำเนินการแบบกลุ่มได้แล้ว จึงเข้าสู่การประยุกต์ใช้ สรุป หรือการอภิปรายการปรับแต่งกราฟการคำนวณที่ซับซ้อนขึ้นในหน้าถัดไป

<a id="lecture-page-15"></a>

### การจัดตาราง Runtime และความสามารถในการประกอบอัลกอริทึม

*หน้า 15*

> **เป้าหมายของหน้า:** ผู้เรียนควรเสริมสร้างความเข้าใจหลักของ Runtime ในการจัดตารางพลังการประมวลผลที่แตกต่างกันและความสามารถในการประกอบอัลกอริทึม

> **เป้าหมายของหน้า**
>
> สร้างตำแหน่งชั้นกลางของ Runtime — ไม่ใช่อัลกอริทึมเฉพาะ แต่เป็นชั้นการจัดตารางและนามธรรมที่เชื่อมบนล่าง: ขึ้นรองรับการรวมที่ยืดหยุ่นของอัลกอริทึม ปัญหา และขั้นตอนการทำงาน ลงจัดการพลังการประมวลผลที่แตกต่างกัน เช่น CPU, GPU รักษาความสามารถในการประกอบอัลกอริทึมและความเป็นอิสระจากฮาร์ดแวร์

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

**ประเด็นการสอน**

- ตามสถานะของขั้นตอนการทำงานและโมดูลการติดตาม จัดตารางภารกิจ เช่น ประชากร การประเมิน ตัวดำเนินการ ไปยังอุปกรณ์ที่เหมาะสม จัดการการดำเนินการแบบขนานและการใช้ทรัพยากรแบบรวม มัน承接โมดูลอัลกอริทึม ปัญหา ขั้นตอนการทำงาน เรียกใช้ CPU, GPU, ตัวเร่งความเร็วลง อัลกอริทึม ปัญหา ตัวดำเนินการรวมผ่านอินเทอร์เฟซแบบโมดูล ไม่ผูกกับฮาร์ดแวร์ชั้นล่าง กลยุทธ์แบบขนาน หรือรายละเอียดการคอมไพล์โดยตรง ดังนั้นเมื่อแทนที่อัลกอริทึมเช่น DE, PSO หรือเปลี่ยนปัญหาการปรับให้เหมาะสม ไม่ต้องเขียนโค้ดแบบขนาน GPU/CPU ชั้นล่างใหม่ ความแตกต่างของอุปกรณ์ การดำเนินการแบบเทนเซอร์ และการปรับแต่งการคอมไพล์ถูก Runtime ดูดซับ ชั้นอัลกอริทึมยังคงไม่ขึ้นกับอุปกรณ์ สะดวกต่อการแทนที่และการใช้ซ้ำ นามธรรมจะนำมาซึ่งค่าใช้จ่ายในการจัดตารางและการย้ายข้อมูล ต้องสร้างสมดุลระหว่างความยืดหยุ่น ประสิทธิภาพ และความซับซ้อนทางวิศวกรรม เช่น ใช้การประมวลผลแบบกลุ่ม การดำเนินการแบบอะซิงโครนัส หรือแคชลดการย้ายข้อมูล Runtime เดียวกันสามารถรองรับการประยุกต์ใช้หลายสาขา และให้สภาพแวดล้อมการดำเนินการที่มั่นคงสำหรับวิวัฒนาการวิธีการและการแทนที่อัลกอริทึม

> **คำใบ้สื่อ**
>
> - แผนภาพในหน้านี้อ่านได้สามชั้น ชั้นบนคือชั้นอัลกอริทึม ประกอบด้วยโมดูลอัลกอริทึม คำจำกัดความปัญหา ขั้นตอนการทำงาน ทั้งสาม接入ผ่านอินเทอร์เฟซแบบรวม
> - ชั้นกลางคือชั้นการจัดตาราง Runtime รับผิดชอบการจัดตารางภารกิจ การดำเนินการแบบขนาน การจัดการทรัพยากร และการแยกอินเทอร์เฟซ
> - ชั้นล่างคือพลังการประมวลผลที่แตกต่างกัน รวมถึง CPU, GPU, ตัวเร่งความเร็ว คำใบ้สองด้านเน้น "อัลกอริทึมแทนที่ได้ ไม่ขึ้นกับฮาร์ดแวร์" และ "การแลกเปลี่ยน: ความยืดหยุ่น·ประสิทธิภาพ·ความซับซ้อน" ตามลำดับ คำใบ้ด้านล่าง "Runtime เดียวกันรองรับการประยุกต์ใช้หลายสาขา" เมื่ออธิบายสามารถอธิบายตามลูกศรจากบนลงล่าง: ชั้นอัลกอริทึมไม่แตะฮาร์ดแวร์โดยตรง แต่ Runtime จัดตารางการดำเนินการตามขั้นตอนการทำงาน

**คำสำคัญที่ครอบคลุม**

- การจัดตารางพลังการประมวลผลที่แตกต่างกัน、ความสามารถในการประกอบอัลกอริทึม、อินเทอร์เฟซแบบรวม、การจัดตารางขั้นตอนการทำงาน、นามธรรมที่ไม่ขึ้นกับฮาร์ดแวร์、การแยกอินเทอร์เฟซ、ค่าใช้จ่ายในการจัดตาราง、ค่าใช้จ่ายในการย้ายข้อมูล

**การจัดการแบบฝึกหัด**

คำถามเลือกตอบห้าข้อสามารถใช้ตรวจสอบอย่างรวดเร็ว ทิศทางที่ถูกต้องของข้อ 1 คือ "จัดหาชั้นการจัดตารางและนามธรรม จัดการพลังการประมวลผลที่แตกต่างและรักษาความสามารถในการประกอบอัลกอริทึม" ถ้านักศึกษาเลือกผิด "ใช้อัลกอริทึมการปรับให้เหมาะสมโดยตรง" ต้องเน้นว่า Runtime ไม่ใช้อัลกอริทึมเฉพาะ ทิศทางที่ถูกต้องของข้อ 2 คือ "รวมผ่านอินเทอร์เฟซแบบโมดูล ไม่ผูกกับฮาร์ดแวร์ชั้นล่างและกลยุทธ์แบบขนาน" ถ้าเลือกผิด "CUDA API หรือเขียนโค้ดแบบขนานด้วยมือ" อธิบายว่าจะทำลายการแยกส่วน ทิศทางที่ถูกต้องของข้อ 3 คือ "ดูดซับความแตกต่างของอุปกรณ์ การดำเนินการแบบเทนเซอร์ และการปรับแต่งการคอมไพล์ ทำให้ชั้นอัลกอริทึมไม่ขึ้นกับอุปกรณ์" ทิศทางที่ถูกต้องของข้อ 4 คือ "นามธรรมนำมาซึ่งค่าใช้จ่ายในการจัดตารางและการย้ายข้อมูล ต้องแลกเปลี่ยนความยืดหยุ่น ประสิทธิภาพ และความซับซ้อนทางวิศวกรรม"

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

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

**ตรวจสอบความเข้าใจ**

ให้นักศึกษาอธิบายด้วยประโยคเดียวว่าทำไม Runtime ทำให้การแทนที่อัลกอริทึมไม่ส่งผลต่อโค้ดฮาร์