CodeGemma model kartı

Model sayfası: CodeGemma

Kaynaklar ve teknik dokümanlar:

Kullanım Şartları: Şartlar

Yazarlar: Google

Model bilgileri

Model özeti

Açıklama

CodeGemma, Gemma'nın üzerine inşa edilmiş hafif açık kod modelleri ailesidir. CodeGemma modelleri, metinden metne ve metinden koda kod çözücü modellerdir. Kod tamamlama ve kod oluşturma görevlerinde uzmanlaşmış 7 milyar önceden eğitilmiş varyant, kod sohbeti ve talimatları takip etme için 7 milyar parametre talimat ayarlı varyant ve hızlı kod tamamlama için 2 milyar parametre önceden eğitilmiş varyant olarak kullanılabilir.

Girdiler ve çıktılar

  • Giriş: Önceden eğitilmiş model varyantları için: kod tamamlama ve oluşturma senaryoları ya da doğal dil metni/istemi için kod ön eki ve isteğe bağlı olarak son eki. Talimatla ayarlanmış model varyantı için: doğal dil metni veya istem.

  • Çıktı: Önceden eğitilmiş model varyantları için: boşluk doldurma kod tamamlama, kod ve doğal dil. Talimat ayarlı model varyantı için: kod ve doğal dil.

Alıntı

@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}
}

Model verileri

Eğitim veri kümesi

Temel model olarak Gemma'nın kullanıldığı CodeGemma 2B ve 7B önceden eğitilmiş varyantları, açık kaynak matematik veri kümelerinden ve sentetik olarak oluşturulmuş koddan elde edilen, ağırlıklı olarak İngilizce dil verilerinden oluşan ek 500 ila 1.000 milyar jeton üzerinde daha da eğitilir.

Eğitim verileri işleme

CodeGemma'yı eğitmek için aşağıdaki veri ön işleme teknikleri uygulandı:

  • FIM: Önceden eğitilmiş CodeGemma modelleri, boşluk doldurma (FIM) görevlerine odaklanır. Modeller hem PSM hem de SPM modlarıyla çalışacak şekilde eğitilir. FIM ayarlarımız, 50-50 PSM/SPM ile% 80 ila% 90 FIM oranıdır.
  • Bağımlılık Grafiği Tabanlı Paketleme ve Birim Testi Tabanlı Sözlüksel Paketleme teknikleri: Modelin gerçek dünya uygulamalarıyla uyumunu iyileştirmek için, her depodaki en alakalı kaynak dosyaların birlikte yerleştirilmesi amacıyla eğitim örneklerini proje/depo düzeyinde yapılandırdık. Özellikle, iki sezgisel teknik kullandık: bağımlılık grafiğine dayalı paketleme ve birim testi tabanlı söz dizimi paketleme.
  • Son eki tamamen rastgele dağıtım yerine sentaktik olarak daha doğal bir noktada başlatmak için dokümanları ön ek, orta ve son ek olarak bölmeyle ilgili yeni bir teknik geliştirdik.
  • Güvenlik: Gemma'ya benzer şekilde, kişisel verilerin filtrelenmesi, CSAM filtrelemesi ve içerik kalitesine ve güvenliğine dayalı diğer filtrelemeler dahil olmak üzere politikalarımıza uygun sıkı güvenlik filtrelemesi uyguladık.

Uygulama bilgileri

Eğitim sırasında kullanılan donanım ve çerçeveler

Gemma gibi CodeGemma da JAX ve ML Pathways kullanılarak en yeni nesil Tensor İşleme Birimi (TPU) donanımı (TPUv5e) üzerinde eğitildi.

Değerlendirme bilgileri

Karşılaştırma sonuçları

Değerlendirme yaklaşımı

Kodlama karşılaştırma sonuçları

Karşılaştırma 2B 2B (1.1) 7 milyar 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 Tek Satır 78,4 79,3 76,1 68,3 77,4
HumanEval Çok Satırlı 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
BC HE JavaScript 21,7 28,0 39,8 46,0 48,4
BC 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 Rust 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
BC MBPP JavaScript 45,3 45,0 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 Rust 45,3 47,4 52,9 53,5 52,3

