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

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

3天内不再提示

基于Arm平台的端到端int8 Conformer模型部署

Arm社区 来源:Arm社区 2026-02-24 10:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:Arm 工程部主任软件工程师 Alexey Vilkin 等

在边缘侧运行高质量的语音与音频模型颇具挑战,需满足时延、内存、功耗和模型大小等多方面的严苛约束。不同于云端部署,边缘侧系统通常离线运行,需兼顾用户隐私与可预测的实时性能。这些落地场景涵盖端侧语音转文本、语音助手、语音控制的物联网设备、工业人机界面,以及常开式音频应用等诸多用例。

Conformer 模型结合卷积层与基于 Transformer 的自注意力机制,具备出色的语音识别精度。若要在嵌入式硬件上实现高效执行,需对量化与部署环节进行精细处理。

本文将展示一个涵盖训练、量化及在基于 Arm 架构的嵌入式平台上部署 int8 Conformer 模型的端到端的工作流。通过使用 ExecuTorch 为模型进行量化,最终得以高效地部署到 Arm Ethos-U85 NPU 上。该演示表明基于 Transformer 架构的现代语音识别模型可以在 Arm 软硬件生态系统中高效运行。

开发者可通过 Arm 固定虚拟平台 (Fixed Virtual Platform, FVP) 仿真平台来使用 Arm 机器学习嵌入式评估套件 (Machine Learning Embedded Evaluation Kit, MLEK)[1]体验部署本演示。

[1] Arm MLEK: https://gitlab.arm.com/artificial-intelligence/ethos-u/ml-embedded-evaluation-kit

模型训练

本演示选用了一个主流的开源 Conformer 模型。该模型是一个基于 Transformer 架构的语音识别网络,适用于嵌入式设备。由于原模型未提供预训练权重,我们首先训练了一个性能良好的 FP32 基准模型,作为后续量化与部署到 Ethos-U85 的基础。经过推理速度测试,我们最终选定 Conformer-S 架构,其采用 144 维编码器、16 层网络结构与 4 个注意力头,并使用 CTC 损失函数完成语音转文本的序列对齐。训练所用的数据集为 LibriSpeech 标准训练与评估子集。

我们采用了一个直接在 LibriSpeech 数据集上训练的 SentencePiece 分词器。它生成了一个包含 128 个词元 (token) 的精简词表,使整个流程简单、独立运行、无需外部依赖。该分词器采用 Unigram 模型实现,且在训练与评估阶段保持配置完全一致。

早期实验中,我们曾采用仅包含英文字母的基础字符级词表训练模型。该方案虽可正常运行,但模型收敛速度较慢,词错误率 (WER) 也显著增高。Subword 单元通过合并高频词素与短词汇来缩短目标序列,既能引入适度的弱语言先验,又能稳定 CTC 任务中声学特征到词元的映射关系,进而有效提升模型收敛速度与识别准确度。

在预处理阶段,本流程以 16kHz 采样率提取 80 维的对数梅尔频谱图。我们尝试了多种数据增强方法,其中频率遮挡、时间遮挡以及随机语速扰动,在训练过程中带来了稳定的 WER 改进,使得模型识别结果更准确。

在初期实验中,我们遇到了收敛问题,这类问题在 Conformer 类模型中较为常见。我们通过将批次大小与学习率调度方案对齐、并引入权重衰减以约束权重取值,成功地解决了该问题;同时权重衰减通常也能有效提升后续 int8 量化的精度。

在该配置下,模型在 test‑clean 测试子集上取得了 6.43% 的词错误率,我们将这一结果作为量化环节的 FP32 基准。经内部评估确认,该精度水平已满足演示场景的需求,因此我们在此阶段完成模型训练。

