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
- Testy porównawcze ukończenia kodu: HumanEval (HE) (w jednym wierszu i w wielu wierszach)
- Testy porównawcze generowania kodu: HumanEval, MBPP, BabelCode (BC) [C++, C#, Go, Java, JavaScript, Kotlin, Python, Rust]
- Pytania i odpowiedzi: BoolQ, PIQA, TriviaQA
- Język naturalny: ARC-Challenge, HellaSwag, MMLU, WinoGrande
- Uzasadnienie matematyczne: GSM8K, MATH
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)
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.