重要提示

您正在查看 NeMo 2.0 文档。此版本对 API 和新库 NeMo Run 进行了重大更改。我们目前正在将 NeMo 1.0 的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档

为什么选择 NeMo Framework?#

为 Gen AI 开发深度学习模型是一个复杂的过程,包括跨特定领域模型的的设计、构建和训练。要实现高精度,需要进行广泛的实验,针对不同的任务和特定领域的数据集进行微调,确保最佳的训练性能,并为部署准备模型。

NeMo 通过其模块化方法简化了这种复杂开发环境。它引入了神经模块——AI 应用程序的逻辑块,具有类型化的输入和输出——通过基于神经类型链接这些模块,促进模型的无缝构建。这种方法加速了开发,提高了模型在特定领域数据上的准确性,并提高了 AI 工作流程中的模块化、灵活性和可重用性。

为了进一步增强其实用性,NeMo 提供了模块集合,旨在用于语音识别、自然语言处理和语音合成中的核心任务。它支持训练新模型或微调现有预训练模块,利用预训练权重来加速训练过程。

该框架包含为多种语言(包括普通话)训练和优化的模型,并为这些语言的会话 AI 开发提供了广泛的教程。NeMo 强调与其他研究工具的互操作性,扩大了其适用性和易用性。

大型语言模型 & 多模态 (LLM & MM)#

NeMo 擅长训练大规模 LLM & MM,利用 Megatron-LM 和 Transformer Engine 的优化来提供最先进的性能。它包括用于大规模训练的全面功能集

  • 支持多 GPU 和多节点计算以实现可扩展性。

  • 精度选项,包括 FP32/TF32、FP16、BF16 和 TransformerEngine/FP8。

  • 并行策略:数据并行、张量并行、流水线并行、交错流水线并行、序列并行和上下文并行、分布式优化器和完全共享数据并行。

  • 优化的实用程序,如 Flash Attention、激活重计算和通信重叠。

  • 通过分布式检查点格式进行高级检查点。

语音 AI#

数据增强#

增强 ASR 数据至关重要,但在训练期间可能非常耗时。NeMo 提倡离线数据集预处理以节省训练时间,这在一个涵盖速度扰动和噪声增强技术的教程中得到了说明。

语音数据浏览器#

一个基于 Dash 的工具,用于交互式探索 ASR/TTS 数据集,提供对数据集统计信息、话语检查和错误分析的深入了解。此工具的安装说明可在 NeMo 的 GitHub 存储库中找到。

使用 Kaldi 格式的数据#

NeMo 支持 Kaldi 格式的数据集,通过将 AudioToTextDataLayer 替换为 KaldiFeatureDataLayer,可以使用现有的 Kaldi 数据开发模型。

语音命令识别#

专门针对语音命令识别的训练在一个专门的 NeMo Jupyter notebook 中进行了介绍,指导用户完成在语音命令数据集上训练 QuartzNet 模型的过程。

通用优化#

混合精度训练#

利用 NVIDIA 的 Apex AMP,混合精度训练可在最大限度地减少精度损失的情况下提高训练速度,尤其是在配备 Tensor Core 的硬件上。

多 GPU 训练#

NeMo 启用多 GPU 训练,大大缩短了大型模型的训练持续时间。本节阐明了混合精度的优势以及多 GPU 和多节点训练之间的区别。

NeMo、PyTorch Lightning 和 Hydra#

通过集成 PyTorch Lightning 以提高训练效率,并集成 Hydra 以进行配置管理,NeMo 通过组织 PyTorch 代码和自动化训练工作流程来简化会话 AI 研究。

优化的预训练模型#

通过 NVIDIA GPU Cloud (NGC),NeMo 为各种会话 AI 应用程序提供了一系列优化的预训练模型,方便集成到研究项目中,并为会话 AI 开发提供了先发优势。

资源#

确保您熟悉以下 NeMo 资源。