คำสำคัญ: การสร้างเคอร์เนล CUDA, การเรียนรู้แบบเสริมกำลังด้วยเอเจนต์, การปรับปรุงประสิทธิภาพ, KernelBench, สภาพแวดล้อมเสริมทักษะ
ในระดับล่างของโครงสร้างพื้นฐานการเรียนรู้เชิงลึก มีขอบเขตหนึ่งที่ถูกเรียกว่า “เวทมนตร์ดำ” นั่นคือการพัฒนาเคอร์เนล CUDA เมื่อเราเขียนโค้ด PyTorch สองสามบรรทัดที่กระชับ มีน้อยคนที่ตระหนักว่าการดำเนินการระดับสูงเหล่านี้จะถูกคอมไพล์เป็นโปรแกรมเคอร์เนลระดับล่างหลายร้อยหลายพันตัวที่ทำงานบน GPU ของ NVIDIA การเขียนและปรับปรุงเคอร์เนลเหล่านี้เป็นตัวกำหนดความเร็ว ประสิทธิภาพการใช้พลังงาน และแม้แต่ความเป็นไปได้ของการฝึกโมเดลโดยตรง
อย่างไรก็ตาม การเขียนโปรแกรม CUDA มีเกณฑ์ที่สูงมาก นักพัฒนาไม่เพียงต้องเข้าใจคุณลักษณะไมโครอาร์คิเทคเจอร์ของ GPU อย่างลึกซึ้ง (เช่น หน่วยความจำร่วม ไฟล์รีจิสเตอร์ เทนเซอร์คอร์) แต่ยังต้องเชี่ยวชาญเครื่องมือวิเคราะห์ประสิทธิภาพ และจัดการรายละเอียดระดับล่างด้วยตนเอง เช่น รูปแบบการเข้าถึงหน่วยความจำ การจัดตารางบล็อกเธรด ความขนานในระดับคำสั่ง เป็นต้น แม้แต่สำหรับวิศวกรที่มีประสบการณ์ การปรับปรุงเคอร์เนลหนึ่งตัวอาจใช้เวลาหลายสัปดาห์
แม้ว่าโมเดลภาษาขนาดใหญ่จะแสดงความสามารถที่แข็งแกร่งในงานเขียนโปรแกรมทั่วไป แต่ในขอบเขตเฉพาะทางของการสร้างเคอร์เนล CUDA พวกมันยังทำได้ไม่ดีไปกว่าคอมไพเลอร์ torch.compile ในตัวของ PyTorch ความจริงนี้ทำให้เกิดคำถามสำคัญ: จะทำให้ AI เรียนรู้ “เวทมนตร์ดำ” นี้ของการปรับปรุง CUDA ได้อย่างไร?

ในเดือนกุมภาพันธ์ 2026 ทีม AIR จากมหาวิทยาลัยชิงหวาและทีม Seed จาก ByteDance ได้ร่วมกันเผยแพร่บทความวิจัยชื่อ “CUDA Agent: Large-Scale Agentic RL for High-Performance CUDA Kernel Generation” ซึ่งนำเสนอแนวทางแก้ไขของพวกเขา การวิจัยนี้ใช้ระบบการเรียนรู้แบบเสริมกำลังด้วยเอเจนต์ขนาดใหญ่ ทำให้ AI สามารถสร้างเคอร์เนล CUDA ประสิทธิภาพสูงได้ด้วยตนเอง และทำได้ดีกว่าโมเดลโอเพ่นซอร์สและโมเดลปิดที่ทันสมัยที่สุดในหลายระดับความยาก

