Fine-tuning
Дообучение продолжает обучение предварительно обученной модели на данных для конкретной задачи, позволяя адаптировать её с гораздо меньшими затратами данных и вычислений. Рассматриваются принцип работы, PEFT и код.
Тонкая настройка — это продолжение обучения модели, уже обученной на большом датасете: часть или все её веса обновляются на меньшем датасете, ориентированном на конкретную задачу. Веса предобученной модели уже содержат общие знания — например, о границах, текстурах и формах в моделях компьютерного зрения или о грамматике и фактах в больших языковых моделях (LLMs). Поэтому тонкая настройка позволяет добиться высокой точности, используя гораздо меньше размеченных данных и вычислительных ресурсов, чем обучение со случайно инициализированными весами. Это самый распространённый способ выполнить трансферное обучение; так создают большинство пользовательских моделей обнаружения объектов и чат-ассистентов на основе предобученных фундаментальных моделей.
Как работает тонкая настройка#
При тонкой настройке загружаются предобученные веса, а слои, связанные с исходной задачей, например классификатор или голова обнаружения, заменяются или меняют размер; затем модель обучается на новых данных с обычной функцией потерь и оптимизатором. То, какая часть исходной модели сохранится, зависит от трёх решений:
- Скорость обучения: При тонкой настройке используют более низкую скорость обучения, чем при предварительном обучении, обычно после короткого разогрева. Так обновления уточняют предобученные признаки, а не перезаписывают их. В ULMFiT применялись дифференцированные скорости обучения: для каждого слоя ниже верхнего скорость делили на 2,6.
- Какие слои обучать: Заморозка ранних слоёв backbone сохраняет неизменными общие признаки, сокращает расход памяти и снижает риск переобучения на небольших датасетах. При постепенной разморозке сначала обучается новая голова, а затем подключаются более глубокие слои.
- Продолжительность обучения: Чем дольше модель обучается только на новых данных, тем больше исходных навыков она утрачивает из-за катастрофического забывания.
Подходящая конфигурация зависит от доступной памяти, объёма размеченных данных и того, важны ли исходные навыки модели:
Полная и эффективная по числу параметров тонкая настройка#
При полной тонкой настройке обновляются все веса. Для большой языковой модели с 7 миллиардами параметров это означает хранение градиентов и состояния оптимизатора для 7 миллиардов значений и сохранение полной копии модели для каждой задачи. Тонкая настройка с эффективным использованием параметров (PEFT) замораживает предобученные веса и вместо этого обучает небольшой набор добавленных или выбранных параметров. В библиотеке PEFT от Hugging Face реализованы распространённые методы. LoRA добавляет обучаемые матрицы низкого ранга рядом с замороженными матрицами весов; по сравнению с полной тонкой настройкой GPT-3 175B с Adam этот подход сократил число обучаемых параметров в 10 000 раз, а потребление памяти GPU — в 3 раза. QLoRA обучает адаптеры LoRA поверх базовой модели, квантованной до 4 бит, что позволило выполнять тонкую настройку модели с 65 миллиардами параметров на одном GPU с 48 ГБ памяти.
После предварительного обучения большие языковые модели проходят несколько этапов тонкой настройки. При настройке по инструкциям модель обучается на парах запросов и ответов, а методы на основе предпочтений, такие как обучение с подкреплением на основе отзывов людей (RLHF) и прямая оптимизация предпочтений (DPO), затем согласуют ответы с предпочтениями людей.
Тонкая настройка и смежные понятия#
- Трансферное обучение: Общая идея повторного использования модели, обученной для одной задачи, в другой задаче. При тонкой настройке предобученные веса обновляются, а при извлечении признаков они остаются замороженными и обучается только новая голова.
- Обучение с нуля: Начинается со случайных весов и требует значительно больше размеченных данных и вычислительных ресурсов. Такой подход подходит для новых архитектур и предметных областей, мало связанных с любыми доступными данными предварительного обучения.
- Линейное зондирование: Обучает только линейный классификатор на замороженных признаках, обычно чтобы оценить, насколько хорошо предобученное представление уже описывает данные.
- Проектирование промптов и генерация с дополненной выборкой (RAG): Изменяют поведение большой языковой модели через входные данные, не затрагивая веса.
Тонкая настройка детектора объектов#
Вызов train() для предобученного чекпойнта YOLO26 с новым датасетом выполняет тонкую настройку модели: переносятся все совместимые веса, а cls_remap=True по умолчанию копирует строки классификатора для совпадающих названий классов. Поэтому на датасете африканской дикой природы выходы для слона и зебры инициализируются строками, предобученными на COCO, а для буйвола и носорога, отсутствующих в COCO, — случайными весами.
from ultralytics import YOLO
# Загрузи веса YOLO26n, предобученные на COCO; вызов YOLO("yolo26n.yaml") вместо этого обучал бы модель с нуля
model = YOLO("yolo26n.pt")
# Выполни тонкую настройку на 1 052 обучающих изображениях буйволов, слонов, носорогов и зебр
results = model.train(data="african-wildlife.yaml", epochs=30, imgsz=640)Для этого запуска на 30 эпох optimizer="auto" по умолчанию выбирает AdamW и lr0=0.00125 — скорость, рассчитанную на основе 4 классов датасета, поскольку запуск длится менее 10 000 итераций.










