0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Arm Neoverse N2实现自动语音识别技术

Arm社区 来源:Arm社区 2024-11-15 11:35 次阅读

作者:安谋科技 (Arm China) 高级软件产品经理 杨喜乐

自动语音识别 (Automatic Speech Recognition) 技术已经深入到现代生活的方方面面,广泛应用于从语音助手、转录服务,到呼叫中心分析和语音转文本翻译等方面,为各行各业提供了创新解决方案,显著提升了用户体验。

随着机器学习 (ML) 和深度学习最新进展,自动语音识别技术的精密性已经达到一个新的高度。现在,自动语音识别软件可以非常准确地理解各种口音、方言和说话风格。FunASR 是阿里巴巴达摩院开发的一款先进的开源自动语音识别工具包。它为开发和部署自动语音识别系统提供了一套全面的工具和模型。

FunASR 兼容 CPUGPU 计算。虽然 GPU 为训练深度学习模型提供了出色的性能,但 CPU 在边缘侧和数据中心服务器中更为普遍,并且更适合模型推理。因此,FunASR 可以在 CPU 上进行高效的自动语音识别推理,并能在 GPU 加速不可用的情况下(如成本限制、功耗限制或缺乏可用性等),依然能够顺利部署。

Arm Neoverse N2 是一款专为云和边缘计算设计的高性能 CPU 处理器。它可以支持包括人工智能 (AI) 和 ML 在内的多种云工作负载,并增加了 SVE2、Bfloat16 (BF16) 数据格式和 MMLA 等 AI 功能。

SVE2 使开发者能够操作更大的数据向量,提升并行处理能力和执行效率,这对于 AI 模型训练和推理阶段涉及的大量数学计算尤为重要。

BF16 是一种较新的浮点格式,专为 AI 和 ML 应用而设计。它提供与 32 位浮点数相同的动态范围,但仅占用 16 位存储空间,有效缩小了模型尺寸,并显著提升了计算效率。

MMLA 是 Armv8.6 中的一个架构特性。它为 GEMM 运算提供了显著加速。GEMM 是 ML 中的一种基本算法,对两个输入矩阵进行复杂的乘法运算,得到一个输出。

Arm 此前推出了 Arm Kleidi 技术,这是一套专为开发者设计的赋能技术,旨在增强 Arm Neoverse、Arm Cortex 等 Arm 平台上的 AI 性能。Kleidi 技术广泛涉及从框架到高度优化的算子库,再到充满活力的独立软件供应商 (ISV) 生态系统,全面覆盖了 AI 开发的关键环节。

在本文中,我们将分享在基于 Neoverse N2 的阿里巴巴倚天 710 平台上部署 FunASR 推理过程及基准测试方法。同时,我们将通过启用 Arm Kleidi 技术进行对比分析,重点介绍与其他基于 CPU 和 GPU 的平台相比,在倚天 710 CPU 上运行 FunASR 推理在性价比方面的主要优势。

基准测试设置

软件版本:

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

请确保系统上安装了 PyTorch 和相关的 python 库[1],如果在 Arm 平台上运行,可使用 Arm 在 docker 仓库中提供的 PyTorch docker 镜像[2],以便进行快速评估。

1对环境进行初始化并导入所需的依赖项

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

<< 滑动查看 >>

2下载并配置模型

Paraformer 是阿里巴巴达摩院在 FunASR 开源项目中开发的一款高效自动语音识别模型,旨在提高端到端语音识别系统的鲁棒性和效率。该模型基于 Transformer 架构,并融入了多项创新,以提升其在语音识别中的性能。为了进行基准测试,我们将使用魔搭社区中的 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"))

<< 滑动查看 >>

3使用性能分析器运行以获取模型推理结果

推理运行十次迭代以获得平均结果。

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))

<< 滑动查看 >>

使用 BF16 Fast Math 内核加速推理

作为 Arm Kleidi 技术的一部分,Arm Compute Library (ACL) 通过利用 BF16 MMLA 指令,提供了优化的 BF16 通用矩阵乘法 (GEMM) 内核。这些指令在 Neoverse N2 CPU 中得到支持,并且从 PyTorch 2.0 版本开始便通过 oneDNN 后端集成到了 PyTorch 中。ACL 中的 Fast Math GEMM 内核可以高度优化 CPU 上的推理性能。

要启用 Fast Math GEMM 内核,请在运行推理之前设置以下环境变量:

$ export DNNL_DEFAULT_FPMATH_MODE=BF16

我们发现,在基于 Neoverse N2 的倚天 710 平台上启用 BF16 Fast Math 内核后,与默认的 FP32 内核相比,性能提高了约 2.3 倍。

694d5720-9d84-11ef-93f3-92fbcf53809c.jpg

性能比较

我们还比较了 FunASR paraformer 模型在倚天 710 和阿里云其他同等级别云实例上的性能*。

Arm Neoverse N2(倚天 710):

ecs.c8y.4xlarge (16 vCPU + 32GB)

第 4 代英特尔至强“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

我们发现,基于 Neoverse N2 的倚天 710,搭配 BF16 Fast Math 内核,使得 paraformer 自动语音识别模型的推理性能较同等级别的 x86 云实例有高达 2.4 倍的优势。

698c17da-9d84-11ef-93f3-92fbcf53809c.jpg

在实际推理部署中,成本是 AI 部署的主要考虑因素之一,对技术的实现和采用有很大的影响。为全面了解 CPU 和 GPU 平台上自动语音识别推理部署的总体拥有成本 (TCO),我们将 NVIDIA A10 GPU 也纳入对比分析中。得益于 Neoverse N2 出色的性能和能效,倚天 710 平台相较于同等级别 x86 实例和 GPU 平台,展现出更高的成本效益,这一点也体现在了阿里云倚天 710 实例更普惠的定价上。

