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

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

3天内不再提示

FunASR语音大模型在Arm Neoverse平台上的优化实践流程

Arm社区 来源:Arm社区 2024-02-22 13:41 次阅读

Arm 架构在服务器领域发展势头前景看好。目前已有许多头部云服务提供商和服务器制造商推出了基于 Arm Neoverse 平台的服务器产品,例如 AWS Graviton、阿里云的倚天 710 系列等。这些厂商提供了完整的软硬件支持和优化,使得大模型推理在基于 Arm 架构的服务器上运行更加便捷和高效。

Arm 架构的服务器通常具备低功耗的特性,能带来更优异的能效比。相比于传统的 x86 架构服务器,Arm 服务器在相同功耗下能够提供更高的性能。这对于大模型推理任务来说尤为重要,因为大模型通常需要大量的计算资源,而能效比高的 Arm 架构服务器可以提供更好的性能和效率。

Armv9 新特性提高大模型推理的计算效率

Armv9 架构引入了 SVE2 (Scalable Vector Extension,可扩展向量延伸指令集)。SVE2 是一种可扩展的向量处理技术,它允许处理器同时执行多个数据元素的操作,可以提供更高效的向量计算和人工智能 (AI) 硬件加速,从而加快了 AI 任务的执行速度,提高了能效和性能。这对于在 Arm 架构的服务器上进行大规模 AI 推理和训练任务非常有益,不论是实现更好的用户体验或是更高的计算效率。

SVE2 对 AI 推理引擎的支持有效地使用了 BFloat16 (BF16) 格式,BF16 是一种浮点数格式,它使用 16 位表示浮点数,其中 8 位用于指数部分,7 位用于尾数部分,还有 1 位用于符号位。相比于传统的 32 位浮点数格式(如 FP32),BF16 在表示范围和精度上有所减少,但仍然能够满足大多数 AI 推理任务的需求。

a998db7a-d13c-11ee-a297-92fbcf53809c.jpg

图 1:BFloat16 格式

BF16 格式可以在减少存储和带宽需求之余,同时提供足够的精度,来满足大多数 AI 推理任务的要求。由于 SVE2 提供了针对 BF16 的向量指令,可以在同一条指令中同时处理多个 BF16 数据元素,从而提高计算效率。理论上来说,采用 BF16 可以实现双倍的 FP32 的性能。

SVE2 的矩阵运算在 AI 推理中扮演着重要的角色,它可以显著提高计算效率和性能。比如矩阵乘法 (Matrix Multiplication) 是许多 AI 任务中常见的运算,如卷积运算和全连接层的计算。SVE2 的向量指令可以同时处理多个数据元素,使得矩阵乘法的计算能够以向量化的方式进行,从而提高计算效率。指令 FMMLA 可以实现 FP32 格式下两个 2x2 矩阵乘法运算,指令 BFMMLA 可以通过单指令实现 BF16 格式下 4x2 矩阵和 2x4 矩阵的乘法,UMMLA、SMMLA 等可以实现 INT8 格式下 8x2 矩阵和 2x8 矩阵的矩阵乘法运算。通过 SVE2 的硬件加速功能,AI 推理可以在 Arm 架构中获得更高效的矩阵运算执行,提高计算效率和性能。

a9abce92-d13c-11ee-a297-92fbcf53809c.png

图 2:矩阵乘指令

ACL 实现 PyTorch 的计算加速

PyTorch 可以支持 Arm 架构的硬件加速资源,但需要安装适用于 Arm 架构的 PyTorch 版本,或者是从开源源代码编译支持 Arm 架构硬件加速的 PyTorch 版本。Arm Compute Library (ACL, Arm 计算库) 实现了 Arm 架构的硬件加速资源的优化封装,通过 OneDNN 来使 PyTorch 对 Arm 优化加速调用。下面介绍如何生成带 ACL 加速的 PyTorch 版本。

a9c5afd8-d13c-11ee-a297-92fbcf53809c.png

图 3:Arm Neoverse 平台 AI/ML 软件组合

ACL 是开源软件,下载后编译并设定相应的系统路径。

链接:https://github.com/arm-software/ComputeLibrary

# git clone https://github.com/ARM-software/ComputeLibrary.git

# scons arch=armv8.6-a-sve debug=0 neon=1 os=linux opencl=0 build=native -j 32 Werror=false

validation_tests=0 multi_isa=1 openmp=1 cppthreads=0 fixed_format_kernels=1

# export ACL_ROOT_DIR=/path_to_ACL/ComputeLibrary

开源软件 OpenBLAS 也实现了部分 Neon 的加速,PyTorch 同样也要依赖 OpenBLAS,下载相应源代码编译和安装。

链接:https://github.com/OpenMathLib/OpenBLAS

# git clone https://github.com/OpenMathLib/OpenBLAS.git

# cmake & make & make install

获取开源的 PyTorch 代码,下载相应的依赖开源软件,指定使能 ACL 的方法进行编译,获取 PyTorch 的安装包并更新。

# git clone https://github.com/pytorch/pytorch

