Exécution de Private ASR sur Ascend 910B: configuration, adaptation de l'opérateur et débit
Un parcours complet de l'atterrissage d'un moteur chinois de parole-texte sur les NPU Huawei Ascend dans un environnement privé - matrice de version, conversion de modèle ONNX-to - OM, commandes de déploiement de conteneurs, six pièges sur les déploiements réels et chiffres de performance de référence. Pour les ingénieurs déployant ASR dans des environnements Xinchuang.

Ce billet traverse l'atterrissage d'un moteur chinois de conversion vocale en texte sur les NPU Huawei Ascend dans un environnement privé - versions d'environnement, conversion de modèle, commandes de déploiement, pièges et chiffres de performance de référence.
Sur les chiffres: les chiffres marqués "spécifications" proviennent du produit publié Spécifications. Le tableau des performances donne Grandeur de référence dans des conditions typiques; les valeurs réelles varient en fonction des conditions audio, de la taille du modèle et de la stratégie de concurrency. Toujours mesurer sur votre propre charge de travail.
Pourquoi il doit fonctionner sur le matériel domestique
Dans le gouvernement, la finance et la défense, les systèmes doivent non seulement être « sur site de données », mais aussi « technologiquement autonomes ».« Cela signifie déplacer le calcul sous-jacent des GPU importés vers les puces domestiques Ascend, Cambricon et Hygon, et le système d'exploitation vers Kylin, UnionTech et d'autres systèmes domestiques.
En termes d'ingénierie, cela devient trois contraintes difficiles:
- Résidence des données - L'audio de réunion contient des discussions internes, et de nombreuses organisations interdisent explicitement l'audio de quitter l'intranet
- Approvisionnement Xinchuang - les GPU importés peuvent ne pas apparaître sur la liste d'achat approuvée
- Opération Air-Gapped - certains sites n'ont pas de connectivité externe, les poids du modèle doivent donc être emballés dans l'environnement à l'avance
Point central: déploiement sur site répond « où se trouvent les données »; la localisation répond « qui contrôle la technologie. Ensemble, ils convergent sur une seule tâche - faire fonctionner ASR sur des NPU domestiques, et fonctionner assez vite.
Accélérateurs soutenus
Basé sur la recherche de NEU NLP (Northeastern University), le moteur VoiVision prend en charge les accélérateurs traditionnels:
| Type | Représentants | Utiliser |
|---|---|---|
| NVIDIA | T4 / L4 / A10 / A100 | Général, haute performance |
| Ascend | 310P / 910B | Serveurs locaux, domestiques |
| Cambricon | MLU370 / MLU590 | Serveurs locaux, domestiques |
| Hygon DCU | Série DCU | Chemin x86 domestique |
| CPU uniquement | x86 et ARM | Réutilisation existante, faible concurrence |
Le Ascend possède actuellement le Écosystème le plus complet parmi les accélérateurs nationaux (CANN + MindSpore + modèle zoo). Le 910B cible la formation et l'inférence à haut débit, tandis que le 310P cible l'utilisation de bord et de faible consommation d'énergie. Pour les réunions concurrentes soutenues transcription vocale, un modèle commun est 910B pour l'inférence centrale et 310P pour les nœuds de bord.
Configuration de l'environnement: l'alignement des versions est le plus gros piège
La douleur dans le Ascend Écosystème n'est pas le calcul, c'est le Matrix version. Pilote, micrologiciel, CANN, framework et format de modèle - n'importe lequel des cinq étant désynchronisé produit des défaillances déconcertantes.
Une combinaison que nous considérons généralement stable:
| Composant | Version | Note |
|---|---|---|
| Pilote / Firmware | Étroitement lié à CANN | Vérifiez le tableau de compatibilité officiel avant la mise à niveau |
| CANN | Série 8.x | La bibliothèque d'opérateurs et les outils de conversion de modèles sont en direct ici |
| Container | Ascend Docker Runtime | Requis - Docker plain ne peut pas monter le NPU |
| Cadre d'inférence | ONNX Runtime + ACL | Les modèles OM fonctionnent bien sans MindSpore |
| OS | OpenEuler / Kylin V10 / UnionTech UOS | Environnements communs à Xinchuang |
La première étape consiste à confirmer que le NPU est toujours visible:
# List NPU devices and status
npu-smi info
# Expect a device list with 910B entries in a healthy state
# If the card is not visible here, nothing downstream matters — fix the driver first
Pitch: sur certains systèmes Kylin V10, npu-smi info signale une erreur de démon dmp juste après l'installation du pilote. La cause s'est avérée être un conflit entre la version dkms propre du système et l'installateur de pilotes. La solution consiste à supprimer le dkms système et à réinstaller en utilisant la version fournie avec le package de pilotes. Les problèmes d'adaptation au niveau de la distribution comme celui-ci sont rarement documentés et sont parmi les bloqueurs les plus courants sur site.
Conversion de modèle: ONNX à OM
Les modèles de ASR sont généralement formés en PyTorch, exportés vers ONNX, puis convertis au format OM de Ascend.
Trois choses à surveiller lors de l'exportation ONNX
torch.onnx.export(
model, dummy_input,
"asr.onnx",
opset_version=14, # Ascend supports lower opsets better — avoid the newest
do_constant_folding=True,
input_names=["audio", "audio_len"],
output_names=["logits"],
dynamic_axes={ # critical: audio length is variable
"audio": {0: "batch", 1: "time"},
"logits": {0: "batch", 1: "time"},
},
)
Trois endroits où cela se passe généralement mal:
- Version Opset - plus nouveau n'est pas meilleur. Les versions d'opérateurs non pris en charge touchent plus souvent les opérateurs lors de la conversion; 14 est un choix bien testé.
- axes dynamiques - la longueur audio est intrinsèquement variable, donc
dynamic_axesdoit être déclaré, sinon vous êtes limité à l'entrée de longueur fixe et le résultat est inutilisable en production. - Folding constant -
do_constant_folding=Trueréduit considérablement le graphique et améliore le succès de conversion.
Conversion avec ATC
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=Ascend910B \
--precision_mode=allow_fp16 \
--log=error
Ce que les paramètres signifient:
--soc_version- doit correspondre exactement au matériel physique. La spécification de 910A sur un 910B échoue au moment du chargement avec une vague erreur.--dynamic_dims- profils de forme dynamique. Pour l'audio, profiler par durée; trop de profils augmente le temps de compilation, trop peu déclenche une recompilation fréquente et une jitter de latence.--precision_mode-allow_fp16coûte généralement une précision négligeable sur ASR tout en améliorant clairement le débit.
Faut-il quantifier?
| Precision | Throughput | Accurate |
|---|---|---|
| FP16 | Baseline | Baseline |
| INT8 | Clear gain | Coût notable |
par Le verdict: maintenir le FP16 lorsque l'exactitude est critique (réunions médicales, juridiques); INT8 est le meilleur métier où la tolérance aux erreurs est plus élevée, comme les stand-ups internes et les enregistrements d'entraînement.
Déploiement: les conteneurs sont la seule option raisonnable
Les installations en métal nu sont pratiquement intenables sur les sites de Xinchuang. Nous livrons des conteneurs:
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:910b \
./asr_server --model /models/asr_om --port 8000
- Fonctionne sur bare metal, cloud gouvernemental et environnements localisés;
- Intégration avec OA et les systèmes de réunion via les API RESTful / WebSocket standard;
- Élasticité par concurrence.
Notez ces entrées --device: L'absence de l'un d'eux produit un échec d'initialisation ACL., et l'erreur ne vous indiquera pas qu 'un appareil est manquant. C'est l'obstacle le plus courant pour les nouveaux arrivants.
Avec - Ne pas inventer un protocole privé. Utilisez le REST (fichier transcription vocale) et le WebSocket (streaming en temps réel) standard, ou l'intégration avec le OA du client et les systèmes de réunion devient douloureuse.
Si vous avez déjà des serveurs, déployez le software-only engine pour obtenir un transcription vocale privé sur des accélérateurs nationaux sans acheter de matériel.
Référence Performance
Conditions de test: Ascend 910B, FP16, audio de réunion chinoise, 16 kHz mono.
| métrique | Référence | Note |
|---|---|---|
| Facteur temps réel (RTF) | ~ 0.1 ordre | Une heure d'audio en quelques compte rendu de réunion |
| Streams concurrents par carte | Tens | Pure transcription vocale, concurrency de réunion soutenue |
| Première latence Token | Sous-seconde | Mode streaming; typiquement en dessous de 1s en pratique |
| Précision chinoise transcription vocale | ≥ 98% | Scenarios de réunion en mandarin standard (spécification) |
| Couverture dialectale | 22 | Détection automatique (spécification) |
à️ Le chiffre de concurrency ci-dessus est transcription vocale uniquement (carte ASR unique, pas de séparation des locuteurs ou de structure minute). L'ajout de la séparation des haut-parleurs et de l'extraction des sujets / éléments d'action réduit considérablement la capacité par carte - l'appareil est évalué pour 10 réunions simultanées, qui fait référence au pipeline complet (transcription vocale + séparation + structuration); la forme de cluster est évaluée à 50+ flux. Demandez toujours quelle couche un fournisseur cite - les trois diffèrent par des multiples.
Six pièges des déploiements réels
C'est la partie la plus précieuse du post. Chacun d'entre eux a été frappé sur le site.
1. Des formes dynamiques provoquant une recompilation constante Sans --dynamic_dims, chaque nouvelle longueur audio déclenchait une recompilation du graphique et la latence augmentait à des secondes. Le profilage par durée le ramenait en moins d'une seconde.
2. Mémoire audio épuisante L'enregistrement d'une réunion de deux heures directement dans le modèle OOMs l'appareil. Vous avez besoin de Inference incrémentielle chunked - segment par VAD et de décoder segment par segment plutôt que de charger le fichier entier.
3. Les opérateurs non supportés échouent silencieusement Une variante de LayerNorm n'avait pas d'équivalent Ascend. ATC n'a pas soulevé d'erreur pendant la conversion, et le modèle produit tous les zéros à l'exécution. Toujours effectuer une vérification d'équivalence après la conversion: exécutez le même audio à travers ONNX Runtime (CPU) et OM (NPU) et comparez les sorties.
4. Les fuites de contexte sous la concurrence multi-threads Une version antérieure a créé un contexte ACL séparé par requête et les contextes épuisés sous chargement. Context pooling a fixé.
5. Les modèles doivent être reconvertis après les mises à jour des pilotes Après une mise à niveau majeure du CANN, les modèles OM plus anciens peuvent ne pas charger ou perdre des performances. Mettez la conversion de modèle en CI plutôt que de convertir manuellement une fois.
6. Emballage hors ligne pour les sites à air gap Dans des environnements physiquement isolés, les dépendances CANN, les pilotes, les poids de modèle, les polices et les certificats doivent tous être packagés à l'avance. Une fois, nous sommes arrivés sur le site pour trouver une police CJK manquante, et chaque transcription est revenue comme des boîtes à tofu. Répétez le déploiement complet sur un environnement équivalent avant d'expédire le bundle hors ligne.
Quand ne pas choisir des accélérateurs nationaux
Être droit avec vous. Sautez-le si:
- Il n'y a pas de Xinchuang ou de mandat de localisation → le GPU Écosystème est beaucoup plus mature, ne faites pas de travail pour vous-même
- Personne dans l'équipe ne sait que le coût d'exploitation de CANN dépassera de loin ce que le matériel économise
- Concurrence à un chiffre → CPU simple suffit, sautez l'accélérateur
Les accélérateurs nationaux sont le bon appel quand: il existe un mandat de conformité clair + une pression de concurrence soutenue + une capacité d'ingénierie pour le soutenir.
Conseil de taille
- Accélérateur Nouveau cluster localisé: VV05 / VV10+ Ascend ou Cambricon;
- Réutilisation de x86 existant: moteur sur CPU ou Hygon DCU;
- Environnement mixte: unifier les accélérateurs NVIDIA et domestiques, horaire par charge.
Si vous pesez le privé contre le cloud, consultez le on-premise ASR selection guide.
Voir le private deployment guide et MLPS Level 3 compliance.
FAQ
Q: Quelles puces domestiques transcription vocale prend en charge?
A: Le moteur VoiVision prend en charge nativement Ascend (310P / 910B), Cambricon (MLU370 / MLU590), Hygon DCU et la gamme complète de NVIDIA; il fonctionne également sur CPU seul, couvrant l'ensemble de la pile localisée et domestique.
Q: Pourquoi la ASR doit-elle fonctionner sur des accélérateurs nationaux?
A: Les programmes gouvernementaux, financiers et de défense nécessitent généralement la résidence des données, la conformité des achats de Xinchuang et des opérations à air-gapped en même temps. Combinés, ils excluent souvent complètement les GPU importés, laissant les NPU domestiques comme la seule voie viable.
Q: Quels sont les points de défaillance courants pour convertir ONNX en Ascend OM?
A: Trois principaux: une version opset trop élevée causant des opérateurs non pris en charge (14 est un choix sûr), des déclarations dynamic _ axes manquantes vous limitant à l'audio de longueur fixe, et une soc _ version qui ne correspond pas au matériel réel, qui échoue au moment du chargement avec une vague erreur. Exécutez toujours une vérification de l'équivalence de sortie entre CPU ONNX Runtime et NPU OM après la conversion.
Q: La quantification de INT8 sur Ascend en vaut-elle la peine?
A: Cela dépend de la quantité d'erreur que le scénario tolère. INT8 apporte un gain de débit clair mais un coût de précision notable. Gardez le FP16 pour les scénarios sensibles à la précision tels que les réunions médicales ou juridiques; INT8 est un meilleur échange pour les stand-ups internes et les enregistrements de formation.
Q: Quels périphériques doivent être montés pour exécuter Ascend dans un conteneur?
A: Quatre d'entre eux: /dev/davinci0, /dev/davinci_manager, /dev/devmm_svm et /dev/hisi_hdc, plus le répertoire du pilote. L'absence de l'un d'entre eux produit une échec d'initialisation de la LCA, et le message d'erreur ne vous indiquera pas qu 'un périphérique est manquant.
Q: La parole transcription vocale peut-elle fonctionner uniquement sur CPU?
A: Oui. Le moteur est optimisé pour l'inférence CPU, de sorte qu 'il fonctionne sur des serveurs localisés ou généraux sans accélérateur discret - idéal pour une faible concurrency ou pour la réutilisation du matériel existant.
Q: Comment est-il déployé avec Docker / K8s?
A: VoiVision est livré sous forme d'image conteneur avec un déploiement Docker et Kubernetes à une seule commande, fonctionnant sur bare metal, cloud gouvernemental et environnements localisés, et s'intègre via les API RESTful / WebSocket standard.
Q: La précision baisse-t - elle sur les accélérateurs domestiques?
A: Le modèle est basé sur la recherche de NEU NLP (Northeastern University); les accélérateurs n'affectent que le débit et la latence. Après la quantification et l'adaptation de l'opérateur sur Ascend / Cambricon, la précision de la transcription vocale chinoise reste au même niveau.
