0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NVIDIA Jetson Nano 2GB:视觉类脚本的环境配置与映射

NVIDIA英伟达企业解决方案 来源:NVIDIA英伟达企业解决方案 作者:NVIDIA英伟达企业解 2022-04-01 09:38 次阅读

在 TAO 提供的数据类范例中,每个脚本的第一个步骤都是环境配置(0. Set up env variables and map drives),包括要求用户提供在 NGC 所生成的密钥,对后面训练的模型进行保护,以及指定要使用的 GPU 数量等等,这几个设定都很直观容易处理,但接下去的环境变量配置部分,就让大部分初学者停滞不前,因为任何一项路径配置错误,都会影响后面工作的正常进行,而每个实验脚本所提供的说明,对初学者来的帮助并不大,很多新手按照其字面解释去进行设定,但总是没法调整到完全正确。

因此我们必须在大家执行实验之前,先以专文将这部分的配置说明清楚,然后提供一个最简单的步骤,让大家用最轻松的方法来进行配置。

本文使用范例的 detectnet_v2.ipynb 做示范,首先看一下第一指令块中的设定内容:

[  ]  import os
%env KEY=tlt_encode%env NUM_GPUS=1%env USER_EXPERIMENT_DIR=/workspace/tao-experiments/detectnet_v2%env DATA_DOWNLOAD_DIR=/workspace/tao-experiments/data
# %env NOTEBOOK_ROOT=~/tao-samples/detectnet_v2os.environ["LOCAL_PROJECT_DIR"] = FIXMEos.environ["LOCAL_DATA_DIR"] = os.path.join(    os.getenv("LOCAL_PROJECT_DIR", os.getcwd()),    "data")os.environ["LOCAL_EXPERIMENT_DIR"] = os.path.join(    os.getenv("LOCAL_PROJECT_DIR", os.getcwd()),    "detectnet_v2")
# The sample spec files are present in the same path as the downloaded samples.os.environ["LOCAL_SPECS_DIR"] = os.path.join(    os.getenv("NOTEBOOK_ROOT", os.getcwd()),    "specs")%env SPECS_DIR=/workspace/tao-experiments/detectnet_v2/specs

稍微整理一下,除了KEYNUM_GPUS 两个变量之外,共有7个与路径有关的变量:

  • USER_EXPERIMENT_DIR

  • DATA_DOWNLOAD_DIR

  • LOCAL_PROJECT_DIR

  • LOCAL_DATA_DIR

  • LOCAL_EXPERIMENT_DIR

  • LOCAL_SPECS_DIR

  • SPECS_DIR

其实稍微整理一下就更容易理解,下表就是将这7个变量分为两组,以 “LOCAL_” 开头的属于 “容器外” 用途,另外 3 个属于容器内用途。

用途

容器外(主机上)

容器内(沿用TLT的习惯)

项目工作位置

LOCAL_PROJECT_DIR

存放模型训练输出结果

LOCAL_EXPERIMENT_DIR

USER_EXPERIMENT_DIR

存放数据集的路径

LOCAL_DATA_DIR

DATA_DOWNLOAD_DIR

配置文件存放路径

LOCAL_SPECS_DIR

SPECS_DIR

什么是容器内与容器外?前面提过 TAO 用两套独立的 Docker 容器,分别为视觉类与对话类提供模型训练功能,并透过 TAO 启动器的 CLI 指令执行各项任务。

虽然我们所有操作都在容器外的宿主机上,例如在指令终端下达 tao detectnet_v2 train ...,或者在 Jupyter 交互环境里执行 “!taodetectnet_v2 train ...” 指令,但是 TAO 启动器会将这些指令传递到容器,在后台为我们执行对应的任务。

这种处理方式的最大好处是,让不懂 Docker 的初学者完全无需理会容器技术,只要专注于 “模型训练” 的重点工作就行,如此就能让 TAO 的普及程度更快与更广,这也是 TAO 工具的一项非常重要意义。

但为何需要使用两套路径来处理呢?全部都在容器内执行不是更加简单?这里有个最严肃的问题是 “容器的生命周期” ,如果将数据保留在容器内处理的话,一旦容器关闭或销毁时,我们所有实验数据都将付之一炬,这是一项大家都承担不起的风险,因此我们必须将所有的数据存放在容器外面,然后透过路径映射 (mapping) 的方式来处理。

其次就是对于数据整理与文件修改的能力,在容器内操作是相对不方便的。要知道在执行模型训练之前,通常得先下载数据集的压缩文件、移动文件、进行解压缩、修改配置文件等等,这些任务在宿主机上操作是相对轻松的。

好了,当我们清楚 TAO 的视觉类模型训练脚本中,存在容器内与容器外两组环境路径的原因之后,接着就来看该如何设置与映射。

