Компромиссы численной устойчивости
Где сниженная точность требует осторожности
«Компромиссы численной устойчивости» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Что вычисляют тензорные ядра
- Смешанная точность: FP16, BF16, TF32
- Фрагментный API WMMA
- Компромиссы численной устойчивости