การ์ดโมเดล 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 ได้รับการฝึกอบรมเพิ่มเติมด้วยโทเค็นภาษาอังกฤษเป็นหลัก อีก 500 ถึง 1 แสนล้านโทเค็น ข้อมูลภาษาจากชุดข้อมูลคณิตศาสตร์แบบโอเพนซอร์สและสร้างขึ้นโดยการสังเคราะห์ โค้ด

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

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

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

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

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

เช่นเดียวกับ Gemma CodeGemma ได้รับการฝึกอบรมเกี่ยวกับ หน่วยประมวลผล Tensor (TPU) ฮาร์ดแวร์ (TPUv5e) โดยใช้ JAX และ ML เส้นทาง

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

ผลการเปรียบเทียบ

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

  • การเปรียบเทียบการเติมโค้ด: 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 พันล้าน 7B-IT 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 แบบ Multi Line 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
บริติช HE Kotlin 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 บาท 58.2 61.4 61.4
BC MBPP Kotlin 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) มีข้อจำกัดตามข้อมูลการฝึกและ ข้อจำกัดโดยธรรมชาติของเทคโนโลยี โปรดดู การ์ดโมเดล Gemma เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อจำกัดของ LLM

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

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

โปรดดูการสนทนาเดียวกันนี้ ในการ์ดโมเดล Gemma เพื่อดูรายละเอียดโมเดล

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

แอปพลิเคชัน

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

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

ประโยชน์

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

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