Conformer-S 架构本身仍具备进一步优化的潜力。在后续迭代中,我们计划将数据集拓展至 LibriSpeech 之外,并尝试更丰富的数据增强方法。因为我们在训练后期观察到模型出现过拟合的早期迹象。为简化实现,当前系统直接采用了 Conformer 的原始输出。根据多项相关研究表明,引入一个轻量级语言模型(例如 N‑gram 或小型 LSTM 等),可进一步降低词错误率。

模型训练过程中我们采用了动态长度的语音样本,而端侧推理时却必须处理固定长度的音频片段。我们对多种音频切片的策略进行了评估验证,结果表明:对重叠片段的预测结果进行聚合,能在精度与时延之间取得最优平衡。该方案使得系统能够使用更短的音频片段来实现实时推理,同时保持较高的识别水准。

训练后量化 (PTQ)

我们采用 ExecuTorch 来进行模型的训练后量化及后续部署。ExecuTorch 中的 Arm 后端已支持包括 Conformer 在内的数百种模型。模型部署流程如下:

第一步:通过 torch.export.export API 将模型导出至 ATen 算子集。

第二步:为实现在 Ethos-U85 NPU 上部署,使用 ExecuTorch 中的 Ethos-U 量化器对模型执行量化操作。Ethos-U 量化器的定义方式如下:

compile_spec = EthosUCompileSpec(

target="ethos-u85-256",

system_config="Ethos_U85_SYS_Flash_High",

memory_mode="Shared_Sram",

extra_flags=["--output-format=raw", "--debug-force-regor"],

)

quantizer = EthosUQuantizer(compile_spec)

config = get_symmetric_quantization_config(is_per_channel=True)

quantizer.set_global(config)

第三步:采用逐通道量化,以保证优异的 int8 精度。

quantized_graph_module = prepare_pt2e(graph_module, quantizer) # Annotate the graph with observers

print("Calibrating...")

for feats, feat_lens, *_ in calibration_loader:

quantized_graph_module(feats, feat_lens) # Pass true data, similar to what the model will see when running inference

quantized_graph_module = convert_pt2e(quantized_graph_module)

第四步:对模型进行校准。校准过程会在数据类型从 FP32 转换为 int8 时,为每一层选取最优的量化参数。在 ExecuTorch 中,可按照以下步骤对模型进行校准:

partitioner = EthosUPartitioner(compile_spec)

edge_program_manager = to_edge_transform_and_lower(

quant_exported_program,

partitioner=[partitioner],

compile_config=EdgeCompileConfig(

_check_ir_validity=False,

),

)

第五步:调用 to_edge_transform_and_lower 函数,将神经网络转换下沉至 TOSA 格式,并完成模型编译。

第六步:将程序转换至 ExecuTorch 后端,并保存为 .pte 模型文件。

executorch_program_manager = edge_program_manager.to_executorch(

config=ExecutorchBackendConfig(extract_delegate_segments=False)

)

save_pte_program(

executorch_program_manager, f"conformer_quantized_{npu_variant}_{memory_mode}.pte"

)

借助 ExecuTorch 进行训练后量化的完整代码可在此[2]获取。若不想自行执行训练后量化操作,可在 Hugging Face 上获取该模型的量化版本[3]。

[2] https://github.com/Arm-Examples/ML-examples/tree/main/pytorch-conformer-train-quantize/post_training_quantization

[3] https://huggingface.co/Arm/stt_en_conformer_executorch_small

将上述操作所生成的 .pte 文件保存至系统级芯片 (SoC) 的外部存储器中。该文件包含模型权重、偏置以及供 NPU 使用的指令流。Ethos-U 会读取此文件并自主完成推理。

在 Arm 平台上部署

Arm MLEK 是部署与评估 Ethos-U85 的主要工具。通过与 ExecuTorch 集成,可实现在嵌入式目标平台上高效地执行 PyTorch 模型。下图展示了更新后的软件栈,支持在 MLEK 中启用 ExecuTorch 运行时。

1b8c4046-0656-11f1-90a1-92fbcf53809c.png