我们将前面的列表进行展开,前面 4 个是容器外的变量、后面 3 个是容器内变量:

环境变量

设定值

LOCAL_PROJECT_DIR

需要设置

LOCAL_EXPERIMENT_DIR

$LOCAL_PROJECT_DIR/<项目名>

LOCAL_DATA_DIR

$LOCAL_PROJECT_DIR/data

LOCAL_SPECS_DIR

<执行脚本所在目录>/specs

USER_EXPERIMENT_DIR

/workspace/tao-experiments/<项目名>

DATA_DOWNLOAD_DIR

/workspace/tao-experiments/data

SPECS_DIR

/workspace/tao-experiments/<项目名>/specs

假如在执行格内的变量按照上表的顺序去排列,事情就会变得非常单纯。

事实上,从头到尾我们只要将 “LOCAL_PROJECT_DIR” 设置为”执行脚本所在目录”,那么后面三个容器外变量就立即建立好对应关系,我们完全不需要做任何处理理会。至于容器内的三个变量,每个脚本的配置规则都是一样,也就是不需要去改变。

把上面的对应关系了解清楚之后,整个状况就变得非常简单,现在回头看看第一个指令块,里面需要输入的变量其实只有以下三个:

  • %env KEY= <自己在NGC上申请的秘钥>

  • %env NUM_GPUS= <根据设备配置,给定调用的GPU数量>

  • os.environ["LOCAL_PROJECT_DIR"] = os.getcwd()

其他 6 个变量完全不做任何修改,这样就能够顺畅地跑动后面的指令块。

接下去的工作就是执行 “路径映射” 任务,为容器内外的路径建立对应的关系。几乎所有训练脚本都采用下面的映射方式:

[  ]  # Define the dictionary with the mapped drivesdrive_map = {    "Mounts": [        # Mapping the data directory        {            "source": os.environ["LOCAL_PROJECT_DIR"],            "destination": "/workspace/tao-experiments"        },        # Mapping the specs directory.        {            "source": os.environ["LOCAL_SPECS_DIR"],            "destination": os.environ["SPECS_DIR"]        },    ]}

执行这个路径映射的指令块之后,会将这些值写入 “~/.tao_mounts.json” 文件里面,这是 TAO 启动器每次调用容器时都需要参考的配置文件,但是这个文件是 “唯一” 的,也就是同一时间只会存在一组容器内外的路径映射关系,这表示系统不能同时执行两个以上的模型训练脚本,这点也请务必牢记。

紧跟着的 “1.Install the TAO launcher” 步骤可以直接跳过,因为我们在前面已经带着大家安装好 TAO 启动器,这里顶多执行 “!taoinfo” 指令,确认一下是否回应正确讯息。

现在就可以开始进行 TAO 所提供的各种神经网络的模型训练脚本。

审核编辑 :李倩
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4787

    浏览量

    101455
  • NVIDIA
    +关注

    关注

    14

    文章

    5098

    浏览量

    104249
  • 变量
    +关注

    关注

    0

    文章

    613

    浏览量

    28533

原文标题:NVIDIA Jetson Nano 2GB 系列文章(57):视觉类脚本的环境配置与映射

