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 ai.google.dev Wypróbuj notatnik Colab Wyświetl notatnik w GitHubie

Ograniczenia

Przed dostrojeniem modelu należy pamiętać o następujących ograniczeniach:

Zbiory danych do dostrajania

Dostrajanie zbiorów danych pod kątem Gemini 1.5 Flash wiąże się z tymi ograniczeniami:

  • Maksymalny rozmiar danych wejściowych na przykład to 40 000 znaków.
  • Maksymalny rozmiar wyjściowy na przykład wynosi 5000 znaków.
  • Obsługiwane są tylko pary danych wejściowych i wyjściowych. Wieloetapowe w stylu czatu Rozmowy 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.
  • Możesz wpisywać tylko tekst.

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ć w 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 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 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 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.

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 pozwala sprawdzić stan zadania dostrajania lub poczekać na jego zakończenie i sprawdzić 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 operacji strojenia możesz sprawdzić, korzystając z metody 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

Za pomocą tunedModels.generateContent i podaj nazwę dostrojonego modelu, by przetestować jego wydajność.

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

Listę dostrojonych modeli możesz wyczyścić, usuwając modele, których już nie potrzebujesz. Aby usunąć model, użyj metody tunedModels.delete. Jeśli anulujesz zadania dostrajania, możesz je usunąć jako ich skuteczność może być nieprzewidywalna.

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