图:更新后的 MLEK 软件架构:在共享抽象层下,实现 ExecuTorch 与 TensorFlow Lite Micro 的集成;可复用的平台无关 API 支持各类示例用例跨框架、跨目标平台运行。

MLEK 25.12 版本新增了对 ExecuTorch 1.0.0 的支持。在本次 Conformer 模型部署中,我们复用了现有的自动语音识别示例并完成适配,实现量化后的 Conformer 模型在 Ethos-U85 上的端到端运行。

在 Corstone‑320 FVP 上运行演示

Arm 提供了一款示例应用,可借助 Arm Corstone-320 FVP,在 Ethos-U85 上运行预训练的 Conformer 模型。请参照以下步骤:

第一步:确保已安装前置依赖项:

Arm Corstone-320 FVP:

https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms/IoT%20FVPs

适用 AArch32 裸机环境的 Arm GNU 工具链:

https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

第二步:克隆并初始化 Arm MLEK 项目:

git clone https://gitlab.arm.com/artificial-intelligence/ethos-u/ml-embedded-evaluation-kit.git

cd ml-embedded-evaluation-kit

git checkout 9e9957c6

git submodule update --init --recursive

第三步:构建 Ethos-U85 项目:

python set_up_default_resources.py --parallel $(nproc) --ml-framework executorch --use-case asr

cmake -B build --preset mps4-320-gcc -DML_FRAMEWORK="ExecuTorch" -DUSE_CASE_BUILD="asr" -DETHOS_U_NPU_TIMING_ADAPTER_ENABLED="OFF"

cmake --build build -j $(nproc)

第四步:在 Corstone-320 FVP 上运行自动语音识别应用:

~/FVP_Corstone_SSE-320/models/Linux64_GCC-9.3/FVP_Corstone_SSE-320

-a build/bin/ethos-u-asr.axf

-C mps4_board.subsystem.ethosu.extra_args="--fast"

应用将对一组示例音频片段开展语音检测。推理运行期间,可视化界面会显示输入音频的波形与生成的梅尔频谱图。系统会将梅尔频谱图数据填充至 15 秒时长,并作为输入送入 Conformer 模型。

1bf0309c-0656-11f1-90a1-92fbcf53809c.png

通过 Conformer 模型对应用内置的示例音频片段进行语音检测。在控制台中,可查看模型当前使用的具体输入音频文件,以及输入/输出张量的形状与内存占用等信息:

INFO - Number of input tensors: 2

INFO - Tensor: 480000 bytes; 120000 elements

INFO - Shape:[1, 1500, 80]

INFO - Type:fp32

INFO - Tensor: 4 bytes; 1 elements

INFO - Shape:[1]

INFO - Type:int32

INFO - Number of output tensors: 2

INFO - Tensor: 192984 bytes; 48246 elements

INFO - Shape:[1, 374, 129]

INFO - Type:fp32

INFO - Tensor: 4 bytes; 1 elements

INFO - Shape:[1]

INFO - Type:int32

INFO - Total memory usage:

INFO - Method memory: Used: 1080898; Peak: 1080898; Available: 2097152

INFO - Temp memory: Used: 0; Peak: 117; Available: 33554432

INFO - Model initialisation complete

INFO - Initialising audio interface: Static sample audio files

INFO - Using sample audio: another_door.wav

稍等片刻后,即可在控制台中看到解码后的输出结果。

INFO - Decoded output: and he walked immediately out of the apartment by another door

源音频文件位于 resources/asr/samples 目录下,你可以播放这些音频,并与控制台输出的解码文本进行对比。界面中同样会显示性能相关数据。

性能评估

在前面章节中,我们在 FVP 的快速模式下运行了该应用。该模式有助于验证功能,但其显示的性能数据并不准确。若要获取准确的性能指标,需关闭快速模式,重新构建并运行该应用。这个过程耗时较长,可能超过 1 小时。具体步骤如下:

# Build

rm-rf build

