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 na 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świetlenie listy dostrojonych modeli

Istniejące dostrojone modele możesz sprawdzić w tunedModels.list.

# Sending a page_size is optional
curl -X GET https://generativelanguage.googleapis.com/v1beta/tunedModels?page_size=5 \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer ${access_token}" \
    -H "x-goog-user-project: ${project_id}" > tuned_models.json

jq .tunedModels[].name < tuned_models.json

# Send the nextPageToken to get the next page.
page_token=$(jq .nextPageToken < tuned_models.json | tr -d '"')

if [[ "$page_token" != "null"" ]]; then
curl -X GET https://generativelanguage.googleapis.com/v1beta/tunedModels?page_size=5\&page_token=${page_token}?key=$GOOGLE_API_KEY \
    -H "Content-Type: application/json"  > tuned_models2.json
jq .tunedModels[].name < tuned_models.json
fi

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.

curl -X POST "https://generativelanguage.googleapis.com/v1beta/tunedModels?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '
      {
        "display_name": "number generator model",
        "base_model": "models/gemini-1.5-flash-001-tuning",
        "tuning_task": {
          "hyperparameters": {
            "batch_size": 2,
            "learning_rate": 0.001,
            "epoch_count":5,
          },
          "training_data": {
            "examples": {
              "examples": [
                {
                    "text_input": "1",
                    "output": "2",
                },{
                    "text_input": "3",
                    "output": "4",
                },{
                    "text_input": "-3",
                    "output": "-2",
                },{
                    "text_input": "twenty two",
                    "output": "twenty three",
                },{
                    "text_input": "two hundred",
                    "output": "two hundred one",
                },{
                    "text_input": "ninety nine",
                    "output": "one hundred",
                },{
                    "text_input": "8",
                    "output": "9",
                },{
                    "text_input": "-98",
                    "output": "-97",
                },{
                    "text_input": "1,000",
                    "output": "1,001",
                },{
                    "text_input": "10,100,000",
                    "output": "10,100,001",
                },{
                    "text_input": "thirteen",
                    "output": "fourteen",
                },{
                    "text_input": "eighty",
                    "output": "eighty one",
                },{
                    "text_input": "one",
                    "output": "two",
                },{
                    "text_input": "three",
                    "output": "four",
                },{
                    "text_input": "seven",
                    "output": "eight",
                }
              ]
            }
          }
        }
      }' | tee tunemodel.json

# Check the operation for status updates during training.
# Note: you can only check the operation on v1/
operation=$(cat tunemodel.json | jq ".name" | tr -d '"')
tuning_done=false

while [[ "$tuning_done" != "true" ]];
do
  sleep 5
  curl -X GET "https://generativelanguage.googleapis.com/v1/${operation}?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
     2> /dev/null > tuning_operation.json

  complete=$(jq .metadata.completedPercent < tuning_operation.json)
  tput cuu1
  tput el
  echo "Tuning...${complete}%"
  tuning_done=$(jq .done < tuning_operation.json)
done

# Or get the TunedModel and check it's state. The model is ready to use if the state is active.
modelname=$(cat tunemodel.json | jq ".metadata.tunedModel" | tr -d '"')
curl -X GET  https://generativelanguage.googleapis.com/v1beta/${modelname}?key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' > tuned_model.json

cat tuned_model.json | jq ".state"

Optymalne wartości liczby epoki, wielkości wsadu i tempa uczenia się są zależne od tych wartości na zbiorze danych i innych ograniczeniach Twojego przypadku użycia. Więcej informacji o tych wartościach znajdziesz w artykułach Zaawansowane ustawienia dostrajaniaHiperparametry.

Dostrojony model zostanie natychmiast dodany do listy dostrojonych modeli, ale stan jest ustawiony na tworzenie podczas dostrajania modelu.

Wypróbowywanie modelu

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

curl -X POST https://generativelanguage.googleapis.com/v1beta/$modelname:generateContent?key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -d '{
        "contents": [{
        "parts": [{
          "text": "LXIII"
          }]
        }]
        }' 2> /dev/null

Usuwanie modelu

Listę dostrojonych modeli możesz wyczyścić, usuwając modele, których już nie potrzebujesz. Użyj metody tunedModels.delete, aby usunąć model. Jeśli anulowałeś jakieś zadania dostrajania, możesz je usunąć, ponieważ ich działanie może być nieprzewidywalne.

curl -X DELETE https://generativelanguage.googleapis.com/v1beta/${modelname}?key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json'