当前位置: 首页 > news >正文

利用 NVIDIATAO 和 WeightBias 加速AI开发

利用 NVIDIATAO 和 Weight&Bias 加速AI开发

在这里插入图片描述

利用图像分类、对象检测、自动语音识别 (ASR) 和其他形式的 AI 可以推动公司和商业部门内部的大规模转型。 然而,从头开始构建人工智能和深度学习模型是一项艰巨的任务。

构建这些模型的一个共同先决条件是拥有大量高质量的训练数据和准备数据、构建神经网络以及持续微调模型以优化性能的正确专业知识。 对于开始机器学习 (ML) 之旅的组织来说,这通常是一个挑战。 尽管 AI 可以提供明确且可衡量的好处,但高准入门槛往往成为各种规模企业采用 AI 的障碍。

这篇文章讨论了 NVIDIA TAO 工具包和 Weights & Biases MLOps 平台的结合如何帮助启动组织利用 AI 和加速常见 AI 任务的旅程。 开发人员现在可以使用 NVIDIA TAO (Train-Adapt-Optimize) Toolkit 和 Weights & Biases (W&B) 可视化和比较多次训练运行。 此外,我们还将介绍一个用于构建对象检测模型的示例工作流程。

NVIDIA TAO 工具包

NVIDIA TAO Toolkit 是一种低代码解决方案,使开发人员和企业能够加速模型训练和优化过程。 NVIDIA TAO 工具包通过抽象化 AI 模型和深度学习框架的复杂性,降低了 AI 入门者的入门门槛。 借助 NVIDIA TAO 工具包,您可以利用迁移学习的强大功能,使用您自己的数据微调 NVIDIA 预训练模型,并优化推理模型以满足您的业务需求。

NVIDIA TAO Toolkit 支持广泛的计算机视觉任务,例如分类、对象检测、分割、关键点估计、OCR 等。 它提供交钥匙推理优化,可降低模型的复杂性和大小并提高推理吞吐量。

Weights & Biases

Weights & Biases MLOps 平台可帮助 ML 团队更快地构建更好的模型。 只需在笔记本中添加几行代码,您就可以立即调试、比较和重现您的模型——架构、超参数、git 提交、模型权重、GPU 使用、数据集和预测——所有这一切都与您的团队成员协作。

显示 W&B 平台的五个模块的图表:工件、表格、实验、扫描和评估。

在这里插入图片描述

W&B 受到来自世界上一些最具创新性的公司和研究组织的超过 400,000 名 ML 从业者的信任。 要免费试用,请在 Weights & Biases 注册。

集成 NVIDIA TAO 工具包和 Weights & Biases

NVIDIA TAO 工具包使您能够可视化权重和偏差中的所有实验数据。 可视化、比较和对比多个训练运行,以确定哪些候选模型最适合项目的需求,以及哪些超参数对模型性能的影响最大。

集成还将展示每个模型训练如何使用底层硬件以确保资源得到充分利用。 要了解有关如何配置 NVIDIA TAO 工具包并将实验记录到 W&B 的更多信息,请参阅 NVIDIA TAO 工具包 W&B 集成文档。

Image classificationObject detectionSegmentation
EfficientNet B0-B5DetectNet-v2Unet
FasterRCNNMaskRCNN
RetinaNet
YOLOv4/v4-Tiny/v3
SSD/DSSD
EfficientDet

如何通过 NVIDIA TAO 工具包利用 W&B

以下部分将指导您通过一个示例在 NVIDIA TAO 工具包中调整预训练对象检测模型,利用权重和偏差。 首先,设置工具包并将您的 W&B 帐户连接到实例。 然后将工具包中的指标记录到 W&B,并利用实验跟踪、数据可视化和工件跟踪功能。

设置 W&B 帐户

  1. 创建 W&B 帐户(请注意,企业用户应咨询您的 W&B 管理员。)
  2. 复制您的 API 密钥

