Избегание ловушки числовой нестабильности при реализации Softmax с нуля

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

Эта особенность делает Softmax краеугольным камнем задач многоклассовой классификации, от распознавания изображений до языкового моделирования.

В этой статье мы разберёмся, как работает Softmax, и почему детали его реализации важны больше, чем кажется на первый взгляд.

Реализация наивного Softmax

«`
import torch

def softmax_naive(logits):
exp_logits = torch.exp(logits)
return explogits / explogits.sum(dim=1, keepdim=True)
«`

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

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

Пример логитов и целевых меток

В этом примере определяется небольшая партия из трёх образцов и трёх классов, чтобы проиллюстрировать как нормальные, так и неудачные случаи. Первый и третий образцы содержат разумные значения логитов и ведут себя так, как ожидалось во время вычисления Softmax. Второй образец намеренно включает экстремальные значения (1000 и -1000), чтобы продемонстрировать числовую нестабильность — здесь наивная реализация Softmax даёт сбой.

Проход вперёд: выходные данные Softmax и случай сбоя

Во время прямого прохода наивная функция Softmax применяется к логитам для получения вероятностей классов. Для нормальных значений логитов (первый и третий образцы) на выходе получается допустимое распределение вероятностей, где значения лежат между 0 и 1 и в сумме дают 1.

Однако второй образец явно демонстрирует числовую проблему: возведение в экспоненту 1000 приводит к переполнению до бесконечности, а -1000 — к нулю. Это приводит к некорректным операциям во время нормализации, производя NaN-значения и нулевые вероятности. Как только на этом этапе появляется NaN, он загрязняет все последующие вычисления, делая модель непригодной для обучения.

NVIDIA выпустила новую модель потоковой транскрипции Nemotron Speech ASR

NVIDIA представила новую модель потоковой транскрипции Nemotron Speech ASR, разработанную специально для приложений с низкой задержкой, таких как голосовые агенты и живые субтитры.

Описание модели

Nemotron Speech ASR (автоматическое распознавание речи) — это модель с 600 миллионами параметров, основанная на кэширующем FastConformer кодере с 24 слоями и RNNT-декодерере. Кодер использует агрессивное 8-кратное свёрточное субдискретизирование для сокращения количества временных шагов, что напрямую снижает вычислительные затраты и затраты памяти для потоковых рабочих нагрузок.

Модель потребляет 16 кГц моно-аудио и требует не менее 80 мс входного аудио на фрагмент. Задержка выполнения контролируется за счёт настраиваемых размеров контекста. Модель предоставляет 4 стандартные конфигурации фрагментов, соответствующие примерно 80 мс, 160 мс, 560 мс и 1,12 с аудио.

Кэш-осведомлённый потоковый подход

Традиционный «потоковый ASR» часто использует перекрывающиеся окна. Каждый входящий фрагмент повторно обрабатывает часть предыдущего аудио для поддержания контекста, что приводит к напрасной трате вычислительных ресурсов и увеличению задержки.

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

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

Точность против задержки

Nemotron Speech ASR оценивается на наборах данных Hugging Face OpenASR, включая AMI, Earnings22, Gigaspeech и LibriSpeech. Точность сообщается как словоошибка (WER) для разных размеров фрагментов.

Для среднего по этим бенчмаркам модель достигает:

* около 7,84% WER при размере фрагмента 0,16 с;
* около 7,22% WER при размере фрагмента 0,56 с;
* около 7,16% WER при размере фрагмента 1,12 с.

Это иллюстрирует компромисс между задержкой и точностью. Большие фрагменты дают больше фонетического контекста и немного снижают WER, но даже режим 0,16 с поддерживает WER ниже 8% и остаётся пригодным для использования в реальном времени.

Пропускная способность и параллелизм на современных GPU

Кэш-осведомлённый дизайн оказывает заметное влияние на параллелизм. На NVIDIA H100 GPU Nemotron Speech ASR поддерживает около 560 одновременных потоков при размере фрагмента 320 мс, что примерно в 3 раза превышает параллелизм базовой потоковой системы с той же целевой задержкой.

Интеграция в экосистему

