Code Llama โมเดลภาษาขนาดใหญ่ล้ำสมัยสำหรับการเขียนโค้ด
(ai.meta.com)- ท่ามกลางความต้องการเครื่องมือช่วยเขียนโค้ดที่เพิ่มขึ้น Meta ได้เปิดตัว Code Llama ทำให้มีตัวเลือกสำหรับการสร้างโค้ด การเติมโค้ด และการดีบักบนพื้นฐานของโมเดลเปิดมากขึ้น
- โมเดลนี้เป็น Llama 2 เวอร์ชันที่นำไปฝึกเพิ่มด้วยข้อมูลโค้ด จึงรองรับงานด้านโค้ดได้ทั้งจากพรอมป์ต์โค้ดและภาษาธรรมชาติ
- มีให้เลือกขนาด 7B·13B·34B·70B โดย โมเดล 70B ถูกเปิดตัวเพิ่มเติมเมื่อวันที่ 29 มกราคม 2024 ในฐานะโมเดลที่ใหญ่ที่สุดและมีประสิทธิภาพสูงสุดในตระกูล Code Llama
- แบ่งเป็นโมเดลพื้นฐาน โมเดลเฉพาะทาง Python และ Instruct รุ่นย่อย สำหรับคำสั่งภาษาธรรมชาติ โดยควรเลือกตามความหน่วง ประสิทธิภาพ และวัตถุประสงค์การใช้งาน
- ใช้ได้ฟรีทั้งเพื่อการวิจัยและเชิงพาณิชย์ แต่ต้องปฏิบัติตามไลเซนส์และนโยบายการใช้งานที่อนุญาต พร้อมประเมินความปลอดภัยของการสร้างโค้ดควบคู่กัน
งานด้านโค้ดที่ Code Llama มุ่งเป้า
- Code Llama คือโมเดลภาษาขนาดใหญ่สำหรับการเขียนโค้ดที่สามารถสร้างโค้ดจากข้อความพรอมป์ต์ได้
- ตั้งเป้าประสิทธิภาพระดับล้ำสมัยสำหรับงานด้านโค้ดในบรรดา LLM ที่เปิดเผยสู่สาธารณะ และมีศักยภาพในการทำให้เวิร์กโฟลว์ของนักพัฒนาเร็วและมีประสิทธิภาพยิ่งขึ้น
- สามารถใช้เป็น เครื่องมือด้านประสิทธิภาพและการศึกษา ที่ช่วยลดอุปสรรคในการเริ่มเรียนเขียนโค้ด และช่วยให้โปรแกรมเมอร์เขียนซอฟต์แวร์ที่แข็งแกร่งและมีเอกสารกำกับได้ดียิ่งขึ้น
- Meta เปิดให้ใช้งาน Code Llama ภายใต้ ไลเซนส์ชุมชนเดียวกับ Llama 2
ฝึก Llama 2 เพิ่มด้วยข้อมูลโค้ด
- Code Llama คือ Llama 2 เวอร์ชันที่ปรับให้เชี่ยวชาญด้านโค้ดโดยการฝึกเพิ่มเติมด้วยชุดข้อมูลเฉพาะทางโค้ด
- รับได้ทั้งพรอมป์ต์โค้ดและภาษาธรรมชาติเป็นอินพุต และสามารถสร้างทั้งโค้ดและข้อความภาษาธรรมชาติที่เกี่ยวกับโค้ดได้
- ตัวอย่างพรอมป์ต์: “เขียนฟังก์ชันที่พิมพ์ลำดับฟีโบนักชีให้หน่อย”
- ใช้สำหรับการเติมโค้ดและการดีบักได้ด้วย
- ภาษาที่รองรับรวมถึง Python, C++, Java, PHP, Typescript(JavaScript), C#, Bash
เกณฑ์การเลือกตามขนาดและคอนเท็กซ์
- Code Llama มีให้ในขนาดพารามิเตอร์ 7B, 13B, 34B, 70B
- โมเดล 7B, 13B, 34B ถูกฝึกด้วยโค้ดและข้อมูลที่เกี่ยวข้องกับโค้ดจำนวน 500B โทเค็น ส่วนโมเดล 70B ถูกฝึกด้วย 1T โทเค็น
- โมเดลพื้นฐานและ Instruct ของ 7B และ 13B ยังถูกฝึกความสามารถ fill-in-the-middle(FIM) เพื่อแทรกโค้ดลงกลางโค้ดเดิมได้
- จึงรองรับงานอย่างการเติมโค้ดได้โดยตรง
- ขนาดโมเดลควรเลือกตามรูปแบบการให้บริการและข้อกำหนดด้านความหน่วง
- โมเดล 7B สามารถให้บริการได้บน GPU เดี่ยว
- โมเดล 34B และ 70B ให้ผลลัพธ์ดีที่สุดและช่วยงานเขียนโค้ดได้ดีกว่า
- โมเดล 7B และ 13B เร็วกว่า จึงเหมาะกับงานที่ต้องการความหน่วงต่ำ เช่น การเติมโค้ดแบบเรียลไทม์
- โมเดล Code Llama ให้การสร้างผลลัพธ์ที่เสถียรได้ที่คอนเท็กซ์สูงสุด 100,000 โทเค็น
- ทุกโมเดลถูกฝึกด้วยลำดับความยาว 16,000 โทเค็น
- และแสดงการปรับปรุงเมื่อรับอินพุตยาวได้ถึง 100,000 โทเค็น
สามรุ่นย่อย: พื้นฐาน, Python, Instruct
- ตระกูล Code Llama แบ่งออกเป็นสามรุ่นย่อย
- Code Llama: โมเดลโค้ดพื้นฐาน
- Code Llama - Python: โมเดลเฉพาะทาง Python
- Code Llama - Instruct: โมเดลที่ปรับจูนเพื่อเข้าใจคำสั่งภาษาธรรมชาติ
- Code Llama - Python ถูกปรับจูนเพิ่มด้วย โค้ด Python 100B โทเค็น
- Python เป็นภาษาที่ถูกใช้วัดผลในการสร้างโค้ดมากที่สุด
- Python และ PyTorch มีบทบาทสำคัญในชุมชน AI
- Code Llama - Instruct เป็นรุ่นย่อยที่ฝึกต่อด้วยอินพุตคำสั่งภาษาธรรมชาติและเอาต์พุตที่คาดหวัง
- ออกแบบมาเพื่อให้เข้าใจสิ่งที่มนุษย์คาดหวังจากพรอมป์ต์ได้ดียิ่งขึ้น
- ปรับจูนเพื่อสร้างคำตอบที่เป็นประโยชน์และปลอดภัยในภาษาธรรมชาติ
- หากใช้ Code Llama สำหรับการสร้างโค้ด แนะนำให้ใช้รุ่นย่อย Code Llama - Instruct
- ไม่แนะนำให้ใช้ Code Llama และ Code Llama - Python กับงานภาษาธรรมชาติทั่วไป เพราะไม่ได้ออกแบบมาให้ทำตามคำสั่งภาษาธรรมชาติ
- Code Llama ออกแบบมาสำหรับงานเฉพาะทางด้านโค้ด และไม่เหมาะเป็นโมเดลตั้งต้นสำหรับงานประเภทอื่น
การเปิดตัวเพิ่มเติมของ Code Llama 70B
- ในอัปเดตวันที่ 29 มกราคม 2024 ได้เปิดตัว Code Llama 70B
- 70B เป็นโมเดลที่ใหญ่ที่สุดและมีประสิทธิภาพดีที่สุดในตระกูล Code Llama
- ให้บริการในสามเวอร์ชันเช่นเดียวกับ Code Llama รุ่นก่อนหน้า และทั้งหมดใช้ฟรีทั้งเพื่อการวิจัยและเชิงพาณิชย์
- CodeLlama - 70B: โมเดลโค้ดพื้นฐาน
- CodeLlama - 70B - Python: โมเดล 70B เฉพาะทาง Python
- Code Llama - 70B - Instruct 70B: โมเดลที่ปรับจูนเพื่อเข้าใจคำสั่งภาษาธรรมชาติ
เบนช์มาร์กและการประเมินความปลอดภัย
- การประเมินประสิทธิภาพทำผ่านเบนช์มาร์กด้านการเขียนโค้ดสองชุด
- ในการทดสอบเบนช์มาร์ก Code Llama ทำผลงานได้ดีกว่า LLM โอเพนซอร์สที่เชี่ยวชาญด้านโค้ดและดีกว่า Llama 2
- Code Llama 34B ทำได้ 53.7% บน HumanEval และ 56.2% บน MBPP
- ถือเป็นระดับสูงสุดเมื่อเทียบกับโซลูชันเปิดระดับล้ำสมัยที่เปิดเผยสู่สาธารณะ และอยู่ในระดับใกล้เคียง ChatGPT
- Meta ได้ดำเนินมาตรการด้านความปลอดภัยหลายอย่างก่อนเปิดตัว และประเมินเชิงปริมาณความเสี่ยงในการสร้างโค้ดอันตรายผ่านกระบวนการเรดทีม
- สร้างพรอมป์ต์ที่ร้องขอโค้ดอันตรายด้วยเจตนาที่ชัดเจน
- ให้คะแนนโดยเปรียบเทียบคำตอบของ Code Llama กับคำตอบของ GPT-3.5 Turbo จาก ChatGPT
- ผลลัพธ์ระบุว่า Code Llama ให้คำตอบที่ปลอดภัยกว่า
- รายละเอียดของการเรดทีมโดยผู้เชี่ยวชาญด้าน Responsible AI, วิศวกรรมความปลอดภัยเชิงรุก, การพัฒนามัลแวร์ และวิศวกรรมซอฟต์แวร์ รวมอยู่ในงานวิจัย
เอกสารเผยแพร่และการใช้งานอย่างรับผิดชอบ
- สูตรการฝึกของ Code Llama เปิดเผยใน GitHub repository
- มี น้ำหนักโมเดล ให้ใช้งานด้วย
- งานวิจัย ครอบคลุมการพัฒนา Code Llama วิธีทดสอบเบนช์มาร์ก ข้อจำกัด ความท้าทายที่ทราบแล้ว มาตรการบรรเทา และโจทย์สำหรับการศึกษาในอนาคต
- Responsible Use Guide ก็ได้รับการอัปเดตเช่นกัน
- นิยามนโยบายด้านเนื้อหาและมาตรการบรรเทา
- การเตรียมข้อมูล
- การปรับจูนโมเดล
- การประเมินและปรับปรุงประสิทธิภาพ
- การรับมือความเสี่ยงในระดับอินพุตและเอาต์พุต
- การสร้างความโปร่งใสและกลไกรายงานในการปฏิสัมพันธ์กับผู้ใช้
- นักพัฒนาควรประเมินโมเดลด้วยเบนช์มาร์กเฉพาะทางด้านโค้ด
- แนะนำให้ศึกษาความปลอดภัยสำหรับ กรณีการใช้งานเฉพาะทางด้านโค้ด เช่น การสร้างมัลแวร์ ไวรัสคอมพิวเตอร์ และโค้ดประสงค์ร้าย
- แนะนำให้ใช้ชุดข้อมูลด้านความปลอดภัยสำหรับการประเมินแบบอัตโนมัติและโดยมนุษย์ รวมถึงการเรดทีมด้วย adversarial prompt
บทบาทในระบบนิเวศของโมเดลเขียนโค้ดแบบเปิด
- Code Llama ถูกออกแบบมาเพื่อสนับสนุนวิศวกรซอฟต์แวร์ในหลายภาคส่วน เช่น งานวิจัย อุตสาหกรรม โครงการโอเพนซอร์ส NGO และองค์กรธุรกิจ
- ยังมีกรณีใช้งานอีกมากที่เกินกว่าขอบเขตที่โมเดลพื้นฐานและ Instruct รุ่นปัจจุบันรองรับได้
- Meta คาดหวังว่า Code Llama จะกระตุ้นให้ผู้อื่นนำ Llama 2 ไปใช้สร้างเครื่องมือใหม่สำหรับงานวิจัยและผลิตภัณฑ์เชิงพาณิชย์
- เอกสารที่เกี่ยวข้อง:
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News