VoiVision AI
tech· VoiVision Engineering Team

Ascend 310P üzerinde toplantı transkripsiyonu: sürüm matrisi, model dönüştürme ve yedi saha dersi

Bir kenar çıkarım kartı konuşma transkripsiyonu toplantısını idare edebilir mi? Bu makale, Ascend 310P-CANN ortam hizalamında bir Çinli ASR motorunun dağıtılmasını, ONNX'i OM'ye dönüştürürken önemli olan ATC parametrelerini, bir konteynerin monte etmesi gereken dört cihazı, dinamik boyutları nasıl ayarlayacağınızı ve sadece yerinde öğrendiğiniz yedi dersleri belgelendiriyor. En tehlikeli olanı, herhangi bir hata olmaksızın tamamen sıfır çıkış üreten sessiz bir operatör arızasıdır.


Ascend 310P kenar çıkarım kartı konuşma konuşma transkripsiyonu dağıtım

Bu makale, Ascend 310P çıkarım kartı üzerinde bir Çince konuşma konuşma transkripsiyonu motoru dağıtmasını belgelendiriyor. 310P, 910B 'den farklı bir konumlandırmaya sahip bir kenar çıkarım kartıdır ve senaryoları oda içi yerel işlemeye daha yakın.

Veri tabanı: "resmi spesifikasyon" işaretlenmiş rakamlar yayınlanan ürün ölçümlerinden gelir; performans tablosu tipik bir ortam için Referans değerleri verir. Gerçek rakamlar ses koşullarına, model boyutuna ve eşzamanlılık stratejisine göre değişir - her zaman kendi ölçümlerinize erteleyin.

310P 'nin neyin iyi olduğu ve neyin iyi olmadığı

Ascend 310P Hakkımızda makaleleri eksikliği yok, ancak çoğu "CANN kuruluyor ve demo çalışıyor". Asıl tuzak şu Bir kez çalıştırmak ve güvenilir bir şekilde hizmet etmek tamamen farklı iki şeydir.

Sonucun ön tarafı:

Dimension310P davranışlarıNotlar
KonumlandırmaEdge inference kartıEğitim kartı değil; üzerinde ince ayarlama beklemeyin
910B ile ayrılmışKenar düğümü910B merkezi çıkarım, 310P yerel işlemeyi idare eder
Kart başına Pure konuşma transkripsiyonu eşzamanlılığıOnlerce akıntıASR tek model tabanı (referans değeri)
Tam boru hattı eşzamanlılığıönemli ölçüde düşüyorkonuşmacı ayrımı ve yapılandırma eklendiğinde
Çince konuşma transkripsiyonu doğruluğu≥% 98Standart Mandarin toplantı senaryosu (resmi spesifikasyon)
Dialect coverage (Deliktek kapsama alanı)22 DiyalıOtomatik algılama (resmi spesifikasyon)

Bir seçim tuzağı işaretlemeye değer: Birçok satıcı, temelini belirtmeden eşzamanlılığı teklif eder. "Kart başına XX akışlar" saf ASR anlamına gelebilir ya da tam boru hattı anlamına gelebilir.İkisi birkaç kez farklılık gösterebilir. - Her zaman sayının hangi katmanı kapsadığını sor.

Tipik Mimari 'imiz Merkezde 910B, kenarda 310P' dir: ses toplantı odasında yerel olarak transkriptilir ve sadece yapılandırılmış metin merkeze geri döner. Bu, bant genişliğini kontrol altında tutar ve "veriler toplantı odasından ayrılmaz" gereksinimini karşılar.

Çevre hazırlığı: versiyon matrisi gerçek engel

Ascend Ekosistem 'deki ağrı noktası asla hesaplanmaz - Versiyon hizalama' dir. Sürücü, firmware, CANN, container runtime, inference framework, model formatı: Altı tanesinden herhangi biri yanlış hizalandısa, kafa karıştırıcı bir başarısızlık meydana gelir. ve hata mesajı sıklıkla neyin yanlış gittiğini söylemez.

