Ascend 910B üzerinde özel ASR çalıştırmak: Kurulum, operatör uyarlaması ve işlem hacmi
Huawei Ascend NPU ' larında bir Çin konuşma-metine motorunun hava boşluğunda özel bir ortamda inişinin tam bir yürüyüş yolu - versiyon matrisi, ONNX-to-OM model dönüşümü, konteyner dağıtım komutları, gerçek dağıtımlara çarptığı altı tuzak ve referans performans rakamları. Xinchuang ortamlarında ASR'yi dağıtan mühendisler.

Bu yazı, özel bir ortamda Huawei Ascend NPU ' larında bir Çin konuşma-metine motorunun inişini - ortam sürümleri, model dönüşümü, dağıtım komutları, tuzaklar ve referans performans rakamları - anlatıyor.
Sayılar hakkında: "spek" işaretlenmiş rakamlar yayınlanan Teknik Özellikler ürününden geliyor. Performans tablosu tipik koşullar altında Referans büyüklükleri verir; gerçek değerler ses koşullarına, model boyutuna ve eşzamanlılık stratejisine göre değişir. Her zaman kendi iş yükünüzü ölçün.
Neden ev içi donanımlarda çalışmak zorundadır
Hükümet, finans ve savunma sektöründe, sistemler sadece "veri içi " değil aynı zamanda" teknolojik olarak özgüvenli " olmalıdır. Bu, altta yatan hesaplamayı ithal GPU ' lardan Ascend, Cambricon ve Hygon yerli çiplere ve işletim sistemini Kylin, UnionTech ve diğer yerli sistemlere kaydırmak anlamına geliyor.
Mühendislik açısından bu üç zor kısıtlama haline gelir:
- Veri ikametleri - toplantı sesleri iç tartışma içerir ve birçok kuruluş açıkça intranetten ses çıkmasını yasaklar.
- Xinchuang Satın Alım - ithal edilen GPU ' lar onaylanmış satın alma listesinde görünmeyebilir
- Hava boşluğu operasyonu - bazı siteler harici bağlantıya sahip değildir, bu nedenle model ağırlıkları ön ortamda paketlenmelidir
Çekirdek nokta: şirket içi dağıtım "verilerin nerede olduğunu " yanıtlar; Yerelleştirme" teknolojinin kimini kontrol ediyor " yanıtlar. Birlikte tek bir görevde buluşurlar - ASR 'yi yerli NPU' larda çalıştırın ve yeterince hızlı çalıştırın.
Desteklenen Hızlandırıcılar
NEU NLP (Kuzey Doğu Üniversitesi) araştırmaları üzerine inşa edilen, VoiVision motoru ana akım hızlandırıcıları yerel olarak destekliyor:
| Tip | Temsilciler | Kullanın |
|---|---|---|
| NVIDIA | T4 / L4 / A10 / A100 | Genel, yüksek performans |
| Ascend | 310P / 910B | Yerel, yerel sunucular |
| Cambricon | MLU370 / MLU590 | Yerel, yerel sunucular |
| Hygon DCU | DCU serisi | Yerel x86 yolu |
| Sadece CPU | x86 / ARM | Mevcut eşzamanlılık, düşük eşzamanlılık |
Ascend şu anda yerli hızlandırıcılar (CANN + MindSpore + model hayvanat bahçesi) arasında en eksiksiz Ekosistem 'ye sahiptir. 910B, eğitim ve yüksek işlem hacmi çıkarımını hedef alırken, 310P kenar ve düşük güç kullanımını hedefler. Sürekli eşzamanlı toplantı konuşma transkripsiyonu için, ortak bir desen merkezi çıkarım için 910B ve kenar düğümleri için 310P 'dir.
Ortam Kurulum: Sürüm Hizalaması En Büyük Tuzak
Ascend Ekosistem ' deki ağrı hesaplama değildir, Versiyon Matrix ' dir. Sürücü, firmware, CANN, framework ve model formatı - beş senkronizasyon dışı olan herhangi biri kafa karıştırıcı arızalar üretir.
Genellikle stabil gördüğümüz bir kombinasyon:
| Bileşen | Version | Not: |
|---|---|---|
| Sürücü / Firmware | CANN 'a sıkı sıkıya bağlı | Yükseltmeden önce resmi uyumluluk tablosunu kontrol edin |
| CANN | 8.x serisi | Operatör kütüphanesi ve model dönüştürme araçları burada canlı |
| Container | Ascend Docker Çalışma Zamanı | Zorunlu - plain Docker NPU 'yu monte edemez |
| Inference Framework (İngilizce) | ONNX Çalışma Zamanı + ACL | OM modelleri MindSpore olmadan iyi çalışıyor |
| OS | OpenEuler / Kylin V10 / UnionTech UOS | Xinchuang çevresinde yaygın |
Birinci adım, NPU 'nun her zaman görünür olduğunu onaylamaktır:
# 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
Tuzak: Bazı Kylin V10 sistemlerinde, npu-smi info sürücü kurulumundan hemen sonra bir dmp daemon hatası bildirir. Nedeni, sistemin kendi dkms sürümü ile sürücü yükleyicisi arasındaki bir çatışmanın olduğu ortaya çıktı. Düzeltme sistem dkms kaldırmak ve sürücü paketi ile birlikte paketlenen sürümü kullanarak yeniden yüklemek. Bu gibi dağıtım düzeyinde adaptasyon sorunları nadiren belgelenir ve en yaygın yerinde bloklayıcılar arasındadır.
Model Dönüştürme: ONNX to OM
ASR modelleri tipik olarak PyTorch'da eğitilmiştir, ONNX'e aktarılır ve daha sonra Ascend'nin OM formatına dönüştürülür.
ONNX dışa aktarırken göz önünde bulundurulması gereken üç şey
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"},
},
)
Genellikle yanlış giden üç yer:
- Opset versiyonu - daha yeni daha iyi değildir. Yüksek opset sürümleri, dönüştürme sırasında desteklenmeyen operatörleri daha sık vurur; 14 iyi test edilmiş bir seçimdir.
- Dinamik Eksenler - ses uzunluğu doğal olarak değişkendir, bu nedenle
dynamic_axesbildirilmelidir, aksi takdirde sabit uzunluklu giriş ile sınırlısınız ve sonuç üretimde kullanılamaz. - Sürekli katlama -
do_constant_folding=Truegrafiği belirgin bir şekilde küçültür ve dönüşüm başarısını artırır.
ATC ile dönüştürme
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
Parameterler aslında ne anlama geliyor:
--soc_version- Fiziksel donanımla tam olarak eşleşmeli. 910B üzerinde 910A belirtilmesi, yükleme zamanında belirsiz bir hata ile başarısız olur.--dynamic_dims- dinamik şekil profilleri. Ses için, süresine göre profil; çok fazla profil derleme süresini artırır, çok az sayıda sık yeniden derleme ve gecikme jitter tetikler.--precision_mode-allow_fp16genellikle ASR ' de önemsiz doğruluğa mal olurken, hacimleri açıkça artırır.
Kuantitmeli miyiz?
| Hassaslık | İşletme Throughput | Accuracy (Dürlük) |
|---|---|---|
| FP16 | Baseline | Baseline |
| INT8 | Açık kazanç | Dikkatli bir maliyet |
Karar: doğruluğun kritik olduğu FP16'yi (tıbbi, yasal toplantılar) korumak; INT8, hata toleransının daha yüksek olduğu, örneğin iç stand-ups ve eğitim kayıtları gibi daha iyi bir ticaretdir.
Dağıtım: konteynerler tek mantıklı seçenek
Çıplak metal montajları, Xinchuang sitelerinde neredeyse bakımsızdır. Konteynerler teslim ediyoruz:
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
- Çıplak metal, hükümet bulutları ve yerel ortamlarda çalışır;
- Standart RESTful / WebSocket API 'leri aracılığıyla OA ve toplantı sistemleri ile entegre;
- Elastik olarak eşzamanlı olarak ölçeklendirilir.
Bu --device girişlerini not edin: Bunlardan herhangi birinin eksikliği ACL başlatma başarısızlığı üretir ve hata size bir cihazın eksik olduğunu söylemez. Bu, yeni gelenler için en yaygın tökezlemektir.
Ayrıca - Özel bir protokol icat etmeyin. Standart REST (dosya konuşma transkripsiyonu) ve WebSocket (gerçek zamanlı akış) kullanmak ya da müşterinin OA ve toplantı sistemleri ile entegre etmek acı verici hale gelir.
Zaten sunucularınız varsa, donanım satın almadan yerel hızlandırıcılarda özel konuşma transkripsiyonu almak için software-only engine'yi dağıtın.
Referans Performansı
Test koşulları: Ascend 910B, FP16, Çin toplantı ses, 16 kHz mono.
| Metrik | Referanslar | Not: |
|---|---|---|
| Gerçek Zamanlı Faktör (RTF) | ~ 0.1 sipariş | Birkaç toplantı tutanağı 'de bir saat ses |
| Kart başına eşzamanlı akışlar | Onlar | Saf konuşma transkripsiyonu, sürekli toplantı eşzamanlılığı |
| İlk belirteç gecikmesi | Saniye altı | Akış modu; pratikte tipik olarak 1s altında |
| Çince konuşma transkripsiyonu doğruluğu | ≥% 98 | Standart Mandarin toplantı senaryoları (spek) |
| Dialect coverage (Deliktek kapsama alanı) | 22 | Otomatik algılama (spec) |
- Evet, evet️ Yukarıdaki eşzamanlılık rakamı Sadece konuşma transkripsiyonu (tek bir ASR kartı, konuşmacı ayrımı veya dakika yapılandırması yok). Hoparlör ayrımı artı konu / eylem öğesi çıkarma eklemek kart başına kapasitesini önemli ölçüde düşürür - cihaz 10 eşzamanlı toplantılarda derecelendirilmektedir, Bu tam boru hattını ifade eder (konuşma transkripsiyonu + ayrım + yapılandırma); küme formu 50+ akışlarda derecelendirilmiştir. Her zaman bir satıcının hangi katmanı teklif ettiğini sorun - üç katı çoğaltılarak farklılık gösterir.
Gerçek Dağıtımlardan Altı Tuzak
Bu postun en değerli kısmıdır. Bunların her biri sahada vuruldu.
1. Sürekli yeniden derlenmeye neden olan dinamik şekiller --dynamic_dims olmadan, her yeni ses uzunluğu bir grafik yeniden derleme ve gecikme saniyelerine kadar yükseltildi. Süreye göre profil oluşturma, saniyenin altına geri döndürdü.
2. Uzun ses yorucu hafıza İki saatlik bir toplantı kaydını doğrudan model OOM 'a beslemek cihazı. Chunk incremental inference (Artımlı çıkarım) - segment by VAD ve tüm dosyayı yüklemek yerine segment by segment çözdüğüne ihtiyacınız var.
3. Desteklenmeyen operatörler sessizce başarısız oluyor A LayerNorm varyantı hiçbir Ascend karşılığı vardı. ATC dönüştürme sırasında hata çıkartmadı ve model çalışma zamanında tüm sıfırları çıktı. Dönüştürme sonrasında her zaman eşdeğerlik denetimi çalıştırın: ONNX Runtime (CPU) ve OM (NPU) aracılığıyla aynı sesleri çalıştırın ve çıkışları karşılaştırın.
4. Multi-threaded concurrency altında bağlam sızıntıları Önceki sürüm, isteğe başına ayrı bir ACL bağlamı oluşturdu ve yük altında bağlamları tükendi. Kontext pooling bunu düzeltti.
5. Sürücü yükseltmelerinden sonra modelleri yeniden dönüştürülmelidir Büyük bir CANN yükseltmesinden sonra, eski OM modelleri yüklemeyi başarısız hale getirebilir veya performansı kaybedebilir. - Model dönüşümünü bir kez elle dönüştürmek yerine CI 'ye koyun.
6. Hava boşluğu alanları için çevrimdışı ambalaj Fiziksel olarak izole edilmiş ortamlarda CANN bağımlılıkları, sürücüler, model ağırlıkları, fontlar ve sertifikaların hepsi önceden paketlenmelidir. Kayıp bir CJK fontunu bulmak için siteye geldik ve her transkript tofu kutuları olarak geri döndü. - Çevrimdışı paket göndermeden önce eşdeğer bir ortamda tam dağıtımı prova edin.Reprove the full deployment on an equivalent environment before sending the offline bundle.
Evli Hızlandırıcıları Ne Zaman Seçmemeli
Sana karşı dürüst olmak. Skip it if:
- Xinchuang veya lokalizasyon yetkisi yok → GPU Ekosistem çok daha olgun, kendiniz için iş yapmayın
- Ekipteki hiç kimse CANN → operasyon maliyetinin donanımın tasarruf ettiğini çok geçeceğini bilmiyor
- Eşzamanlılık tek basamaklı → düz CPU yeterlidir, hızlandırıcıyı atlayın
Yerli hızlandırıcılar doğru çağrıda bulunur: Açık bir uyumluluk görevi + sürekli eşzamanlılık baskısı + bunu desteklemek için mühendislik kapasitesi vardır.
Size tavsiyesi
- Yeni Yerelleştirilmiş Küme: VV05 / VV10+ Ascend veya Cambricon hızlandırıcı;
- Mevcut x86'yi yeniden kullanın: CPU veya Hygon DCU üzerinde motor;
- karışık ortamı: NVIDIA ve yerli hızlandırıcıları birleştirir, yükle planlanır.
Eğer bulut ile özel değerlendiriyorsanız, on-premise ASR selection guide'e bakın.
private deployment guide ve MLPS Level 3 compliance'e bakın.
SSS
Q: konuşma transkripsiyonu hangi yerli çipleri destekliyor?
A: VoiVision motoru yerel olarak Ascend (310P/910B), Cambricon (MLU370 / MLU590), Hygon DCU ve tam NVIDIA serisini destekler; aynı zamanda tüm yerel ve yerli yığını kapsayan tek başına CPU üzerinde çalışır.
Q: ASR neden yerli hızlandırıcılarla çalışmalı?
A: Hükümet, finans ve savunma programları tipik olarak aynı anda veri ikametini, Xinchuang tedarik uyumluluğunu ve hava boşluğu operasyonunu gerektirir. Birlikte, bunlar genellikle ithal GPU 'ları tamamen dışlar ve yerli NPU' ları tek uygun yol olarak bırakır.
Q: ONNX'i Ascend OM'ye dönüştüren ortak hata noktaları nelerdir?
A: Üç ana tanesi: Desteklenmeyen operatörlere (14 güvenli bir seçimdir) neden olan çok yüksek bir opset sürümü, sabit uzunluklu sesle sınırlayan eksik dynamic_axes bildirimleri ve belirsiz bir hata ile yükleme zamanında başarısız olan gerçek donanımla eşleşmeyen soc_version. Dönüştürme sonrasında her zaman CPU ONNX Çalışma Zamanı ve NPU OM arasında bir çıktı eşdeğeri kontrolü çalıştırın.
Q: Ascend üzerinde INT8 kuantitasyonu buna değer mi?
A: Bu, senaryonun ne kadar hataya tolere edeceğine bağlıdır. INT8, net bir üretim kazancını ancak belirgin bir doğruluk maliyetini sunar. Tıbbi veya yasal toplantılar gibi doğruluğa duyarlı senaryolar için FP16'u saklayın; INT8, iç stand-up ve eğitim kayıtları için daha iyi bir ticaretdir.
Q: Bir konteyner içinde Ascend çalıştırmak için hangi aygıtların monte edilmesi gerekir?
A: Dört tanesi: /dev/davinci0, /dev/davinci_manager, /dev/devmm_svm ve /dev/hisi_hdc, artı sürücü dizinleri. Bunlardan herhangi birinin eksik olması, ACL başlatma başarısızlığına neden olur ve hata iletisi size bir aygıtın eksik olduğunu söylemez.
Q: Konuşma konuşma transkripsiyonu sadece CPU üzerinde çalışabilir mi?
A: Evet, evet. Motor, CPU için çıkarım için optimize edilmiştir, bu nedenle ayrık bir hızlandırıcı olmadan yerel veya genel sunucular üzerinde çalışır - düşük eşzamanlılık veya mevcut donanımların yeniden kullanılması için ideal.
Q: Docker / K8s ile nasıl dağıtılır?
A: VoiVision, tek komutlu Docker ve Kubernetes dağıtımına sahip bir konteyner görüntüsü olarak gönderir, çıplak metal, hükümet bulutunda ve yerel ortamlarda çalışır ve standart RESTful / WebSocket API 'leri aracılığıyla entegre edilir.
Q: Yurt içi hızlandırıcılarda kesinlik düşüyor mu?
A: Model, NEU NLP (Kuzey Doğu Üniversitesi) araştırmaları üzerine inşa edilmiştir; hızlandırıcılar yalnızca işlem hacmi ve gecikmeyi etkiler. Ascend / Cambricon üzerinde kuantitasyon ve operatör adaptasyonundan sonra Çin konuşma transkripsiyonu doğruluğu aynı seviyede kalır.