คำอธิบายแผนภูมิ: แผนภูมินี้เปรียบเทียบประสิทธิภาพการสร้างเคอร์เนล CUDA ของ GLM 4.6, Kimi K2, Gemini 3 Pro, Claude Opus 4.5 และ CUDA Agent จากตัวชี้วัดหลักสามประเภท: อัตราความถูกต้อง อัตราความเร็วที่เพิ่มขึ้น และอัตราส่วนความเร็ว ในตัวชี้วัดสำคัญที่ใช้วัดความสามารถในการปรับปรุง – อัตราความเร็วที่เพิ่มขึ้น (เทียบกับ torch.compile) และอัตราส่วนความเร็ว CUDA Agent แสดงผลลัพธ์ที่นำโด่งอย่างชัดเจน โดยมีอัตราความเร็วที่เพิ่มขึ้นเกือบ 97% และอัตราส่วนความเร็ว 2.11× ซึ่งสูงกว่าโมเดลอื่นมาก Claude Opus 4.5 และ Gemini 3 Pro แม้จะมีอัตราความถูกต้องสูง (มากกว่า 90%) แต่มีอัตราความเร็วที่เพิ่มขึ้นเพียง 66%-69% ซึ่งแสดงถึงความสามารถในการปรับปรุงที่จำกัด GLM 4.6 และ Kimi K2 มีผลลัพธ์ต่ำกว่าในทุกตัวชี้วัดอย่างเห็นได้ชัด แผนภูมิยืนยันอย่างชัดเจนว่า CUDA Agent ผ่านการฝึกการเรียนรู้แบบเสริมกำลังเฉพาะทาง ได้ก้าวข้ามโมเดลภาษาขนาดใหญ่ทั่วไปในด้านความสามารถในการปรับปรุงที่ตระหนักถึงฮาร์ดแวร์
สารบัญบทความ
- หนึ่ง ปัญหาของวิธีการที่มีอยู่: ทำไม AI เขียน CUDA ไม่เก่ง?
- 1.1 เวิร์กโฟลว์แบบไม่ฝึกฝน: ข้อจำกัดโดยธรรมชาติของการพึ่งพาโมเดลพื้นฐาน
- 1.2 วิธีการปรับแต่ง: ความขาดแคลนข้อมูลและข้อจำกัดในการฝึกฝน
- สอง CUDA Agent: สามเสาหลักสร้างระบบการเรียนรู้แบบเสริมกำลังด้วยเอเจนต์
- 2.1 เสาหลักที่หนึ่ง: ไปป์ไลน์สังเคราะห์ข้อมูลฝึกที่ขยายขนาดได้
- 2.2 เสาหลักที่สอง: วงจรเอเจนต์ที่ผสานทักษะและการออกแบบรางวัลที่แข็งแกร่ง
- 2.3 เสาหลักที่สาม: การปรับปรุงอัลกอริทึมเพื่อการฝึกที่เสถียร
- สาม การทดสอบยืนยัน: ก้าวข้ามเบสไลน์ที่แข็งแกร่งที่สุดอย่างครอบคลุม
- 3.1 การตั้งค่าการทดลอง
- 3.2 ผลลัพธ์หลัก
- 3.3 การศึกษาการกำจัดส่วนประกอบ: ทุกองค์ประกอบขาดไม่ได้
- สี่ การเปรียบเทียบงานที่เกี่ยวข้อง: ตำแหน่งที่โดดเด่นของ CUDA Agent
- ห้า การวิเคราะห์กรณีศึกษา: CUDA Agent ปรับปรุงเคอร์เนลอย่างไร
- 5.1 กรณีศึกษา Level 1: การคูณเมทริกซ์แนวทแยง
- 5.2 กรณีศึกษา Level 2: การปรับปรุงลำดับโอเปอเรเตอร์หลายตัว
- 5.3 กรณีศึกษา Level 3: ResNet BasicBlock
- หก ข้อจำกัดและแนวโน้มในอนาคต
- สรุป: จากเครื่องมือสร้างโค้ดสู่เครื่องมือปรับปรุงระบบ
หนึ่ง ปัญหาของวิธีการที่มีอยู่: ทำไม AI เขียน CUDA ไม่เก่ง?
ก่อนจะเจาะลึกถึงเทคโนโลยีหลักของ CUDA Agent จำเป็นต้องเข้าใจก่อนว่าทำไมวิธีการที่มีอยู่จึงทำงานได้ไม่ดีในงานสร้าง CUDA บทความวิจัยแบ่งงานที่มีอยู่เป็นสองประเภทหลัก:
1.1 เวิร์กโฟลว์แบบไม่ฝึกฝน: ข้อจำกัดโดยธรรมชาติของการพึ่งพาโมเดลพื้นฐาน
วิธีการที่แสดงโดย STARK, ReGraphT, EvoEngineer, CudaForge ใช้เวิร์กโฟลว์แบบไม่ฝึกฝน พวกมันพึ่งพากฎฮิวริสติกที่ออกแบบมาอย่างดีด้วยมือ เพื่อชี้นำโมเดลให้ปรับปรุงเคอร์เนลอย่างต่อเนื่องตามผลตอบรับจากการทำงาน
ปัญหาพื้นฐานของวิธีการเหล่านี้คือ: พวกมันไม่สามารถแก้ไขปัญหาที่โมเดลพื้นฐานขาดความสามารถในการเขียนโค้ด CUDA ด้วยตัวเอง ขีดจำกัดบนของการเพิ่มประสิทธิภาพ ถูกกักไว้อย่างแน่นหนาด้วยความสามารถภายในของโมเดล
1.2 วิธีการปรับแต่ง: ความขาดแคลนข้อมูลและข้อจำกัดในการฝึกฝน
แนวทางการวิจัยอีกสายหนึ่งพยายามเพิ่มความสามารถของโมเดลผ่านการปรับแต่งภายใต้การดูแลหรือการเรียนรู้แบบเสริมกำลัง งานที่เป็นตัวแทนได้แก่ Kevin, CUDA-L1, ConCuR เป็นต้น วิธีการเหล่านี้เผชิญกับความท้าทายสามประการ:
* ข้อมูลฝึกคุณภาพสูงขาดแคลน: การเขียนโค้ดอ้างอิงระดับผู้เชี่ยวชาญด้วยมือมีต้นทุนสูงมาก
* ขอบเขตการฝึกจำกัด: ขยายไปสู่สถานการณ์ที่มีคอนเท็กซ์ยาวและการโต้ตอบหลายรอบได้ยาก
* วงจรการปรับปรุงที่ตายตัว: วงจรการปรับปรุงที่ออกแบบด้วยมือจำกัดความสามารถในการสำรวจด้วยตนเองของเอเจนต์
ที่ร้ายแรงกว่านั้นคือ บางวิธีทำการฝึกและประเมินผลบนชุดข้อมูล KernelBench โดยตรง ซึ่งมีปัญหาการรั่วไหลของข้อมูล ตัวอย่างเช่น CUDA-L1 สร้างข้อมูลสำหรับการปรับแต่งภายใต้การดูแลจากโค้ดอ้างอิงของ KernelBench และใช้การเรียนรู้แบบเสริมกำลังบนงานเบนช์มาร์กเดียวกัน ส่งผลให้ผลลัพธ์ที่รายงานยากต่อการเปรียบเทียบอย่างเป็นธรรม

