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 dostrajania i 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 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")