python set_up_default_resources.py --parallel $(nproc) --ml-framework executorch --use-case asr

cmake -B build --preset mps4-320-gcc -DML_FRAMEWORK="ExecuTorch" -DUSE_CASE_BUILD="asr"

cmake --build build -j $(nproc)

# Run

~/FVP_Corstone_SSE-320/models/Linux64_GCC-9.3/FVP_Corstone_SSE-320

-a build/bin/ethos-u-asr.axf

若按照上述步骤正确构建并运行应用,将看到类似于如下所示的性能指标:

INFO - NPU ACTIVE: 206370332 cycles

INFO - NPU ETHOSU_PMU_SRAM_RD_DATA_BEAT_RECEIVED: 13858306 beats

INFO - NPU ETHOSU_PMU_SRAM_WR_DATA_BEAT_WRITTEN: 7968438 beats

INFO - NPU ETHOSU_PMU_EXT_RD_DATA_BEAT_RECEIVED: 26978241 beats

INFO - NPU ETHOSU_PMU_EXT_WR_DATA_BEAT_WRITTEN: 18985466 beats

INFO - NPU IDLE: 724 cycles

INFO - NPU TOTAL: 206371056 cycles

控制台输出将展示多项性能指标。例如,NPU ACTIVE 指标用于统计 Ethos-U85 完成 Conformer 模型推理所消耗的时钟周期数。我们所使用的 Conformer 模型,采用 15 秒音频的固定输入规格;当硬件系统主频为 1.0 GHz 时,该性能数据表明,模型推理可在 0.206 秒内完成。MLEK 项目文档中,详细说明了各类性能计数器的具体含义,包括内存带宽及时延配置相关指标。

结论与后续工作

本文展示了在 Arm 嵌入式平台上,训练、量化并部署 int8 Conformer 语音识别模型的端到端工作流。借助 ExecuTorch 与 Ethos-U85 NPU,我们验证了基于 Transformer 架构的语音模型可在边缘侧高效运行,同时满足严格的性能与功耗约束。这充分体现了 Arm 软硬件生态系统赋能开发者,将性能卓越的语音与音频模型落地到嵌入式设备中,且无需牺牲能效与识别精度。

欢迎各位开发者们点击阅读原文,进一步了解如何在 Arm 平台上使用 ExecuTorch 部署优化后的 AI 工作负载,也可以使用 Arm MLEK 探索 Ethos-U 系列 NPU,优化边缘侧 AI 部署!

* 本文为 Arm 原创文章,转载请留言联系获得授权并注明出处。

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

    关注

    135

    文章

    9613

    浏览量

    394378
  • 嵌入式
    +关注

    关注

    5212

    文章

    20766

    浏览量

    338801
  • 模型
    +关注

    关注

    1

    文章

    3873

    浏览量

    52341

