Anleitung zur Optimierung

In dieser Anleitung erfahren Sie, wie Sie mit dem Gemini API-Abstimmungsdienst beginnen, entweder mit dem Python SDK oder der REST API mit curl. In den Beispielen wird gezeigt, wie Sie das Textmodell hinter dem Textgenerierungsservice der Gemini API optimieren.

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 optimieren

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. Mehrere Unterhaltungen im Chatstil werden nicht unterstützt.

Abgestimmte Modelle

Für optimierte Modelle gelten die folgenden Einschränkungen:

  • Das Eingabelimit eines optimierten Gemini 1.5-Flash-Modells beträgt 40.000 Zeichen.
  • Der JSON-Modus wird für optimierte Modelle nicht unterstützt.
  • Es wird nur die Texteingabe unterstützt.

Bevor Sie beginnen: Projekt und API-Schlüssel einrichten

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

Abgestimmte Modelle auflisten

Sie können Ihre vorhandenen optimierten Modelle mit der Methode tunedModels.list prüfen.

import google.generativeai as genai

for model_info in genai.list_tuned_models():
    print(model_info.name)

Abgestimmtes Modell erstellen

Wenn Sie ein abgestimmtes Modell erstellen möchten, müssen Sie den Datensatz in der Methode tunedModels.create an das Modell übergeben.

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.

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

Die optimalen Werte für die Anzahl der Epochen, die Batchgröße und die Lernrate hängen von Ihrem Datensatz und anderen Einschränkungen Ihres Anwendungsfalls ab. Weitere Informationen zu diesen Werten finden Sie unter Erweiterte Abstimmungseinstellungen und Hyperparameter.

Da die Optimierung eines Modells viel Zeit in Anspruch nehmen kann, wartet diese API nicht auf den Abschluss der Optimierung. Stattdessen wird ein google.api_core.operation.Operation-Objekt zurückgegeben, mit dem Sie den Status des Tuning-Jobs prüfen oder auf den Abschluss warten und das Ergebnis prüfen können.

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

Fortschritt der Abstimmung prüfen

Sie können den Fortschritt der Optimierung mit der Methode wait_bar() prüfen:

for status in operation.wait_bar():
    time.sleep(10)

Mit operation.metadata können Sie auch die Gesamtzahl der Optimierungsschritte prüfen und mit operation.update() den Status des Vorgangs aktualisieren.

Sie können den Abstimmungsjob jederzeit mit der Methode cancel() abbrechen.

operation.cancel()

Modell testen

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

import google.generativeai as genai

model = genai.GenerativeModel(model_name="tunedModels/my-increment-model")
result = model.generate_content("III")
print(result.text)  # "IV"

Beschreibung aktualisieren

Sie können die Beschreibung Ihres optimierten Modells jederzeit mit der Methode genai.update_tuned_model aktualisieren.

genai.update_tuned_model('tunedModels/my-increment-model', {"description":"This is my model."})

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.

genai.delete_tuned_model("tunedModels/my-increment-model")