Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Callback

Колбэк — это функция, которую цикл обучения вызывает при наступлении заданных событий, например в конце каждой эпохи, чтобы добавить раннюю остановку, сохранение контрольных точек или журналирование.

Колбэк — это функция, переданная другой части кода, которая вызывает ее при наступлении определенного события. Обработчики событий в пользовательских интерфейсах, функции завершения в асинхронном коде и функция сравнения, переданная процедуре сортировки, — все это колбэки. В фреймворках глубокого обучения событиями служат точки цикла обучения, например начало обучения, завершение каждого пакета или эпохи, а также момент окончания валидации. Зарегистрированные для события колбэки выполняются в соответствующий момент и получают доступ к состоянию обучающего процесса, поэтому пользователи могут добавлять раннюю остановку для борьбы с переобучением, сохранение контрольных точек, расписания изменения скорости обучения или логирование, не изменяя сам цикл.

Как колбэки подключаются к обучению#

Фреймворк хранит список колбэков для каждого именованного события и вызывает каждый из них, когда цикл доходит до этого события. Колбэку передается объект обучающего процесса или модели, чтобы он мог читать метрики и менять настройки. Keras собирает колбэки в модуле keras.callbacks, PyTorch Lightning — в подклассах Callback, а Transformers от Hugging Face — в TrainerCallback. Названия методов в разных библиотеках отличаются, но события происходят в одном и том же цикле:

Колбэки выполняются внутри цикла, поэтому они могут менять его ход: колбэк, устанавливающий флаг остановки, завершает обучение после текущей эпохи, а колбэк, изменяющий оптимизатор, влияет на все последующие шаги. Колбэки одного события выполняются в порядке регистрации, а колбэки на уровне пакетов запускаются тысячи раз за эпоху, поэтому длительные операции, например загрузку файлов, стоит выполнять на уровне эпох. При распределенном обучении каждый процесс запускает собственную копию цикла и колбэков, поэтому колбэки логирования и сохранения контрольных точек обычно работают только в главном процессе с рангом 0, чтобы несколько GPU не записывали один и тот же файл.

Распространенные колбэки для обучения#

  • Ранняя остановка: прекращает обучение, если метрика на валидационной выборке не улучшается заданное число эпох, называемое терпением. Это ограничивает переобучение и экономит вычислительные ресурсы. Колбэк EarlyStopping в Keras также может восстановить лучшие веса, полученные до остановки.
  • Сохранение контрольных точек: сохраняет модель после каждой эпохи или при улучшении отслеживаемой метрики, чтобы сохранить лучшие веса и возобновить обучение после сбоя. Колбэк BackupAndRestore в Keras использует сохраненное состояние для автоматического возобновления прерванного запуска.
  • Настройка скорости обучения: снижает скорость обучения, если метрика выходит на плато, как это делает ReduceLROnPlateau в Keras, или следует фиксированному расписанию, например косинусному затуханию.
  • Отслеживание экспериментов: отправляет потери, метрики и примеры изображений в такие инструменты, как TensorBoard, MLflow или Weights & Biases, после каждой эпохи.
  • Настройка гиперпараметров: передаёт оценку каждой эпохи настройщику, например Ray Tune, планировщики которого досрочно останавливают бесперспективные испытания.

Написание пользовательского колбэка#

Во время обучения, валидации, предсказания и экспорта Ultralytics YOLO генерирует именованные события, например on_train_epoch_end и on_fit_epoch_end; собственные интеграции с MLflow, Comet, ClearML, TensorBoard и Ultralytics Platform регистрируются как колбэки этих событий. Этот колбэк считывает mAP50-95 на валидации после каждой эпохи и останавливает запуск YOLO26, как только метрика достигает заданного значения:

from ultralytics import YOLO


def stop_at_target(trainer):
    """Stop training once validation mAP50-95 reaches 0.6."""
    score = trainer.metrics["metrics/mAP50-95(B)"]
    print(f"Epoch {trainer.epoch + 1}: mAP50-95 {score:.3f}")
    if score >= 0.6:
        trainer.stop = True  # the trainer ends the run after this epoch


model = YOLO("yolo26n.pt")
model.add_callback("on_fit_epoch_end", stop_at_target)  # runs after each epoch's validation
model.train(data="coco8.yaml", epochs=20)

Событие on_fit_epoch_end срабатывает после обучения и валидации в текущей эпохе, поэтому trainer.metrics уже содержит оценки этой эпохи. Если установить trainer.stop, обучающий процесс выйдет из цикла эпох, выполнит обычную финальную валидацию лучших весов и сохранит результаты — так же, как при достижении встроенного лимита patience.

Callbacks и хуки#

Эти два слова часто обозначают одно и то же: в PyTorch Lightning методы, реализующие колбэк, называются хуками. В самом PyTorch хуки модулей, зарегистрированные с помощью register_forward_hook или register_full_backward_hook, привязаны к прямому или обратному проходу одного слоя, а не к событию цикла обучения. Их используют для чтения карт признаков при визуализации, а также для проверки и изменения градиентов во время обратного распространения ошибки.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения