Samouczek dostrajania

W tym samouczku dowiesz się, jak zacząć korzystać z usługi dostrojenia interfejsu Gemini API za pomocą pakietu Python SDK lub interfejsu REST API za pomocą curl. Przykłady pokazują, jak dostosować model tekstowy, który obsługuje usługę generowania tekstu w interfejsie Gemini API.

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

Ograniczenia

Zanim dostosujesz model, pamiętaj o tych ograniczeniach:

Zbiory danych do dostrajania

Dokładne zbiory danych dla Gemini 1.5 Flash mają te 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.
  • Obsługiwane są tylko pary danych wejściowych i wyjściowych. Rozmowy wielostronne w stylu czatu nie są obsługiwane.

Modele dostrojone

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.
  • Obsługiwane są tylko dane tekstowe.

Zanim zaczniesz: skonfiguruj projekt i klucz interfejsu API

Zanim wywołasz interfejs Gemini API, musisz skonfigurować projekt i klucz interfejsu API.

Wyświetlanie listy modeli dostrojonych

Istniejące dostrojone modele możesz sprawdzić za pomocą metody tunedModels.list.

import google.generativeai as genai

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

Tworzenie modelu dostrojonego

Aby utworzyć dostrojony model, musisz przekazać zbiór danych do modelu w metodzie tunedModels.create.

W tym przykładzie dostosujesz model, aby wygenerował następną liczbę w sekwencji. Jeśli na przykład dane wejściowe to 1, model powinien zwrócić 2. Jeśli dane wejściowe to one hundred, dane wyjściowe powinny być one hundred one.

import google.generativeai as genai

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 epok, rozmiaru partii i tempo nauki zależą od zbioru danych i innych ograniczeń związanych z przypadkiem użycia. Więcej informacji o tych wartościach znajdziesz w artykułach Zaawansowane ustawienia dostrajaniaHiperparametry.

Dostrojenie modelu może zająć sporo czasu, dlatego ten interfejs API nie czeka na jego zakończenie. Zamiast tego zwraca obiekt google.api_core.operation.Operation, który umożliwia sprawdzenie stanu zadania dostrajania lub oczekiwanie na jego zakończenie i sprawdzenie wyniku.

Dostrojony model jest natychmiast dodawany do listy dostrojonych modeli, ale podczas dostrojania jego stan jest ustawiany na „tworzenie”.

Sprawdzanie postępów strojenia

Postęp operacji strojenia możesz sprawdzić, korzystając z metody wait_bar():

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

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

W każdej chwili możesz anulować zadanie strojenia, korzystając z metody cancel().

operation.cancel()

Wypróbowywanie modelu

Aby przetestować wydajność dostrojonego modelu, możesz użyć metody tunedModels.generateContent i podać nazwę dostrojonego modelu.

import google.generativeai as genai

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

Zaktualizuj opis

Opis dostosowanego modelu możesz zaktualizować w dowolnym momencie, korzystając z metody genai.update_tuned_model.

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

Usuwanie modelu

Możesz wyczyścić listę dostosowanych modeli, usuwając modele, których już nie potrzebujesz. Aby usunąć model, użyj metody tunedModels.delete. Jeśli anulowałeś jakieś zadania strojenia, możesz je usunąć, ponieważ ich działanie może być nieprzewidywalne.

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