รูปที่ 1: ภาพรวมของไปป์ไลน์สังเคราะห์ข้อมูลสามขั้นตอน ไปป์ไลน์นี้เริ่มต้นด้วยการรวบรวมโอเปอเรเตอร์เริ่มต้นจากไลบรารี PyTorch และ Transformer เพื่อสร้างไลบรารีของไพรมิทีฟการคำนวณพื้นฐาน จากนั้นใช้โมเดลภาษาขนาดใหญ่ในการสังเคราะห์แบบผสมผสาน เพื่อสร้างงานโอเปอเรเตอร์หลายตัวที่หลอมรวมกัน สุดท้ายผ่านการกรองตามกฎ เพื่อเก็บเฉพาะงานที่สามารถทำงานได้ มีความแน่นอน ไม่ธรรมดา และมีปริมาณการคำนวณที่เหมาะสม เพื่อรับประกันคุณภาพข้อมูลและความน่าเชื่อถือของการประเมิน ไปป์ไลน์นี้เป็นหัวใจของการสังเคราะห์ข้อมูลที่ขยายขนาดได้ของ CUDA Agent ซึ่งบรรเทาปัญหาการขาดแคลนข้อมูลฝึกสำหรับเคอร์เนล CUDA ประสิทธิภาพสูงได้อย่างมีประสิทธิภาพ
สถาปัตยกรรมระบบแสดงในรูปที่ 1 ประกอบด้วยองค์ประกอบหลักสามส่วนที่ทำงานร่วมกัน: ไปป์ไลน์สังเคราะห์ข้อมูลที่ขยายขนาดได้, สภาพแวดล้อมการพัฒนา CUDA ที่เสริมทักษะ และอัลกอริทึมการเรียนรู้แบบเสริมกำลังสำหรับการฝึกที่เสถียร
2.1 เสาหลักที่หนึ่ง: ไปป์ไลน์สังเคราะห์ข้อมูลฝึกที่ขยายขนาดได้
ความขาดแคลนข้อมูลฝึกคุณภาพสูงเป็นคอขวดแรกที่การสร้างเคอร์เนล CUDA เผชิญ แนวทางแก้ไขของ CUDA Agent ค่อนข้างชาญฉลาด: เมื่องานโอเปอเรเตอร์เดี่ยวที่มีอยู่จำกัด ทำไมไม่ให้ AI รวมงานฝึกใหม่ขึ้นมาเองล่ะ?
ไปป์ไลน์นี้ประกอบด้วยสามขั้นตอน:
* การรวบรวมโอเปอเรเตอร์เริ่มต้น: ทีมงานเริ่มต้นด้วยการดึงโอเปอเรเตอร์อ้างอิงที่ใช้ PyTorch มาจากไลบรารี PyTorch และ Transformers เพื่อสร้างชุดปัญหาที่เป็นตัวเริ่มต้นอย่างครอบคลุม โอเปอเรเตอร์แต่ละตัวถูกแสดงเป็นคลาส Python ที่มีวิธีการเริ่มต้นและฟอร์เวิร์ดพาส
* การสร้างงานแบบผสมผสาน: นี่คือนวัตกรรมหลักของไปป์ไลน์ ทีมวิจัยพบว่า การหลอมรวมโอเปอเรเตอร์หลายตัวเป็นงานเดียว สามารถสร้างปัญหาการปรับปรุงที่มีคุณค่ามากขึ้นสำหรับการฝึกเอเจนต์ CUDA เพราะงานที่หลอมรวมแล้วไม่ใช่แค่การต่อแต่ละโอเปอเรเตอร์ที่ปรับปรุงแล้วเข้าด้วยกัน มันเปลี่ยนมุมมองการปรับปรุง:
1. หลีกเลี่ยงการทำให้ผลลัพธ์กลางเป็นวัตถุในหน่วยความจำส่วนกลาง
2. ผูกแต่ละขั้นตอนการคำนวณเข้าด้วยกันผ่านการแบ่งปันรีจิสเตอร์ หน่วยความจำร่วม และข้อจำกัดการครอบครอง
3. ต้องการกลยุทธ์การแมปแบบขนานและการจัดวางข้อมูลที่เป็นหนึ่งเดียว
โดยเฉพาะอย่างยิ่ง โมเดลภาษาขนาดใหญ่ถูกกระตุ้นให้สุ่มตัวอย่างโอเปอเรเตอร์จากไลบรารีโอเปอเรเตอร์ได้สูงสุด 5 ตัว และเรียงซ้อนตามลำดับเป็นเลเยอร์การคำนวณหนึ่งชั้น
* การกรองงาน: สุดท้าย ทีมงานดำเนินกระบวนการคัดกรองข้อมูลอย่างเข้มงวด โดยคัดงานที่ใช้งานไม่ได้หรือมีคุณภาพไม่ดีออกตามผลตอบรับจากการทำงาน งานที่สร้างขึ้นแต่ละงานต้องเป็นไปตามเกณฑ์สี่ข้อ:
1. สามารถทำงานได้: สามารถทำงานสำเร็จทั้งในโหมด Eager และโหมด Compile
2. มีความแน่นอน: กำจัดโอเปอเรเตอร์ที่มีความสุ่มโดยธรรมชาติ
3. ไม่ธรรมดา: ตรวจสอบว่าผลลัพธ์ภายใต้อินพุตที่ต่างกันไม่ใช่ค่าคงที่ และไม่ใช่ค่าที่แยกแยะเชิงตัวเลขไม่ได้
4. ปริมาณการคำนวณเหมาะสม: จำกัดเวลาในการทำงานของโหมด Eager ไว้ที่ระหว่าง 1ms ถึง 100ms
หลังจากกระบวนการข้างต้น สุดท้ายสร้างชุดข้อมูลฝึก CUDA-Agent-Ops-6K ที่มีตัวอย่าง 6000 ตัวอย่าง

