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 简介——教程和示例 的相关文章

  • 如何测量 NVIDIA CUDA 中的内部内核时间?

    我想测量GPU内核的时间 如何在NVIDIA CUDA中测量它 例如 global void kernelSample some code here get start time some code here get stop time s
  • 选择性 nvidia #pragma optionNV(全部展开)

    我正在使用 nvidia 的展开循环指令 但还没有找到有选择地打开它的方法 可以说我有这个 void testUnroll pragma optionNV unroll all for void testNoUnroll for 在这里 我
  • 如何找到活跃的短信?

    有什么方法可以知道免费 活跃短信的数量吗 或者至少读取每个SM的电压 功率或温度值 通过它我可以知道它是否工作 在 GPU 设备上执行某些作业时实时执行 smid 帮助我了解了每个 SM 的 Id 类似的东西会有所帮助 感谢致敬 拉凯什 C
  • 我的 GPU 上的总线程数、块数和网格数。

    For the NVIDIA GEFORCE 940mx GPU Device Query shows it has 3 Multiprocessor and 128 cores for each MP 每个多处理器的线程数 2048 所以
  • NVIDIA Fermi 中的 L2 缓存

    在查看NVIDIA Fermi架构中的性能计数器名称 cuda的doc文件夹中的Compute profiler txt文件 时 我注意到对于L2缓存未命中 有两个性能计数器 l2 subp0 read sector misses和l2 s
  • 如何在 Thrust 中将 make_transform_iterator() 与counting_iterator<> 和execution_policy 一起使用?

    我尝试使用 MSVS2012 CUDA5 5 Thrust 1 7 编译此代码 include
  • OpenGL sRGB 帧缓冲区奇怪之处

    我正在使用 GLFW3 创建上下文 我注意到GLFW SRGB CAPABLE属性好像没有什么影响 无论我将其设置为什么 我总是会在以下情况下获得 sRGB 转换 GL FRAMEBUFFER SRGB已启用 我的理解是 当GL FRAME
  • 如何在 Windows 10 上的单个进程中使用辅助 GPU 上 100% 的 VRAM?

    这是在 Windows 10 计算机上 没有连接到 Nvidia 卡的显示器 我已经包含了 nvida smi 的输出 显示 gt 5 04G 可用 这是张量流代码 要求它分配的内存比我之前看到的稍多一些 我希望它尽可能接近内存分数 1 0
  • CUDA 运行时 API 错误 38:未检测到支持 CUDA 的设备

    情况 我有一个 2 gpu 服务器 Ubuntu 12 04 我将 Tesla C1060 与 GTX 670 交换 然后我在 4 2 上安装了 CUDA 5 0 之后我编译了除 simpleMPI 之外的所有示例 没有错误 但当我跑步时
  • cuda内核调用是同步还是异步

    我读到可以使用内核启动来同步不同的块 即 如果我希望所有块在继续操作 2 之前完成操作 1 我应该将操作 1 放在一个内核中 将操作 2 放在另一个内核中 这样 我就可以实现块之间的全局同步 然而 cuda c 编程指南提到内核调用是异步的
  • Cuda char* 变量赋值

    这是本文所选答案的后续问题 cuda程序的输出不是预期的 https stackoverflow com questions 6561005 output of cuda program is not what was expected 6
  • cudamemcpyasync 和流行为理解

    我有下面所示的简单代码 它什么也不做 只是使用流将一些数据从主机复制到设备 但在运行 nvprof 后我很困惑 因为 cudamemcpyasync 确实是异步的并且对流的理解 include
  • glReadPixels() 会消耗单个核心的所有CPU周期

    我有一个带有 OpenGL 窗口的 SDL2 应用程序 它表现良好 当它运行时 该应用程序与我的 60Hz 显示器同步 并且我看到该应用程序的 CPU 使用率为 12 到目前为止 一切都很好 但是 当我通过从深度缓冲区 绘制后 读取单个 深
  • 使用 CUDA 进行行列式计算 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或免费可用的代码可以计算a的行列式small 6x6 双精度矩阵完全在 GPU 上 这是计
  • 使用 NVIDIA TensorRT 推理引擎运行 Tensorflow

    我想使用 NVIDIA TensorRT 来运行我的 Tensorflow 模型 目前 TensorRT 支持 Caffe prototxt 网络描述符文件 我无法找到将 Tensorflow 模型转换为 Caffe 模型的源代码 有什么解
  • CUDA 确定每个块的线程、每个网格的块

    我是 CUDA 范式的新手 我的问题是确定每个块的线程数和每个网格的块数 这是否需要一些艺术和尝试 我发现许多例子似乎为这些事情选择了任意的数字 我正在考虑一个问题 我可以将任意大小的矩阵传递给乘法方法 这样 C 的每个元素 如 C A B
  • OpenCL 在调用 clGetPlatformIDs 时崩溃

    我是 OpenCL 新手 在配备 Intel R HD Graphics 4000 运行 Windows 7 的 Core i5 计算机上工作 我安装了支持 OpenCL 的最新 Intel 驱动程序 GpuCapsViewer 确认我有
  • 在 python docker 镜像上使用 GPU

    我正在使用一个python 3 7 4 slim busterdocker 镜像 我无法更改它 我想知道如何使用我的英伟达 GPU on it 我通常用一个tensorflow tensorflow 1 14 0 gpu py3并用一个简单
  • 无法初始化 NVML:几个小时后 Docker 中出现未知错误

    我遇到有趣而奇怪的问题 当我使用 GPU 启动 docker 容器时 它工作正常 并且我看到 docker 中的所有 GPU 然而 几个小时或几天后 我无法在docker中使用GPU 当我做nvidia smi在泊坞窗机器中 我看到这条消息
  • OpenCL 内核在 Nvidia GPU 上每个线程使用多少寄存器?

    我的第一个问题是如何获取 Nvidia GPU 上 OpenCL 内核代码的寄存器使用信息 因为 nvcc 编译器给出了相同的使用信息nvcc ptxas options vCUDA 内核代码的标志 我还从 AMD GPU for Open

随机推荐

  • 如何有效阅读《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 其中包含训练数据所需的一切 每个