การ์ดโมเดล CodeGemma

หน้าโมเดล: CodeGemma

แหล่งข้อมูลและเอกสารทางเทคนิค

ข้อกำหนดในการให้บริการ: ข้อกำหนด

ผู้เขียน: Google

ข้อมูลรุ่น

สรุปโมเดล

คำอธิบาย

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

อินพุตและเอาต์พุต

  • อินพุต: สำหรับตัวแปรโมเดลที่ฝึกไว้แล้ว: คำนำหน้าโค้ดและคำต่อท้ายที่ไม่บังคับสำหรับการเติมโค้ดและสถานการณ์การสร้าง หรือข้อความ/พรอมต์ที่เป็นภาษาธรรมชาติ สำหรับตัวแปรของโมเดลที่มีการปรับแต่ง: ข้อความหรือพรอมต์ที่เป็นภาษาธรรมชาติ

  • เอาต์พุต: สำหรับตัวแปรโมเดลที่ฝึกไว้แล้ว: การเติมโค้ดแบบเติมตรงกลาง โค้ด และภาษาธรรมชาติ สำหรับตัวแปรของโมเดลที่มีการปรับแต่ง: โค้ดและภาษาธรรมชาติ

การอ้างอิง

@article{codegemma_2024,
    title={CodeGemma: Open Code Models Based on Gemma},
    url={https://goo.gle/codegemma},
    author={ {CodeGemma Team} and Hartman, Ale Jakse and Hu, Andrea and Choquette-Choo, Christopher A. and Zhao, Heri and Fine, Jane and Hui,
    Jeffrey and Shen, Jingyue and Kelley, Joe and Howland, Joshua and Bansal, Kshitij and Vilnis, Luke and Wirth, Mateo and Nguyen, Nam, and Michel, Paul and Choy, Peter and Joshi, Pratik and Kumar, Ravin and Hashmi, Sarmad and Agrawal, Shubham and Zuo, Siqi and Warkentin, Tris and Gong, Zhitao et al.},
    year={2024}
}

ข้อมูลโมเดล

ชุดข้อมูลการฝึก

เมื่อใช้ Gemma เป็นโมเดลฐาน ตัวแปรที่ฝึกแล้วล่วงหน้าของ CodeGemma 2B และ 7B จะได้รับการฝึกเพิ่มเติมจากโทเค็นเพิ่มเติมอีก 5 แสนถึง 1, 000 แสนล้านรายการซึ่งหลักๆ แล้วเป็นข้อมูลภาษาอังกฤษจากชุดข้อมูลคณิตศาสตร์แบบโอเพนซอร์สและโค้ดสังเคราะห์

การประมวลผลข้อมูลการฝึก

มีการใช้เทคนิคก่อนการประมวลผลข้อมูลต่อไปนี้กับการฝึก CodeGemma

  • FIM - โมเดล CodeGemma ที่ฝึกไว้แล้วล่วงหน้าจะเน้นงานแบบ Fill-in-the-middle (FIM) โดยโมเดลดังกล่าวได้รับการฝึกให้ทำงานทั้งในโหมด PSM และ SPM การตั้งค่า FIM ของเราคือ อัตรา FIM 80% ถึง 90% โดยมี PSM/SPM 50-50 ราย
  • เทคนิคการบรรจุหีบห่อแบบกราฟที่อิงตามกราฟและหน่วยการทดสอบ: เพื่อปรับปรุงความสอดคล้องของโมเดลกับการใช้งานจริง เราได้จัดโครงสร้างตัวอย่างการฝึกที่ระดับโปรเจ็กต์/ที่เก็บเพื่อระบุตำแหน่งไฟล์ต้นทางที่เกี่ยวข้องที่สุดภายในที่เก็บแต่ละแห่ง กล่าวอย่างเจาะจงคือ เราใช้เทคนิคการเรียนรู้ 2 อย่าง ได้แก่ การแพ็กตามกราฟแบบอ้างอิง และการบรรจุคลังคำศัพท์ตามการทดสอบหน่วย
  • เราได้พัฒนาเทคนิคใหม่ๆ ในการแยกเอกสารออกเป็นคำนำหน้า ตรงกลาง และส่วนต่อท้าย เพื่อทำให้ส่วนต่อท้ายเริ่มต้นโดยมีไวยากรณ์ที่เป็นธรรมชาติมากกว่าที่จะกระจายแบบสุ่มเพียงอย่างเดียว
  • ความปลอดภัย: เช่นเดียวกับ Gemma เราใช้การกรองความปลอดภัยที่เข้มงวด เช่น การกรองข้อมูลส่วนตัว การกรอง CSAM และการกรองอื่นๆ ตามคุณภาพและความปลอดภัยของเนื้อหาซึ่งสอดคล้องกับนโยบายของเรา

ข้อมูลการใช้งาน

ฮาร์ดแวร์และเฟรมเวิร์กที่ใช้ระหว่างการฝึกอบรม

CodeGemma ได้รับการฝึกด้วยฮาร์ดแวร์ Tensor Processing Unit (TPU) รุ่นล่าสุด (TPUv5e) โดยใช้ JAX และ ML Pathways เช่นเดียวกับ Gemma

ข้อมูลการประเมิน

ผลลัพธ์การเปรียบเทียบ

วิธีการประเมิน

  • การเปรียบเทียบการเติมโค้ด: HumanEval (HE) (การเติมโค้ดบรรทัดเดียวและหลายบรรทัด)
  • การเปรียบเทียบการสร้างโค้ด: HumanEval, MBPP, BabelCode (BC) [C++, C#, Go, Java, JavaScript, Kotlin, Python, Rust]
  • ถามและตอบ: BoolQ, PIQA, TriviaQA
  • ภาษาธรรมชาติ: ARC-Challenge, HellaSwag, MMLU, WinoGrande
  • เหตุผลทางคณิตศาสตร์: GSM8K, MATH

ผลการเปรียบเทียบการเขียนโค้ด

การเปรียบเทียบ 2 พันล้าน 2 พันล้าน (1.1) 7 พันล้าน 7 พันล้าน-ไอที 7B-IT (1.1)
HumanEval 31.1 37.8 44.5 56.1 60.4
MBPP 43.6 49.2 56.2 54.2 55.6
บรรทัดเดียวของ HumanEval 78.4 79.3 76.1 68.3 77.4
หลายเส้นของ HumanEval 51.4 51.0 58.4 20.1 23.7
BC HE C++ 24.2 19.9 32.9 42.2 46.6
BC HE C# 10.6 26.1 22.4 26.7 54.7
BC HE Go 20.5 18.0 21.7 28.6 34.2
BC HE Java 29.2 29.8 41.0 48.4 50.3
JavaScript ของ BC HE 21.7 28.0 39.8 46.0 48.4
BC HE คอตลิน 28.0 32.3 39.8 51.6 47.8
BC HE Python 21.7 36.6 42.2 48.4 54.0
BC HE สนิม 26.7 24.2 34.1 36.0 37.3
BC MBPP C++ 47.1 38.9 53.8 56.7 63.5
BC MBPP C# 28.7 45.3 32.5 41.2 62.0
BC MBPP Go 45.6 38.9 43.3 46.2 53.2
BC MBPP Java 41.8 49.7 50.3 57.3 62.9
JavaScript ของ BC MBPP 45.3 45.0 58.2 61.4 61.4
BC MBPP คอตลิน 46.8 49.7 54.7 59.9 62.6
BC MBPP Python 38.6 52.9 59.1 62.0 60.2
BC MBPP สนิม 45.3 47.4 52.9 53.5 52.3

การเปรียบเทียบภาษาธรรมชาติ (ในรุ่น 7 พันล้าน)

แผนภูมิแท่งเปรียบเทียบ Gemma, CodeGemma PT และ CodeGemma IT ในเมตริกความสามารถด้านภาษาต่างๆ ทั้ง 3 โมเดลมีความคล้ายคลึงกัน โดย CodeGemma ยังคงรักษาความเข้าใจที่เป็นธรรมชาติของภาษาได้ดีไว้เช่นเดิม

จริยธรรมและความปลอดภัย

การประเมินจริยธรรมและความปลอดภัย

วิธีการประเมิน

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

  • การประเมินโดยเจ้าหน้าที่เกี่ยวกับพรอมต์ที่ครอบคลุมเนื้อหาด้านความปลอดภัยและอันตรายต่อตัวแทน ดูรายละเอียดเพิ่มเติมเกี่ยวกับแนวทางการประเมินได้ในการ์ดโมเดลของ Gemma

  • การทดสอบความสามารถในการต้านทานการถูกชักจูงทางไซเบอร์โดยเฉพาะ โดยเน้นการทดสอบความสามารถในการแฮ็กแบบอิสระและแน่ใจว่ามีอันตรายที่อาจเกิดขึ้นได้อย่างจำกัด

ผลการประเมิน

ผลการประเมินด้านจริยธรรมและความปลอดภัยอยู่ในเกณฑ์ที่ยอมรับได้ เพื่อให้เป็นไปตามนโยบายภายใน สำหรับหมวดหมู่ต่างๆ เช่น ความปลอดภัยของเด็ก ความปลอดภัยของเนื้อหา ภัยอันตรายในการนำเสนอ การจำ อันตรายในวงกว้าง ดูรายละเอียดเพิ่มเติมได้ที่การ์ดโมเดลของ Gemma

การใช้งานและข้อจํากัดของโมเดล

ข้อจำกัดที่ทราบ

โมเดลภาษาขนาดใหญ่ (LLM) มีข้อจำกัดตามข้อมูลการฝึกและข้อจำกัดตามปกติของเทคโนโลยี ดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อจำกัดของ LLM ได้ที่การ์ดโมเดลของ Gemma

ความเสี่ยงและข้อควรพิจารณาด้านจริยธรรม

การพัฒนาโมเดลภาษาขนาดใหญ่ (LLM) ก่อให้เกิดข้อกังวลด้านจริยธรรมหลายประการ เราได้พิจารณาอย่างรอบคอบในหลายๆ ด้านในการพัฒนาโมเดลเหล่านี้

โปรดดูรายละเอียดโมเดลจากการสนทนาเดียวกันในการ์ดโมเดลของ Gemma

วัตถุประสงค์การใช้งาน

แอปพลิเคชัน

โมเดล Code Gemma มีแอปพลิเคชันมากมาย ซึ่งแตกต่างกันไปตามรุ่นของ IT และ PT รายการการใช้งานที่เป็นไปได้ต่อไปนี้เป็นเพียงตัวอย่างบางส่วนเท่านั้น จุดประสงค์ของรายการนี้คือเพื่อให้ข้อมูลบริบทเกี่ยวกับกรณีการใช้งานที่เป็นไปได้ที่ผู้สร้างโมเดลพิจารณาเป็นส่วนหนึ่งของการฝึกและพัฒนาโมเดล

  • การเติมโค้ด: โมเดล PT สามารถใช้เพื่อทำโค้ดให้เสร็จสมบูรณ์ด้วยส่วนขยาย IDE
  • การสร้างโค้ด: สามารถใช้โมเดล IT เพื่อสร้างโค้ดโดยมีหรือไม่มีส่วนขยาย IDE
  • Code Conversation: โมเดลไอทีสามารถขับเคลื่อนอินเทอร์เฟซการสนทนาที่กล่าวถึง เรื่องโค้ด
  • Code Education: โมเดลไอทีสนับสนุนประสบการณ์การเรียนรู้โค้ดแบบอินเทอร์แอกทีฟ ช่วยในการแก้ไขไวยากรณ์ หรือฝึกเขียนโค้ด

ข้อดี

ในช่วงเปิดตัว โมเดลในกลุ่มนี้มีการติดตั้งใช้งานโมเดลภาษาขนาดใหญ่ที่มุ่งเน้นโค้ดแบบเปิดที่มีประสิทธิภาพสูง ซึ่งออกแบบมาตั้งแต่ต้นเพื่อการพัฒนา AI อย่างมีความรับผิดชอบ เมื่อเทียบกับโมเดลที่มีขนาดใกล้เคียงกัน

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