CUDA Academy · Урок

Компромиссы численной устойчивости

Где сниженная точность требует осторожности

Урок 4 из 413 шагов

«Компромиссы численной устойчивости» — бесплатный урок CUDA Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CUDA Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CUDA Academy содержит 4 уроков всего.

Скорость имеет цену

Математика Tensor Core с пониженной точностью выполняется быстро, но меньшее количество бит означает больше ошибок округления. Численная устойчивость — это искусство сохранять достоверность результатов. ⚖️

Что такое ошибка округления

Каждое значение низкой точности округляется до ближайшего представимого числа. Одна такая небольшая ошибка округления безвредна, но за множество шагов ошибки могут накапливаться.

Потеря значимости в FP16

Узкий диапазон FP16 позволяет малым числам превратиться в ноль — это называется потерей значимости. Градиенты и очень маленькие веса могут просто исчезнуть во время обучения.

Переполнение FP16

Тот же узкий диапазон вызывает переполнение: большое значение превращается в бесконечность. Одна неверная сумма может затем испортить все последующие вычисления.

Масштабирование функции потерь

Распространённое решение — масштабирование функции потерь: увеличить значения перед вычислениями FP16, чтобы вывести их из зоны потери значимости, а затем уменьшить масштаб обратно.

Почему накопление в широком формате помогает

Tensor Core накапливают значения в FP32 не случайно. Такой широкий накопитель предотвращает сильное смещение результата при сложении тысяч малых значений.

BF16 обходит проблемы диапазона

Поскольку BF16 сохраняет экспоненту FP32, переполнение и потеря значимости происходят редко. Его слабое место — меньшая точность, а не уменьшенный диапазон.

Катастрофическая потеря значимости

Вычитание двух близких чисел уничтожает старшие разряды — это называется потерей значимости. Низкая точность делает оставшуюся ошибку гораздо заметнее.

Храните критические части в FP32

Безопасный подход — смешанная точность: выполнять основные умножения в FP16 или BF16, но чувствительные суммы, нормы и обновления хранить в FP32.

Всегда проверяйте точность

Никогда не считайте быстрое ядро правильным без проверки. Сравните его с эталоном FP32 и убедитесь, что ошибка остаётся в допустимых пределах.

Измерение ошибки

Простая проверка — вычислить абсолютную разницу с надёжным результатом. Сравните эту ошибку с выбранным небольшим порогом.

float err = fabsf(gpu_result - cpu_result);

Быстрая проверка

Почему Tensor Core накапливают частичные суммы в FP32, даже если входные данные имеют формат FP16?

Итоги

Вы узнали о компромиссах точности: следите за переполнением и потерей значимости в FP16, используйте масштабирование функции потерь и накопление в FP32, а также всегда сравнивайте результат с эталоном. 🎯

Можно начать бесплатно

Изучай C++ с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

Часто задаваемые вопросы

Урок «Компромиссы численной устойчивости» бесплатный?

Да — полный текст урока «Компромиссы численной устойчивости» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CUDA Academy, подпишись на CoddyKit PRO. Курс CUDA Academy содержит 4 уроков всего.

Чему я научусь в уроке «Компромиссы численной устойчивости»?

Где сниженная точность требует осторожности Ты практикуешь CUDA Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать CUDA Academy?

Предыдущий опыт не требуется. CUDA Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Компромиссы численной устойчивости»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке CUDA Academy?

Да. Каждый урок CUDA Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Что вычисляют тензорные ядра
  2. Смешанная точность: FP16, BF16, TF32
  3. Фрагментный API WMMA
  4. Компромиссы численной устойчивости
← Назад к CUDA Academy