NVIDIA NeMo 简介——教程和示例

2023-05-16

NVIDIA NeMo 是一个用于构建新的最先进对话式 AI 模型的工具包。NeMo 有自动语音识别 (ASR)、自然语言处理 (NLP) 和文本转语音 (TTS) 模型的单独集合。

每个集合都包含预构建模块,其中包含训练数据所需的一切。每个模块都可以轻松定制、扩展和组合,以创建新的对话式 AI 模型架构。那么我们简单解释一下什么是ASR、NLP、TTS模型。

ASR是自动语音识别的缩写,是机器学习的一个子领域,专注于将口头语言翻译成文本格式的技术。这些方法背后的主要好处是允许在给定的语音消息中进行更好的单词搜索。

ASR 模型在当今世界广泛使用;最著名的实际应用包括 Apple 著名的语音交互系统 Siri。

自然语言处理NLP是人工智能的一个子领域,能够理解和处理不同的语言格式以提取独特的见解和模式。

最常见的用途包括推荐系统,其中自然语言处理技术可以将不同的项目、对象或服务归入不同的类别。此外,如果用户喜欢某些项目类别,推荐系统可以推荐相同或相似类别的项目。

TTS是Text-to-Speech 的缩写,与前面提到的自动语音识别领域正好相反。在 ASR 中,机器学习模型接收语音消息并将其转换为文本格式。同时,Text-to-Speech 模型接收文本格式的数据并将其转换为语音格式。

正如前面提到的 Siri 模型,ASR 系统用于将用户的语音转换为文本供 Siri 理解,然后 TTS 模型用于 Siri 以语音格式回答。

在本文的以下部分中,我们将向您展示如何使用 NVIDIA Nemo 运行实际的自然语言处理模型。

使用 NVIDIA NeMo 的先决条件

在使用 NeMo 之前,假定您满足以下先决条件。

  1. 您的 Python 版本为 3.6、3.7 或 3.8。
  2. 你有 Pytorch 版本 1.8.1。
  3. 您可以访问 NVIDIA GPU 进行训练。

使用 NLP 构建机器学习模型

使用自然语言处理 (NLP),我​​们将构建一个能够检测给定句子情感的机器学习模型。情绪旨在将给定的句子分类为情绪积极或消极。

例如,积极的情绪是“他工作很努力,取得了伟大的成就。” 另一方面,负面情绪是“他的表现不够好,未能达到目标”。

数据集

本教程中使用的文本分类模型要求数据集以 TAB 分隔文件 (.tsv) 格式存储。以下是数据应存储的格式。

[WORD][SPACE][WORD][SPACE][WORD][TAB][LABEL]

为了更好地解释给定的格式,让我们以数据集的第一行为例:

第一个数据点是:

hide new secretions from the parental units: 0

因此,数据必须以下面给出的格式存储:

[hide][SPACE][new][SPACE][secretions][SPACE][from][SPACE][the][SPACE][parental][SPACE][units][TAB][0]

我们的数据集仅包含 2 列,即句子标签 列。句子列(自变量)将用作我们模型的输入值。此列包含给定用户撰写的实际电影评论。

对于输出变量,我们将使用标签列(因变量),它表示先前编写的消息的实际情绪(正面或负面)。标签栏通常由人类用户手动填写。

NVIDIA NeMo NLP 教程

 

1. 选择在本地或在 Google Colab 上运行模型

""" You can run either this notebook locally (if you have all the dependencies and a GPU) or on Google Colab. 
Instructions for setting up Colab are as follows: Open a new Python 3 notebook. Import this notebook from GitHub (File -> Upload Notebook -> "GITHUB" tab -> copy/paste GitHub URL) Connect to an instance with a GPU (Runtime -> Change runtime type -> select "GPU" for hardware accelerator) Run this cell to set up dependencies. """ # If you're using Google Colab and not running locally, run this cell # install NeMo BRANCH = 'r1.10.0' !python -m pip install git+https://github.com/NVIDIA/NeMo...;BRANCH#egg=nemo_toolkit[nlp]

2.安装ipywidgets并升级Jupyter Notebook

如果您不使用 Colab,则可能需要升级 Jupyter notebook 以避免出现以下错误:

# 'ImportError: IProgress not found. Please update jupyter and ipywidgets.'

安装 ipywidgets 扩展

! pip install ipywidgets ! jupyter nbextension enable --py widgetsnbextension # Please restart the kernel after running this cell

请注意,当您使用 Google Colab 运行模型时,始终需要遵循上述 2 个步骤。

3.导入需要的库

作为训练我们模型的实际第一步,我们需要导入所有需要的库和包。