Kontrol ettiğimiz ve kararlı bulduğumuz bir kombinasyon:

BileşenVersionNotlar
Sürücü / FirmwareCANN 'a sıkı sıkıya bağlıYükseltmeden önce resmi uyumluluk tablosunu kontrol edin
CANN8.x serisiOperatör kütüphanesi ve ATC dönüştürme aracı burada canlı
Container RuntimeAscend Docker Çalışma ZamanıZorunlu; normal Docker NPU 'yu monte edemez
Inference Framework (İngilizce)ONNX Çalışma Zamanı + ACLOM modelleri çalıştırır
OSOpenEuler / Kylin V10 / UnionTech UOSXinchuang çevresinde yaygın

İlk adım her zaman NPU 'nun görünür olduğunu doğrulayabilmek:

# 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

Bir saha dersi: Bazı Kylin V10 ortamlarında, npu-smi info sürücü yüklendikten sonra bir dmp daemon istisna rapor etti. Nedeni, sistemin paketi olan dkms ile sürücü yükleme dosyası arasındaki bir çatışma olduğu ortaya çıktı. Düzeltme sistem dkms kaldırmak ve sürücü paketi ile birlikte paketlenmiş sürümü kullanarak yeniden yüklemekti.

Bu Genellikle resmi belgelerde bulunmuyor. gibi dağıtım özelliği sorunları ve sitede en yaygın bloklayıcıdırlar.

Model dönüştürme: ONNX to OM

ASR modelleri tipik olarak PyTorch'da eğitilmiş, ONNX'e dışa aktarılır ve daha sonra ATC ile Ascend 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,          # 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"},
    },
)
  1. Daha yüksek bir opset versiyonu daha iyi değildir. Daha yeni opsetleri desteklenmeyen operatörlere vurma olasılığı daha yüksektir; 14 iyi bir uyumluluk seçeneğidir.
  2. Dinamik eksenler bildirilmelidir. Aksi takdirde, pratikte kullanılamaz olan sadece sabit uzunluklu ses çalıştırabilirsiniz.
  3. Sürekli katlamayı etkinleştirin. do_constant_folding=True, grafik boyutunu önemli ölçüde azaltır ve dönüşüm başarısını artırır.

ATC parametreleri, teker teker

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

Sorunlara neden olabilecek üç parametre:

  • --soc_version: Gerçek donanımla tam olarak eşleşmelidir. 310P Ascend310P olarak yazılmalıdır; Ascend310 ya da Ascend910B her ikisi de yükleme aşamasında çok belirsiz bir hata ile başarısız olacaktır.
  • --dynamic_dims: Dinamik katmanlar. Ses için, katman Süresi saniyeler içinde.Çok fazla katman derleme süresini patlatır; çok az sayıda tetikleyici sık yeniden derleme ve jittery gecikme. Yukarıdaki (1s / 2s / 3s) seti ölçtüğümüz denge noktasıdır.
  • --precision_mode: allow_fp16, ASR üzerinde önemsiz bir doğruluk etkisi ve net bir işlem hacmi kazanmasına sahiptir.

Kuantitme mi yapmalıydınız?

Hassaslıkİşletme ThroughputAccuracy (Dürlük)
FP16BaselineBaseline
INT8Açık kazançPerceptible kaybı

Çözüm: doğruluğa son derece hassas senaryolar için - tıbbi, yasal - FP16 'da kalın. toleransın yüksek olduğu iç toplantılar ve eğitim kayıtları için, INT8 daha iyi ticaret.

INT8 ile kıyaslama rakamlarını körü körüne takip etmeyin. Toplantı senaryolarında, doğruluk kaybı "her isim yanlış, her terim yanlış" olarak görünür ve yeniden işleme maliyeti kaydettiğiniz hesaplamayı çok daha fazla aşar.