# git submodule update --init –recursive

# MAX_JOBS=32 PYTORCH_BUILD_VERSION=2.1.0 PYTORCH_BUILD_NUMBER=1 OpenBLAS_HOME=/opt/openblas

BLAS="OpenBLAS" CXX_FLAGS="-O3 -mcpu=neoverse-n2 -march=armv8.4-a" USE_OPENMP=1 USE_LAPACK=1 USE_CUDA=0

USE_FBGEMM=0 USE_DISTRIBUTED=0 USE_MKLDNN=1 USE_MKLDNN_ACL=1 python setup.py bdist_wheel

# pip install --force-reinstall dist/torch-2.x.x-cp310-cp310-linux_aarch64.whl

配置了运行环境,就可以利用 Arm 架构的硬件加速资源来加速 PyTorch 的计算。尽管 PyTorch 可以在 Arm 架构上利用硬件加速资源,但针对具体模型和应用场景,需要对模型和代码进行一些调整以最大程度地发挥硬件的加速优势。

基于 FunASR 的优化实践

FunASR 是阿里巴巴达摩院开发的开源的基于 Paraformer 的大模型语音识别模型,提供包括语音识别 (ASR)、语音端点检测 (VAD)、标点恢复、语言模型、说话人验证、说话人分离和多人对话语音识别等在内的多种功能。本文以 FunASR 在 Arm Neoverse 平台上优化的过程做为大模型的优化实践案例。

仓库地址:https://github.com/alibaba-damo-academy/FunASR

a9d9164a-d13c-11ee-a297-92fbcf53809c.png

图 4:FunASR

本次优化是基于 ACL v23.08、oneDNN v3.3、PyTorch v2.1 进行,测试平台基于阿里云的 ECS 公有云,包括 C8Y、C8I、C7 等云实例。

为了确保 PyTorch 已经启动 ACL 进行加速,可以加上 “DNNL_VERBOSE=1” 来查看运行的日志输出。

# OMP_NUM_THREADS=16 DNNL_VERBOSE=1 python runtimes.py

a9fdfca8-d13c-11ee-a297-92fbcf53809c.png

图 5:使能 ACL 的 PyTorch 运行日志

得到如上的输出结果,可以看到已经启用了 ACL。

为了使优化有明确的目标,在运行大模型时,用 PyTorch 的 profiler 做整个模型的数据统计,即在调用大模型之前加上统计操作,为了减少单次运行的统计误差,可以在多次运行之后做统计并输出统计结果,如下面的示例:

aa1c9a14-d13c-11ee-a297-92fbcf53809c.jpg

默认运行是用 FP32 的格式,如果需要指定 BF16 的格式运行,需要加上 “ONEDNN_DEFAULT_FPMATH_MODE=BF16” 的参数

# OMP_NUM_THREADS=16 ONEDNN_DEFAULT_FPMATH_MODE=BF16 python profile.py

得到 profile 的统计数据:

aa27300a-d13c-11ee-a297-92fbcf53809c.png

图 6:统计分析日志

分析运行的结果,找出需要优化的算子,在这个示例中,mkldnn_convolution 运行的时间显著较长。

aa481f86-d13c-11ee-a297-92fbcf53809c.jpg

图 7:优化前统计分析

通过分析定位,发现在 OMP 的操作中,数据并没有按照多处理器进行并行数据处理,修复问题后,再次测试,发现 Convolution 的效率大大提升。

aa6a77d4-d13c-11ee-a297-92fbcf53809c.jpg

图 8:卷积优化后统计分析

在 Arm 架构处理器中,SVE2 可以对 INT8 进行并行数据处理,比如单指令周期可以做到 16 个 INT8 的乘累加操作,对 INT8 的执行效率非常高,在对模型执行效率有更高要求的场景下,可以用 INT8 来动态量化模型,进一步提高效率。当然,也可以把 INT8 和 BF16 相结合,模型用 INT8 量化,中间计算用 BF16 格式,相较其他平台,有 1.5 倍的效率提升。

aa81fd5a-d13c-11ee-a297-92fbcf53809c.png

图 9:动态量化优化

aa9b7398-d13c-11ee-a297-92fbcf53809c.png

图 10:优化结果对比

综上,通过充分利用 Armv9 架构中的 SVE2 指令、BF16 数据类型等特性,并引入动态量化等技术,能够实现以 FunASR 为例的大模型在 Arm Neoverse 平台的服务器上高效率运行。





审核编辑:刘清

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

    关注

    68

    文章

    19155

    浏览量

    229035
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9040

    浏览量

    366719
  • 语音识别
    +关注

    关注

    38

    文章

    1721

    浏览量

    112532
  • pytorch
    +关注

    关注

    2

    文章

    803

    浏览量

    13142

原文标题:FunASR 语音大模型在 Arm Neoverse 平台上的优化实践

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