文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    探索NVIDIA Jetson与DeepSeek融合的无限可能

    能力高效地部署到边缘设备中已然成为行业关注的焦点。NVIDIA Jetson 系列作为边缘计算领域的佼佼者,凭借其高性能、低功耗的特性,能够为 DeepSeek 等 AI 模型的端侧推理提供理想的硬件支持。
    的头像 发表于 02-21 14:31 244次阅读
    探索<b class='flag-5'>NVIDIA</b> <b class='flag-5'>Jetson</b>与DeepSeek融合的无限可能

    NVIDIA JetPack 6.2引入Super模式

    NVIDIA Jetson Orin Nano Super 开发者套件的推出开创了小型边缘设备生成式 AI 的新时代。全新的 Super 模式为生成式 AI 性能带来了空前的提升,最多可提升至 1.7 倍,使其成为高性价比的生成
    的头像 发表于 02-12 09:32 211次阅读
    <b class='flag-5'>NVIDIA</b> JetPack 6.2引入Super模式

    NVIDIA Jetson Orin Nano开发者套件的新功能

    生成式 AI 领域正在迅速发展,每天都有新的大语言模型(LLM)、视觉语言模型(VLM)和视觉语言动作模型(VLA)出现。为了在这一充满变革的时代保持领先,开发者需要一个足够强大的平台将云端的最新模型无缝部署到边缘,从而获得基于 CUDA 的优化推理性能和开放式机器学习(
    的头像 发表于 12-23 12:54 418次阅读
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>Jetson</b> Orin <b class='flag-5'>Nano</b>开发者套件的新功能

    NVIDIA发布小巧高性价比的Jetson Orin Nano Super开发者套件

    NVIDIA近期推出了一款全新的生成式AI超级计算机——Jetson Orin Nano Super开发者套件。这款开发者套件以其小巧的尺寸和高性价比吸引了广泛关注。 Jetson O
    的头像 发表于 12-19 11:28 721次阅读

    NVIDIA 推出高性价比的生成式 AI 超级计算机

    Jetson Orin Nano Super 可将生成式 AI 性能提升至1.7 倍,支持科技爱好者、开发者和学生使用的主流模型。     NVIDIA 推出了一款全新的尺寸小巧的生成式 AI 超级
    发表于 12-18 17:01 523次阅读
    <b class='flag-5'>NVIDIA</b> 推出高性价比的生成式 AI 超级计算机

    u-blox深化与NVIDIA JetsonNVIDIA DRIVE Hyperion平台合作

    近日,作为提供定位和无线通信技术及服务的全球领先供应商u-blox(SIX:UBXN)宣布,作为在工业和汽车市场高精度定位领域的战略增长计划的关键一环,u-blox公司现已加强对NVIDIA JetsonNVIDIA DRIV
    的头像 发表于 12-09 14:08 343次阅读

    雷卯针对NVIDIA英伟达JETSON Orin NX开发板防静电推荐器件示意图

    一、应用场景 1. 生成性 AI 的端到端开发 2. 边缘 AI 3. 机器人应用 二、 功能概述 1. 处理器: Jetson Orin NX 8GB: 6核Arm° Cortex®-A78AE
    的头像 发表于 11-22 19:13 296次阅读
    雷卯针对<b class='flag-5'>NVIDIA</b>英伟达<b class='flag-5'>JETSON</b> Orin NX开发板防静电推荐器件示意图

    初创公司借助NVIDIA Metropolis和Jetson提高生产线效率

    初创公司使用 NVIDIA Metropolis 视觉 AI 和 Jetson 边缘 AI 平台提高生产线效率。
    的头像 发表于 11-19 14:39 307次阅读

    Made with KiCad(二):Jetson Origin Baseboard

    “   该项目包含支持NVIDIA Jetson Orin NanoJetson Orin NX系统模块 (SoMs)的基板并开源了所有硬件设计文件。该基板对SoM的IO接口进行了
    的头像 发表于 11-12 12:24 1257次阅读
    Made with KiCad(二):<b class='flag-5'>Jetson</b> Origin Baseboard

    使用NVIDIA Jetson打造机器人导盲犬

    Selin Alara Ornek 是一名富有远见的高中生。她使用机器学习和 NVIDIA Jetson边缘 AI 和机器人平台,为视障人士打造了机器人导盲犬。
    的头像 发表于 11-09 13:51 372次阅读

    e络盟发售功能强大的入门级 Raspberry Pi 5 2GB

    安富利旗下全球电子元器件产品与解决方案分销商e络盟日前开售极具性价比的全新 Raspberry Pi 5 2GB
    的头像 发表于 09-02 10:39 398次阅读
    e络盟发售功能强大的入门级 Raspberry Pi 5 <b class='flag-5'>2GB</b>

    使用myAGV、Jetson Nano主板和3D摄像头,实现了RTAB-Map的三维建图功能!

    本文将展示如何使用myAGV Jetson Nano移动平台搭载Jetson Nano BO1主板,结合RTAB-Map和3D相机,实现更加立体和细致的
    的头像 发表于 08-28 10:22 821次阅读
    使用myAGV、<b class='flag-5'>Jetson</b> <b class='flag-5'>Nano</b>主板和3D摄像头,实现了RTAB-Map的三维建图功能!

    如何在tx2部署模型

    在本文中,我们将详细介绍如何在NVIDIA Jetson TX2上部署深度学习模型。NVIDIA Jetson TX
    的头像 发表于 07-09 10:16 769次阅读

    Nvidia Jetson Nano + CYW55573/AWXB327MA-PUR M.2无法使用操作系统内置的网络管理器管理Wi-Fi如何解决?

    我们使用的是 Nvidia Jetson Nano + CYW55573/AWXB327MA-PUR M.2 ,请参阅 Nvidia
    发表于 05-23 06:47

    NVIDIA推出搭载GB200 Grace Blackwell超级芯片的NVIDIA DGX SuperPOD™

    NVIDIA 于太平洋时间 3 月 18 日发布新一代 AI 超级计算机 —— 搭载 NVIDIA GB200 Grace Blackwell 超级芯片的 NVIDIA DGX Sup
    的头像 发表于 03-21 09:49 860次阅读