Samouczek dostrajania

.

Ten samouczek pomoże Ci rozpocząć dostrajanie interfejsu Gemini API za pomocą pakietu SDK w języku Python lub interfejsu API REST, curl. Przykłady pokazują, jak dostroić model tekstu za Gemini API.

Wyświetl na ai.google.dev Wypróbuj notatnik Colab Wyświetl notatnik na GitHubie

Konfigurowanie uwierzytelniania

Interfejs Gemini API umożliwia dostrajanie modeli na podstawie własnych danych. To Twoje dane, dostrojonych modeli wymaga bardziej rygorystycznej kontroli dostępu niż klucze interfejsu API.

Zanim uruchomisz ten samouczek, musisz skonfigurować OAuth w projekt.

Wyświetlenie listy dostrojonych modeli

Dotychczasowe dostrojone modele możesz sprawdzać na stronie genai.list_tuned_models .

for model_info in genai.list_tuned_models():
    print(model_info.name)

Tworzenie modelu dostrojonego

Aby utworzyć model dostrojony, musisz przekazać swój zbiór danych do modelu w Metoda genai.create_tuned_model. Możesz to zrobić, bezpośrednio definiując danych wejściowych i wyjściowych w rozmowie lub importowaniu z pliku do struktury DataFrame w celu do metody.

W tym przykładzie dostrój model tak, aby wygenerować kolejną liczbę w funkcji kolejne wartości. Jeśli na przykład dane wejściowe to 1, model powinien zwrócić 2. Jeśli wejściowa jest wartość one hundred, dane wyjściowe powinny mieć wartość one hundred one.

import time

base_model = "models/gemini-1.5-flash-001-tuning"
training_data = [
    {"text_input": "1", "output": "2"},
    # ... more examples ...
    # ...
    {"text_input": "seven", "output": "eight"},
]
operation = genai.create_tuned_model(
    # You can use a tuned model here too. Set `source_model="tunedModels/..."`
    display_name="increment",
    source_model=base_model,
    epoch_count=20,
    batch_size=4,
    learning_rate=0.001,
    training_data=training_data,
)

for status in operation.wait_bar():
    time.sleep(10)

result = operation.result()
print(result)
# # You can plot the loss curve with:
# snapshots = pd.DataFrame(result.tuning_task.snapshots)
# sns.lineplot(data=snapshots, x='epoch', y='mean_loss')

model = genai.GenerativeModel(model_name=result.name)
result = model.generate_content("III")
print(result.text)  # IV

Optymalne wartości liczby epoki, wielkości wsadu i tempa uczenia się są zależne od tych wartości na zbiorze danych i innych ograniczeniach Twojego przypadku użycia. Aby dowiedzieć się więcej o: zwróć uwagę na te wartości. Zaawansowane ustawienia dostrajania oraz Hiperparametry.

Dostrajanie modelu może zająć dużo czasu, więc ten interfejs API nie czeka na dostrajania, by zakończyć. Zamiast tego zwraca google.api_core.operation.Operation obiekt, który pozwala sprawdzić stan zadania dostrajania lub zaczekać, aż i sprawdź wynik.

Dostrojony model zostanie natychmiast dodany do listy dostrojonych modeli, ale stan jest ustawiony na tworzenie podczas dostrajania modelu.

Sprawdź postęp dostrajania

Postęp dostrajania możesz sprawdzić za pomocą wait_bar() :

for status in operation.wait_bar():
    time.sleep(10)

Aby sprawdzić łączną liczbę kroków dostrajania, możesz też użyć wartości operation.metadata i operation.update(), aby odświeżyć stan operacji.

Zadanie dostrajania możesz anulować w dowolnym momencie przy użyciu metody cancel().

operation.cancel()

Wypróbowywanie modelu

Możesz użyć metody genai.generate_text i podać nazwę dostrojonego odtwarzacza aby przetestować jego wydajność.

model = genai.GenerativeModel(model_name="tunedModels/my-increment-model")
result = model.generate_content("III")
print(result.text)  # "IV"

Zaktualizuj opis

Opis dostrojonego modelu możesz w każdej chwili zaktualizować, korzystając z Metoda genai.update_tuned_model.

genai.update_tuned_model('tunedModels/my-increment-model', {"description":"This is my model."})

Usuwanie modelu

Listę dostrojonych modeli możesz wyczyścić, usuwając modele, których już nie potrzebujesz. Aby usunąć model, użyj metody genai.delete_tuned_model. Jeśli anulujesz którykolwiek z nich zadań dostrajania, warto je usunąć, ponieważ ich wydajność może jest nieprzewidywalna.

genai.delete_tuned_model("tunedModels/my-increment-model")