作者:安謀科技 (Arm China) 高級(jí)軟件產(chǎn)品經(jīng)理 楊喜樂(lè)
自動(dòng)語(yǔ)音識(shí)別 (Automatic Speech Recognition) 技術(shù)已經(jīng)深入到現(xiàn)代生活的方方面面,廣泛應(yīng)用于從語(yǔ)音助手、轉(zhuǎn)錄服務(wù),到呼叫中心分析和語(yǔ)音轉(zhuǎn)文本翻譯等方面,為各行各業(yè)提供了創(chuàng)新解決方案,顯著提升了用戶體驗(yàn)。
隨著機(jī)器學(xué)習(xí) (ML) 和深度學(xué)習(xí)的最新進(jìn)展,自動(dòng)語(yǔ)音識(shí)別技術(shù)的精密性已經(jīng)達(dá)到一個(gè)新的高度。現(xiàn)在,自動(dòng)語(yǔ)音識(shí)別軟件可以非常準(zhǔn)確地理解各種口音、方言和說(shuō)話風(fēng)格。FunASR 是阿里巴巴達(dá)摩院開(kāi)發(fā)的一款先進(jìn)的開(kāi)源自動(dòng)語(yǔ)音識(shí)別工具包。它為開(kāi)發(fā)和部署自動(dòng)語(yǔ)音識(shí)別系統(tǒng)提供了一套全面的工具和模型。
FunASR 兼容 CPU 和 GPU 計(jì)算。雖然 GPU 為訓(xùn)練深度學(xué)習(xí)模型提供了出色的性能,但 CPU 在邊緣側(cè)和數(shù)據(jù)中心服務(wù)器中更為普遍,并且更適合模型推理。因此,F(xiàn)unASR 可以在 CPU 上進(jìn)行高效的自動(dòng)語(yǔ)音識(shí)別推理,并能在 GPU 加速不可用的情況下(如成本限制、功耗限制或缺乏可用性等),依然能夠順利部署。
Arm Neoverse N2 是一款專為云和邊緣計(jì)算設(shè)計(jì)的高性能 CPU 處理器。它可以支持包括人工智能 (AI) 和 ML 在內(nèi)的多種云工作負(fù)載,并增加了 SVE2、Bfloat16 (BF16) 數(shù)據(jù)格式和 MMLA 等 AI 功能。
SVE2 使開(kāi)發(fā)者能夠操作更大的數(shù)據(jù)向量,提升并行處理能力和執(zhí)行效率,這對(duì)于 AI 模型訓(xùn)練和推理階段涉及的大量數(shù)學(xué)計(jì)算尤為重要。
BF16 是一種較新的浮點(diǎn)格式,專為 AI 和 ML 應(yīng)用而設(shè)計(jì)。它提供與 32 位浮點(diǎn)數(shù)相同的動(dòng)態(tài)范圍,但僅占用 16 位存儲(chǔ)空間,有效縮小了模型尺寸,并顯著提升了計(jì)算效率。
MMLA 是 Armv8.6 中的一個(gè)架構(gòu)特性。它為 GEMM 運(yùn)算提供了顯著加速。GEMM 是 ML 中的一種基本算法,對(duì)兩個(gè)輸入矩陣進(jìn)行復(fù)雜的乘法運(yùn)算,得到一個(gè)輸出。
Arm 此前推出了 Arm Kleidi 技術(shù),這是一套專為開(kāi)發(fā)者設(shè)計(jì)的賦能技術(shù),旨在增強(qiáng) Arm Neoverse、Arm Cortex 等 Arm 平臺(tái)上的 AI 性能。Kleidi 技術(shù)廣泛涉及從框架到高度優(yōu)化的算子庫(kù),再到充滿活力的獨(dú)立軟件供應(yīng)商 (ISV) 生態(tài)系統(tǒng),全面覆蓋了 AI 開(kāi)發(fā)的關(guān)鍵環(huán)節(jié)。
在本文中,我們將分享在基于 Neoverse N2 的阿里巴巴倚天 710 平臺(tái)上部署 FunASR 推理過(guò)程及基準(zhǔn)測(cè)試方法。同時(shí),我們將通過(guò)啟用 Arm Kleidi 技術(shù)進(jìn)行對(duì)比分析,重點(diǎn)介紹與其他基于 CPU 和 GPU 的平臺(tái)相比,在倚天 710 CPU 上運(yùn)行 FunASR 推理在性價(jià)比方面的主要優(yōu)勢(shì)。
基準(zhǔn)測(cè)試設(shè)置
軟件版本:
Ubuntu 22.04(64 位)
PyTorch v2.3.0
pip install funasr==0.8.8
pip install modelscope==1.10.0
模型:speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch
請(qǐng)確保系統(tǒng)上安裝了 PyTorch 和相關(guān)的 python 庫(kù)[1],如果在 Arm 平臺(tái)上運(yùn)行,可使用 Arm 在 docker 倉(cāng)庫(kù)中提供的 PyTorch docker 鏡像[2],以便進(jìn)行快速評(píng)估。
1對(duì)環(huán)境進(jìn)行初始化并導(dǎo)入所需的依賴項(xiàng)
export OMP_NUM_THREADS=16
export DNNL_VERBOSE=1
import torch
import torch.autograd.profiler as profiler
import os
import random
import numpy as np
from funasr.tasks.asr import ASRTaskParaformer as ASRTask
from funasr.export.models import get_model
from modelscope.hub.snapshot_download import snapshot_download
<< 滑動(dòng)查看 >>
2下載并配置模型
Paraformer 是阿里巴巴達(dá)摩院在 FunASR 開(kāi)源項(xiàng)目中開(kāi)發(fā)的一款高效自動(dòng)語(yǔ)音識(shí)別模型,旨在提高端到端語(yǔ)音識(shí)別系統(tǒng)的魯棒性和效率。該模型基于 Transformer 架構(gòu),并融入了多項(xiàng)創(chuàng)新,以提升其在語(yǔ)音識(shí)別中的性能。為了進(jìn)行基準(zhǔn)測(cè)試,我們將使用魔搭社區(qū)中的 FunASR paraformer 模型[3]。
model_dir = snapshot_download('damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch', cache_dir='./',revision=None)
#set the radom seed 0
random.seed(0)
np.random.seed(0)
torch.random.manual_seed(0)
model, asr_train_args = ASRTask.build_model_from_file(
'damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/config.yaml','damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/model.pb' ,'damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/am.mvn' , 'cpu')
model = get_model(model, dict(feats_dim=560, onnx=False, model_name="model"))
<< 滑動(dòng)查看 >>
3使用性能分析器運(yùn)行以獲取模型推理結(jié)果
推理運(yùn)行十次迭代以獲得平均結(jié)果。
batch = 64
seq_len = 93
dim = 560
speech = torch.randn((batch, seq_len, dim))
speech_lengths = torch.tensor([seq_len for _ in range(batch)], dtype=torch.int32)
with torch.no_grad():
with profiler.profile(with_stack=True, profile_memory=False, record_shapes=True) as prof:
for _ in range(10):
model(speech, speech_lengths)
print(prof.key_averages(group_by_input_shape=True).table(sort_by='self_cpu_time_total', row_limit=200))
<< 滑動(dòng)查看 >>
使用 BF16 Fast Math 內(nèi)核加速推理
作為 Arm Kleidi 技術(shù)的一部分,Arm Compute Library (ACL) 通過(guò)利用 BF16 MMLA 指令,提供了優(yōu)化的 BF16 通用矩陣乘法 (GEMM) 內(nèi)核。這些指令在 Neoverse N2 CPU 中得到支持,并且從 PyTorch 2.0 版本開(kāi)始便通過(guò) oneDNN 后端集成到了 PyTorch 中。ACL 中的 Fast Math GEMM 內(nèi)核可以高度優(yōu)化 CPU 上的推理性能。
要啟用 Fast Math GEMM 內(nèi)核,請(qǐng)?jiān)谶\(yùn)行推理之前設(shè)置以下環(huán)境變量:
$ export DNNL_DEFAULT_FPMATH_MODE=BF16
我們發(fā)現(xiàn),在基于 Neoverse N2 的倚天 710 平臺(tái)上啟用 BF16 Fast Math 內(nèi)核后,與默認(rèn)的 FP32 內(nèi)核相比,性能提高了約 2.3 倍。
性能比較
我們還比較了 FunASR paraformer 模型在倚天 710 和阿里云其他同等級(jí)別云實(shí)例上的性能*。
Arm Neoverse N2(倚天 710):
ecs.c8y.4xlarge (16 vCPU + 32GB)
第 4 代英特爾至強(qiáng)“Sapphire Rapids”:
ecs.c8i.4xlarge (16 vCPU + 32GB)
第 4 代 AMD EPYC“Genoa”:
ecs.c8a.4xlarge (16 vCPU + 32GB)
*使用 armswdev/pytorch-arm-neoverse:r24.07-torch-2.3.0-onednn-acl docker 鏡像的倚天 710[2],適用于英特爾 Sapphire-Rapids 和 AMD Genoa 的官方 PyTorch v2.3.0
我們發(fā)現(xiàn),基于 Neoverse N2 的倚天 710,搭配 BF16 Fast Math 內(nèi)核,使得 paraformer 自動(dòng)語(yǔ)音識(shí)別模型的推理性能較同等級(jí)別的 x86 云實(shí)例有高達(dá) 2.4 倍的優(yōu)勢(shì)。
在實(shí)際推理部署中,成本是 AI 部署的主要考慮因素之一,對(duì)技術(shù)的實(shí)現(xiàn)和采用有很大的影響。為全面了解 CPU 和 GPU 平臺(tái)上自動(dòng)語(yǔ)音識(shí)別推理部署的總體擁有成本 (TCO),我們將 NVIDIA A10 GPU 也納入對(duì)比分析中。得益于 Neoverse N2 出色的性能和能效,倚天 710 平臺(tái)相較于同等級(jí)別 x86 實(shí)例和 GPU 平臺(tái),展現(xiàn)出更高的成本效益,這一點(diǎn)也體現(xiàn)在了阿里云倚天 710 實(shí)例更普惠的定價(jià)上。
從基準(zhǔn)測(cè)試結(jié)果來(lái)看,倚天 710 在自動(dòng)語(yǔ)音識(shí)別推理部署的 TCO 方面具有顯著優(yōu)勢(shì),其性價(jià)比較同等級(jí)別 x86 和 GPU 平臺(tái)高出 3.5 倍。
結(jié)論
基于 Arm Neoverse N2 的阿里巴巴倚天 710 具有 BF16 MMLA 擴(kuò)展等特定 ML 功能,為采用 Arm Kleidi 技術(shù)的 FunASR paraformer 模型提供了出色的推理性能。開(kāi)發(fā)者在倚天 710 上構(gòu)建自動(dòng)語(yǔ)音識(shí)別應(yīng)用可實(shí)現(xiàn)更高性價(jià)比。
-
處理器
+關(guān)注
關(guān)注
68文章
19259瀏覽量
229647 -
ARM
+關(guān)注
關(guān)注
134文章
9084瀏覽量
367373 -
cpu
+關(guān)注
關(guān)注
68文章
10854瀏覽量
211568 -
語(yǔ)音識(shí)別
+關(guān)注
關(guān)注
38文章
1739瀏覽量
112632 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8406瀏覽量
132557
原文標(biāo)題:Arm Neoverse N2 平臺(tái)上利用 Arm Kleidi 技術(shù)實(shí)現(xiàn)自動(dòng)語(yǔ)音識(shí)別卓越性價(jià)比
文章出處:【微信號(hào):Arm社區(qū),微信公眾號(hào):Arm社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論