Anleitung zur Optimierung

Dieses Tutorial hilft Ihnen beim Einstieg in den Abstimmungsdienst der Gemini API mit dem Python SDK oder der REST API curl Die Beispiele zeigen, wie das Textmodell dahinter Gemini API-Dienst zur Textgenerierung.

Auf ai.google.dev ansehen Colab-Notebook testen Notebook auf GitHub ansehen

Beschränkungen

Bevor Sie ein Modell optimieren, sollten Sie sich mit den folgenden Einschränkungen vertraut machen:

Datasets für die Feinabstimmung

Für die Feinabstimmung von Datasets für Gemini 1.5 Flash gelten die folgenden Einschränkungen:

  • Die maximale Eingabegröße pro Beispiel beträgt 40.000 Zeichen.
  • Die maximale Ausgabegröße pro Beispiel beträgt 5.000 Zeichen.
  • Es werden nur Beispiele für Eingabe/Ausgabe-Paare unterstützt. Chatweise in mehreren Schritten Unterhaltungen werden nicht unterstützt.

Abgestimmte Modelle

Abgestimmte Modelle unterliegen den folgenden Einschränkungen:

  • Das Eingabelimit für ein abgestimmtes Flash-Modell von Gemini 1.5 beträgt 40.000 Zeichen.
  • Der JSON-Modus wird von abgestimmten Modellen nicht unterstützt.
  • Es wird nur die Texteingabe unterstützt.

Hinweis: Projekt und API-Schlüssel einrichten

Bevor Sie die Gemini API aufrufen, müssen Sie Ihr Projekt einrichten und konfigurieren Ihren API-Schlüssel.

Abgestimmte Modelle auflisten

Sie können Ihre vorhandenen abgestimmten Modelle mit dem tunedModels.list-Methode.

# 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

Abgestimmtes Modell erstellen

Zum Erstellen eines abgestimmten Modells müssen Sie Ihr dataset an das Modell in tunedModels.create .

In diesem Beispiel optimieren Sie ein Modell, um die nächste Zahl in der Sequenz zu generieren. Wenn die Eingabe beispielsweise 1 ist, sollte das Modell 2 ausgeben. Wenn die Eingabe one hundred ist, sollte die Ausgabe one hundred one lauten.

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"

Die optimalen Werte für Epochenanzahl, Batchgröße und Lernrate für Ihr Dataset und andere Einschränkungen für Ihren Anwendungsfall. Weitere Informationen zu diesen Werten finden Sie unter Erweiterte Abstimmungseinstellungen und Hyperparameter.

Das abgestimmte Modell wird sofort der Liste der abgestimmten Modelle hinzugefügt. Während der Abstimmung ist sein Status jedoch auf „Erstellen“ festgelegt.

Modell testen

Sie können die Methode tunedModels.generateContent verwenden und den Namen des optimierten Modells angeben, um seine Leistung zu testen.

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

Modell löschen

Sie können die Liste der optimierten Modelle bereinigen, indem Sie Modelle löschen, die Sie nicht mehr benötigen. Verwenden Sie die Methode tunedModels.delete, um ein Modell zu löschen. Wenn Sie Optimierungsjobs abgebrochen haben, sollten Sie diese löschen, da ihre Leistung möglicherweise unvorhersehbar ist.

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