Doğal dil karşılaştırmaları (7 milyar modelde)

Çeşitli dil yeteneği metriklerinde Gemma, CodeGemma PT ve CodeGemma IT'yi karşılaştıran çubuk grafik. Üç model de kabaca benzerdir. CodeGemma, güçlü doğal dil anlama özelliğini korur.

Etik ve güvenlik

Etik ve güvenlik değerlendirmeleri

Değerlendirme yaklaşımı

Değerlendirme yöntemlerimiz arasında yapılandırılmış değerlendirmeler ve ilgili içerik politikalarının şirket içinde yapılan testleri yer alır. Kırmızı takım çalışması, her biri farklı hedeflere ve insan değerlendirme metriklerini kullanan çeşitli ekipler tarafından yürütüldü. Bu modeller, etik ve güvenlikle ilgili çeşitli kategorilere göre değerlendirildi. Örneğin:

  • İçerik güvenliğini ve temsili zararları kapsayan istemler için gerçek kişiler tarafından yapılan değerlendirme. Değerlendirme yaklaşımı hakkında daha fazla bilgi için Gemma model kartına bakın.

  • Otonom bilgisayar korsanlığı özelliklerini test etmeye ve olası zararların sınırlı olmasını sağlamaya odaklanan siber saldırı özelliklerinin özel testi.

Değerlendirme sonuçları

Etik ve güvenlik değerlendirmelerinin sonuçları, çocuk güvenliği, içerik güvenliği, temsili zararlar, ezberleme, geniş ölçekli zararlar gibi kategorilerde şirket içi politikalara uygunluk için kabul edilebilir eşikler dahilindedir. Daha fazla bilgi için Gemma model kartına göz atın.

Model kullanımı ve sınırlamaları

Bilinen sınırlamalar

Büyük dil modelleri (LLM'ler), eğitim verilerine ve teknolojinin doğasında var olan sınırlamalara bağlı olarak sınırlamalara sahiptir. LLM'lerin sınırlamaları hakkında daha fazla bilgi için Gemma model kartına bakın.

Etik hususlar ve riskler

Büyük dil modellerinin (LLM'ler) geliştirilmesi, çeşitli etik endişelere yol açar. Bu modellerin geliştirilmesinde birçok unsuru dikkate aldık.

Model ayrıntıları için lütfen Gemma model kartındaki aynı tartışmaya bakın.

Kullanım amacı

Başvuru

Code Gemma modelleri, BT ve PT modelleri arasında değişen çok çeşitli uygulamalara sahiptir. Aşağıdaki olası kullanımlar listesi kapsamlı değildir. Bu listenin amacı, model oluşturucuların model eğitimi ve geliştirme kapsamında değerlendirdiği olası kullanım alanları hakkında bağlamsal bilgi sağlamaktır.

  • Kod tamamlama: PT modelleri, IDE uzantısıyla kodu tamamlamak için kullanılabilir
  • Kod Oluşturma: BT modeli, IDE uzantısı olsun veya olmasın kod oluşturmak için kullanılabilir
  • Kod Konuşması: BT modeli, kod hakkında konuşan sohbet arayüzlerini destekleyebilir
  • Kod Eğitimi: BT modeli, etkileşimli kod öğrenme deneyimlerini destekler, söz dizimi düzeltmesine yardımcı olur veya kodlama alıştırması sağlar

Avantajları

Bu model ailesi, kullanıma sunulduğunda benzer büyüklükteki modellere kıyasla Sorumlu Yapay Zeka geliştirmesi için sıfırdan tasarlanmış, yüksek performanslı, açık kod odaklı büyük dil modeli uygulamaları sunar.

Bu dokümanda açıklanan kodlama karşılaştırma değerlendirme metriklerini kullanan bu modellerin, benzer boyutta diğer açık model alternatiflerine kıyasla üstün performans sağladığı gösterilmiştir.