我从2019年开始用NVIDIAJetsonNano开发套件,最初是被NVIDIA推出的Jetbot智能小车所吸引。这款小车售价不超过2,000元,可以实现智能避撞功能,总共使用了大约10个零件(具体见下图)。我只花了大约6个小时的时间,几乎不需要焊接,就完成了小车的组装。然后,我就可以开始执行教程中的几个基本功能,非常方便。
虽然后续并没有持续在智能小车上开发更多应用,但是Jetbot所使用的JetsonNano开发套件,却成为笔者学习人工智能与边缘计算的最重要工具,因为它解决了不少对笔者造成困扰的问题,主要如下:
(一)满足双系统操作
由于近年来人工智能技术都是基于人工神经网络的基础,而CUDAGPU经过10年以上的验证,是目前最适合执行大型神经网络的计算架构,因此笔者最初学习人工智能应用时,就是在一台x86系统上安装CUDA架构的GPU计算卡,最入门的设备也只需要5,000人民币的购置成本,以及500W以上的使用功耗。
最麻烦的问题,就是大部分关于人工智能的资源是基于Linux操作系统发展的,如果要复现前人的精华成果,就得在大致相同的环境下进行操作。但是Linux操作系统上缺少很多日常办公用途的软件,例如微信、QQ、Photoshop等依赖度高的应用,因此搭建“双系统”环境就成为第一个挑战。
这里的“双系统”并非指在一台机器上安装两个可启动的操作系统,然后在开机时选择要启动Windows或Ubuntu系统,因为这种方式一次也只能启动一个,并不能解决前面所提到的问题。
以下提供两种解决方案:
使用虚拟机技术
VMware或VirtualBox等虚拟机可能是比较好的选择,但目前这些技术并不支持直连GPU的功能,如果在Windows操作系统搭建Ubuntu虚拟机,是无法提供对CUDA开发环境的支持,也就无法执行GPU的智能计算功能。
于是解决的方案就是在x86机器上先安装Ubuntu操作系统,然后创建Windows的虚拟机,这样就能在Ubuntu上执行编程调试等开发任务,在Windows虚拟机上执行办公相关的操作,是目前看来比较合适的搭配。
最终存在的问题,就是您得将 Windows 操作系统完整迁移到虚拟机上,否则从头创建一个新的操作环境,代表很多设定或密码也得重来一次。
使用两套独立系统
大部分先进技术工作者都会使用便携式办公设备,例如笔记本电脑或平板电脑,而这类设备几乎都不具备 CUDA GPU 开发能力。因此要学习或开发人工智能应用的话,就需要另一台具备 CUDA 开发环境的独立系统,然后从惯用的办公设备去远程操作 CUDA 计算设备,这样的组合是最合适的方式,互相不影响。
在 NVIDIA 推出 Jetson 嵌入式设备之前,我们只能选择在 x86 电脑插上 CUDA 架构 GPU 计算卡的方式。由于体积、重量和电源等方面等限制,这种设备不能随身携带到任何地方进行开发、测试或演示。
如今 Jetson Nano 的特性能解放这些束缚,让我们能在绝大部分环境下执行任务。下表是 Jetson Nano 与 x86 系统安装 GPU 卡的一些基本特性比较表:
Jetson Nano 定位在智能边缘的推理计算,并不适合执行人工智能的模型训练任务,以及对“延迟”较为敏感的应用,但是作为入门者的学习工具,以及开发轻量级的边缘智能推理应用,是再适合不过了。
(二)随时随地操作
要执行远程操作的前提,就是需要在两台设备上形成连线。在办公室或家中有网络的环境下,可以较为轻松地使用 Wi-Fi 方式进行连线,但如果在没有网络或不能自主获取 IP 的环境下,为两台设备建立连线则有一些挑战。
NVIDIA 为 Jetson Nano 提供一种“无头(headless)”连线方式,只需要一条具备数据传输能力的 USB/MicroB 连接线,在 Jetson Nano 与办公电脑之间,按照下图接线就能形成连线,此时 Jetson Nano 会提供一个 192.168.55.1 的固定 IP,这样就能在办公电脑上非常轻松地操作 Jetson Nano。
此外,如果所处环境缺乏电源插口,我们也可以用一般 5V 充电宝来为 Jetson Nano 提供电源,如此一来就完全不会受到任何的限制,只要带好笔记本电脑、Jetson Nano、USB 线以及充电宝这四个东西,就能在任何地方执行任务,这是 x86 电脑所不能提供的特性。