69925ad2-9d84-11ef-93f3-92fbcf53809c.png

从基准测试结果来看,倚天 710 在自动语音识别推理部署的 TCO 方面具有显著优势,其性价比较同等级别 x86 和 GPU 平台高出 3.5 倍。

699b8e54-9d84-11ef-93f3-92fbcf53809c.jpg

结论

基于 Arm Neoverse N2 的阿里巴巴倚天 710 具有 BF16 MMLA 扩展等特定 ML 功能,为采用 Arm Kleidi 技术的 FunASR paraformer 模型提供了出色的推理性能。开发者在倚天 710 上构建自动语音识别应用可实现更高性价比。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19133

    浏览量

    228900
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9034

    浏览量

    366586
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10816

    浏览量

    210927
  • 语音识别
    +关注

    关注

    38

    文章

    1715

    浏览量

    112510
  • 机器学习
    +关注

    关注

    66

    文章

    8364

    浏览量

    132340

原文标题:Arm Neoverse N2 平台上利用 Arm Kleidi 技术实现自动语音识别卓越性价比

文章出处:【微信号:Arm社区,微信公众号:Arm社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Arm Neoverse家族新增V1和N2两大平台,突破高性能计算瓶颈

    Arm 近日公开了Arm® Neoverse V1 和 N2 平台的产品细节,两者满足了基础设施应用的各种需求。这两个平台的设计旨在解决当前正在运行的各种工作负载和应用问题,与上一代
    的头像 发表于 04-30 16:20 9104次阅读

    ARM Neoverse N2 PMU指南

    参考ENEPERN2号更详尽的描述。 关于NEPERVERT N2技术参考手册, 请参考Armé EVERTM N2
    发表于 08-09 06:07

    Arm Neoverse N2汽车硬件技术概述

    算子系统。RD-N2-Automotive是在RD-N2的基础上逐步开发的。 本文件必须与Arm NeoverseTM N2参考设计(RD-N2
    发表于 08-10 06:25

    ARM NeoverseN2软件优化指南

    新宇宙™ N2是一款高性能、低功耗的产品,采用Arm®v9.0-a架构。此实现支持Arm®v8.6‑A之前的所有Armv8-A体系结构实现
    发表于 08-11 06:47

    Arm Neoverse N1软件优化指南

    本文档提供了有关Neoverse N1管道、指令性能特征和特殊性能注意事项的高级信息。此信息旨在帮助优化Neoverse N1软件和编译器的人员。有关
    发表于 08-11 06:56

    Arm NeoverseN1 PMU指南

    ARMv8-A。 有关Neoverse N1的更多详细说明,请参阅ARM®NeoverseN1技术
    发表于 08-12 07:10

    Arm NeoverseN2核心加密扩展技术参考手册

    NeoverseN2核心支持可选的ARM®v8.0-A和ARM®v8.2-A加密扩展。 ARM®v8.0-A加密扩展为Advanced S
    发表于 08-17 07:08

    ARM NeoverseN1核心技术参考手册

    包括一个超标量、可变长度、无序的管道。 NeoverseDSU N1核心在Dynamiq™共享单元(™)集群内实现。 有关更多信息,请参阅ARM®Dynamiq™共享单元技术参考手册。
    发表于 08-29 08:05

    ARM NeoverseN2核心技术参考手册

    NeoverseN2内核是一款高性能、低功耗的产品,采用ARM®v9.0-A架构。 此实施支持所有以前的ARMv8-A架构实施,包括ARM®v8.5-A。 Neoversedsu
    发表于 08-29 08:12

    ARM NeoverseN2参考设计技术概述

    技术概述是为经验丰富的硬件和片上系统(SoC)工程师编写的,他们可能有也可能没有ARM产品的经验。 这些工程师通常在编写Verilog和执行合成方面有经验,但在集成和实现ARM产品方面
    发表于 08-29 07:10

    互联网巨头纷纷启用Arm CPU架构,Arm最新Neoverse V1和N2平台加速云服务器芯片自研

    电子发烧友网报道(文/黄晶晶)Arm在2018年10月宣布了Neoverse的路线图,继2019年Neoverse N1平台发布后,今年9月发布Ne
    发表于 09-30 14:46 1177次阅读

    Arm推出新一代平台 Neoverse V2 平台

    目前,Arm Neoverse家族包括:V系列、N系列以及E系列。就在今年9月,Arm Neoverse迎来新的进展,推出新一代平台
    的头像 发表于 09-26 09:22 1419次阅读

    Arm 更新 Neoverse 产品路线图,实现基于 Arm 平台的人工智能基础设施

    Neoverse CSS 产品;与 CSS N2 相比,其单芯片性能可提高 50% Arm Neoverse CSS N3 拓展了
    发表于 02-22 11:41 342次阅读

    Arm发布新一代Neoverse数据中心计算平台,AI负载性能显著提升

    据公开信息显示,Arm去年推出的Neoverse CSS运算子系统提供了包含处理器设计的预验证平台,加快了定制SoC上市进程,首发型号为Neoverse CSS N2
    的头像 发表于 02-22 14:48 645次阅读

    ArmArm Neoverse计算子系统(CSS):Arm Neoverse CSS V3和Arm Neoverse CSS N3

    Neoverse CSS N3代表了Arm计算子系统产品组合的最新进展。 Neoverse CSS V3是高性能V系列产品组合的首款产品,相比其前身
    的头像 发表于 04-24 17:53 969次阅读
    <b class='flag-5'>Arm</b>新<b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b>计算子系统(CSS):<b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b> CSS V3和<b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b> CSS <b class='flag-5'>N</b>3