Karta modelu CodeGemma

Strona modelu: CodeGemma

Zasoby i dokumentacja techniczna:

Warunki korzystania z usługi: Warunki

Autorzy: Google

Informacje o modelu

Podsumowanie modelu

Opis

CodeGemma to rodzina lekkiego modelu otwartego kodu stworzonego na bazie Gemma. Modele CodeGemma to modele oparte wyłącznie na dekoderze tekstu na tekst i tekst na kod, które są jest dostępna w postaci 7 miliardów wstępnie wytrenowanych wariantów, które specjalizują się w uzupełnianiu kodu i generowania kodu. To wariant dostrojony z 7 miliardami parametrów, czat z kodem i instrukcje oraz wstępnie wytrenowany wariant z 2 miliardami parametrów .

Dane wejściowe i wyjściowe

  • Dane wejściowe: w przypadku wytrenowanych wersji modelu: prefiks kodu i opcjonalnie sufiks w przypadku scenariuszy uzupełniania i generowania kodu lub tekstu/promptów w języku naturalnym. W przypadku wariantu modelu dostrojonego do instrukcji: tekst lub prompt w języku naturalnym.

  • Dane wyjściowe: w przypadku już wytrenowanych wariantów modelu: wypełnianie kodu pośrodku do uzupełnienia, kodu i języka naturalnego. W przypadku wariantu modelu dostrojonego zgodnie z instrukcjami: z kodem i językiem naturalnym.

Cytowanie

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

Dane modelu

Zbiór danych treningowych

Jeśli jako model podstawowy wykorzystywana jest Gemma, wytrenowane warianty CodeGemma 2B i 7B są o dodatkowe 500–1000 miliardów tokenów głównie w języku angielskim dane językowe ze zbiorów danych matematycznych typu open source i generowanych syntetycznie w kodzie.

Przetwarzanie danych treningowych

Do trenowania CodeGemma zastosowano te techniki wstępnego przetwarzania danych:

  • FIM – wytrenowane modele CodeGemma koncentrują się na zadaniach typu „fill in the middle” (FIM). Modele są wytrenowane do pracy z trybami PSM i SPM. Nasze ustawienia FIM Stawkę FIM na poziomie 80–90% przy stawce 50–50 PSM/SPM.
  • Techniki pakowania opartego na grafie zależności i testach jednostkowych: Aby poprawić zgodność modelu z rzeczywistymi aplikacjami, ustrukturyzowaliśmy trenowanie przykłady na poziomie projektu/repozytorium w celu kolokacji najbardziej odpowiednich źródeł w każdym repozytorium. W szczególności zastosowaliśmy dwie metody heurystyczne, metody: pakowanie oparte na grafach zależności i pakowanie leksykalne z użyciem testów jednostkowych.
  • Opracowaliśmy nowatorską metodę dzielenia dokumentów na przedrostki i sufiks w celu uzyskania bardziej naturalnego początku sufiksu na rozkładzie losowym, a nie na rozkładzie losowym.
  • Bezpieczeństwo: podobnie jak Gemma, wdrożyliśmy rygorystyczne filtrowanie zabezpieczeń, filtrowanie danych osobowych, CSAM i inne filtrowanie na podstawie treści jakości i bezpieczeństwa zgodnie z naszymi zasadami.

Informacje o wdrażaniu

Sprzęt i platformy używane podczas trenowania

Tak jak Gemma, System CodeGemma został wytrenowany na najnowszej generacji Procesor Tensor Processing Unit (TPU) sprzęt (TPUv5e), za pomocą JAX i ML Ścieżki.

Informacje o ocenie

Wyniki testów porównawczych

Metoda oceny

Wyniki testu porównawczego kodowania

Test porównawczy 2B 2B (1.1) 7 MLD 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
Jeden wiersz HumanEval 78,4 79,3 76,1 68,3 77,4
Wiele wierszy 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
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

Testy porównawcze języka naturalnego (w modelach 7B)

Wykres słupkowy porównujący Gemma, CodeGemma PT i CodeGemma IT z uwzględnieniem danych dotyczących różnych języków. Wszystkie 3 modele są w przybliżeniu porównywalne, a CodeGemma świetnie rozumie język naturalny.

Etyka i bezpieczeństwo

Oceny etyki i bezpieczeństwa

Metoda oceny

Nasze metody oceny obejmują ustrukturyzowaną ocenę i wewnętrzny zespół red team testowanie odpowiednich zasad dotyczących treści. Członkowie Red Teams w różnych zespołach, a każdy z nich ma odmienne cele i wyznaczany przez ludzi. Te modele zostały ocenione w odniesieniu do wielu różnych kategorii powiązanych z z zakresu etyki i bezpieczeństwa, w tym:

  • Ocena manualna promptów dotyczących bezpieczeństwa treści i reprezentacji krzywdy. Zobacz Karta modelu Gemma .

  • Konkretne testowanie możliwości cyberprzestępstwa, koncentrując się na testowaniu autonomicznych systemów hakerskich i ograniczania potencjalnych szkód.

Wyniki oceny

Wyniki ocen etyki i bezpieczeństwa mieszczą się w akceptowalnych progach na spotkanie zasady wewnętrzne np. bezpieczeństwo dzieci, bezpieczeństwo treści, zagrożenie reprezentacją, zapamiętywania, szkodliwości na dużą skalę. Zobacz Karta modelu Gemma .

Wykorzystanie i ograniczenia modelu

Znane ograniczenia

Duże modele językowe (LLM) mają pewne ograniczenia ze względu na dane treningowe nieodłącznych ograniczeń tej technologii. Zobacz Karta modelu Gemma .

Kwestie etyczne i zagrożenia

Rozwój dużych modeli językowych (LLM) wiąże się z kilkoma obawami etycznymi. Podczas opracowywania tych zasad wzięliśmy pod uwagę wiele aspektów, modeli ML.

Zapoznaj się z tą samą dyskusją na karcie modelu Gemma.

Przeznaczenie

Aplikacja

Modele Code Gemma mają szeroki zakres zastosowań, które różnią się w zależności od potrzeb IT modeli PT. Poniższa lista potencjalnych zastosowań nie jest wyczerpująca. Celem tej listy jest przekazanie kontekstowych informacji na temat możliwych przypadków użycia uwzględnionych przez twórców modeli w ramach trenowania modeli w Google Cloud.

  • Uzupełnianie kodu: modeli PT można używać do uzupełniania kodu za pomocą rozszerzenia IDE
  • Generowanie kodu: model IT może być używany do generowania kodu z IDE lub bez rozszerzenie
  • Rozmowa dotycząca kodu: model IT może wzmocnić interfejsy rozmów, które omawiają kod
  • Edukacja w zakresie kodowania: model IT obsługuje interaktywne środowisko nauki kodu, pomoce korekcji składni lub ćwiczeniami w programowaniu

Zalety

W chwili wprowadzenia na rynek ta rodzina modeli zapewnia wysoką wydajność, otwartą skoncentrowane na kod wdrożenia dużych modeli językowych (LLM) zaprojektowane od podstaw odpowiedzialnego rozwoju odpowiedzialnej AI w porównaniu z modelami o podobnej wielkości.

Korzystając z opisanych w tym dokumencie wskaźników oceny porównawczej kodowania kodu, udowodniono, że modele mają większą wydajność niż inne, porównywalne modele są otwarte alternatywne modele.