SelfCodeAlign: การจัดแนวอัตโนมัติสำหรับการสร้างโค้ด
Author
Venue
NeurIPS 2024
Abstract
การปรับแต่งคำสั่งเป็นวิธีการปรับแต่งแบบมีผู้สอนที่ช่วยปรับปรุงความสามารถของโมเดลภาษาขนาดใหญ่ (LLMs) ในการปฏิบัติตามคำสั่งของมนุษย์ได้อย่างมีนัยสำคัญ เราขอเสนอ SelfCodeAlign ซึ่งเป็นกระบวนการแรกที่โปร่งใสอย่างสมบูรณ์และอนุญาตให้ใช้ได้อย่างเสรีสำหรับการจัดแนวโค้ด LLM ด้วยตนเองโดยไม่ต้องมีการกำกับดูแลหรือการกลั่นกรองจากมนุษย์อย่างกว้างขวาง SelfCodeAlign ใช้โมเดลพื้นฐานเดียวกันสำหรับการอนุมานตลอดกระบวนการสร้างข้อมูล โดยเริ่มจากการสกัดแนวคิดการเขียนโค้ดที่หลากหลายจากตัวอย่างโค้ดคุณภาพสูงเพื่อสร้างงานใหม่ จากนั้นจึงสุ่มตัวอย่างคำตอบหลายชุดต่องาน จับคู่แต่ละชุดกับกรณีทดสอบ และตรวจสอบความถูกต้องในสภาพแวดล้อมแซนด์บ็อกซ์ สุดท้ายนี้ จะเลือกตัวอย่างที่ผ่านเกณฑ์เป็นตัวอย่างสำหรับการปรับแต่งคำสั่ง ในงานทดลองหลักของเรา เราใช้ SelfCodeAlign ร่วมกับ CodeQwen1.5-7B เพื่อสร้างชุดข้อมูลจำนวน 74,000 คู่คำสั่ง-ผลลัพธ์ จากนั้นจึงทำการปรับแต่งโมเดลบนชุดข้อมูลนี้ ซึ่งนำไปสู่โมเดลที่สามารถทำคะแนน pass@1 บน HumanEval+ ได้ถึง 67.1% สูงกว่า CodeLlama-70B-Instruct ทั้งที่มีขนาดเพียงหนึ่งในสิบเท่านั้น ในทุกเกณฑ์การวัดประสิทธิภาพ โมเดลที่ได้รับการปรับแต่งอย่างละเอียดนี้แสดงผลลัพธ์ที่ดีกว่าเวอร์ชันต้นฉบับที่ฝึกด้วย OctoPack ซึ่งเป็นวิธีการล้ำสมัยก่อนหน้านี้สำหรับการปรับแต่งคำสั่งโดยไม่ต้องใช้การกำกับดูแลหรือการกลั่นกรองจากมนุษย์ นอกจากนี้ เรายังแสดงให้เห็นว่า SelfCodeAlign มีประสิทธิภาพกับ LLM ขนาดต่างๆ ตั้งแต่ 3B ถึง 33B และโมเดลพื้นฐานสามารถได้รับประโยชน์มากขึ้นจากการปรับให้สอดคล้องกับการกระจายข้อมูลของตนเอง เรายังได้ตรวจสอบประสิทธิภาพของแต่ละองค์ประกอบในกระบวนการของเราเพิ่มเติม โดยแสดงให้เห็นว่า SelfCodeAlign มีประสิทธิภาพเหนือกว่าทั้งการถ่ายทอดโดยตรงจาก GPT-4o และวิธีการถ่ายทอดที่อิงจาก GPT-3.5 ที่เป็นผู้นำ เช่น OSS-Instruct และ Evol-Instruct SelfCodeAlign ยังนำไปสู่การสร้าง StarCoder2-Instruct ซึ่งเป็น LLM สำหรับโค้ดที่โปร่งใสอย่างสมบูรณ์ ได้รับอนุญาตอย่างเสรี และปรับแนวด้วยตนเองเป็นรายแรกที่บรรลุประสิทธิภาพการเขียนโค้ดที่ล้ำสมัยที่สุด