安装和设置 NVIDIA TAO 工具包

  1. 使用下面的调用下载 NVIDIA TAO Toolkit 资源。 此软件包包含用于安装工具包容器和 Jupyter 笔记本以运行 NVIDIA TAO 工具包的启动脚本。
wget --content-disposition https://api.ngc.nvidia.com/v2/resources/nvidia/tao/tao-getting-started/versions/4.0.0/zip -O getting_started_v4.0.0.zip
unzip -u getting_started_v4.0.0.zip  -d ./getting_started_v4.0.0 && rm -rf getting_started_v4.0.0.zip && cd ./getting_started_v4.0.0
  1. NVIDIA TAO Toolkit 有多种训练方式。 有关每个的详细说明,请参阅 TAO 工具包入门指南。
  • Launcher CLI:您可以使用轻量级 Python CLI 应用程序运行 TAO。 启动器基本上充当基于 PyTorch 和 TensorFlow 构建的多个 NVIDIA TAO 工具包容器的前端。 将根据您计划用于计算机视觉或对话式 AI 用例的模型类型自动启动适当的容器。
  • 直接从容器:您还可以选择直接使用 Docker 容器运行 NVIDIA TAO Toolkit。 要直接使用容器,您需要知道要拉取哪个容器。 TAO Toolkit下有多个容器。 根据您要训练的模型,您需要拉取适当的容器。 使用 Launcher CLI 时不需要这样做。
  • TAO API:您还可以使用 NVIDIA TAO Toolkit API 使用 REST API 运行,这是一种 Kubernetes 服务,可以使用 REST API 构建 AI 模型。 API 服务可以使用 Helm chart 以及最小依赖项安装在 Kubernetes 集群(本地/AWS EKS)上。

配置 NVIDIA TAO Toolkit 以登录 W&B

  1. 配置 W&B API 密钥:要从本地计算单元传输数据并在 W&B 服务器仪表板上渲染数据,必须登录 NVIDIA TAO 工具包容器中的 W&B 客户端并与您的配置文件同步。 要在容器登录中包含 W&B 客户端,请使用您在设置 W&B 帐户时收到的 API 密钥在 NVIDIA TAO 工具包容器中设置 WANDB_API_KEY 环境变量。 有关其他资源,请参阅 TAO 工具包 W&B 集成文档。

Launcher CLI:如果您使用的是 Launcher CLI,请使用下面的示例 json 片段并将 Envs 元素下的值字段替换为 ~/.tao_mounts.json 文件中的 W&B API 密钥。

{"Mounts": [{"source": "/path/to/your/data","destination": "/workspace/tao-experiments/data"},{"source": "/path/to/your/local/results","destination": "/workspace/tao-experiments/results"},{"source": "/path/to/config/files","destination": "/workspace/tao-experiments/specs"}],"Envs": [{"variable": "WANDB_API_KEY","value": "<api_key_value_from_wandb>"}],"DockerOptions": {"shm_size": "16G","ulimits": {"memlock": -1,"stack": 67108864},"ports": {"8888": 8888}}
}

直接从 Docker:如果您直接通过容器运行,请使用 docker 命令的 -e 标志。 例如,要直接通过容器运行带有 W&B 的 detectnet_v2,请使用以下脚本:

docker run -it --rm --gpus all \-v /path/in/host:/path/in/docker \-e WANDB_API_KEY=<api_key_value>nvcr.io/nvidia/tao/tao-toolkit:4.0.0-tf1.15.5 \detectnet_v2 train -e /path/to/experiment/spec.txt \-r /path/to/results/dir \-k $KEY --gpus 4

NVIDIA TAO API:对于 API,将以下代码片段添加到 TAO Toolkit Helm 图表中的 values.yaml 文件:

# Optional MLOPS setting for Weights And Biases
wandbApiKey: <wandb_api_key>
  1. 运行 NVIDIA TAO Toolkit 并将您的指标记录到 W&B。

实例化下载示例目录中存在的 detectnet_v2.ipynb 笔记本:notebooks/tao_launcher_starter_kit/detectnet_v2/detectnet_v2.ipynb。

