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 lekkich modeli open source opracowanych na podstawie Gemmy. Modele CodeGemma to modele z samym dekoderem tekstowym i tekstowym. Dostępne są 7 miliardów wstępnie wytrenowanych wariantów kodu, które specjalizują się w zadaniach uzupełniania i generowania kodu, 7 miliardów wersji zoptymalizowanych pod kątem instrukcji do czatowania i instrukcji oraz 2 miliardy wstępnie wytrenowanych wariantów do szybkiego uzupełniania kodu.

Wejścia i wyjścia

  • Dane wejściowe: w przypadku wstępnie wytrenowanych wersji modelu: prefiks kodu i opcjonalnie sufiks na potrzeby scenariuszy uzupełniania i generowania kodu lub tekst/prompt w języku naturalnym. W przypadku wariantu modelu dostrojonego instrukcją: tekst lub prompt w języku naturalnym.

  • Dane wyjściowe: w przypadku wstępnie wytrenowanych wariantów modelu: uzupełnianie kodu środkowego, kod i język naturalny. W przypadku wariantu modelu dostrojonego instrukcją: kod i język naturalny.

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

Wykorzystując Gemma jako model podstawowy, wytrenowane wersje CodeGemma 2B i 7B są dalej trenowane na dodatkowych 500–1000 miliardach tokenów danych, głównie w języku angielskim, pochodzących ze zbiorów danych matematycznych typu open source i kodu wygenerowanego syntetycznie.

Przetwarzanie danych treningowych

Do trenowania CodeGemma zastosowano następujące techniki wstępnego przetwarzania danych:

  • FIM – wstępnie wytrenowane modele CodeGemma koncentrują się na zadaniach wypełniania pośrodku (FIM). Modele zostały wytrenowane do pracy z trybami PSM i SPM. Nasze ustawienia FIM wynoszą 80–90% wskaźnika FIM przy 50–50 PSM/SPM.
  • Techniki pakowania oparte na Grafie zależności i metod pakowania leksykalnego opartego na testach jednostkowych: aby poprawić dopasowanie modelu do rzeczywistych aplikacji, ustrukturyzowaliśmy przykłady szkoleniowe na poziomie projektu/repozytorium, aby kolokować najistotniejsze pliki źródłowe w każdym repozytorium. W szczególności zastosowaliśmy 2 metody heurystyczne: pakowanie oparte na grafie zależności i pakowanie leksykalne oparte na teście jednostkowym.
  • Opracowaliśmy nowatorską technikę dzielenia dokumentów na prefiks, środek i przyrostek, aby sufiks zaczynał się w bardziej naturalnym punkcie składniowym, a nie w całkowicie przypadkowym rozkładzie.
  • Bezpieczeństwo: podobnie jak w Gemma, zgodnie z naszymi zasadami wdrożyliśmy rygorystyczne filtry bezpieczeństwa, w tym dane osobowe i materiały związane z wykorzystywaniem seksualnym dzieci, a także inne filtry na podstawie jakości i bezpieczeństwa treści.

Informacje o implementacji

Sprzęt i platformy używane podczas trenowania

Podobnie jak Gemma, program CodeGemma został trenowany na najnowszej generacji sprzętu Tensor Processing Unit (TPU) (TPUv5e) przy użyciu technologii JAX i MLPath.

Informacje o ocenie

Wyniki testu porównawczego

Metoda oceniania

Wyniki testu porównawczego kodowania

Analiza porównawcza 2B 2 mld (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
HumanEval – jedna linia 78,4 79,3 76,1 68,3 77,4
HumanEval – wiele wierszy 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 Rdza 45,3 47,4 52,9 53,5 52,3

Testy języka naturalnego (w 7 mld modeli)

Wykres słupkowy przedstawiający porównanie usług Gemma, CodeGemma PT i CodeGemma IT w zakresie różnych umiejętności językowych. Wszystkie 3 modele są mniej więcej porównywalne. CodeGemma dobrze rozumie język naturalny.

Etyka i bezpieczeństwo

Oceny etyki i bezpieczeństwa

Podejście do oceny

Nasze metody oceny obejmują ustrukturyzowane oceny i wewnętrzne testy odpowiednich zasad dotyczących treści. Zespoły Czerwone były prowadzone przez różne zespoły, każdy z innymi celami i wskaźnikami oceny manualnej. Modele te były oceniane według różnych kategorii związanych z etyką i bezpieczeństwem, takich jak:

  • Ocena manualna promptów dotyczących bezpieczeństwa treści i zagrożeń dla reprezentacji. Więcej informacji o metodzie oceny znajdziesz na karcie modelu Gemma.

  • Szczególne testowanie możliwości związanych z cyberatakami, koncentrujące się na testowaniu autonomicznych możliwości hakowania i ograniczaniu potencjalnych szkód.

Wyniki oceny

Wyniki oceny etyki i bezpieczeństwa mieszczą się w akceptowalnych progach zgodności z wewnętrznymi zasadami w takich kategoriach jak bezpieczeństwo dzieci, bezpieczeństwo treści, wyrządzanie krzywdy przez reprezentację, zapamiętywanie, wyrządzanie krzywdy na dużą skalę. Więcej informacji znajdziesz na karcie modelu Gemma.

Wykorzystanie i ograniczenia modelu

Znane ograniczenia

Duże modele językowe (LLM) mają ograniczenia związane z danymi treningowymi i nieodłącznymi ograniczeniami technologii. Więcej informacji o ograniczeniach modeli LLM znajdziesz na karcie modelu Gemma.

Zagrożenia i kwestie etyczne

Rozwój dużych modeli językowych (LLM) rodzi kilka kwestii etycznych. Podczas opracowywania tych modeli wzięliśmy pod uwagę wiele aspektów.

Szczegóły modelu znajdziesz w tej samej dyskusji na karcie modelu Gemma.

Zamierzone wykorzystanie

Aplikacja

Modele Code Gemma mają szeroką gamę aplikacji, które różnią się od siebie w modelach IT i PT. Poniższa lista potencjalnych zastosowań nie jest wyczerpująca. Ta lista ma zapewnić kontekstowe informacje o możliwych przypadkach użycia, które twórcy modeli brali pod uwagę podczas trenowania i tworzenia modeli.

  • Uzupełnianie kodu: modeli PT można używać do kończenia kodu za pomocą rozszerzenia IDE
  • Generowanie kodu: modelu IT można używać do generowania kodu z rozszerzeniem IDE lub bez niego
  • Rozmowa na temat kodu: model IT może zasilać interfejsy rozmów, w których omawiany jest kod
  • Edukacja w zakresie programowania: model IT obsługuje interaktywne procesy nauki kodu, ułatwia korektę składniową i zapewnia ćwiczenia z kodowania

Zalety

Ta rodzina modeli zapewnia wydajne, skoncentrowane na otwartym kodzie wdrożenia dużych modeli językowych (LLM) zaprojektowane od podstaw na potrzeby odpowiedzialnego rozwoju AI w porównaniu z modelami o podobnej wielkości.

Wykorzystując wskaźniki oceny porównawczej kodowania opisane w tym dokumencie, modele te wykazują większą wydajność niż inne alternatywne modele otwarte o porównywalnej wielkości.