Deployment: Containerization tek makul seçimdir

Çıplak metal üzerine ortam kurmak, Xinchuang ortamlarında pratik olarak sürdürülemez. Konteyner olarak 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:310p \
  ./asr_server --model /models/asr_om --port 8000

Bu --device bayraklarından herhangi birinin eksikliği, ACL başlatma başarısızlığına neden olur., ve hata size bir cihazın atlandığını söylemez. Bu yeni gelenler için en büyük engel.

Bir ders daha var: Özel bir protokol icat etme. Standart RESTful (dosya konuşma transkripsiyonu) artı WebSocket (gerçek zamanlı akış) kullanın veya bir müşterinin OA ve toplantı sistemleri ile entegre olmak çok acı verici hale gelir.

Zaten sunucuları olan müşteriler, pure-software speech engine'yi doğrudan dağıtabilir ve donanım satın almadan yerel hızlandırıcılarda özel konuşma transkripsiyonu'yi kazanabilirler.

Sahiden 7 Ders

Bu makalenin en değerli kısmıdır. Her öğe zor yoldan öğrenildi, belgelenden kopyalanmadı.

1. Dinamik şekiller sık sık yeniden derlemeye neden olur Başta --dynamic_dims'yi ayarlamadık, bu yüzden her farklı boyutlu ses klibi bir grafik derlemesini tetikledi ve saniyelere kadar gecikme süresi yükseldi. Katmanlar yapılandırıldıktan sonra, gecikme saniyen altındaki aralığında yerleşti.

2. Uzun ses hafızayı tüketiyor İki saatlik bir toplantı kaydını tek bir geçişte modeline beslemek, anında bir OOM'a neden oldu. Segmented incremental inference (Artımlı çıkarım) - cut by VAD kullanmanız ve tüm şeyi yüklemek yerine parçaya dekoder segmentini segment olarak beslemeniz gerekir. Daha sonra ses tamponunda bir 60 saniyelik zorunlu kapak ekledik, bu da OOM riskini tamamen ortadan kaldırdı.

3. Sessiz operatör başarısızlığı Belirli bir LayerNorm varyantının Ascend üzerinde karşılık gelen operatörü yoktu. ATC dönüştürme zamanında hata bildirmedi ve çalışma zamanı tüm sıfırları döndürdü. Bu başarısızlığın en tehlikeli sınıfıdır, çünkü başarıya benziyor. Bir eşdeğerlik kontrolü yapmanız gerekiyor: CPU üzerinde ONNX Çalışma Zamanı ve NPU üzerinde OM üzerinden aynı ses besleyin, sonra çıkışları karşılaştırın. Bu tek geri dönüş - atlama.

4. Multi-threaded concurrency altında bağlam sızdırma Önceki sürümleri, yüksek eşzamanlılık altında bağlamları tüketen isteğe ayrı bir ACL bağlamı oluşturdu. Bağlam birleştirme düzeltti.

5. Sürücü yükseltmesi, modeli yeniden dönüştürmek anlamına gelir Büyük bir CANN yükseltmesinden sonra, eski bir OM modeli yüklenemez veya performansta gerileme yapabilir. Model dönüşümünü CI 'de koy el ile dönüştürmek ve yapılmış çağırmak yerine.

6. Hava boşluklu ortamlar için çevrimdışı ambalaj Fiziksel olarak izole edilmiş bir ortamda, CANN bağımlılıkları, sürücüler, model ağırlıkları, Çince fontları ve sertifikaları ' in tümü önceden paketlenmelidir. Bir kez çarptık: sitede bir Kayıp Çince font vardı ve her konuşma transkripsiyonu sonucu kutular olarak çıktı. - Çevrimdışı paket, eşdeğer bir ortamda tam dağıtım akışı aracılığıyla prova edilmelidir.