ตารางที่ 3: องค์ประกอบของชุดข้อมูลฝึกสุดท้าย แสดงสัดส่วนของโอเปอเรเตอร์แต่ละประเภทในชุดข้อมูลหลังการสังเคราะห์และการกรอง ชุดข้อมูลมีองค์ประกอบหลักเป็นโอเปอเรเตอร์ Torch ลำดับที่สอง (คิดเป็น 83.77%) พร้อมทั้งคำนึงถึงงานโอเปอเรเตอร์เดี่ยวง่ายๆ และงานโอเปอเรเตอร์หลายตัวที่ซับซ้อน และนำเข้าโอเปอเรเตอร์ระดับสูงของ Transformers จำนวนเล็กน้อย
เพื่อให้แน่ใจว่าการประเมินเป็นกลาง ทีมงานยังได้ทำการกำจัดมลพิษข้อมูล โดยใช้เครื่องมือวัดความคล้ายคลึงของโค้ดที่ใช้ต้นไม้ไวยากรณ์นามธรรม (AST) เพื่อคัดตัวอย่างที่มีความคล้ายคลึงกับชุดทดสอบ KernelBench สูงเกินไปออก

รูปที่ 7: การกระจายตัวของความคล้ายคลึง AST สูงสุดระหว่างตัวอย่างฝึกและตัวอย่างประเมิน แกนนอนคือความคล้ายคลึง AST สูงสุด แกนตั้งคือสัดส่วนของตัวอย่างฝึกที่สอดคล้องกับความคล้ายคลึงนั้น กำหนดเกณฑ์มลพิษที่ 0.9 รูปแสดงว่าความคล้ายคลึงของตัวอย่างฝึกทั้งหมดต่ำกว่าเกณฑ์นี้
รูปด้านบนแสดงการกระจายตัวของความคล้ายคลึง AST สูงสุดระหว่างตัวอย่างฝึกแต่ละตัวอย่างกับตัวอย่างประเมินทั้งหมด หลังการกรอง ตัวอย่างฝึกส่วนใหญ่มีคะแนนความคล้ายคลึงต่ำ และไม่มีตัวอย่างใดเกินเกณฑ์กำจัดมลพิษ
2.2 เสาหลักที่สอง: วงจรเอเจนต์ที่ผสานทักษะและการออกแบบรางวัลที่แข็งแกร่ง
หลังจากได้ข้อมูลฝึกคุณภาพสูงแล้ว ความท้าทายต่อไปคือการสร้างสภาพแวดล้อมเชิงโต้ตอบที่ทำให้เอเจนต์สามารถเรียนรู้การพัฒนาเคอร์เนล CUDA ได้อย่างมีประสิทธิภาพ
- วงจรเอเจนต์: CUDA Agent ปฏิบัติตามกระบวนทัศน์ ReAct โดยสลับกันระหว่างการอนุมาน การดำเนินการ และการสังเกตสภาพแวดล้อม ทำให้เอเจนต์สามารถทำงานเขียนโค้ด การดีบัก และการปรับปรุงประสิทธิภาพได้อย่างต่อเนื่อง กระบวนการทำงานแสดงดังรูปด้านล่าง