收藏 人收藏

    评论

    相关推荐

    【实操文档】智能硬件的大模型语音交互流程中接入RAG知识库

    本帖最后由 jf_40317719 于 2024-9-29 17:13 编辑 智能硬件的语音交互接入大模型后可以直接理解自然语言内容,但大模型作为一个语言模型,对专业领域知识
    发表于 09-29 17:12

    深度学习算法嵌入式平台上的部署

    随着人工智能技术的飞速发展,深度学习算法各个领域的应用日益广泛。然而,将深度学习算法部署到资源受限的嵌入式平台上,仍然是一个具有挑战性的任务。本文将从嵌入式平台的特点、深度学习算法的优化
    的头像 发表于 07-15 10:03 1156次阅读

    ARM进军汽车芯片市场,推出Neoverse设计

    近日,全球知名的移动芯片设计公司ARM宣布迈出重大步伐,正式推出专为汽车领域设计的芯片——Neoverse。这一创新不仅展示了ARM芯片设计领域的领先地位,也为汽车行业带来了前所未有
    的头像 发表于 05-20 10:46 593次阅读

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

    Arm宣布了两款新的Arm Neoverse计算子系统(CSS),它们基于“迄今为止最好的一代Neoverse技术”。是什么让这些新产品
    的头像 发表于 04-24 17:53 984次阅读
    <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 N3

    高通支持Meta Llama 3大语言模型骁龙旗舰平台上实现终端侧执行

    高通和Meta合作优化Meta Llama 3大语言模型,支持未来的骁龙旗舰平台上实现终端侧执行。
    的头像 发表于 04-20 09:13 448次阅读

    Google Cloud推出基于Arm Neoverse V2定制Google Axion处理器

    Arm Neoverse 平台已成为云服务提供商优化其从芯片到软件全栈的心仪之选。近日,Google Cloud 推出了基于 Arm
    的头像 发表于 04-16 14:30 594次阅读

    Arm Neoverse CSS V3 助力云计算实现 TCO 优化的机密计算

    Arm 基础设施事业部高级产品经理 Mohit Taneja Arm 基础设施事业部产品总监 Saptarshi Mondal   实现高性能定制芯片   Arm Neoverse
    发表于 03-26 16:37 287次阅读
    <b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b> CSS V3 助力云计算实现 TCO <b class='flag-5'>优化</b>的机密计算

    Neoverse CSS V3助力云计算实现TCO优化的机密计算

    Arm Neoverse 旨在为从云到边缘的全场景基础设施用例提供高性能和出色能效。针对需要更高性能的工作负载和用例,Arm 推出了 Neoverse V 系列。
    的头像 发表于 03-14 12:13 493次阅读
    <b class='flag-5'>Neoverse</b> CSS V3助力云计算实现TCO<b class='flag-5'>优化</b>的机密计算

    Arm Neoverse CSS N3助力快速实现出色能效

    从云到边缘,Arm Neoverse 正凭借出色的性能、效率、设计灵活性和总体拥有成本 (TCO) 优势,革新传统基础设施芯片领域。
    的头像 发表于 02-29 13:36 395次阅读
    <b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b> CSS N3助力快速实现出色能效

    Arm发布Neoverse V3和N3 CPU内核

    计算市场持续迎来变革的背景下,Arm公司发布了其最新一代Neoverse CPU内核设计,分别为Neoverse V3(代号Poseidon)和N3(代号Hermes),两款内核将为
    的头像 发表于 02-27 09:27 890次阅读
    <b class='flag-5'>Arm</b>发布<b class='flag-5'>Neoverse</b> V3和N3 CPU内核

    Arm架构与Neoverse技术基础设施领域的应用与发展

    ArmNeoverse系列已有稳定的立足点。例如,英伟达的超级芯片Grace-Hopper就是由两片独立的芯片组成,其中 Hopper负责处理所有AI任务,如张量运算,Grace则扮演 CPU角色,利用I/O与内存管理功能与常规云世界相连。
    的头像 发表于 02-22 15:36 536次阅读

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

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

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

    新闻重点: Arm 宣布推出两款基于全新第三代 Neoverse IP 构建的新的 Arm Neoverse 计算子系统 Arm
    发表于 02-22 11:41 349次阅读

    智原与Arm合作提供基于Arm Neoverse CSS的设计服务

    Arm解决方案上的卓越设计实力以及对制造端资源的承诺。智原将充分发挥Arm Neoverse计算子系统(CSS)的优势,致力于提供卓越性能和创新的先进云端、高效能运算(HPC)和人工
    的头像 发表于 01-10 16:29 692次阅读

    在线研讨会 | 大模型时代语音 AI 模型的训练、优化与应用

    通过业界领先的技术,帮助企业能够快速部署定制化 AI 智能语音端到端流程。 2023 年 12 月 19 日和 21 日 晚间 ,来自 NVIDIA 和 Kaldi 项目的技术专家将做客 Datafun 社区直播间 ,为您介绍如何有针对性的
    的头像 发表于 12-15 15:50 563次阅读
    在线研讨会 | 大<b class='flag-5'>模型</b>时代<b class='flag-5'>语音</b> AI <b class='flag-5'>模型</b>的训练、<b class='flag-5'>优化</b>与应用