Nemotron Speech ASR обучен в основном на английской части набора данных Granary от NVIDIA вместе с большой смесью общедоступных корпусов речи, в общей сложности около 285 тысяч часов аудио. Наборы данных включают YouTube Commons, YODAS2, Mosel, LibriLight, Fisher, Switchboard, WSJ, VCTK, VoxPopuli и несколько выпусков Mozilla Common Voice.

Ключевые выводы

* Nemotron Speech ASR — это потоковая модель на английском языке с 0,6 миллиарда параметров, которая использует кэширующий FastConformer кодер с RNNT-декодером и работает с 16 кГц моно-аудио с входными фрагментами не менее 80 мс.
* Модель предоставляет 4 конфигурации фрагментов для вывода, около 80 мс, 160 мс, 560 мс и 1,12 с, которые позволяют инженерам находить баланс между задержкой и точностью без переобучения, сохраняя WER на уровне 7,2–7,8% на стандартных бенчмарках ASR.
* Кэш-осведомлённый потоковый подход устраняет повторное вычисление в перекрывающихся окнах, так что каждый аудиофрагмент кодируется один раз, что обеспечивает примерно в 3 раза более высокий параллелизм на H100, более чем в 5 раз на RTX A5000 и до 2 раз на DGX B200 по сравнению с буферизованным потоковым базовым уровнем при аналогичной задержке.

1. Какова основная функция активации Softmax в глубоком обучении и почему она важна для моделей классификации?

Ответ: основная функция активации Softmax в глубоком обучении — преобразование неограниченных оценок, которые выдаёт нейронная сеть, в чётко определённое распределение вероятностей. Это позволяет интерпретировать каждый выход как вероятность принадлежности к определённому классу. Softmax является краеугольным камнем задач многоклассовой классификации, от распознавания изображений до языкового моделирования.

2. Почему реализация наивного Softmax численно нестабильна и какие проблемы это может вызвать?

Ответ: реализация наивного Softmax численно нестабильна, потому что большие положительные логиты могут вызвать переполнение, а большие отрицательные — привести к нулю. Это может привести к некорректным операциям во время нормализации, производя NaN-значения и нулевые вероятности. Как только на этом этапе появляется NaN, он загрязняет все последующие вычисления, делая модель непригодной для обучения.

3. Какие преимущества предлагает модель Nemotron Speech ASR по сравнению с традиционными потоковыми подходами к ASR?

Ответ: модель Nemotron Speech ASR предлагает несколько преимуществ по сравнению с традиционными потоковыми подходами к ASR. Во-первых, она использует кэш-осведомлённый потоковый подход, который обеспечивает неперекрывающуюся обработку кадров и предсказуемый рост памяти. Во-вторых, модель поддерживает около 560 одновременных потоков на NVIDIA H100 GPU, что примерно в 3 раза превышает параллелизм базовой потоковой системы с той же целевой задержкой. Это обеспечивает более высокую производительность и эффективность при обработке аудиоданных.

4. Какие параметры и характеристики модели Nemotron Speech ASR делают её подходящей для приложений с низкой задержкой?

Ответ: модель Nemotron Speech ASR имеет несколько параметров и характеристик, которые делают её подходящей для приложений с низкой задержкой. Она потребляет 16 кГц моно-аудио и требует не менее 80 мс входного аудио на фрагмент. Модель предоставляет 4 стандартные конфигурации фрагментов, соответствующие примерно 80 мс, 160 мс, 560 мс и 1,12 с аудио. Это позволяет инженерам находить баланс между задержкой и точностью без переобучения, сохраняя WER на уровне 7,2–7,8% на стандартных бенчмарках ASR.

5. Какие компромиссы существуют между задержкой и точностью при использовании модели Nemotron Speech ASR?

Ответ: при использовании модели Nemotron Speech ASR существует компромисс между задержкой и точностью. Большие фрагменты дают больше фонетического контекста и немного снижают WER, но даже режим 0,16 с поддерживает WER ниже 8% и остаётся пригодным для использования в реальном времени. Это иллюстрирует, что можно достичь хорошей точности при относительно низкой задержке, что делает модель подходящей для приложений с низкой задержкой.

Источник