您之前可能使用过的一些必要库可能包括torch和pytorch库。在此模型中,我们还将使用几个 NeMo 包,例如nemo.collectionsnemo.utils.exp_manager包。

from nemo.collections import nlp as nemo_nlp from nemo.utils.exp_manager import exp_manager 
import os import wget import torch import pytorch_lightning as pl from omegaconf import OmegaConf

4. 创建数据和工作目录

在此步骤中,我们将通过创建 2 个新目录来保存我们的工作。您可以选择不创建或创建并重命名您自己的目录,但始终确保在代码中用新目录名替换旧目录名。

最后两行命令以 '!' 开头 会自动安装数据集,然后解压到指定的Data目录文件中。为您节省一些不必要的工作。

DATA_DIR = "DATA_DIR" WORK_DIR = "WORK_DIR" os.environ['DATA_DIR'] = DATA_DIR 
os.makedirs(WORK_DIR, exist_ok=True) os.makedirs(DATA_DIR, exist_ok=True) 
! wget <a href="https://dl.fbaipublicfiles.com/glue/data/SST-2.zip" target="_self">https://dl.fbaipublicfiles.com/glue/data/SST-2.zip </a>! unzip -o SST-2.zip -d {DATA_DIR}

5.过滤和清理数据

由于 Nemo 数据集有其独特的格式,因此应插入或修改所使用的任何数据集以适应这种要求的格式。在我们的数据集中,我们需要删除多余的标题行。这是使用 sed 1d 命令完成的,该命令从指定数据集中删除第一列。请注意,我们仅从训练和验证数据集中删除了标题行,因为测试数据集没有此问题。

! sed 1d {DATA_DIR}/SST-2/train.tsv > {DATA_DIR}/SST-2/train_nemo_format.tsv ! sed 1d {DATA_DIR}/SST-2/dev.tsv > {DATA_DIR}/SST-2/dev_nemo_format.tsv ! ls -l {DATA_DIR}/SST-2 To print the  first 5 lines of each data set: print('Contents (first 5 lines) of train.tsv:') ! head -n 5 {DATA_DIR}/SST-2/train_nemo_format.tsv 
print('\nContents (first 5 lines) of test.tsv:') ! head -n 5 {DATA_DIR}/SST-2/test.tsv

6.下载配置文件

NVIDIA Nemo 模型使用配置系统工作,其中保存和使用包含运行我们模型的所有必要数据的配置文件。本教程中编写的大部分代码都会更新并向该文件添加新数据。

首先,NVIDIA 为您提供了一个可以立即使用的基本 YAML 配置文件。当然,模型之间需要进行一些修改和调整。配置文件将被下载到指定目录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NVIDIA NeMo 简介——教程和示例 的相关文章

