Fluxion: дифференцируемая обработка звука от обучения на GPU до локального исполнения в реальном времени
Обучить фильтр в тензорной библиотеке и надёжно исполнять его в звуковом потоке являются разными инженерными задачами. Fluxion описывает один граф обработки, но разделяет обучающий и потоковый исполнители. Между ними появляется явный этап проверки устойчивости и переноса коэффициентов, уменьшающий риск расхождения модели и развёрнутого фильтра.
Метод. Среда на Rust поддерживает каскады секций второго порядка, FIR и эффекты с линиями задержки. Для рекурсивных фильтров написаны аналитические сопряжённые вычисления, поэтому автоматическое дифференцирование не разворачивает каждый отсчёт в огромный граф. Потоковый тракт использует заранее выделенные буферы. Устойчивость проверяется по коэффициентам уже после преобразования в float32, а устройство повторяет проверку при загрузке. Это проверка динамики фильтра, не криптографическая подлинность файла. Общие петли обратной связи пока не поддерживаются обоими основными исполнителями.
Результаты. На i9-10900KF и RTX 3070 резидентный GPU-режим достигает 2990 млн отсчётов/с против 1580 у TorchFX и 1468 у torchaudio для точной рекурсии. Однако CPU на том же GPU-нагрузочном наборе даёт 2662 млн: дополнительный выигрыш GPU лишь около 12%. На Raspberry Pi 5 цепочка каскада 16-го порядка и реверберации обрабатывает 10 с за 46 мс при 11 МБ памяти. На рабочей станции p99 вычисления 128-отсчётного блока при глубине десять составляет 6,8 мкс при звуковом бюджете около 2,7 мс.
Ограничения. Блоки замерены без ожидания реального времени и специального приоритета: это стоимость вычисления, а не полная задержка с планировщиком ОС. CUDA проверена, другие GPU-среды нет. Обучение полностью изменяемых многосекционных каскадов остаётся на CPU; его шаг медленнее torchaudio и GRAFX. Приближённый частотный FLAMO нельзя напрямую ранжировать с точной рекурсией, а сертификация устойчивости не доказывает отсутствие всех звуковых артефактов.
Фишка из статьи. Один и тот же GPU-фильтр радикально меняет привлекательность в зависимости от владения памятью. Для нагрузки примерно 67 млн отсчётов статья отдельно раскрывает стоимость передачи.
| Режим | Время | Граница измерения |
|---|---|---|
| Данные уже на GPU | около 23 мс | Вычислительное ядро |
| Однократный вызов, собственный входной буфер | 106 мс | Передачи и вычисление |
| Заимствованный вход, как в Python-интерфейсе | 285 мс | Дополнительная копия на CPU |
Как это читать: рекордная скорость резидентных тензоров не является задержкой обычного вызова из Python. Для однократной обработки здесь выгоднее CPU. Разделение исполнителей оказывается не только организационным решением: оно позволяет не переносить GPU-накладные расходы в короткий звуковой обработчик.
Источник. Оригинальное название: Fluxion: A Differentiable DSP Runtime from Training GPU to Real-Time Edge. arXiv:2610.24622; полный текст PDF.