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 (Простой):

  • Вариант 2 (Более структурированный, для чатов):

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

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

  • Вариант 2 (Префикс/Продолжение):

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

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

  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 (инструктивный тюнинг):

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

2.1K постов11.9K подписчиков

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

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

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

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

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества