Учебное пособие по тонкой настройке

Это руководство поможет вам начать работу со службой настройки Gemini API с помощью Python SDK или REST API с помощью Curl . В примерах показано, как настроить текстовую модель службы генерации текста Gemini API.

Посмотреть на ai.google.dev Попробуйте блокнот Colab Посмотреть блокнот на GitHub

Ограничения

Перед настройкой модели следует знать о следующих ограничениях:

Точная настройка наборов данных

Наборы данных тонкой настройки для Gemini 1.5 Flash имеют следующие ограничения:

  • Максимальный размер ввода для каждого примера — 40 000 символов.
  • Максимальный размер вывода для каждого примера — 5000 символов.
  • Поддерживаются только примеры пар ввода-вывода. Многоходовые разговоры в стиле чата не поддерживаются.

Тюнингованные модели

Тюнингованные модели имеют следующие ограничения:

  • Ограничение ввода настроенной модели Gemini 1.5 Flash составляет 40 000 символов.
  • Режим JSON не поддерживается настроенными моделями.
  • Поддерживается только ввод текста.

Прежде чем начать: настройте проект и ключ API.

Прежде чем вызывать API Gemini, вам необходимо настроить проект и ключ API.

Список настроенных моделей

Вы можете проверить существующие настроенные модели с помощью метода tunedModels.list .

import google.generativeai as genai

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

Создайте настроенную модель

Чтобы создать настроенную модель, вам необходимо передать набор данных в модель в методе tunedModels.create .

В этом примере вы настроите модель для генерации следующего числа в последовательности. Например, если входное значение равно 1 , модель должна вывести 2 . Если на входе one hundred , на выходе должно быть 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

Оптимальные значения количества эпох, размера пакета и скорости обучения зависят от вашего набора данных и других ограничений вашего варианта использования. Дополнительные сведения об этих значениях см. в разделе Расширенные настройки настройки и гиперпараметры .

Поскольку настройка модели может занять значительное время, этот API не ждет завершения настройки. Вместо этого он возвращает объект google.api_core.operation.Operation , который позволяет вам проверить статус задания настройки или дождаться его завершения и проверить результат.

Ваша настроенная модель немедленно добавляется в список настроенных моделей, но на время настройки модели ее состояние устанавливается на «создание».

Проверьте прогресс настройки

Вы можете проверить ход операции настройки с помощью метода wait_bar() :

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

Вы также можете использовать operation.metadata для проверки общего количества шагов настройки и operation.update() для обновления статуса операции.

Вы можете отменить задание по настройке в любое время, используя метод cancel() .

operation.cancel()

Попробуйте модель

Вы можете использовать метод tunedModels.generateContent и указать имя настроенной модели, чтобы проверить ее производительность.

import google.generativeai as genai

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

Обновить описание

Вы можете обновить описание настроенной модели в любое время, используя метод genai.update_tuned_model .

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

Удалить модель

Вы можете очистить список настроенных моделей, удалив модели, которые вам больше не нужны. Используйте метод tunedModels.delete для удаления модели. Если вы отменили какие-либо задания по настройке, возможно, вы захотите удалить их, поскольку их производительность может быть непредсказуемой.

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