Batch Size
Узнай, как размер пакета влияет на скорость и точность обучения моделей машинного обучения. Изучи аппаратные ограничения и оптимизируй Ultralytics YOLO26 с помощью AutoBatch.
В области машинного обучения и особенно глубокого обучения размер пакета — это количество обучающих примеров, используемых на одной итерации обучения модели. Вместо одновременной подачи всех обучающих данных в нейронную сеть, что часто вычислительно невозможно из-за ограничений памяти, набор данных разделяют на небольшие подмножества, называемые пакетами. Модель обрабатывает один пакет, вычисляет ошибку и обновляет свои внутренние веса модели с помощью обратного распространения ошибки, прежде чем перейти к следующему пакету. Этот гиперпараметр играет ключевую роль в определении скорости обучения и стабильности процесса обучения.
Динамика обучения с пакетами#
Выбор размера пакета существенно влияет на то, как алгоритм оптимизации, обычно один из вариантов стохастического градиентного спуска, перемещается по ландшафту функции потерь.
- Маленькие размеры пакета: Использование небольшого количества примеров (например, 8 или 16) приводит к «шумным» обновлениям. Хотя оценка градиента менее точно отражает весь набор данных, этот шум иногда помогает модели выбраться из локальных минимумов, что потенциально улучшает обобщающую способность. Однако для небольших пакетов требуется больше обновлений на эпоху, из-за чего обучение может занимать больше времени в реальном времени вследствие накладных расходов.
- Большие размеры пакета: Большой пакет (например, 128 или 256) обеспечивает более точную оценку градиента, что приводит к более плавной сходимости функции потерь. Он позволяет широко распараллеливать вычисления на современном оборудовании, значительно ускоряя их. Однако если пакет слишком большой, модель может сойтись к резким неоптимальным минимумам, что приводит к переобучению и снижает способность обобщать данные на новые примеры.
Оборудование и использование памяти#
На практике размер пакета часто приходится выбирать с учетом ограничений оборудования, а не только теоретических предпочтений. Модели глубокого обучения, особенно крупные архитектуры, такие как трансформеры или продвинутые сверточные сети, хранятся в видеопамяти GPU.
При использовании NVIDIA CUDA для ускорения в видеопамяти должны помещаться параметры модели, пакет входных данных и промежуточные выходы активаций, необходимые для вычисления градиента. Если размер пакета превышает доступную память, обучение завершится с ошибкой «недостаточно памяти» (OOM). Такие методы, как обучение с пониженной точностью, часто применяют для снижения потребления памяти, что позволяет использовать большие размеры пакета на том же оборудовании.
Различие между связанными понятиями#
Для эффективной настройки обучения важно отличать размер пакета от других временных понятий в цикле обучения.
- Размер пакета и эпоха: Эпоха представляет собой один полный проход по всему обучающему набору данных. Размер пакета определяет, на сколько частей будут разделены данные внутри этой эпохи. Например, если у тебя есть 1 000 изображений и размер пакета равен 100, для завершения одной эпохи потребуется 10 итераций.
- Размер пакета и итерация: Итерация (или шаг) — это обработка одного пакета и обновление весов. Общее количество итераций в процессе обучения равно количеству пакетов на эпоху, умноженному на общее число эпох.
- Размер пакета и пакетная нормализация: Несмотря на общее название, пакетная нормализация — это определенный тип слоя, который нормализует входные данные слоя на основе среднего значения и дисперсии текущего пакета. Этот метод сильно зависит от размера пакета: если он слишком мал (например, 2), статистические оценки становятся ненадежными, что может ухудшить производительность.
Практические применения#
Корректировка размера пакета — это обычная необходимость при развертывании решений для компьютерного зрения в различных отраслях.
-
Высокоточная медицинская визуализация: В области ИИ в здравоохранении специалисты часто работают с трехмерными объемными данными, такими как сканы MRI или CT. Эти файлы чрезвычайно плотные и требуют много памяти. Чтобы выполнять такие задачи, как анализ медицинских изображений или сложная сегментация изображений, не допуская сбоя системы, инженеры часто уменьшают размер пакета до очень малого значения, иногда даже до 1. В этом случае приоритетом является обработка деталей высокого разрешения, а не максимальная скорость обучения.
-
Промышленный контроль качества: Напротив, в области ИИ в производстве скорость имеет первостепенное значение. Автоматизированные системы, проверяющие продукцию на конвейере, должны обрабатывать тысячи изображений в час. Во время инференса инженеры могут объединять поступающие видеопотоки с камер в более крупные пакеты, чтобы максимально эффективно использовать устройства периферийного ИИ и обеспечивать высокую пропускную способность для обнаружения дефектов в реальном времени.
Настройка размера пакета в Python#
При использовании пакета Ultralytics для Python задать размер пакета очень просто. Можно указать фиксированное целое число или использовать динамическую настройку batch=-1, которая задействует функцию AutoBatch для автоматического вычисления максимального размера пакета, который твое оборудование может безопасно обработать.
В следующем примере показано, как обучить модель YOLO26 — новейший стандарт скорости и точности — с использованием заданного размера пакета.
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train on the COCO8 dataset
# batch=16 is manually set.
# Alternatively, use batch=-1 for auto-tuning based on available GPU memory.
results = model.train(data="coco8.yaml", epochs=5, batch=16)Для управления крупномасштабными экспериментами и визуализации влияния разных размеров пакета на метрики обучения такие инструменты, как Ultralytics Platform, предоставляют полноценную среду для журналирования и сравнения запусков. Правильная настройка гиперпараметров размера пакета часто становится последним шагом для достижения максимальной производительности модели.









