Транскрипция совещаний на Ascend 310P: матрица версий, конвертация моделей и семь уроков с площадки
Может ли карта вывода с краем справиться с встречей речевая транскрипция?В этой статье описывается развертывание китайского двигателя ASR в среде Ascend 310P-CANN, параметры ATC, которые имеют значение при преобразовании ONNX в OM, четыре устройства, которые должны быть установлены в контейнере, как настроить динамические размеры, и семь уроков, которые вы узнаете только на сайте.Самый опасный из них - это тихий сбой оператора, который производит все-нулевой выход без каких-либо ошибок.

В этой статье документируется развертывание китайского языкового движка речевая транскрипция на Карта вывода Ascend 310P. 310P представляет собой краевую выводную карту с другим позиционированием от 910B, и ее сценарии ближе к внутренней локальной обработке.
База данных: цифры, обозначенные «официальными спецификациями», взяты из опубликованных показателей производительности продукции; таблица производительности дает исходные значения для типичной среды.Фактические цифры варьируются в зависимости от условий аудио, размера модели и стратегии одновременности - всегда откладывайте свои собственные измерения.
Чем хорош 310P, а чем нет
Нет недостатка в статьях О нас и Ascend 310P, но большинство останавливаются на "CANN установлена и демо запускается".Настоящая ловушка - это Запустить его один раз и надежно обслуживать - это две совершенно разные вещи..
Заключение впереди:
| Размер | 310P Поведение | Замечания |
|---|---|---|
| Позиционирование | Edge inference card | Не тренировочная карточка; не ожидайте тонкой настройки на нее |
| Раздел с 910B | Edge node | 910B обрабатывает центральные выводы, 310P - локальную обработку. |
| Чистое одновременное использование речевая транскрипция на карту | Десятки потоков | Одномодельная база ASR (основное значение) |
| Полная параллельность трубопроводов | значительно падает | После добавления разделение по спикерам и структурирования |
| Китайская точность речевая транскрипция | ≥98% | Стандартный сценарий встреч на мандаринском языке (официальная спецификация) |
| Диалектное покрытие | 22 диалекта | Автоматическое обнаружение (официальная спецификация) |
Один выбор ловушка стоит флагировать: многие поставщики цитируют параллельность, не указывая основы.«XX потоков на карту» может означать чистый ASR, или это может означать полный трубопровод.Эти два могут различаться несколько раз.
Нашим типичным Архитектура является 910B в центре, 310P на краю: аудио транскрибируется локально в зале заседаний, а в центр возвращается только структурированный текст.Это позволяет контролировать пропускную способность и удовлетворяет требованию "данные не покидают зал заседаний".
Подготовка окружающей среды: матрица версий - это реальное препятствие
Болезненной точкой в Ascend Экосистема никогда не является вычисление - это выравнивание версий.Драйвер, микропрограммное обеспечение, CANN, время выполнения контейнеров, схема вывода, формат модели: Если один из шести не выровнен, это создает сбивающий с толку неудачу., а сообщение об ошибке часто не говорит, что пошло не так.
Комбинация, которую мы проверили и нашли стабильной:
| Компонент | Версия | Замечания |
|---|---|---|
| Драйвер / прошивка | Тщательно привязанный к CANN | Проверьте официальную таблицу совместимости перед обновлением |
| CANN | Серия 8.x | Библиотека операторов и инструмент преобразования ATC живут здесь |
| Время выполнения контейнеров | Время выполнения Ascend Docker | Необходимо; обычный Docker не может монтировать НПУ |
| Рамочная основа выводов | Время выполнения ONNX + ACL | Запускает модели OM |
| ОС | openEuler / Kylin V10 / UnionTech UOS | Общие в Xinchuang среды |
Первым шагом всегда является подтверждение того, что NPU виден:
# Check NPU devices and status
npu-smi info
# You should see the device list with health status OK
# If no card appears here, everything downstream is wasted — fix the driver first
Полевой урок: в некоторых средах Kylin V10
npu-smi infoсообщил об исключении демонаdmpпосле установки драйвера.Причиной оказалось конфликт между поставляемым в системуdkmsи скриптом установки драйвера.Исправление состояло в том, чтобы удалить систему dkms и переустановить с помощью версии, поставленной с пакетом драйверов.Дистрибутивные проблемы, такие как Обычно они не встречаются в официальной документации., и они являются наиболее распространенным блокером на сайте.
Перевод моделей: ONNX в OM
Модели ASR, как правило, обучаются в PyTorch, экспортируются в ONNX, а затем преобразуются в Ascend OM формат с ATC.
Три вещи, на которые следует обратить внимание при экспорте ONNX
torch.onnx.export(
model, dummy_input,
"asr.onnx",
opset_version=14, # Do not use the newest; lower opset versions are more compatible
do_constant_folding=True,
input_names=["audio", "audio_len"],
output_names=["logits"],
dynamic_axes={ # Critical: audio length is inherently dynamic
"audio": {0: "batch", 1: "time"},
"logits": {0: "batch", 1: "time"},
},
)
- Более высокая версия Opset не лучше. Новые опсеты с большей вероятностью поражают не поддерживаемых операторов; 14 является хорошим выбором совместимости.
- Динамические осей должны быть объявлены. В противном случае вы можете запускать только аудио фиксированной длины, что на практике непригодно.
- Включить постоянное сгибание.
do_constant_folding=Trueсущественно уменьшает размер графика и улучшает эффективность преобразования.
Параметры АТК, один за другим
atc --model=asr.onnx \
--framework=5 \
--output=asr_om \
--input_format=ND \
--input_shape="audio:-1,-1;audio_len:-1" \
--dynamic_dims="1,16000;1,32000;1,48000" \
--soc_version=Ascend310P \
--precision_mode=allow_fp16 \
--log=error
Три параметра, наиболее вероятные вызвать проблемы:
--soc_version: Это должно соответствовать фактическому оборудованию. 310P должен быть написан какAscend310P;Ascend310илиAscend910Bбудут выходить из строя на стадии загрузки с очень смутной ошибкой.--dynamic_dims: Динамические уровни.Для аудио, уровень Продолжительность в секундах.Слишком много уровней заставляет время компиляции взрываться; слишком мало триггеров часто перекомпиляции и джиттера задержки.Вышеприведенный набор (1s / 2s / 3s) является точкой равновесия, которую мы измеряем.--precision_mode:allow_fp16имеет незначительное влияние на точность ASR и четкое увеличение пропускной способности.
Стоит ли квантировать?
| Точность | Пропускная способность | Точность |
|---|---|---|
| FP16 | Базовый показатель | Базовый показатель |
| INT8 | Явная выгода | Возникающие потери |
Вывод: для сценариев, крайне чувствительных к точности - медицинских, юридических - Оставайтесь в FP16.Для внутренних встреч и учетных записей, где толерантность выше, INT8 - лучшая торговля.
Не преследуйте показатели с помощью INT8 слепо.В сценариях встреч потеря точности проявляется как «каждое имя неправильно, каждый термин неправильно», и затраты на переработку намного превышают вычислительные вычисления, которые вы сэкономили.
Развертывание: контейнеризация - единственный разумный выбор
Установка среды на голый металл практически невозможна в средах Xinchuang.Мы поставляем в контейнер:
docker run -it --name asr_server \
--device /dev/davinci0 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /data/models:/models \
-p 8000:8000 \
asr-server:310p \
./asr_server --model /models/asr_om --port 8000
Отсутствие любого из этих флагов --device приводит к отказу инициализации ACL., и ошибка не говорит вам, что устройство было опущено.Это самый большой блок для новых пришельцев.
Еще один урок: Используйте стандартный RESTful (файл речевая транскрипция) плюс WebSocket (поток в режиме реального времени), или интеграция с заказчиком OA и системами собраний становится очень болезненной.
Клиенты, у которых уже есть серверы, могут развернуть pure-software speech engine напрямую, получив частный речевая транскрипция на отечественных акселераторах без покупки оборудования.
Семь уроков из поля
Это самая ценная часть статьи.Каждый элемент был выучен тяжелым способом, не скопирован из документации.
1.Динамические формы вызывают частую перекомпиляцию Сначала мы не установили --dynamic_dims, поэтому каждый аудиоклип разного размера запускал компиляцию графика и задержку, которая увеличивалась до секунд.После конфигурации уровней задержка установилась в субсекундном диапазоне.
2.Длинный аудио истощает память Введение двухчасовой записи встречи в модель за один проход вызвало немедленную ООМ.Вы должны использовать сегментированный инкрементальный вывод - cut by VAD и подавать декодер сегмент за сегментом вместо того, чтобы загружать все.Позже мы добавили Вынужденный 60-секундный поток на аудиобуфер, что полностью устранило риск OOM.
3.Неисправность тихого оператора В одном из вариантов LayerNorm не было соответствующего оператора на Ascend. ATC не сообщал никаких ошибок во время преобразования, и время выполнения возвращало все нули. Это самый опасный класс неудач, потому что это выглядит как успех. Вы должны проверить эквивалентность: подача того же аудио через ONNX Runtime на CPU и OM на NPU, а затем сравнить выходные данные.Это единственный вариант - не пропускайте его.
4.Контекстная утечка при многопоточной параллельности Предыдущие версии создавали отдельный контекст ACL для каждого запроса, исчерпывающий контекст при высокой параллельности. Контекстное объединение исправил это.
5.Модернизация драйвера означает повторное преобразование модели После крупного обновления CANN старые модели OM могут не загружаться или регрессировать в производительности. Перевод модели в CI вместо того, чтобы конвертировать вручную и называть это сделано.
6.Офлайн упаковка для воздушных зазоров В физически изолированной среде все Зависимости CANN, драйверы, вес модели, китайские шрифты и сертификаты должны быть упакованы заранее.Однажды мы попали на это: Пропавший китайский шрифт на сайте, и каждый результат речевая транскрипция выходил в виде ящиков. Офлайн-пакеты должны быть репетированы в рамках полного процесса развертывания в эквивалентной среде.
7.Вводящие в заблуждение сообщения об ошибках срывают диагностику Некоторые ошибки Ascend дают только код, а не коренную причину.Однажды мы провели три дня на сбое загрузки без прогресса, и это оказалось неправильным soc_version. Урок: когда вы попадете на неопределенную ошибку, перепроверьте матрицу версий сверху - это гораздо быстрее, чем чтение журналов строка за строкой.
Полный трубопровод: от речи до протокол совещания
Один заключительный момент: Речь речевая транскрипция - это только первый шаг.
То, что нужно реальному сценарию, - это «протокол совещания, когда встреча закончится».Это требует разделение по спикерам, семантической структурирования (темы, решения, действия) и генерации протокол совещания после стадии ASR.Условия этих трех на Значительно снижает уровень конкуренции - именно поэтому мы постоянно подчеркиваем, что вы должны спросить, какой слой охватывает число одновременности.
Наш подход запускает полный конвейер на одном сервере, при этом аудио и текст никогда не покидают внутреннюю сеть.Для правительственных, финансовых и оборонных сценариев это жесткое требование.
Когда не выбирать отечественные ускорители
Давайте будем прямо говорить об этом, а не толкать его.
Если ваша ситуация соответствует одному из следующих, Используйте вместо этого GPU:
- Нет обязательных требований к Xinchuang или отечественным технологиям → GPU Экосистема гораздо более зрелый; не создавайте для себя проблем
- Никто в команде не знает, что может быть → эксплуатационная стоимость будет намного превышать деньги, сэкономленные на оборудование
Ценность отечественных ускорителей - Соблюдение, а не рентабельность.Если соблюдение не является жестким ограничением, арифметика не работает.
Приложение: полный список совместимости
| Компонент | Поддерживаемый диапазон |
|---|---|
| Ascend | 310P / 910B |
| Cambricon | MLU370 / MLU590 |
| Hygon | DCU |
| NVIDIA | T4 / L4 / A10 / A100 и полный ассортимент |
| Только CPU | Поддерживается (низкая параллельность / повторное использование существующего оборудования) |
Развертывание с помощью Docker и Kubernetes, работая на bare-metal, правительственных облачных средах и средах Xinchuang, интеграция с OA и системами встреч по стандартным интерфейсам RESTful / WebSocket
Читать далее: Private ASR on the Ascend 910B | How to choose a private-deployment ASR
FAQ
Q: Как выбирать между Ascend 310P и 910B?
A: Это зависит от формы работы. 310P - это краевая выводная карта, ориентированная на низкую мощность и локальную обработку, подходит для филиалов и внутренней обработки; 910B имеет больше вычислений и подходит для центрального вывода и агрегации с высокой одновременностью.Типичный Архитектура для встречи с речевая транскрипция использует 910B в качестве центрального узла и карты 310P в качестве краевых узлов, поэтому аудио транскрибируется локально, и только структурированный текст возвращается в центр.
Q: Сколько одновременных речевая транскрипция потоков может обрабатывать один 310P?
A: Определения имеет значение.Одновременные потоки для чистых ASR речевая транскрипция относительно высоки; как только разделение по спикерам, терминологическая коррекция и генерация протокол совещания будут слоированы, их число значительно снижается.Если поставщик цитирует цифру, не говоря, охватывает ли она чистый речевая транскрипция или полный трубопровод, оба могут отличаться в несколько раз - всегда спросите.
Q: Почему выравнивание версий является самой сложной частью развертывания Ascend?
A: В Ascend Экосистема драйвер, прошивка, CANN, время выполнения контейнера, схема вывода и формат модели взаимно связаны.Любое несоответствие вызывает отказ в загрузке, и сообщение об ошибке часто расплывчато и не указывает на проблему с версией.Надежный подход заключается в том, чтобы сначала заблокировать комбинацию по официальной таблице совместимости, а затем установить ее в порядке, не смешивая пакеты драйверов из разных партий.
Q: Что происходит, если soc_version неверна при преобразовании ONNX в OM?
A: Модель выходит из строя на стадии загрузки, и ошибка не указывает на несоответствие моделей.Для 310P необходимо написать Ascend310P; запись Ascend310 или Ascend910B не загружается.Расплывчатость этой ошибки является одним из самых простых способов ввести в заблуждение на сайте.
Q: Почему я должен проводить проверку эквивалентности после конверсии модели?
A: Потому что молчаливые провалы существуют.Когда вариант оператора не реализуется на Ascend, преобразование ATC не сообщает об ошибке, но время выполнения выдает все-нулевой выход.Такой вид сбоя не показывает ничего необычного в журналах.Единственный резервный вариант - запускать один и тот же аудио через ONNX Runtime на CPU и OM на NPU и сравнивать выходный слой по слою.
Q: Почему длинный аудио истощает память?
A: Передача всей записи встречи в модель за один проход - обычная ошибка.Загрузка двухчасовой записи напрямую вызывает отказ из памяти.Правильный подход заключается в том, чтобы сегментировать по обнаружению голосовой активности и запускать инкрементальные выводы сегмент за сегментом, с ограничением буфера, а не загружать всю запись.
Q: Какие устройства должны быть монтированы в контейнер для Ascend?
A: Вы должны установить четыре устройства / dev / davinci0, / dev / davinci_manager, / dev / devmm_svm и / dev /hisi_hdc вместе с каталогом драйверов.Отсутствие любого из них вызывает отказ инициализации ACL, и ошибка не говорит вам, что устройство отсутствует - это самый распространенный блокер для новичков.
Q: Как развернуть офлайн в воздушной среде?
A: Физически изолированная среда не имеет внешней сети, поэтому зависимости CANN, драйверы, вес модели, китайские шрифты и сертификаты должны быть упакованы заранее.Однажды мы нашли недостающий китайский шрифт на сайте, и каждый результат речевая транскрипция вышел в виде ящиков.Офлайн-пакеты должны быть репетированы в рамках полного процесса развертывания в эквивалентной среде.