原文标题:基于 Arm 平台的端到端 int8 Conformer:训练、量化及 Ethos-U85 上部署

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    esp-dl int8量化模型数据集评估精度下降的疑问求解?

    一 试着将模型进行了esp-dl上int16和int8的量化,并在测试数据集上进行精度评估,其中int16的模型精度基本没有下降,但是
    发表于 06-28 15:10

    是否可以输入随机数据集来生成INT8训练后量化模型

    无法确定是否可以输入随机数据集来生成 INT8 训练后量化模型
    发表于 03-06 06:45

    在OpenVINO™工具套件的深度学习工作台中无法导出INT8模型怎么解决?

    无法在 OpenVINO™ 工具套件的深度学习 (DL) 工作台中导出 INT8 模型
    发表于 03-06 07:54

    为什么无法在GPU上使用INT8INT4量化模型获得输出?

    安装OpenVINO™ 2024.0 版本。 使用 optimum-intel 程序包将 whisper-large-v3 模型转换为 int 4 和 int8,并在 GPU 上使用 OpenVINO™ 运行推理。 没有可用的
    发表于 06-23 07:11

    请问在新CPU上推断INT8模型的速度是否比旧CPU快?

    与采用旧 CPU 的推理相比,在新 CPU 上推断的 INT8 模型的推理速度更快。
    发表于 08-15 08:28

    Xilinx INT8 优化开发嵌入式视觉

    赛灵思 INT8 优化为使用深度学习推断和传统计算机视觉功能的嵌入式视觉应用提供最优异的性能和能效最出色的计算方法。与其他 FPGA/DSP 架构相比,赛灵思的集成 DSP 架构在 INT8 深度学习运算上能实现 1.75 倍的性能优势。
    的头像 发表于 09-22 17:27 6188次阅读

    DSP48E2 Slice 上优化 INT8 深度学习运算分析

    本白皮书旨在探索实现在赛灵思 DSP48E2 Slice 上的 INT8 深度学习运算,以及与其他 FPGA 的对比情况。在相同资源数量情况下,赛灵思的 DSP 架构凭借 INT8INT8 深度
    发表于 11-16 14:23 1.6w次阅读
    DSP48E2 Slice 上优化 <b class='flag-5'>INT8</b> 深度学习运算分析

    基于TensorRT完成NanoDet模型部署

    【GiantPandaCV导语】本文为大家介绍了一个TensorRT int8 量化部署 NanoDet 模型的教程,并开源了全部代码。主要是教你如何搭建tensorrt...
    发表于 01-25 19:04 0次下载
    基于TensorRT完成NanoDet<b class='flag-5'>模型</b><b class='flag-5'>部署</b>

    Int8量化-ncnn社区Int8重构之路

    本文是对NCNN社区int8模块的重构开发,再也不用担心溢出问题了,速度也还行。作者:圈圈虫首发知乎传送门ncnnBUG1989/caffe-int8-conver...
    发表于 02-07 12:38 1次下载
    <b class='flag-5'>Int8</b>量化-ncnn社区<b class='flag-5'>Int8</b>重构之路

    INT8量子化PyTorch x86处理器

    INT8量子化PyTorch x86处理器
    的头像 发表于 08-31 14:27 1963次阅读
    <b class='flag-5'>INT8</b>量子化PyTorch x86处理器

    探索ChatGLM2在算能BM1684X上INT8量化部署,加速大模型商业落地

    |探索ChatGLM2-6B模型与TPU部署》。为了进一步提升模型的推理效率与降低存储空间,我们对模型进行了INT8量化
    的头像 发表于 10-10 10:18 6011次阅读
    探索ChatGLM2在算能BM1684X上<b class='flag-5'>INT8</b>量化<b class='flag-5'>部署</b>,加速大<b class='flag-5'>模型</b>商业落地

    Yolo系列模型部署、精度对齐与int8量化加速

    可视化其他量化形式的engine和问题engine进行对比,我们发现是一些层的int8量化会出问题,由此找出问题量化节点解决。
    的头像 发表于 11-23 16:40 2820次阅读

    理想汽车自动驾驶模型实现

    理想汽车在感知、跟踪、预测、决策和规划等方面都进行了模型化,最终实现了模型。这种模型不仅
    发表于 04-12 12:17 1085次阅读
    理想汽车自动驾驶<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b><b class='flag-5'>模型</b>实现

    小鹏汽车发布模型

    小鹏汽车近日宣布,其成功研发并发布了“国内首个量产上车”的模型,该模型可直接通过传感器输入内容来控制车辆,标志着智能驾驶技术的新突破
    的头像 发表于 05-21 15:09 1468次阅读

    INT技术之IPT:实现网络路径质量的精准监控

    想要提升智算网络性能?本文深入解析INT技术中的IPT功能如何实现路径时延监控与动态感知,立即阅读了解如何优化您的高性能计算网络!
    的头像 发表于 05-11 14:51 129次阅读
    <b class='flag-5'>INT</b>技术之IPT:实现<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>网络路径质量的精准监控