รูปที่ 2: ภาพรวมวงจรเอเจนต์ แสดงกระบวนการทำงานของ CUDA Agent ที่ปฏิบัติตามกระบวนทัศน์ ReAct ประกอบด้วยเอกสารทักษะ พูลทรัพยากร GPU เคอร์เนล CUDA ที่สร้างขึ้น สคริปต์ตรวจสอบความถูกต้องและวิเคราะห์ประสิทธิภาพ และการเปรียบเทียบเวลาในการทำงานของเวอร์ชันการนำไปใช้งานที่ต่างกัน
- ชุดเครื่องมือพัฒนา: เอเจนต์ติดตั้งชุดเครื่องมือพัฒนาที่ครบถ้วน เพื่อสนับสนุนกระบวนการพัฒนา CUDA แบบครบวงจร รายการเครื่องมือมีดังนี้:
| เครื่องมือ | คำอธิบายฟังก์ชันการทำงาน
⚠️ หมายเหตุ: เนื้อหาได้รับการแปลโดย AI และตรวจสอบโดยมนุษย์ หากมีข้อผิดพลาดโปรดแจ้ง
本文来自网络搜集,不代表คลื่นสร้างอนาคต立场,如有侵权,联系删除。转载请注明出处:https://www.itsolotime.com/th/archives/23715