7. Yanlış yönlendirme hata mesajları teşhisini raydan çıkarır Bazı Ascend hataları kök nedeni değil, sadece bir kod verir. Bir keresinde ilerleme olmadan yük arızasıyla üç gün geçirdik ve yanlış bir soc_version olduğu ortaya çıktı. Ders: belirsiz bir hataya çarptığınızda, üstten versiyon matrisini yeniden doğrulayın - günlükleri satır satır okumaktan çok daha hızlıdır.

Bütün boru hattı: Konuşmadan toplantı tutanağı'e

Son bir nokta: konuşma transkripsiyonu konuşması sadece ilk adımdır.

Gerçek bir senaryonun ihtiyacı olan şey "Toplantı bittiğinde toplantı tutanağı". Bu, konuşmacı ayrımı, semantik yapılandırma (konular, kararlar, eylem öğeleri) ve ASR aşamasından sonra toplantı tutanağı üretimi gerektirir. Bu üçünü Rekabet önemli ölçüde azaltır üzerinde katmanlamak - tam da bu yüzden bir eşzamanlılık numarasının hangi katmanı kapsadığını sormanız gerektiğini vurgulamaya devam ediyoruz.

Yaklaşımımız, tek bir sunucuda tüm boru hattını çalıştırır, ses ve metin asla iç ağdan ayrılmaz. Hükümet, finans ve savunma senaryoları için, bu zor bir gereksinim.

Evli hızlandırıcıları seçmemeniz için ne zaman

Bunu itmek yerine düz bir şekilde yapalım.

Durumunuz aşağıdakilerden birini karşılarsa, Bunun yerine GPU kullanın:

  • Zorunlu Xinchuang veya yerli teknoloji gereksinimleri yok → GPU Ekosistem çok daha olgun; kendiniz için sorun yaratmayın
  • Takımdaki hiç kimse CANN 'ı bilmiyor → İşletme maliyeti donanımdan tasarruf edilen parayı çok geçecek

Yerli hızlandırıcıların değeri Uyumluluk, maliyet verimliliği değil. Uyum zor bir kısıtlama değilse, aritmetik işe yaramıyor.

Ek: tam uyumluluk listesi

BileşenDesteklenen Range
Ascend310P / 910B
CambriconMLU370 / MLU590
HygonDCU
NVIDIAT4 / L4 / A10 / A100 ve tam yelpazesi
Sadece CPUDesteklenir (düşük eşzamanlılık / mevcut donanım yeniden kullanımı)

Docker ve Kubernetes aracılığıyla dağıtım, çıplak metal, hükümet bulutu ve Xinchuang ortamlarında çalışmakta, standart RESTful / WebSocket arabirimleri üzerinden OA ve toplantı sistemleri ile entegre edilmektedir.

Devamı Oku: Private ASR on the Ascend 910B | How to choose a private-deployment ASR

SSS

Q: Ascend 310P ve 910B arasında nasıl seçim yapabilirim?

A: Bu iş yükü şekline bağlıdır. 310P, şube ofisleri ve oda içi işleme için uygun olan düşük güç ve yerel işlem odaklı bir kenar çıkarım kartıdır; 910B daha fazla hesaplamaya sahiptir ve merkezi çıkarım ve yüksek eşzamanlı toplama için uygundur. konuşma transkripsiyonu toplantısı için tipik Mimari, merkezi düğüm olarak 910B ve kenar düğümleri olarak 310P kartları kullanır, bu nedenle ses yerel olarak transkribilir ve sadece yapılandırılmış metin merkezine döndürülür.

Q: Bir 310P kaç eşzamanlı toplantı konuşma transkripsiyonu akışı ile başa çıkabilir?

