Ascend 910B でプライベート ASR を実行する: セットアップ、オペレータの適応、スループット
エアギャップのプライベート環境における Huawei Ascend NPU に中国語音声テキスト変換エンジンを着陸させるための完全なウォークスルー — バージョンマトリックス、 ONNX—OM モデル変換、コンテナデプロイメントコマンド、実際のデプロイメントでヒットする 6 つの落とし穴、およびリファレンスパフォーマンス数値。Xinchuang 環境で ASR を展開するエンジニア向け。

この記事では、プライベート環境での Huawei Ascend NPU への中国語音声テキストエンジンの着陸について説明します。環境バージョン、モデル変換、デプロイメントコマンド、落とし穴、リファレンスパフォーマンス数値などです。
数字について: 「仕様」と表示された数字は、公表された製品仕様からのものです。性能表は典型的な条件下での 基準値 を示しています。実際の値はオーディオ条件、モデルサイズ、並行戦略によって異なります。常に自分の作業負荷で測定します。
家庭用ハードウェアで動作する必要がある理由
政府、金融、防衛においては、システムは「データオンプレミス」だけでなく、「技術的に自立」でなければなりません。「つまり、基盤となるコンピューティングを輸入された GPU から Ascend 、 Cambricon 、 Hygon 国内チップに移行し、 OS を Kylin 、 UnionTech などの国内システムに移行します。
工学的には 3 つのハード制約になります。
- データレジデンス— ミーティングオーディオには内部ディスカッションが含まれ、多くの組織はオーディオがイントラネットを離れることを明示的に禁止しています。
- 新創調達— 輸入された GPU が承認された購入リストに表示されない場合があります
- エアギャップ操作— 一部のサイトは外部接続がないため、モデルウェイトは事前に環境にパッケージ化する必要があります。
コアポイント: オンプレミス導入は「データがどこにあるか」と答え、ローカライゼーションは「誰がテクノロジーを制御するか」と答えます。一緒に “彼らは単一のタスクに収束する — 国内 NPU で ASR を稼働させ、十分に高速に実行します。
サポートされるアクセラレータ
NEU NLP ( ノースイースタン大学 ) の研究に基づいて構築された VoiVision エンジンは、主流のアクセラレータをネイティブにサポートしています。
| タイプ | 代表者 | 使用法 |
|---|---|---|
| NVIDIA | T4 / L4 / A10 / A100 | 一般的、高性能 |
| Ascend | 310P / 910B | ローカライズ、国内サーバー |
| Cambricon | MLU370 / MLU590 | ローカライズ、国内サーバー |
| Hygon DCU | DCU シリーズ | 国内 x86 パス |
| CPU のみ | x86 / ARM | 既存の再利用、低並行性 |
Ascend は現在、国内アクセラレータ ( CANN + MindSpore + モデル動物園 ) 中で最も完全なエコシステムを有しています。910 B はトレーニングと高スループット推論をターゲットに、 310 P はエッジと低電力使用をターゲットにしています。持続同時ミーティング音声文字起こしの場合、共通パターンは中央推論用 910 B 、エッジノード用 310 P である。
環境設定: バージョンアラインメントが最大の罠
Ascend エコシステムの痛みは計算ではなく、 バージョンマトリックス です。ドライバ、ファームウェア、 CANN 、フレームワーク、モデルフォーマット — この 5 つのいずれかが同期されていないと、当惑する障害が発生します。
一般的に安定している組み合わせ:
| コンポーネント | バージョン | 注釈 |
|---|---|---|
| ドライバ / ファームウェア | Tightly bound to CANN | アップグレードする前に公式の互換性表を確認する |
| CANN | 8.x シリーズ | オペレータライブラリとモデル変換ツールはここにあります |
| コンテナ | Ascend Docker ランタイム | 必須 — プレーン Docker は NPU をマウントできません |
| 推論フレームワーク | ONNX ランタイム + ACL | OM モデルは MindSpore なしでうまく動作します |
| OS は | openEuler / Kylin V10 / UnionTech UOS | Xinchuang 環境で共通 |
ステップ 1 は、 NPU が常に表示されていることを確認します。
# 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
落とし穴: 一部の Kylin V10 システムでは、 npu-smi info はドライバのインストール直後に dmp デーモンエラーを報告します。原因は、システム独自の dkms バージョンとドライバのインストーラとの間の競合であることが判明しました。修正は、システム dkms を削除し、ドライバパッケージにバンドルされたバージョンを使用して再インストールすることです。このような流通レベルの適応問題はほとんど文書化されず、最も一般的なオンサイトブロッカーの一つです。
モデル変換: ONNX から OM
ASR モデルは通常、 PyTorch でトレーニングされ、 ONNX にエクスポートされ、 Ascend の OM フォーマットに変換されます。
ONNX をエクスポートする際に注意すべき 3 つのこと
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"},
},
)
これが一般的に間違っている 3 つの場所:
- オプセット版— より新しい方が良くない。オプセットの高いバージョンは、変換中にサポートされていない演算子を頻繁にヒットします。 14 はテストされた選択肢です。
- 動的軸— オーディオの長は本質的に可変であるため、
dynamic_axesを宣言する必要があります。 - 定数折りたみ—
do_constant_folding=Trueはグラフを大幅に縮小し、変換の成功率を向上させます。
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
パラメータの実際の意味:
--soc_version—物理的なハードウェアと正確に一致する必要があります。910 B で 910 A を指定すると、ロード時に曖昧なエラーで失敗します。--dynamic_dims— 動的形状プロファイル。プロファイルが多すぎるとコンパイル時間が長くなり、コンパイルが少すぎると頻繁な再コンパイルとレイテンシージッタが発生します。--precision_mode—allow_fp16は通常、 ASR の精度コストは無視できます。
量子化すべきか?
| 精度 | スループット | 精度 |
|---|---|---|
| FP 16 | ベースライン | ベースライン |
| INT8 | クリアゲイン | 顕著なコスト |
判決:精度が重要な FP 16 を維持します ( 医療、法務会議 )。 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:910b \
./asr_server --model /models/asr_om --port 8000
- ベアメタル、政府クラウド、ローカライズされた環境で動作します。
- 標準の RESTful / WebSocket API を介して OA およびミーティングシステムと統合します。
- 並行性による弾性スケール。
これらの --device エントリに注意してください: いずれかが欠落すると ACL 初期化に失敗します。これは、初心者にとって最も一般的な障害です。
^ a b c d e f g h i f g標準の REST ( ファイル音声文字起こし ) と WebSocket ( リアルタイムストリーミング ) を使用するか、お客様の OA やミーティングシステムとの統合は痛みを伴います。
すでにサーバーをお持ちの場合は、 software-only engine をデプロイして、ハードウェアを購入せずに国内アクセラレータにプライベート音声文字起こしを取得します。
参考性能
テスト条件: Ascend 910B 、 FP16 、中国の会議オーディオ、 16 kHz モノ。
| メトリック | 参考文献 | 注釈 |
|---|---|---|
| リアルタイムファクター ( RTF ) | ~ 0.1 順序 | 数議事録で 1 時間の音声 |
| カードあたりの同時ストリーム数 | 十 | 純粋な音声文字起こし 、持続的な会議同時性 |
| ファーストトークンレイテンシー | サブ秒 | ストリーミングモード; 実際には通常 1 秒未満 |
| 中国語音声文字起こし精度 | ≥ 98% | 標準的な中国語ミーティングシナリオ ( 仕様 ) |
| 方言カバー | 22 | 自動検出 ( 仕様 ) |
↓ →️上記の並行性図は 音声文字起こしのみ ( 単一の ASR カード、 話者分離や分構造なし ) です。 スピーカー分離とトピック / アクションアイテムの抽出を追加すると、カードあたりの容量が大幅に減少します。アプライアンスは 10 の同時ミーティングで評価されています。 フルパイプライン ( 音声文字起こし + 分離 + 構造化 ) を指します。クラスタ形式は 50 以上のストリームで定格されています。 ベンダーが引用しているレイヤーを常に尋ねてください。
実際の展開からの 6 つの落とし穴
これはポストの最も貴重な部分です。これらはすべて現場でヒットしました。
1.一定の再コンパイルを引き起こす動的形状 --dynamic_dims がなければ、新しいオーディオ長さごとにグラフの再コンパイルがトリガーされ、レイテンシが秒に急増しました。持続時間によるプロファイリングは、 1 秒未満に戻しました。
2.長いオーディオ消耗メモリ 2 時間のミーティング録音をモデルに直接供給することで、デバイスを OOM します。ファイル全体をロードするのではなく、 チャンク増分推論—segment を VAD 単位でデコードし、セグメント単位でデコードする必要があります。
3.サポートされていないオペレータがサイレントに失敗 LayerNorm の変種は Ascend の対応を持たない。ATC は変換中にエラーを発生させず、モデルは実行時にすべてのゼロを出力した。変換後に等価性チェックを実行する: ONNX ランタイムと OM を通じて同じオーディオを実行し、出力を比較します。
4.マルチスレッド並行時のコンテキストリーク 初期のバージョンでは、リクエストごとに別個の ACL コンテキストを作成し、ロード中のコンテキストを exhaust しました。コンテキストプーリングが修正しました。
5.ドライバのアップグレード後にモデルを再変換する必要があります 大規模な CANN アップグレード後、古い OM モデルはロードに失敗したり、パフォーマンスを低下させたりします。手動で 1 回変換するのではなく、モデル変換を CI に置きます。
6.エアギャップサイトのためのオフラインパッケージング 物理的に孤立した環境では、 CANN 依存関係、ドライバ、モデルウェイト、フォント、証明書をすべて事前にパッケージ化する必要があります。一度現場に到着して CJK フォントが見つかりませんでしたが、すべての成績書は豆腐箱として戻ってきました。オフラインバンドルを出荷する前に、同等の環境で完全なデプロイメントのリハーサルを行います。
国内アクセラレータを選択しない場合
あなたとまっすぐであること。Skip it if:
- Xinchuang やローカライゼーション委任はありません → GPU エコシステムははるかに成熟し、自分のために仕事をしないでください
- CANN → 運用コストはハードウェアが節約できるものをはるかに上回る
- 並列は 1 桁 → プレーン CPU で十分、アクセラレータをスキップ
国内アクセラレータは正しいコールです: 明確なコンプライアンスマンデート + 持続的な並行圧力 + それをバックアップするエンジニアリング能力があります。
サイジングアドバイス
- 新しいローカライズクラスタ: VV05 / VV10+ Ascend または Cambricon の加速器;
- 既存の x 86 の再利用: CPU または Hygon DCU のエンジン;
- 混合環境: NVIDIA と国内アクセラレータを統一し、負荷によるスケジュール。
プライベートとクラウドを比較している場合は、 on-premise ASR selection guide を参照してください。
FAQ
Q: 音声文字起こしがサポートする国産チップは?
A: VoiVision エンジンは、 Ascend ( 310 P / 910 B ) 、 Cambricon ( MLU370 / MLU590 ) 、 Hygon DCU 、および NVIDIA ラインナップ全体をネイティブでサポートしています。
Q: なぜ ASR は国産アクセラレータで走るのでしょうか?
A: 政府、金融、防衛プログラムでは、通常、データレジデンス、 Xinchuang 調達コンプライアンス、およびエアギャップオペレーションを同時に必要とします。これらはしばしば輸入された GPU を完全に排除し、国内の NPU を唯一の実行可能なパスとして残します。
Q: ONNX から Ascend OM に変換する一般的な障害点は?
A: 主な 3 つ:opset バージョンが高すぎてサポートされていない演算子 ( 14 は安全な選択です ) 、固定長のオーディオに制限する dynamic_axes 宣言が欠落し、実際のハードウェアと一致しない soc_version が読み込み時に曖昧なエラーで失敗します。変換後、常に CPU ONNX ランタイムと NPU OM の間の出力等価性チェックを実行します。
Q: Ascend 上の INT8 量子化は価値があるか?
A: シナリオが許容する誤差の程度に依存します。INT8 は明確なスループット増加をもたらしますが、顕著な精度コストをもたらします。医療や法務会議などの精度に敏感なシナリオでは、 FP 16 を維持してください。 INT8 は社内スタンドアップやトレーニング録音に適しています。
Q: コンテナで Ascend を実行するには、どのデバイスをマウントする必要がありますか?
A: / dev / davinci0 、 / dev / davinci_manager 、 / dev / devmm_svm 、 / dev /hisi_hdc とドライバディレクトリの 4 つです。これらのいずれかが欠落すると ACL 初期化に失敗し、エラーメッセージはデバイスが欠落していることを通知しません。
Q: 音声音声文字起こしは CPU のみで実行できますか?
A: はい、エンジンは CPU 用に推論最適化されているため、離散アクセラレータなしでローカライズまたは汎用サーバーで動作します。
Q: Docker / K8s でどのように展開しますか?
A: VoiVision は、ワンコマンドの Docker と Kubernetes デプロイメントを備えたコンテナイメージとして提供され、ベアメタル、政府クラウド、およびローカライズされた環境で動作し、標準の RESTful / WebSocket API を介して統合されます。
Q: 国内アクセラレータの精度は低下しますか?
A: このモデルは NEU NLP ( ノースイースタン大学 ) の研究に基づいて構築されています。アクセラレータはスループットとレイテンシーに影響のみします。Ascend / Cambricon による量子化とオペレータ適応の後、中国の音声文字起こし精度は同じレベルにとどまります。
