VoiVision AI
tech· VoiVision AI Engineering

การใช้งาน ASR ส่วนตัวบน Ascend 910B: การตั้งค่าการปรับตัวของผู้ประกอบการและการส่งผ่าน

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


เครื่องเร่งความเร็ว AI ในประเทศ On-Prem การถอดเสียงเป็นข้อความ

โพสต์นี้เดินผ่านการเชื่อมโยงไปถึงเครื่องยนต์คําพูดเป็นข้อความของจีนบน NPUs Huawei Ascend ในสภาพแวดล้อมส่วนตัว - รุ่นสภาพแวดล้อมการแปลงรูปแบบคําสั่งการปรับใช้ข้อผิดพลาดและตัวเลขประสิทธิภาพการอ้างอิง

ในตัวเลข: ตัวเลขที่ทําเครื่องหมาย "สเปค" มาจากผลิตภัณฑ์ที่เผยแพร่ข้อมูลจำเพาะตารางประสิทธิภาพจะให้ ขนาดอ้างอิง ภายใต้เงื่อนไขทั่วไปค่าที่แท้จริงแตกต่างกันไปตามเงื่อนไขเสียงขนาดโมเดลและกลยุทธ์การทํางานร่วมกันวัดปริมาณงานของคุณเองเสมอ

ทําไมต้องทํางานบนฮาร์ดแวร์ในประเทศ

ในภาครัฐการเงินและการป้องกันระบบจะต้องไม่เพียงแต่ "ข้อมูลในสถานที่" แต่ยัง "พึ่งพาตนเองทางเทคโนโลยี"นั่นหมายถึงการเปลี่ยนการคํานวณพื้นฐานจาก GPU ที่นําเข้าเป็นชิปในประเทศ Ascend, Cambricon, และ Hygon และ OS ไปยัง Kylin, UnionTech และระบบในประเทศอื่นๆ

ในแง่ของวิศวกรรมนี้จะกลายเป็นสามข้อจํากัดที่ยาก:

  • ที่อยู่อาศัยของข้อมูล - เสียงการประชุมประกอบด้วยการอภิปรายภายในและหลายองค์กรห้ามไม่ให้เสียงออกจากอินทราเน็ตอย่างชัดเจน
  • การจัดซื้อจัดจ้าง Xinchuang - GPU ที่นําเข้าอาจไม่ปรากฏในรายการซื้อที่ได้รับการอนุมัติเลย
  • การดําเนินงานแบบอากาศ - บางเว็บไซต์ไม่มีการเชื่อมต่อภายนอกดังนั้นน้ําหนักแบบจําลองจะต้องบรรจุลงในสภาพแวดล้อมด้านหน้า

ประเด็นหลัก: การติดตั้งแบบ on-premise ตอบ "ข้อมูลอยู่ที่ไหน"; ตอบการแปลภาษาท้องถิ่น "ผู้ที่ควบคุมเทคโนโลยีร่วมกัน " พวกเขาบรรจบกันในงานเดียว - ทําให้ ASR ทํางานบน NPUs ในประเทศและทํางานได้เร็วพอ

ตัวเร่งที่ได้รับการสนับสนุน

เครื่องยนต์ VoiVision สร้างขึ้นจากการวิจัยของ NEU NLP (มหาวิทยาลัยภาคตะวันออกเฉียงเหนือ) สนับสนุนเครื่องเร่งกระแสหลัก:

ชนิดตัวแทนใช้
NVIDIAT4 / L4 / A10 / A100ทั่วไปประสิทธิภาพสูง
Ascend310P / 910Bเซิร์ฟเวอร์ท้องถิ่นในประเทศ
CambriconMLU370 / 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"},
    },
)

สามสถานที่ที่นี้มักจะผิดพลาด:

  1. รุ่น Opset - ใหม่กว่าไม่ดีกว่ารุ่น opset สูงตีผู้ประกอบการที่ไม่ได้รับการสนับสนุนบ่อยขึ้นในระหว่างการแปลง; 14 เป็นตัวเลือกที่ได้รับการทดสอบอย่างดี
  2. แกนแบบไดนามิก - ความยาวเสียงมีความแปรผันโดยเนื้อแท้ดังนั้นต้องประกาศ dynamic_axes มิฉะนั้นคุณจะถูกจํากัดไว้ที่ป้อนข้อมูลความยาวคงที่และผลลัพธ์ไม่สามารถใช้ในการผลิตได้
  3. การพับคงที่ - 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

ดู private deployment guide และ MLPS Level 3 compliance

คำถามที่พบบ่อย

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 ความแม่นยําของการถอดเสียงเป็นข้อความของจีนยังคงอยู่ในระดับเดียวกัน

#เร่งในประเทศ#Ascend#Cambricon#คําพูดการถอดเสียงเป็นข้อความ#Xinchuang#การแปลงแบบจําลอง

จองการสาธิตส่วนบุคคล

บอกเราสถานการณ์การประชุมและความต้องการในการปฏิบัติตามกฎระเบียบของคุณ - รับแผนที่เหมาะสม

จองเลย
แชทสด