随机推荐

  • 如何有效阅读《C++ Primer》那么厚的书

    我就是那种正面刚大部头的选手 xff0c 这些年读过的工作相关的 砖头 大概有 c 43 43 primer xff0c Windows核心编程 xff0c 算法导论 xff0c unix网络编程 xff0c STL源码剖析 等等吧 xff
  • 【Arduino 语法——结构体】

    Arduino 语法 结构体 1 0 项目结构 1 1 setup 1 2 loop 1 3 main 2 0 控制语句 2 1 break 2 2 continue 2 3 while 2 4 do while 2 5 for 2 6 i
  • 【MKS_GEN_L 主板使用说明书】

    MKS GEN L 主板使用说明书 1 描述2 特征3 主板封装3 1 尺寸图3 2 接线图3 2 1 MKS GEN L V1 0系统连接图3 2 2 MKSGEN L V2 1系统连接图 4 引脚排列5 GEN LV2 1驱动设置5 1
  • 【基于腾讯云的远程机械臂小车】

    基于腾讯云的远程机械臂小车 1 项目来源 1 1 项目概述 1 2 系统结构 1 3 设计原理 2 硬件搭建 2 1 CH32V307开发板 2 2 Arduino mega2560 2 3 富斯I6遥控器 2 4 机械臂小车 2 5 ES
  • 电脑之间快速传输超大文件(100GB以上)的方法

    引言 假如有这样一个场景 xff0c 你买了一台新的电脑 但是老电脑上存放着多年累积的数据 几百G之多 你要花时间把旧电脑上的数据导到新电脑上去 xff0c 这很费精力 于是你想有没有更快速的方法立马挪过去呢 xff1f 本文提供了五种方法
  • 《软件架构设计》(Yanlz Unity SteamVR 云技术 5G AI=VR云游戏=框架编程 架构设计 设计重构 游戏框架 框架入门 架构师 UML MVC ECS 立钻哥哥 ==)

    软件架构设计 软件架构设计 版本 作者 参与者 完成日期 备注 YanlzFramework 1910 V01 1 0 严立钻 2019 10 19 软件架构设计 发布说明 xff1a 43 43 43 43 软件架构设计 xff1a 是对
  • 进程的切换过程

    切换方式 进程的切换 xff0c 实质上就是被中断运行进程与待运行进程的上下文切换 从主观上来理解 只分为两步 xff1a 1 切换新的页表 xff0c 然后使用新的虚拟地址空间 2 切换内核栈 xff0c 加入新的内容 PCB控制块 xf
  • SLAM之camera(Intel RealSense D435)调试第一弹:Win10平台下getting started

    参见官方的getting started文档 https software intel com en us realsense d400 get started xff0c 这个quick start guide是Intel RealSen
  • Cmake的 debug和release

    Cmake的 debug版本和release版本 xff08 转 xff09 debug版本的项目生成的可执行文件需要有调试信息并且不需要进行优化 xff0c 而release版本的不需要调试信息但是需要优化 这些特性在gcc g 43 4
  • 【Kubernetes】K8s官方文档使用技巧

    学习K8s有很多技巧 其中一个技巧就是要多浏览官方 https kubernetes io zh 的说明文档 对于英语基础不是太好的 K8s官方还提供了中文版的页面 点击 文档 我们就进入了K8s文档的主页 主页上看起来也没多少知识点 别急
  • (六)定时器/计数器

    xff08 六 xff09 定时器 计数器 一 简介 定时器和计数器是两个名字 xff0c 但是原理上来说是一样的 xff0c 都是对脉冲进行计数 xff0c 区别在于时钟来源 xff0c 如果来自内部时钟信号 xff0c 由于内部时钟通常
  • Windows下令QProcess弹出CMD界面

    研究了快一下午 xff0c 来回看了QProcess文档中 xff0c 关于start execute statedDetached相关接口的调用说明 xff0c 然而并没有什么用处 差点就准备调用CreateProcess API的接口
  • Linux aarch64交叉编译之cJSON解析器

    对于cJSON项目的交叉编译 xff0c 该项目难度并不大 xff0c 灵活性也较强 该文章的目标是编译一套aarch64 Linux Debian嵌入式版本上可以运行的版本库 xff0c 基本无坑 老套路 xff0c 先把linux桌面版
  • Linux docker(03)可使用GPU渲染的x11docker实战总结

    该系列文章的目的旨在之前的章节基础上 xff0c 使用x11docker构建一个可以使用GPU的docker容器 该容器可以用于3D图形渲染 XR 等使用GPU渲染的程序调试和运行 0 why docker 为什么非要用x11docker
  • 北斗卫星导航系统介绍

    北斗卫星导航系统 导言 2020年3月9日 xff0c 我国在西昌卫星发射中心用长征三号乙运载火箭 xff0c 成功发射北斗系统第五十四颗导航卫星 距离北斗三号系统建成 xff0c 仅一步之遥 从双星导航定位到54颗北斗嵌满星空 xff0c
  • PyQt vs Tkinter – 更好的 GUI 库

    PyQt 和 Tkinter 的比较 在本文中 xff0c 我将分享我自己使用两个 GUI 库 PyQt 和 Tkinter 的旅程和个人经验 我还对具有相同小部件的 Tkinter 和 PyQt GUI 进行了并排比较 本文比较了两个 P
  • Selenium 中的 XPath

    Selenium 中的 XPath 是什么 xff1f Selenium 中最常用的定位器之一 xff0c XPath xff08 也称为 XML 路径 xff09 xff0c 通过页面的 HTML 格式支持您的指南 使用 HTML DOM
  • Centos7 安装yum源

    一 安装wget的rpm包 xff1a 1 下载wget的rpm包 首先去 http mirrors 163 com centos 7 os x86 64 Packages 下找到wget的rpm包 xff0c 复制链接 xff0c 使用c
  • Redis开启远程连接

    1 开启远程连接 redis默认是不支持远程连接 xff0c 需要手动开启 xff0c 在redis conf文件中 xff0c 找到下方法代码 xff1a bind 127 0 0 1 1 这里只允许127 0 0 1登录 xff0c 注
  • NVIDIA NeMo 简介——教程和示例

    NVIDIA NeMo 是一个用于构建新的最先进对话式 AI 模型的工具包 NeMo 有自动语音识别 ASR 自然语言处理 NLP 和文本转语音 TTS 模型的单独集合 每个集合都包含预构建模块 xff0c 其中包含训练数据所需的一切 每个