Смешанная точность
Повысьте эффективность глубокого обучения с помощью смешанного точного обучения! Достигайте более высоких скоростей, уменьшайте потребление памяти и экономьте энергию, не жертвуя точностью.
Смешанная точность - это техника, используемая в глубоком обучении для ускорения обучения моделей и снижения потребления памяти. Она подразумевает использование в процессе вычислений комбинации числовых форматов с более низкой точностью, например 16-битного формата с плавающей точкой (FP16), и форматов с более высокой точностью, например 32-битного формата с плавающей точкой (FP32). Благодаря стратегическому использованию чисел с более низкой точностью для определенных частей модели, таких как умножение веса, и сохранению критических компонентов, таких как обновление веса, в более высокой точности, обучение со смешанной точностью может значительно ускорить производительность на современных графических процессорах без существенной потери точности модели.
Как работает смешанная точность
Основная идея смешанной точности заключается в том, чтобы использовать скорость и эффективность памяти типов данных с более низкой точностью. Современное оборудование, особенно NVIDIA GPU с ядрами Tensor, может выполнять операции с 16-битными числами гораздо быстрее, чем с 32-битными. Процесс обычно включает три ключевых этапа:
- Переход к более низкой точности: Большинство операций в модели, в частности вычислительно трудоемкие умножения и свертки матриц, выполняются с использованием арифметики половинной точности (FP16). Это позволяет уменьшить объем занимаемой памяти и ускорить вычисления.
- Ведение мастер-копии весов: Для поддержания точности и стабильности модели мастер-копия весов модели хранится в стандартном 32-битном формате с плавающей точкой (FP32). Эта мастер-копия используется для накопления градиентов и обновления весов в процессе обучения.
- Масштабирование потерь: Для предотвращения численного переполнения, когда малые значения градиента становятся нулевыми при преобразовании в FP16, используется техника, называемая масштабированием потерь. Она заключается в умножении потерь на масштабный коэффициент перед обратным распространением, чтобы значения градиента оставались в пределах диапазона, представимого для FP16. Перед обновлением весов градиенты снова масштабируются.
Такие фреймворки глубокого обучения, как PyTorch и TensorFlow, имеют встроенную поддержку автоматической смешанной точности, что упрощает ее реализацию.
Применение и примеры
Смешанная точность широко используется при обучении крупномасштабных моделей машинного обучения (ML), где эффективность имеет первостепенное значение.
- Обучение больших языковых моделей (LLM): Такие модели, как GPT-3 и BERT, имеют миллиарды параметров. Их обучение с использованием только FP32 потребовало бы непомерно больших объемов памяти и времени GPU. Смешанная точность делает возможным обучение таких фундаментальных моделей за счет значительного сокращения объема памяти и ускорения вычислений. Это позволяет исследователям быстрее выполнять итерации и строить еще более мощные языковые модели.
- Ускорение работы моделей компьютерного зрения: В компьютерном зрении (КВ) смешанная точность ускоряет обучение сложных моделей, таких как конволюционные нейронные сети (CNN) и трансформаторы зрения (ViT). Для таких задач, как обнаружение объектов и сегментация изображений, модели Ultralytics YOLO, включая новейшую модель Ultralytics YOLO11, используют смешанную точность для ускорения сходимости. Это особенно полезно для настройки гиперпараметров и быстрой разработки в рамках таких платформ, как Ultralytics HUB. Более быстрое обучение также способствует ускорению экспериментов на больших наборах данных, таких как COCO. Смешанная точность также может использоваться при выводе результатов для ускорения развертывания модели, особенно при экспорте в такие форматы, как TensorRT, который сильно оптимизирован для более низких значений точности.
Смежные понятия
Смешанная точность - одна из нескольких техник оптимизации, используемых для повышения эффективности моделей глубокого обучения. Важно отличать ее от смежных понятий:
- Квантование модели: Квантование уменьшает размер модели и вычислительные затраты за счет преобразования чисел с плавающей точкой (например, FP32 или FP16) в младшие битовые целочисленные форматы, такие как INT8. В то время как смешанная точность использует различные форматы с плавающей точкой во время обучения, квантование обычно применяется после обучения(квантование после обучения) или во время него(обучение с учетом квантования), чтобы оптимизировать вывод, особенно на граничных устройствах.
- Обрезка модели: Обрезка - это техника, которая заключается в удалении избыточных или неважных связей (весов) из нейронной сети. В отличие от смешанной точности, которая изменяет числовой формат весов, обрезка изменяет саму архитектуру модели, чтобы уменьшить ее размер и сложность. Эти техники можно использовать вместе, чтобы добиться еще большего прироста производительности.