使用以下脚本取消注释 MLOPS 集成部分下的第一个单元格:

# Uncomment this code block to enable wandb integration with TAO.# # you can get the wandb api key by logging into https://wandb.ai# !pip install wandb## os.environ[\"WANDB_API_KEY\"] = FIXME# import wandb# WANDB_LOGGED_IN = wandb.login()# if WANDB_LOGGED_IN:#     print(\"WANDB successfully logged in.

将下一行中的 FIXME 替换为复制的 W&B 密钥。

os.environ["WANDB_API_KEY"] = FIXME

一旦您传入 API 密钥,W&B 日志记录将默认启用。 有关集成 NVIDIA TAO 工具包和 W&B 的更多详细信息,请参阅 NVIDIA TAO 工具包 W&B 集成文档。

下图显示了通过运行笔记本自动生成的页面示例。

在这里插入图片描述

相关文章:

利用 NVIDIATAO 和 WeightBias 加速AI开发

利用 NVIDIATAO 和 Weight&Bias 加速AI开发 利用图像分类、对象检测、自动语音识别 (ASR) 和其他形式的 AI 可以推动公司和商业部门内部的大规模转型。 然而&#xff0c;从头开始构建人工智能和深度学习模型是一项艰巨的任务。 构建这些模型的一个共同先决条件是拥有大量高…...

token - 令牌

文章目录token - 令牌学前须知&#xff1a;1&#xff0c;base64 防君子不防小人2&#xff0c;SHA-256 安全散列算法的一种&#xff08;hash&#xff09;3&#xff0c;HMAC-SHA2564&#xff0c;RSA256 非对称加密2.1 JWT - json-web-token1&#xff0c;三大组成2&#xff0c;jwt…...

应用模型开发指南上新介绍

Module、HAP、Ability、AbilitySta-ge、Context……您是否曾经被这些搞不懂又绕不开的知识点困扰&#xff1f; 现在&#xff0c;全新的《应用程序包基础知识》及《应用模型开发指南》为您答疑解惑&#xff01; 这里有您关注的概念解析、原理机制阐述&#xff0c;也有丰富的…...

Dbeaver连接Hive数据库操作指导

背景&#xff1a;由于工作需要&#xff0c;当前分析研究的数据基于Hadoop的Hive数据库中&#xff0c;且Hadoop服务端无权限进行操作且使用安全模式&#xff0c;在研究了Dbeaver、Squirrel和Hue三种连接Hive的工具&#xff0c;在无法绕开useKey认证的情况下&#xff0c;只能使用…...

【RabbitMQ笔记09】消息队列RabbitMQ之常见方法的使用

这篇文章&#xff0c;主要介绍消息队列RabbitMQ之常见方法的使用。 目录 一、消息队列常见方法 1.1、连接工厂ConnectionFactory 1.2、连接Connection 1.3、通道Channel 1.4、交换机相关方法 &#xff08;1&#xff09;exchangeDeclare()声明交换机 1.5、队列相关方法 …...

Linux字符设备驱动模型之设备号

从上文中可知&#xff0c;在Linux用户空间中&#xff0c;如若需要操作硬件设备&#xff0c;均通过/dev目录下的设备文件节点进行操作&#xff0c;基本上每一种设备都会存在一个或者多个的设备节点。 并且在Linux内核中&#xff0c;其表示字符设备的结构成员也提供了相应的设备号…...

C++多态原理

请看下面的程序&#xff0c;该程序演示了多态类对象存储空间的大小。 #include <iostream> using namespace std; class A {public:int i;virtual void func() {}virtual void func2() {} }; class B : public A {int j;void func() {} }; int main() {cout << si…...

PMP认证与NPDP认证哪个含金量高?

两个证涉及的领域不一样的&#xff0c;一个是项目管理&#xff0c;对应的是项目经理&#xff1b;一个是产品管理&#xff0c;对应的是产品经理。含金量不能相比&#xff0c;但在各自的领域的含金量是很高的&#xff0c;至少专业程度或者知名度是最高的。 我来分别说一下PMP认证…...

