2

Fine Tuning для модели, как и когда делать

Файн-тюнинг стоит делать не "как можно чаще", а когда это действительно необходимо и оправдано с точки зрения наличия новых данных, ожидаемого улучшения качества и затрат ресурсов (времени и денег). Вместо частого файн-тюнинга на малых объемах данных иногда эффективнее использовать другие подходы, например, Retrieval-Augmented Generation (RAG), где модель получает актуальную информацию в момент запроса из внешней базы знаний. Технически, нет строгих ограничений со стороны платформ (как Google Vertex AI, например) на то, как часто вы можете запускать процесс файн-тюнинга (fine-tuning), кроме общих квот на использование ресурсов и вашего бюджета. Вы можете запустить новый процесс файн-тюнинга хоть через час после предыдущего, если есть такая необходимость и ресурсы.

Однако, с практической точки зрения, частота файн-тюнинга определяется следующими факторами:

  1. Наличие новых данных: Самая главная причина для повторного файн-тюнинга – появление значительного объема новых, качественных данных, которые могут улучшить производительность модели для вашей задачи. Файн-тюнинг на небольшом количестве новых данных может не дать заметного эффекта или даже ухудшить модель (переобучение на новых данных).

  2. Стоимость: Каждый процесс файн-тюнинга требует вычислительных ресурсов (GPU/TPU) и, соответственно, стоит денег. Частый файн-тюнинг может быть весьма затратным.

  3. Время: Процесс файн-тюнинга занимает время – от часов до дней, в зависимости от размера модели, объема данных и конфигурации. Плюс время на подготовку данных и оценку результата.

  4. Необходимость: Действительно ли нужно обновлять модель?Изменилась ли задача, для которой вы используете модель?
    Ухудшилось ли качество ответов существующей дообученной модели со временем (например, из-за изменений во внешнем мире, которые отражены в новых данных)?
    Даст ли добавление новых данных ощутимый прирост качества, оправдывающий затраты?

  5. Оценка (Evaluation): После каждого файн-тюнинга необходимо проводить тщательную оценку модели на тестовом наборе данных, чтобы убедиться, что новая версия действительно лучше предыдущей и не произошло "катастрофического забывания" (когда модель ухудшает свои способности в областях, на которых ее не дообучали в этот раз).

Когда обычно делают повторный файн-тюнинг:

  • При накоплении существенного блока новых релевантных данных (например, данные за последний квартал, месяц и т.д.).

  • При значительных изменениях в предметной области или требованиях к задаче.

  • Когда мониторинг производительности показывает заметное снижение качества текущей модели.

  • Периодически (например, раз в квартал или полгода), если данные поступают непрерывно и есть бюджет/ресурсы на поддержание модели в актуальном состоянии.

Структура файла для файн-тюнинга (fine-tuning) зависит от платформы, которую вы используете (например, Google Vertex AI, OpenAI API, Hugging Face, etc.) и типа задачи, для которой вы дообучаете модель.

Однако, наиболее распространенным форматом является JSON Lines (JSONL). В этом формате каждая строка файла представляет собой отдельный, валидный JSON-объект, содержащий один пример для обучения.

Общая идея структуры для генеративных моделей (как Gemini):

Каждый JSON-объект (каждая строка в файле .jsonl) обычно содержит пары "вход" -> "ожидаемый выход".

Примеры форматов данных для файн-тюнинга:

1. Задачи инструктивного типа / чата / вопрос-ответ:

  • Вариант 1 (Простой):

Fine Tuning для модели, как и когда делать Программирование, Инструкция, IT, Длиннопост
  • Вариант 2 (Более структурированный, для чатов):

Fine Tuning для модели, как и когда делать Программирование, Инструкция, IT, Длиннопост

2. Задачи генерации текста (продолжение текста):

  • Вариант 1 (Объединенный):

Fine Tuning для модели, как и когда делать Программирование, Инструкция, IT, Длиннопост
  • Вариант 2 (Префикс/Продолжение):

Fine Tuning для модели, как и когда делать Программирование, Инструкция, IT, Длиннопост

3. Задачи классификации:

Fine Tuning для модели, как и когда делать Программирование, Инструкция, IT, Длиннопост

Важные моменты:

  1. Обязательно смотрите документацию той платформы, где вы проводите файн-тюнинг! Названия полей (input_text, output_text, prompt, completion, text, label и т.д.) могут отличаться. Например, Google Vertex AI часто использует input_text и output_text для supervised tuning.

  2. Формат Файла: Убедитесь, что это именно JSON Lines (.jsonl), а не обычный JSON-массив. Каждая строка - отдельный JSON.

  3. Кодировка: Обычно требуется UTF-8.

  4. Самое важное – это качество и релевантность ваших данных. Они должны быть чистыми, точными и соответствовать той задаче, которую вы хотите, чтобы модель решала.

  5. Размер Данных: Количество примеров влияет на качество файн-тюнинга. Обычно требуются сотни или тысячи примеров, в зависимости от сложности задачи и модели.

Пример файла my_finetuning_data.jsonl для Google Vertex AI (инструктивный тюнинг):

Fine Tuning для модели, как и когда делать Программирование, Инструкция, IT, Длиннопост

Лига программистов

2K постов11.8K подписчика

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества