การใช้งาน ASR ส่วนตัวบน Ascend 910B: การตั้งค่าการปรับตัวของผู้ประกอบการและการส่งผ่าน
ขั้นตอนการเชื่อมโยงไปถึงเครื่องยนต์คําพูดเป็นข้อความของจีนบน NPUs Huawei Ascend ในสภาพแวดล้อมส่วนตัวที่มีช่องว่างทางอากาศ - เมทริกซ์เวอร์ชันการแปลงรูปแบบ ONNX-to-OM คําสั่งการปรับใช้คอนเทนเนอร์ข้อผิดพลาดหกประการในการปรับใช้จริงและตัวเลขประสิทธิภาพการอ้างอิงสําหรับวิศวกรที่ปรับใช้ ASR ในสภาพแวดล้อม Xinchuang

โพสต์นี้เดินผ่านการเชื่อมโยงไปถึงเครื่องยนต์คําพูดเป็นข้อความของจีนบน NPUs Huawei Ascend ในสภาพแวดล้อมส่วนตัว - รุ่นสภาพแวดล้อมการแปลงรูปแบบคําสั่งการปรับใช้ข้อผิดพลาดและตัวเลขประสิทธิภาพการอ้างอิง
ในตัวเลข: ตัวเลขที่ทําเครื่องหมาย "สเปค" มาจากผลิตภัณฑ์ที่เผยแพร่ข้อมูลจำเพาะตารางประสิทธิภาพจะให้ ขนาดอ้างอิง ภายใต้เงื่อนไขทั่วไปค่าที่แท้จริงแตกต่างกันไปตามเงื่อนไขเสียงขนาดโมเดลและกลยุทธ์การทํางานร่วมกันวัดปริมาณงานของคุณเองเสมอ
ทําไมต้องทํางานบนฮาร์ดแวร์ในประเทศ
ในภาครัฐการเงินและการป้องกันระบบจะต้องไม่เพียงแต่ "ข้อมูลในสถานที่" แต่ยัง "พึ่งพาตนเองทางเทคโนโลยี"นั่นหมายถึงการเปลี่ยนการคํานวณพื้นฐานจาก GPU ที่นําเข้าเป็นชิปในประเทศ Ascend, Cambricon, และ Hygon และ OS ไปยัง Kylin, UnionTech และระบบในประเทศอื่นๆ
ในแง่ของวิศวกรรมนี้จะกลายเป็นสามข้อจํากัดที่ยาก:
- ที่อยู่อาศัยของข้อมูล - เสียงการประชุมประกอบด้วยการอภิปรายภายในและหลายองค์กรห้ามไม่ให้เสียงออกจากอินทราเน็ตอย่างชัดเจน
- การจัดซื้อจัดจ้าง Xinchuang - GPU ที่นําเข้าอาจไม่ปรากฏในรายการซื้อที่ได้รับการอนุมัติเลย
- การดําเนินงานแบบอากาศ - บางเว็บไซต์ไม่มีการเชื่อมต่อภายนอกดังนั้นน้ําหนักแบบจําลองจะต้องบรรจุลงในสภาพแวดล้อมด้านหน้า
ประเด็นหลัก: การติดตั้งแบบ on-premise ตอบ "ข้อมูลอยู่ที่ไหน"; ตอบการแปลภาษาท้องถิ่น "ผู้ที่ควบคุมเทคโนโลยีร่วมกัน " พวกเขาบรรจบกันในงานเดียว - ทําให้ ASR ทํางานบน NPUs ในประเทศและทํางานได้เร็วพอ
ตัวเร่งที่ได้รับการสนับสนุน
เครื่องยนต์ VoiVision สร้างขึ้นจากการวิจัยของ NEU NLP (มหาวิทยาลัยภาคตะวันออกเฉียงเหนือ) สนับสนุนเครื่องเร่งกระแสหลัก:
| ชนิด | ตัวแทน | ใช้ |
|---|---|---|
| NVIDIA | T4 / L4 / A10 / A100 | ทั่วไปประสิทธิภาพสูง |
| Ascend | 310P / 910B | เซิร์ฟเวอร์ท้องถิ่นในประเทศ |
| Cambricon | MLU370 / MLU590 | เซิร์ฟเวอร์ท้องถิ่นในประเทศ |
| Hygon DCU | ซีรี่ส์ DCU | เส้นทาง x86 ในประเทศ |
| CPU เท่านั้น | x86 / ARM | ใช้งานใหม่ที่มีอยู่พร้อมกันต่ํา |
ปัจจุบัน Ascend มีระบบนิเวศที่สมบูรณ์ที่สุดในบรรดาเร่งในประเทศ (CANN + MindSpore + สวนสัตว์แบบจําลอง) 910B เป้าหมายการฝึกอบรมและการอนุมานผ่านการผลิตสูงในขณะที่ 310P เป้าหมายขอบและการใช้พลังงานต่ําสําหรับการประชุมพร้อมกันอย่างยั่งยืนการถอดเสียงเป็นข้อความรูปแบบทั่วไปคือ 910B สําหรับการอนุมานกลางและ 310P สําหรับโหนดขอบ
การตั้งค่าสภาพแวดล้อม: การจัดตําแหน่งเวอร์ชันเป็นกับดักที่ใหญ่ที่สุด
ความเจ็บปวดใน Ascend ระบบนิเวศไม่ได้คํานวณมันเป็น รุ่นเมทริกซ์ไดรเวอร์เฟิร์มแวร์ CANN กรอบและรูปแบบแบบจําลอง - หนึ่งในห้าที่ไม่ได้ซิงค์จะทําให้เกิดความล้มเหลวที่น่ายุ่งยาก
การรวมกันที่เรามักจะเห็นเสถียรภาพ:
| ส่วนประกอบ | เวอร์ชัน | หมายเหตุ |
|---|---|---|
| ไดร์เวอร์ / เฟิร์มแวร์ | แน่นผูกพันกับ CANN | ตรวจสอบตารางความเข้ากันได้อย่างเป็นทางการก่อนอัพเกรด |
| CANN | ซีรี่ส์ 8.x | ไลบรารีผู้ประกอบการและเครื่องมือแปลงแบบจําลองอยู่ที่นี่ |
| ตู้คอนเทนเนอร์ | Ascend Docker รันไทม์ | ต้องใช้ - Docker ธรรมดาไม่สามารถติดตั้ง NPU ได้ |
| กรอบการอนุมาน | ONNX รันไทม์ + ACL | รุ่น OM ทํางานได้ดีโดยไม่ต้อง MindSpore |
| ระบบปฏิบัติการ | openEuler / Kylin V10 / UnionTech UOS | ทั่วไปในสภาพแวดล้อม Xinchuang |
ขั้นตอนที่หนึ่งคือการยืนยันว่า 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 แล้วแปลงเป็นรูปแบบ OM ของ Ascend
สามสิ่งที่ต้องระวังเมื่อส่งออก 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"},
},
)
สามสถานที่ที่นี้มักจะผิดพลาด:
- รุ่น Opset - ใหม่กว่าไม่ดีกว่ารุ่น opset สูงตีผู้ประกอบการที่ไม่ได้รับการสนับสนุนบ่อยขึ้นในระหว่างการแปลง; 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- ต้องตรงกับฮาร์ดแวร์ทางกายภาพอย่างแน่นอน.ระบุ 910A บน 910B ล้มเหลวในเวลาโหลดด้วยข้อผิดพลาดที่คลุมเครือ--dynamic_dims- โปรไฟล์รูปร่างแบบไดนามิกสําหรับเสียงโปรไฟล์ตามระยะเวลาโปรไฟล์มากเกินไปจะเพิ่มเวลาในการคอมไพล์น้อยเกินไปจะทําให้เกิดการคอมไพล์ใหม่บ่อยครั้งและความกระวนกระวายใจที่แฝงอยู่--precision_mode-allow_fp16มักจะเสียค่าใช้จ่ายความแม่นยําเล็กน้อยใน ASR ในขณะที่ปรับปรุงการส่งผ่านอย่างชัดเจน
คุณควร Quantize?
| ความแม่นยํา | อัตราการผลิต | ความถูกต้อง |
|---|---|---|
| FP16 | พื้นฐาน | พื้นฐาน |
| INT8 | กําไรที่ชัดเจน | ค่าใช้จ่ายที่สําคัญ |
คําตัดสิน: ให้ FP16 ที่ความถูกต้องเป็นสิ่งสําคัญ (การประชุมทางการแพทย์กฎหมาย); 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
- ทํางานบนโลหะเปลือยระบบคลาวด์ของรัฐบาลและสภาพแวดล้อมแบบแปล
- บูรณาการกับระบบ OA และการประชุมผ่าน API มาตรฐาน RESTful / WebSocket;
- ปรับขนาดได้อย่างยืดหยุ่นโดยการทํางานร่วมกัน
โปรดทราบว่ารายการ --device เหล่านั้น: ขาดหายไปใดๆของพวกเขาสร้างความล้มเหลวในการเริ่มต้น ACL และข้อผิดพลาดจะไม่บอกคุณว่าอุปกรณ์หายไปนี่คือบล็อกสะดุดที่พบบ่อยที่สุดสําหรับผู้มาใหม่
นอกจากนี้ - อย่าคิดค้นโปรโตคอลส่วนตัว.ใช้มาตรฐาน REST (ไฟล์การถอดเสียงเป็นข้อความ) และ WebSocket (สตรีมมิ่งแบบเรียลไทม์) หรือบูรณาการกับระบบ OA และการประชุมของลูกค้ากลายเป็นเรื่องที่เจ็บปวด
หากคุณมีเซิร์ฟเวอร์อยู่แล้วให้ปรับใช้ software-only engine เพื่อรับการถอดเสียงเป็นข้อความส่วนตัวบนเครื่องเร่งความเร็วในประเทศโดยไม่ต้องซื้อฮาร์ดแวร์
ประสิทธิภาพการอ้างอิง
เงื่อนไขการทดสอบ: Ascend 910B, FP16, เสียงการประชุมจีน, โมโน 16 kHz
| เมตริก | การอ้างอิง | หมายเหตุ |
|---|---|---|
| ปัจจัยแบบเรียลไทม์ (RTF) | ~0.1 คําสั่งซื้อ | หนึ่งชั่วโมงของเสียงในไม่กี่บันทึกการประชุม |
| สตรีมพร้อมกันต่อการ์ด | สิบ | Pure การถอดเสียงเป็นข้อความการประชุมพร้อมกันอย่างยั่งยืน |
| ความล่าช้าของโทเค็นแรก | ย่อยวินาที | โหมดสตรีมมิ่ง; โดยปกติภายใต้ 1 วินาทีในทางปฏิบัติ |
| ความแม่นยําของการถอดเสียงเป็นข้อความจีน | ≥98% | สถานการณ์การประชุมภาษาจีนกลางมาตรฐาน (spec) |
| ความคุ้มครองภาษาถิ่น | 22 | ตรวจจับอัตโนมัติ (ข้อกําหนด) |
เพื่อนเพื่อน️ตัวเลขความพร้อมกันด้านบนคือ การถอดเสียงเป็นข้อความเท่านั้น (บัตร ASR เดียวไม่มีการแยกผู้พูดหรือโครงสร้างนาที) การเพิ่มการแยกลําโพงรวมถึงการสกัดหัวข้อ / รายการดําเนินการจะลดความจุต่อการ์ดอย่างมีนัยสําคัญ - เครื่องใช้ได้รับการจัดอันดับในการประชุมพร้อมกัน 10 ครั้ง ซึ่งหมายถึงท่อเต็มรูปแบบ (การถอดเสียงเป็นข้อความ + การแยก + โครงสร้าง); รูปแบบคลัสเตอร์ได้รับการจัดอันดับที่ 50+ กระแส ถามเสมอว่าผู้ขายกําลังอ้างถึงชั้นใด - ทั้งสามแตกต่างกันโดยคูณ
หกข้อผิดพลาดจากการปรับใช้จริง
นี่คือส่วนที่มีคุณค่าที่สุดของโพสต์ทุกคนเหล่านี้ถูกตีในเว็บไซต์
1.รูปร่างแบบไดนามิกที่ทําให้เกิดการรวบรวมใหม่อย่างต่อเนื่อง หากไม่มี --dynamic_dims ความยาวเสียงใหม่ทุกครั้งจะเรียกการรวบรวมกราฟใหม่และความล่าช้าที่เพิ่มขึ้นเป็นวินาทีการสร้างโปรไฟล์ตามระยะเวลานํามันกลับมาภายในวินาที
2.หน่วยความจําที่เหนื่อยล้าเสียงยาว การให้อาหารการบันทึกการประชุมสองชั่วโมงตรงเข้าไปในรุ่น OOMs อุปกรณ์คุณต้องการ การอนุมานที่เพิ่มขึ้นเป็นชิ้นส่วน - segment โดย VAD และถอดรหัสส่วนโดยส่วนแทนที่จะโหลดไฟล์ทั้งหมด
3.ผู้ประกอบการที่ไม่ได้รับการสนับสนุนล้มเหลวอย่างเงียบๆ ตัวแปร LayerNorm ไม่มีคู่ Ascend. ATC ไม่มีข้อผิดพลาดในระหว่างการแปลงและรุ่นส่งออกศูนย์ทั้งหมดที่รันไทม์ทําการตรวจสอบความเท่าเทียมกันหลังจากการแปลง: เรียกใช้เสียงเดียวกันผ่าน ONNX Runtime (CPU) และ OM (NPU) และเปรียบเทียบเอาต์พุต
4.การรั่วไหลของบริบทภายใต้การทํางานพร้อมกันหลายหัวข้อ เวอร์ชันก่อนหน้านี้สร้างบริบท ACL แยกต่างหากต่อคําขอและบริบทที่หมดภายใต้โหลดContext pooling แก้ไขแล้ว
5.รุ่นจะต้องมีการแปลงใหม่หลังจากอัพเกรดไดรเวอร์ หลังจากการอัพเกรด CANN ที่สําคัญ OM รุ่นเก่าอาจล้มเหลวในการโหลดหรือสูญเสียประสิทธิภาพใส่การแปลงแบบจําลองใน CI มากกว่าการแปลงด้วยมือเพียงครั้งเดียว
6.บรรจุภัณฑ์แบบออฟไลน์สําหรับไซต์ที่มีช่องว่างทางอากาศ ในสภาพแวดล้อมที่แยกทางกายภาพการพึ่งพา CANN ไดรเวอร์น้ําหนักโมเดลแบบอักษรและใบรับรองทั้งหมดจะต้องถูกบรรจุไว้ล่วงหน้าครั้งหนึ่งเรามาถึงเว็บไซต์เพื่อค้นหาตัวอักษร CJK ที่หายไปและใบรับรองผลการเรียนทุกใบกลับมาเป็นกล่องเต้าหู้ซ้อมการปรับใช้เต็มรูปแบบในสภาพแวดล้อมที่เทียบเท่าก่อนที่จะจัดส่งชุดออฟไลน์
เมื่อไม่ควรเลือกเครื่องเร่งความเร็วในประเทศ
ตรงไปตรงมากับคุณข้ามมันถ้า:
- ไม่มี Xinchuang หรือคําสั่งการแปลภาษาท้องถิ่น → GPU ระบบนิเวศเป็นผู้ใหญ่มากขึ้นอย่าทํางานให้กับตัวเอง
- ไม่มีใครในทีมงานรู้ว่า CANN → ค่าใช้จ่ายในการดําเนินงานจะเกินกว่าสิ่งที่ฮาร์ดแวร์ประหยัด
- คู่กันเป็นตัวเลขเดียว → CPU ธรรมดาก็เพียงพอที่จะข้ามเร่ง
เครื่องเร่งความเร็วในประเทศเป็นสายที่ถูกต้องเมื่อ: มีอาณัติการปฏิบัติตามที่ชัดเจน + ความกดดันแบบพร้อมกันอย่างยั่งยืน + ความสามารถทางวิศวกรรมในการสํารองข้อมูล
คําแนะนําเกี่ยวกับขนาด
- ใหม่คลัสเตอร์ท้องถิ่น: ตัวเร่ง VV05 / VV10+ Ascend หรือ Cambricon;
- ใช้ x86 ที่มีอยู่ใหม่: เครื่องยนต์บน CPU หรือ Hygon DCU;
- สภาพแวดล้อมผสม: รวม NVIDIA และตัวเร่งในประเทศกําหนดการตามโหลด
หากคุณกําลังชั่งน้ําหนักส่วนตัวกับคลาวด์ให้ดู on-premise ASR selection guide
คำถามที่พบบ่อย
Q: การถอดเสียงเป็นข้อความสนับสนุนชิปในประเทศใดบ้าง?
A: เครื่องยนต์ VoiVision สนับสนุน Ascend (310P / 910B), Cambricon (MLU370 / MLU590), Hygon DCU และไลน์อัพ NVIDIA เต็มรูปแบบนอกจากนี้ยังทํางานบน CPU เพียงอย่างเดียวครอบคลุมสแต็คทั้งแบบท้องถิ่นและในประเทศ
Q: ทําไม ASR ต้องทํางานบนเครื่องเร่งในประเทศเลย?
A: โปรแกรมของรัฐบาลการเงินและการป้องกันประเทศมักจะต้องมีที่อยู่อาศัยของข้อมูลการปฏิบัติตามการจัดซื้อจัดจ้างของ Xinchuang และการดําเนินงานที่ช่องว่างทางอากาศในเวลาเดียวกันรวมกันเหล่านี้มักจะตัด GPU ที่นําเข้าทั้งหมดออกจาก NPU ในประเทศเป็นเส้นทางที่ทํางานได้เพียงอย่างเดียว
Q: อะไรคือจุดความล้มเหลวทั่วไปในการแปลง ONNX เป็น Ascend OM?
A: สามคนหลัก: รุ่น opset ที่สูงเกินไปทําให้ผู้ประกอบการที่ไม่ได้รับการสนับสนุน (14 เป็นทางเลือกที่ปลอดภัย) การประกาศ dynamic axes ขาดหายไปซึ่งจํากัดคุณให้เสียงความยาวคงที่และ soc version ที่ไม่ตรงกับฮาร์ดแวร์จริงซึ่งล้มเหลวในเวลาโหลดด้วยข้อผิดพลาดที่คลุมเครือทําการตรวจสอบความเท่าเทียมกันของเอาต์พุตระหว่าง CPU ONNX Runtime และ NPU OM หลังจากแปลง
Q: การกําหนดปริมาณ INT8 ใน Ascend คุ้มค่าหรือไม่?
A: มันขึ้นอยู่กับจํานวนข้อผิดพลาดที่สถานการณ์ทนได้INT8 นํามาซึ่งการเพิ่มปริมาณที่ชัดเจนแต่ค่าใช้จ่ายที่แม่นยําอย่างเห็นได้ชัดเก็บ FP16 สําหรับสถานการณ์ที่มีความแม่นยําที่ละเอียดอ่อนเช่นการประชุมทางการแพทย์หรือกฎหมาย; INT8 เป็นการค้าที่ดีกว่าสําหรับการยืนขึ้นภายในและการบันทึกการฝึกอบรม
Q: ต้องติดตั้งอุปกรณ์ใดเพื่อเรียกใช้ Ascend ในคอนเทนเนอร์?
A: สี่ของพวกเขา: /dev/davinci0, /dev/davinci manager, /dev/devmm svm และ /dev/hisi hdc, บวกไดเรกทอรีไดรเวอร์.ขาดหายไปใดๆของพวกเขาสร้างความล้มเหลวในการเริ่มต้น ACL และข้อความผิดพลาดจะไม่บอกคุณว่าอุปกรณ์หายไป
Q: คําพูดการถอดเสียงเป็นข้อความสามารถทํางานได้บน CPU เท่านั้นหรือไม่?
A: ใช่.เครื่องยนต์นี้ได้รับการปรับปรุงให้เหมาะสําหรับการอนุมานสําหรับ CPU ดังนั้นจึงทํางานบนเซิร์ฟเวอร์แบบท้องถิ่นหรือทั่วไปโดยไม่มีตัวเร่งแบบไม่ต่อเนื่องเหมาะสําหรับการทํางานร่วมกันต่ําหรือการใช้ฮาร์ดแวร์ที่มีอยู่ใหม่
Q: มันถูกนําไปใช้กับ Docker / K8s อย่างไร?
A: VoiVision จัดส่งเป็นภาพคอนเทนเนอร์ที่มีการปรับใช้ Docker และ Kubernetes แบบคําสั่งเดียวทํางานบนโลหะเปลือยระบบคลาวด์ของรัฐบาลและสภาพแวดล้อมแบบท้องถิ่นและรวมผ่าน API มาตรฐาน RESTful / WebSocket
Q: ความแม่นยําลดลงในเครื่องเร่งในประเทศหรือไม่?
A: ไม่แบบจําลองถูกสร้างขึ้นจากการวิจัยของ NEU NLP (มหาวิทยาลัยภาคตะวันออกเฉียงเหนือ) ตัวเร่งมีผลต่อการส่งผ่านและความล่าช้าเท่านั้นหลังจากการปรับปริมาณและการปรับตัวของผู้ประกอบการใน Ascend / Cambricon ความแม่นยําของการถอดเสียงเป็นข้อความของจีนยังคงอยู่ในระดับเดียวกัน