改进YOLOv7-Tiny系列:首发改进结合BiFPN结构的特征融合网络,网络融合更多有效特征,高效涨点

💡该教程为改进进阶指南,属于《芒果书》📚系列,包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容🚀 内容出品:CSDN博客独家更新 @CSDN芒果汁没有芒果 💡本篇文章 基于 YOLOv5、YOLOv7芒果改进YOLO系列:芒果改进YOLOv7-Tiny系列:首发改进结合BiFPN结…...

PPC Insights系列:洞见安全多方图联邦

开放隐私计算开放隐私计算开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神&#xff0c;专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的传播&#xff0c;愿成为中国 “隐私计算最后一公里的服务区”。183篇原创内容公众号知…...

SQLite注入记录(目前最全、核心函数用法、布尔盲注、时间盲注、webshell、动态库,绕过方式)

目录 与Mysql区别 全部核心函数 普通注入 查询所有列 查看所有表名...

Java简单的生成/解析二维码(zxing qrcode)

Hi I’m Shendi Java简单的生成/解析二维码&#xff08;zxing qrcode&#xff09; 在之前使用 qrcode.js 方式生成二维码&#xff0c;但在不同设备上难免会有一些兼容问题&#xff0c;于是改为后端&#xff08;Java&#xff09;生成二维码图片 这里使用 Google 的 zxing包 Jar…...

若依项目导出后端响应的Excel文件流处理

若依开源项目&#xff1a;http://doc.ruoyi.vip/ruoyi-vue 问题 前端 1. download.js 添加自定义方法 /*** 自定义方法&#xff1a;导出后端响应的 excel 文件流* param url 请求后端的接口地址 例如&#xff1a;"/downloadExcel"* param name 响应后的文件名称&…...

华为OD机试【独家】提供C语言题解 - 数组排序

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明数组…...

JVM详解——内存结构

文章目录内存结构1、 运行时数据区2、虚拟机栈3、本地方法栈4、程序计数器5、 堆6、方法区7、运行时常量池8、内存溢出和内存泄漏9、 堆溢出内存结构 1、 运行时数据区 Java虚拟机在运行Java程序期间将管理的内存划分为不同的数据区&#xff0c;不同的区域负责不同的职能&…...

Jvisualvm监控Tomcat以及相关参数优化

Tomcat阻塞模式 阻塞模式&#xff08;BIO&#xff09; 客户端和服务器创建一个连接&#xff0c;它就会创建一个线程来处理这个连接&#xff0c;以为这客户端创建了几个连接&#xff0c;服务端就需要创建几个线程来处理你&#xff0c;导致线程会产生很多&#xff0c;有很多线程…...

界面组件DevExpress WinForms v22.2 - 全面升级数据展示功能

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…...

正点原子第一期

ZYNQ是一个fpga用来硬件编程&#xff0c;外加一个软件编程 FPGA是可通过编程来修改其逻辑功能的数字集成电路 第三篇语法篇 第七章 verilog HDL语法 Verilog的简介 可编程逻辑电路&#xff1a;允许用户自行修改内部连接的集成电路&#xff0c;其内部的电路结构可以通过编程数…...

「mysql是怎样运行的」第24章 一条记录的多幅面孔---事务的隔离级别与MVCC

「mysql是怎样运行的」第24章 一条记录的多幅面孔—事务的隔离级别与MVCC 文章目录「mysql是怎样运行的」第24章 一条记录的多幅面孔---事务的隔离级别与MVCC一、事前准备二、事务的隔离级别事务并发执行遇到的问题SQL标准中的四种隔离级别MySQL中支持的四种隔离级别三、MVCC原…...

入门Java第十五天 线程

一、多线程 1.1进程和线程 进程&#xff1a;进程就是操作系统中运行的每一个应用程序。例如&#xff1a;微信&#xff0c;QQ 线程&#xff1a;线程是进程中的每一个任务。 多线程&#xff1a;在一个进程中&#xff0c;可以同时执行多个线程。同时完成多个任务。 并发&#x…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...