NeMo中文/英文ASR模型微调训练实践

NemoASR模型训练与评估:从安装到字错率计算
本文介绍了如何使用Nemo库进行中文ASR模型的安装、预训练模型下载、训练配置、以及评估指标,包括字错率和标点符号预测。通过PyTorchLightning进行训练并展示模型性能。

1.安装nemo

pip install -U nemo_toolkit[all] ASR-metrics

2.下载ASR预训练模型到本地(建议使用huggleface,比nvidia官网快很多)

3.从本地创建ASR模型

asr_model = nemo_asr.models.EncDecCTCModel.restore_from("stt_zh_quartznet15x5.nemo")

3.定义train_mainfest,包含语音文件路径、时长和语音文本的json文件

{"audio_filepath": "test.wav", "duration": 8.69, "text": "诶前天跟我说昨天跟我说十二期利率是多少工号幺九零八二六十二期的话零点八一万的话分十二期利息八十嘛"}

4.读取模型的yaml配置

# 使用YAML读取quartznet模型配置文件
try:
    from ruamel.yaml import YAML
except ModuleNotFoundError:
    from ruamel_yaml import YAML
config_path ="/NeMo/examples/asr/conf/quartznet/quartznet_15x5_zh.yaml"

yaml = YAML(typ='safe')
with open(config_path) as f:
    params = yaml.load(f)
print(params['model']['train_ds']['manifest_filepath'])
print(params['model']['validation_ds']['manifest_filepath'])

5.设置训练及验证manifest

train_manifest = "train_manifest.json"
val_manifest = "train_

### NeMo 框架中的检查点(Checkpoint)是什么? 在 NeMo(NVIDIA’s Neural Modules)框架中,检查点(Checkpoint)是训练过程中保存的模型状态快照。它通常包含模型的权重、优化器状态、学习率调度器信息以及训练过程中的其他元数据。这些检查点用于在训练中断后恢复模型状态,或者在微调、推理阶段加载模型以进行进一步处理[^1]。 NeMo 的检查点机制支持在训练过程中定期保存模型状态,也可以在微调完成后手动保存。这些检查点文件通常以 `.nemo` 为扩展名,包含完整的模型配置和权重信息,便于后续使用。 ### 如何使用 NeMo 的检查点? NeMo 提供了简单易用的 API 来加载和使用检查点。以下是一个典型的加载和使用检查点的流程: ```python from nemo.collections.asr.models import EncDecCTCModel # 加载检查点 model = EncDecCTCModel.restore_from(restore_path="path/to/checkpoint.nemo") # 使用模型进行推理 transcriptions = model.transcribe(["path/to/audio_file.wav"]) print(transcriptions) ``` 上述代码展示了如何从 `.nemo` 文件中恢复模型,并使用它对音频文件进行转录NeMo 的 `restore_from` 方法会自动加载模型的结构、权重和配置,从而实现无缝恢复[^1]。 ### 如何转换 NeMo 的检查点? NeMo 支持将检查点导出为其他格式,以便在不同框架或部署环境中使用。常见的转换方式包括: 1. **导出为 ONNX 格式**: ONNX(Open Neural Network Exchange)是一种通用的深度学习模型格式,支持跨平台部署。NeMo 提供了将模型导出为 ONNX 的功能,以便在推理服务中使用。 ```python model.export("path/to/model.onnx") ``` 2. **转换为 PyTorch 的 `.pt` 或 `.pth` 文件**: 如果需要在 PyTorch 环境中进一步处理模型,可以将 `.nemo` 文件转换为 PyTorch 的标准模型文件。 ```python import torch # 保存为 PyTorch 模型 torch.save(model.state_dict(), "path/to/model.pth") ``` 3. **转换为 TensorFlow 模型**: 虽然 NeMo 主要基于 PyTorch 构建,但可以通过中间格式(如 ONNX)将模型转换为 TensorFlow 模型,以支持 TensorFlow 生态系统的部署工具。 ### 检查点在训练和推理中的作用 检查点在大模型训练和推理中起着关键作用。例如,在训练过程中,检查点可以用于: - **恢复训练**:当训练因意外中断时,可以通过加载最新的检查点继续训练。 - **模型评估**:可以在不同检查点上评估模型性能,选择最佳模型进行部署。 - **微调**:基于已有的检查点进行微调,可以加速模型收敛并提高准确性。 在推理阶段,检查点可以用于: - **模型部署**:将模型导出为 ONNX 或其他格式,以便在生产环境中部署。 - **服务化**:将检查点集成到推理服务中,支持实时或批量推理任务。 ### 总结 NeMo 的检查点机制为模型训练微调和推理提供了强大的支持。通过灵活的保存和加载功能,可以实现训练状态的恢复、模型的导出与转换,以及高效的部署流程。这些功能在大规模模型训练和推理中尤为重要,能够显著提升训练效率和模型复用能力。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jacky_wxl(微信同号)

喜欢作者

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值