Strategie projektowania promptów (np. few shot prompting, czyli korzystanie z kilku przykładów) nie zawsze wystarczają do uzyskania pożądanych wyników. Dostrajanie modelu to proces, który może poprawić wydajność modelu w przypadku określonych zadań lub pomóc mu spełnić określone wymagania dotyczące danych wyjściowych, gdy same instrukcje nie są wystarczające, a masz zestaw przykładów, które pokazują pożądane dane wyjściowe.
Ta strona zawiera omówienie koncepcji dopracowywania modelu tekstowego, który jest podstawą usługi tekstowej w interfejsie Gemini API. Gdy wszystko będzie gotowe, możesz rozpocząć dostrajanie. W tym celu skorzystaj z samouczka. Jeśli chcesz zapoznać się z ogólnymi informacjami o dostosowywaniu LLM do konkretnych zastosowań, zapoznaj się z artykułem LLM: dostrajanie, uogólnianie i tworzenie promptów w ramach szybkiego szkolenia z systemów uczących się.
Jak działa dostrojenie
Dostrojenie ma na celu zwiększenie wydajności modelu w przypadku konkretnego zadania. W ramach dostrajania dostarcza się modelowi zbiór danych treningowych, które zawierają wiele przykładów zadania. W przypadku zadań niszowych możesz uzyskać znaczną poprawę wydajności modelu, dostrajając go na niewielkiej liczbie przykładów. Ten rodzaj dostrajania modelu jest czasami nazywany dostrajaniem nadzorowanym, aby odróżnić go od innych rodzajów dostrajania.
Dane szkoleniowe powinny być uporządkowane w postaci przykładów z promptami i oczekiwanymi odpowiedziami. Możesz też dostosować modele, korzystając z przykładowych danych bezpośrednio w Google AI Studio. Celem jest nauczenie modelu naśladowania pożądanego zachowania lub zadania poprzez podanie wielu przykładów ilustrujących to zachowanie lub zadanie.
Gdy uruchomisz zadanie dostrajania, model nauczy się dodatkowych parametrów, które pomogą mu zakodować niezbędne informacje do wykonania pożądanego zadania lub wyuczyć się pożądanego zachowania. Parametry te można następnie wykorzystać podczas wnioskowania. Wynikiem zadania dostrojenia jest nowy model, który jest połączeniem nowo wyuczonych parametrów i pierwotnego modelu.
Przygotuj zbiór danych
Zanim zaczniesz dostrajanie, musisz mieć zbiór danych, na podstawie którego będziesz dostrajać model. Aby uzyskać jak najlepsze wyniki, przykłady w zbiorze danych powinny być wysokiej jakości, zróżnicowane i odzwierciedlać rzeczywiste dane wejściowe i wyjściowe.
Format
Przykłady w Twoim zbiorze danych powinny być zgodne z oczekiwanym ruchem w środowisku produkcyjnym. Jeśli zbiór danych zawiera określone formatowanie, słowa kluczowe, instrukcje lub informacje, dane produkcyjne powinny być sformatowane w taki sam sposób i zawierać te same instrukcje.
Jeśli więc przykłady w zbiorze danych obejmują "question:"
(pytanie) i "context:"
(kontekst), ruch produkcyjny również powinien być sformatowany tak, aby obejmować "question:"
i "context:"
w takiej samej kolejności jak w przykładach w zbiorze danych. Jeśli wykluczysz kontekst, model nie będzie wiedział, o co pytasz, nawet jeśli dokładnie takie samo pytanie znajdowało się jako przykład w zbiorze danych.
Oto przykład danych szkoleniowych w Pythonie dla aplikacji, która generuje następną liczbę w sekwencji:
training_data = [
{"text_input": "1", "output": "2"},
{"text_input": "3", "output": "4"},
{"text_input": "-3", "output": "-2"},
{"text_input": "twenty two", "output": "twenty three"},
{"text_input": "two hundred", "output": "two hundred one"},
{"text_input": "ninety nine", "output": "one hundred"},
{"text_input": "8", "output": "9"},
{"text_input": "-98", "output": "-97"},
{"text_input": "1,000", "output": "1,001"},
{"text_input": "10,100,000", "output": "10,100,001"},
{"text_input": "thirteen", "output": "fourteen"},
{"text_input": "eighty", "output": "eighty one"},
{"text_input": "one", "output": "two"},
{"text_input": "three", "output": "four"},
{"text_input": "seven", "output": "eight"},
]
Dodanie promptu lub wstępu do każdego przykładu w zbiorze danych może też pomóc w zwiększeniu skuteczności dostosowanego modelu. Pamiętaj, że jeśli w Twoim zbiorze danych znajduje się prompt lub wstęp, powinny one być również uwzględnione w promptach dostrojonego modelu podczas wnioskowania.
Ograniczenia
Uwaga: dane do dokładnego dostosowania w przypadku Gemini 1.5 Flash mają następujące ograniczenia:
- Maksymalny rozmiar danych wejściowych na przykład wynosi 40 tys. znaków.
- Maksymalny rozmiar wyjściowy na przykład wynosi 5000 znaków.
Rozmiar danych treningowych
Model możesz dostroić na podstawie zaledwie 20 przykładów. Dodatkowe dane zazwyczaj poprawiają jakość odpowiedzi. W zależności od aplikacji należy użyć od 100 do 500 przykładów. W tabeli poniżej znajdziesz zalecane rozmiary zbiorów danych do dopracowywania modelu tekstowego na potrzeby różnych typowych zadań:
Zadanie | Liczba przykładów w zbiorze danych |
---|---|
Klasyfikacja | 100+ |
Podsumowywanie | 100-500+ |
Wyszukiwanie w dokumentach | 100+ |
Przesyłanie zbioru danych do dostrajania
Dane są przekazywane w ramach interfejsu API lub za pomocą plików przesłanych w Google AI Studio.
Aby korzystać z biblioteki klienta, podaj plik danych w wywołaniu createTunedModel
.
Maksymalny rozmiar pliku to 4 MB. Aby rozpocząć, zapoznaj się z krótkim przewodnikiem po dopracowywaniu modelu za pomocą Pythona.
Aby wywołać interfejs API REST za pomocą cURL, podaj przykłady treningowe w formacie JSON w argumencie training_data
. Aby rozpocząć, zapoznaj się z krótkim wprowadzeniem do dostrajania za pomocą cURL.
Zaawansowane ustawienia dostrajania
Podczas tworzenia zadania do dostosowania możesz określić te ustawienia zaawansowane:
- Epoki: pełne trenowanie całego zbioru treningowego, w którym każdy przykład został przetworzony raz.
- Wielkość wsadu: zestaw przykładów użytych w jednej iteracji podczas trenowania. Rozmiar wsadów określa liczbę przykładów w wsadze.
- Tempo uczenia się: liczba zmiennoprzecinkowa, która informuje algorytm, jak mocno dostosowywać parametry modelu na każdej iteracji. Na przykład współczynnik 0,3 będzie dostosowywał wagi i uśrednienia trzykrotnie skuteczniej niż współczynnik 0,1. Wysokie i niskie tempo uczenia się mają swoje zalety i wady, dlatego należy je dostosować do konkretnego przypadku użycia.
- Mnożnik tempa uczenia się: mnożnik tempa zmienia pierwotne tempo uczenia się modelu. Wartość 1 oznacza użycie pierwotnego tempa uczenia się modelu. Wartości większe niż 1 zwiększają szybkość uczenia się, a wartości między 1 a 0 ją zmniejszają.
Zalecane konfiguracje
W tabeli poniżej znajdziesz zalecane konfiguracje do dokładnego dostosowania modelu podstawowego:
Hiperparametr | Wartość domyślna | Zalecane korekty |
---|---|---|
Epoka | 5 |
Jeśli strata zaczyna się stabilizować przed 5 epokami, użyj mniejszej wartości. Jeśli straty się zbliżają, a nie osiągają plateau, użyj wyższej wartości. |
Wielkość wsadu | 4 | |
Tempo uczenia się | 0,001 | W przypadku mniejszych zbiorów danych użyj mniejszej wartości. |
Krzywa utraty pokazuje, jak bardzo prognoza modelu odbiega od idealnych prognoz w przypadku przykładów treningowych po każdej epoce. Najlepiej zakończyć trening w najniższym punkcie krzywej, tuż przed jej wyrównaniem. Na przykład wykres poniżej pokazuje krzywą strat, która osiąga plateau na około epoce 4–6, co oznacza, że możesz ustawić parametr Epoch
na 4 i nadal uzyskać taką samą skuteczność.
Sprawdzanie stanu zadania dostrajania
Stan zadania strojenia możesz sprawdzić w Google AI Studio na karcie Moja biblioteka lub za pomocą właściwości metadata
dostrojonego modelu w interfejsie Gemini API.
Rozwiązywanie problemów
W tej sekcji znajdziesz wskazówki dotyczące rozwiązywania błędów, które mogą wystąpić podczas tworzenia dostrojonego modelu.
Uwierzytelnianie
Dostosowanie za pomocą interfejsu API i biblioteki klienta wymaga uwierzytelnienia. Możesz skonfigurować uwierzytelnianie, używając klucza interfejsu API (zalecane) lub danych logowania OAuth. Dokumentację dotyczącą konfigurowania klucza interfejsu API znajdziesz w artykule Konfigurowanie klucza interfejsu API.
Jeśli widzisz błąd 'PermissionDenied: 403 Request had insufficient authentication
scopes'
, konieczne może być skonfigurowanie uwierzytelniania użytkownika za pomocą danych logowania OAuth. Aby skonfigurować dane logowania OAuth w Pythonie, zapoznaj się z samouczkiem konfiguracji OAuth.
Anulowane modele
Możesz anulować zadanie dopasowywania w dowolnym momencie przed jego zakończeniem. Jednak wydajność wnioskowania anulowanego modelu jest nieprzewidywalna, zwłaszcza jeśli zadanie dostosowania zostanie anulowane na początku trenowania. Jeśli anulujesz zadanie, ponieważ chcesz przerwać trenowanie na wcześniejszej epoce, utwórz nowe zadanie do dostosowania i ustaw epokę na niższą wartość.
Ograniczenia modeli dostrojonych
Uwaga: dostrojone modele mają te ograniczenia:
- Limit danych wejściowych w dostosowanym modelu Gemini 1.5 Flash wynosi 40 tys. znaków.
- Tryb JSON nie jest obsługiwany w przypadku dostrojonych modeli.
- Instrukcja systemowa nie jest obsługiwana w przypadku dostrojonych modeli.
- Obsługiwane są tylko dane tekstowe.
Co dalej?
Zapoznaj się z samouczkami dotyczącymi dokładnego dostosowania: