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

Dane do dostosowania w przypadku 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.

from google import genai
client = genai.Client() # Get the key from the GOOGLE_API_KEY env variable

for model_info in client.models.list():
    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.

# create tuning model
training_dataset =  [
    ["1", "2"],
    ["3", "4"],
    ["-3", "-2"],
    ["twenty two", "twenty three"],
    ["two hundred", "two hundred one"],
    ["ninety nine", "one hundred"],
    ["8", "9"],
    ["-98", "-97"],
    ["1,000", "1,001"],
    ["10,100,000", "10,100,001"],
    ["thirteen", "fourteen"],
    ["eighty", "eighty one"],
    ["one", "two"],
    ["three", "four"],
    ["seven", "eight"],
]
training_dataset=types.TuningDataset(
        examples=[
            types.TuningExample(
                text_input=i,
                output=o,
            )
            for i,o in training_dataset
        ],
    )
tuning_job = client.tunings.tune(
    base_model='models/gemini-1.0-pro-001',
    training_dataset=training_dataset,
    config=types.CreateTuningJobConfig(
        epoch_count= 5,
        batch_size=4,
        learning_rate=0.001,
        tuned_model_display_name="test tuned model"
    )
)

# generate content with the tuned model
response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III',
)

print(response.text)

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.

Wypróbowywanie modelu

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

response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III'
)

Nie wdrożono

Niektóre funkcje (raportowanie postępów, aktualizowanie opisu i usuwanie dostrojonych modeli) nie zostały jeszcze zaimplementowane w nowym pakiecie SDK.