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

Это руководство поможет вам начать работу со службой настройки 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 Gemini позволяет настраивать модели на основе ваших собственных данных. Поскольку это ваши данные и ваши настроенные модели, требуется более строгий контроль доступа, чем могут обеспечить ключи API. Прежде чем вы сможете запустить это руководство, вам необходимо настроить OAuth для вашего проекта . Однако для использования настроенной модели вам не нужны учетные данные OAuth. После настройки модели с помощью OAuth вы можете получить к ней доступ с помощью ключа API.

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

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

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

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

Чтобы создать настроенную модель, вам необходимо передать свой набор данных в модель в методе genai.create_tuned_model . Вы можете сделать это, напрямую определив входные и выходные значения в вызове или импортировав их из файла в фрейм данных для передачи методу.

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

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()

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

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

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."})

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

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

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