A: Tanım önemlidir. Saf ASR konuşma transkripsiyonu için eşzamanlı akımlar nispeten yüksektir; konuşmacı ayrımı, terminoloji düzeltmesi ve toplantı tutanağı üretimi katmanlandıktan sonra, sayı önemli ölçüde düşer. Bir satıcı saf konuşma transkripsiyonu veya tam boru hattı kapsamında olup olmadığını söylemeden bir rakam öne sürerse, ikisi birkaç kez farklı olabilir - her zaman sor.

Q: Sürüm hizalaması neden Ascend dağıtımının en zor kısmıdır?

A: Ascend Ekosistem 'de sürücü, firmware, CANN, container runtime, inference framework ve model formatı birbirine bağlıdır. Herhangi bir uyuşmazlık yükleme başarısızlığına neden olur ve hata iletisi genellikle belirsizdir ve sürüm sorunu işaret etmez. Güvenilir yaklaşım, önce resmi uyumluluk tablosuna karşı kombinasyonu kilitlemek, ardından farklı gruplardan sürücü paketlerini karıştırmadan sırayla yüklemektir.

Q: ONNX'i OM'ye dönüştürürken soc_version yanlış olursa ne olur?

A: Model yükleme aşamasında başarısız olur ve hata model uyumsuzluğunu göstermez. 310P için Ascend310P yazmanız gerekir; Ascend310 veya Ascend910B yazmak her ikisi de yüklenemez. Bu hatanın belirsizliği, sitede yanlış yönlendirmenin en kolay yollarından biridir.

Q: Model dönüşümünden sonra neden eşdeğerlik kontrolü yapmalıyım?

A: Çünkü sessiz başarısızlıklar vardır. Bir operatör varyantının Ascend üzerinde uygulaması olmadığı zaman, ATC dönüştürme hatayı bildirmez, ancak çalışma zamanı tüm sıfır çıktı üretir. Bu tür bir başarısızlık günlüklerde olağandışı bir şey göstermiyor. Tek geri dönüş, aynı sesyi CPU'deki ONNX Runtime ve NPU'daki OM aracılığıyla çalıştırmak ve çıkış katmanını katman karşılaştırmaktır.

Q: Neden uzun ses hafızasını tüketiyor?

A: Tüm bir toplantı kaydını tek bir geçişte modeline beslemek yaygın bir hatadır.İki saatlik bir kaydı yüklemek doğrudan bir hafıza dışı arıza neden olur. Doğru yaklaşım, ses etkinliği algılayarak segment ve tüm kaydı yüklemek yerine, tampon üzerinde bir kapak ile segment tarafından artımlı çıkarım çalıştırmaktır.

Q: Hangi cihazlar Ascend için konteyner monte edilmelidir?

A: Dört aygıt /dev/davinci0, /dev/davinci_manager, /dev/devmm_svm ve /dev/hisi_hdc'yi sürücü dizinine eklemeniz gerekir. Bunlardan herhangi birinin eksik olması, ACL başlatma başarısızlığını tetikler ve hata size bir cihazın eksik olduğunu söylemez - bu yeni gelenler için en yaygın engelleyici.

Q: Hava boşluğunda çevrimdışı bir ortamda nasıl dağıtırım?

A: Fiziksel olarak izole edilmiş bir ortamın harici ağı yoktur, bu nedenle CANN bağımlılıkları, sürücüler, model ağırlıkları, Çince fontları ve sertifikaların hepsi önceden paketlenmelidir. Bir keresinde site üzerinde eksik bir Çince fontuna rastladık ve her konuşma transkripsiyonu sonucu kutular olarak çıktı.Çevrimdışı paket, eşdeğer bir ortamda tam dağıtım akışı aracılığıyla prova edilmelidir.

#Evli Hızlandırıcılar#Ascend#Edge inferensi#Konuşma konuşma transkripsiyonu#Xinchuang#Container dağıtım

Kişiselleştirilmiş bir demo

Toplantı senaryosunuzu ve uyum gereksinimlerinizi bize anlatın - özel bir plan alın.

Hemen rezervasyon yapın
Canlı sohbet