Ascend 910 B 에서 전용 ASR 실행: 설정, 운영자 적응 및 처리량
에어 게이프 프라이빗 환경에서 화웨이 Ascend NPU 에 중국어 음성 - 텍스트 엔진을 착륙시키는 전체 워크샵 - 버전 매트릭스, ONNX - to - OM 모델 변환, 컨테이너 배포 명령, 실제 배포에 대한 6 가지 함정 및 참조 성능 수치. Xinchuang 환경에서 ASR 를 배포하는 엔지니어를 위해.

이 게시물에서는 개인 환경에서 Huawei Ascend NPU 에 중국어 음성 텍스트 엔진을 착륙시키는 방법에 대해 설명합니다 - 환경 버전, 모델 변환, 배포 명령, 함정 및 참조 성능 수치.
숫자에 관하여: "spec " 표시된 숫자는 출판된 제품 사양 에서 가져온 것입니다.성능 테이블은 일반적인 조건에서 참조 크기 를 제공합니다. 실제 값은 오디오 조건, 모델 크기 및 동시작업 전략에 따라 다릅니다.항상 자신의 작업에 따라 측정하십시오.
국내 하드웨어에서 실행해야 하는 이유
정부, 금융 및 방위에서 시스템은 "데이터 온 - 프레미스" 일뿐만 아니라 "기술적으로 자립적" 이어야합니다.즉, 기본 컴퓨팅을 수입 GPU 에서 Ascend, Cambricon 및 Hygon 국내 칩으로, 운영 체제를 Kylin, UnionTech 및 기타 국내 시스템으로 전환하는 것을 의미합니다.
엔지니어링 용어로 이것은 세 가지 어려운 제약 조건이됩니다:
- 데이터 레지던스 - 회의 오디오는 내부 토론을 포함하며, 많은 조직에서는 오디오가 인트라넷에서 나가는 것을 명시적으로 금지합니다.
- 신창 조달 - 가져온 GPU 가 승인된 구매 목록에 전혀 표시되지 않을 수 있음
- 공기 간격 작업 - 일부 사이트는 외부 연결이 없으므로 모델 가중치를 환경으로 사전 패키징해야 합니다.
핵심 요점: 온프레미스 배포 는 "데이터가 어디에 있는지 " 에 답하고, 로컬라이제이션은 " 누가 기술을 제어하는지 " 에 답합니다.함께 그들은 하나의 작업에 수렴 - 국내 NPU 에서 ASR 를 실행하고 충분히 빠르게 실행하십시오.
지원되는 가속기
NEU NLP (Northeastern University) 의 연구를 기반으로 구축된 VoiVision 엔진은 주류 가속기를 기본적으로 지원합니다.
| 유형 | 대표자 (representatives) | 사용법 |
|---|---|---|
| NVIDIA | T4 / L4 / A10 / A100 | 일반, 고성능 |
| Ascend | 310 P / 910 B | 로컬라이제이션, 국내 서버 |
| Cambricon | MLU370 / MLU590 | 로컬라이제이션, 국내 서버 |
| 하이곤 DCU | DCU 시리즈 | 국내 x 86 경로 |
| CPU 만 | x 86 / ARM | 기존 재사용, 낮은 동시작업 |
Ascend 는 현재 국내 가속기 (CANN + MindSpore + 모델 동물원) 중에서 가장 완벽한 에코시스템 를 보유하고 있습니다. 910 B 는 교육 및 고성능 추론을 대상으로 하고, 310 P 는 에지 및 저전력 사용을 대상으로 합니다.지속적인 동시 회의 음성 전사 의 경우 공통 패턴은 중앙 추론에 대한 910 B 및 에지 노드에 대한 310 P 입니다.
환경 설정: 버전 정렬은 가장 큰 함정입니다.
'드라이버, 펌웨어, CANN, 프레임워크 및 모델 형식 - 5 가지 중 어느 하나라도 동기화되지 않으면 혼란스러운 장애가 발생합니다.
우리가 일반적으로 볼 수있는 안정적인 조합:
| 구성요소 | 버전 | 참고 |
|---|---|---|
| 드라이버 / 펌웨어 | CANN 에 단단히 묶여있다 | 업그레이드하기 전에 공식 호환성 표를 확인합니다. |
| CANN | 8. x 시리즈 | 연산자 라이브러리 및 모델 변환 도구가 여기에서 제공됩니다. |
| 컨테이너 | Ascend Docker 런타임 | 필수 - 일반 Docker 는 NPU 를 마운트할 수 없습니다. |
| 추론 프레임워크 | ONNX 런타임 + ACL | OM 모델은 MindSpore 없이 잘 작동합니다. |
| 운영 체제 | openEuler / Kylin V 10 / UnionTech UOS | 신창환경에서 일반적 |
첫 번째 단계는 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 V 10 시스템에서 npu-smi info 는 드라이버 설치 후 즉시 dmp 데몬 오류를 보고합니다.그 원인은 시스템 자체의 dkms 버전과 드라이버 설치 프로그램 간의 충돌로 나타났습니다.수정 사항은 시스템 dkms 를 제거하고 드라이버 패키지와 함께 번들로 제공된 버전을 사용하여 다시 설치하는 것입니다. 이와 같은 배포 수준 적응 문제는 거의 문서화되지 않으며 가장 일반적인 현장 차단기 중 하나입니다.
모델 변환: ONNX 에서 OM
ASR 모델은 일반적으로 PyTorch 에서 훈련되고 ONNX 로 내보낸 다음 Ascend 의 OM 형식으로 변환됩니다.
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"},
},
)
이것이 일반적으로 잘못되는 세 가지 장소:
- 오프셋 버전 - 새로운 것이 더 나은 것은 아닙니다.높은 오프셋 버전은 변환 중에 지원되지 않는 연산자를 더 자주 때립니다. 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 에 비해 거의 정밀도 비용이 들지 않지만 처리량을 분명히 향상시킵니다.
양자화해야 하는가?
| 정밀도 (precision) | 처리량 | 정확성 Accuracy |
|---|---|---|
| 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 초기화 실패가 발생합니다., 그리고 오류는 장치가 누락되었다는 것을 알려주지 않습니다.이것은 신입자들에게 가장 일반적인 장애물입니다.
또한 - 개인 프로토콜을 발명하지 마십시오..표준 REST (파일 음성 전사) 및 WebSocket (실시간 스트리밍) 를 사용하거나 고객의 OA 및 회의 시스템과 통합하는 것은 고통스럽습니다.
이미 서버가 있는 경우 하드웨어를 구입하지 않고도 국내 가속기에 software-only engine 를 배포하여 전용 음성 전사 를 얻을 수 있습니다.
참조 성능
테스트 조건: Ascend 910 B, FP 16, 중국어 회의 오디오, 16 kHz 모노.
| 메트릭 | 참조 (Reference) | 참고 |
|---|---|---|
| 실시간 비율 (RTF) | ~ 0. 1 순서 | 몇 회의록 에서 1 시간의 오디오 |
| 카드당 동시 스트림 | 10 개 | Pure 음성 전사, 지속적인 회의 동시성 |
| 첫 번째 토큰 지연 시간 | sub-second | 스트리밍 모드; 일반적으로 1 s 미만 |
| 중국어 음성 전사 정확도 | ≥ 98% | 표준 중국어 회의 시나리오 (사양) |
| 방언 범위 | 22 | 자동 탐지 (사양) |
ᆞ️ 위의 동시성 수치는 음성 전사 만 (화자 분리 또는 분기 구조화 없음, 단일 ASR 카드) 입니다. 스피커 분리 및 주제 / 작업 항목 추출을 추가하면 카드당 용량이 크게 감소합니다. 이 기기는 10 개의 동시 회의에서 평가됩니다. 전체 파이프라인 (음성 전사 + 분리 + 구조화) 을 참조하며, 클러스터 형태는 50 개 이상의 스트림에서 정격됩니다. 공급업체가 어떤 레이어를 견적하고 있는지 항상 물어보십시오 - 세 가지 레이어는 여러 배로 다릅니다.
실제 배포에서 발생하는 6 가지 함정
이것은 포스트의 가장 가치있는 부분입니다.이 모든 것이 현장에서 발생했습니다.
1.동적 쉐이프로 인해 지속적인 재컴파일 --dynamic_dims 가 없으면 새로운 오디오 길이마다 그래프 재컴파일이 트리거되고 지연 시간이 초까지 증가합니다.기간별 프로파일링은 1 초 미만으로 되돌려 놓았다.
2.오랜 오디오 메모리 사용 2 시간 동안의 회의 녹음을 모델 OOM 에 직접 공급하면 장치가 작동합니다.전체 파일을 로드하는 대신 분할 증분 추론 - Segment by VAD 를 디코딩하고 Segment by Segment 를 디코딩해야합니다.
3.지원되지 않는 연산자가 자동으로 실패합니다. LayerNorm 변종에는 Ascend 대응이 없습니다. ATC 는 변환 중에 오류가 발생하지 않으며, 모델은 런타임에서 모든 0 을 출력합니다. 변환 후에 항상 동등성 검사를 실행합니다.: ONNX 런타임 (CPU) 과 OM (NPU) 을 통해 동일한 오디오를 실행하고 출력을 비교합니다.
4.다중 스레드 동시작업 시 컨텍스트 누출 이전 버전에서는 요청당 별도의 ACL 컨텍스트를 만들고 로드된 컨텍스트를 소모했습니다. An earlier version created a separate ACL context per request and exhausted contexts under load.컨텍스트 풀링이 해결되었습니다.
5.드라이버 업그레이드 후 모델을 다시 변환해야 합니다. 주요 CANN 업그레이드 후 이전 OM 모델이 로드하지 않거나 성능이 떨어질 수 있습니다. 모델 변환을 한 번 수동으로 변환하는 대신 CI 에 넣습니다.
6.공기 간격이 있는 사이트의 오프라인 포장 물리적으로 격리된 환경에서는 CANN 종속성, 드라이버, 모델 가중치, 글꼴 및 인증서가 모두 사전에 패키지화되어야 합니다.한번은 CJK 글꼴이 없어진 것을 찾아 현장에 도착했는데, 모든 성적표는 두부 상자로 돌아왔습니다. 오프라인 번들을 배포하기 전에 동등한 환경에서 전체 배포를 리허설합니다.
국내 가속기를 선택하지 말아야 할 때
너랑 똑바로 지내.다음 경우 건너뛰기:
- 신창이나 현지화 명령이 없습니다 → GPU 에코시스템 는 훨씬 더 성숙해, 스스로 일하지 마라.
- 팀의 아무도 CANN → 운영 비용이 하드웨어가 절약하는 것을 훨씬 초과 할 것이라는 것을 알지 못합니다.
- 동시작은 한 자릿수 → 일반 CPU 로 충분합니다. 가속기를 건너뛰십시오.
국내 가속기는 명확한 규정 준수 요구 사항 + 지속적인 동시작업 압력 + 이를 지원하는 엔지니어링 능력 에 대한 올바른 호출입니다.
크기 지정 조언
- 새 로컬라이제드 클러스터: VV05 / VV10+ Ascend 또는 Cambricon 가속기;
- 기존 x 86 재사용: CPU 또는 Hygon DCU 엔진;
- 혼합 환경: NVIDIA 와 국내 가속기를 통합하여 부하별로 스케줄링합니다.
클라우드에 대한 사설을 고려한다면 on-premise ASR selection guide 를 참조하십시오.
private deployment guide 와 MLPS Level 3 compliance 를 참조하십시오.
FAQ
Q: 음성 전사 는 어떤 국내 칩을 지원합니까?
A: VoiVision 엔진은 Ascend (310 P / 910 B), Cambricon (MLU370 / MLU590), Hygon DCU 및 전체 NVIDIA 라인업을 기본으로 지원하며, CPU 에서만 실행되며, 전체 지역화 및 국내 스택을 포함합니다.
Q: 왜 ASR 는 국내 가속기를 사용해야 하는가?
A: 정부, 금융 및 방위 프로그램은 일반적으로 데이터 주거, 신창 조달 규정 준수 및 공기 격차 운영을 동시에 요구합니다.이를 결합하면 일반적으로 수입 GPU 를 완전히 배제하여 국내 NPU 를 유일하게 실행 가능한 경로로 남겨 두는 경우가 많습니다.
Q: ONNX 를 Ascend OM 으로 변환하는 일반적인 장애점은 무엇입니까?
A: 세 가지 주요한 것들: 지원되지 않는 연산자를 유발하는 오프셋 버전이 너무 높습니다 (14 은 안전한 선택입니다), 고정 길이 오디오로 제한하는 dynamic _ axes 선언이 누락되고 실제 하드웨어와 일치하지 않는 soc _ version 이 로드 시간에서 모호한 오류로 실패합니다.변환 후 항상 CPU ONNX 런타임과 NPU OM 간에 출력 등가성 검사를 실행하십시오.
Q: Ascend 에 대한 INT8 양자화는 가치가 있습니까?
A: 이 시나리오가 얼마나 많은 오류를 허용하는지 여부에 따라 달라집니다. INT8 는 명확한 처리량 증가를 가져오지만 상당한 정확성 비용을 가져옵니다.의료 또는 법률 회의와 같은 정확도에 민감한 시나리오를 위해 FP 16 을 유지하십시오; INT8 는 내부 스탠드 업 및 교육 녹음을위한 더 나은 거래입니다.
Q: 컨테이너에서 Ascend 를 실행하려면 어떤 장치가 마운트되어야 합니까?
A: 그 중 4 개는 / dev / davinci 0, / dev / davinci _ manager, / dev / devmm _ svm 및 / dev /hisi _ hdc, 그리고 드라이버 디렉토리입니다.이러한 항목 중 하나를 누락하면 ACL 초기화 실패가 발생하며 오류 메시지는 장치가 누락되었음을 알려주지 않습니다.
Q: 음성 전사 는 CPU 에서만 실행할 수 있습니까?
A: 네.이 엔진은 CPU 에 대해 추론 최적화되어 있으므로 이산 가속기가 없는 로컬라이제이션 또는 일반 서버에서 실행되며 동시성이 낮거나 기존 하드웨어를 재사용하는 데 이상적입니다.
Q: Docker / K8s 를 사용하여 배포하는 방법은 무엇입니까?
A: VoiVision 는 단일 명령 Docker 및 Kubernetes 배포를 통해 컨테이너 이미지로 제공되며, 베어 메탈, 정부 클라우드 및 로컬라이제이션 환경에서 실행되며 표준 RESTful / WebSocket API 를 통해 통합됩니다.
Q: 국내 가속기에서는 정확도가 떨어지나요?
A: 이 모델은 NEU NLP (Northeastern University) 의 연구를 기반으로 구축되었으며, 가속기는 처리량과 지연 시간에만 영향을 미칩니다. Ascend / Cambricon 에 대한 정량화 및 연산자 적응 후, 중국 음성 전사 정확도는 같은 수준으로 유지됩니다.
