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