人工智能/深度学习

使用外部 GPU 在 Linux 笔记本电脑上加速机器学习

随着 Intel Thunderbolt 3 在笔记本电脑中的引入,您现在可以使用外部 GPU ( e GPU )外壳来使用专用的 GPU 来进行游戏、制作和数据科学。霹雳 3e GPU 设置包括

  • 离散的
  • 用来安置它的围栏
  • 电源
  • 与笔记本电脑的 Thunderbolt 3 连接

大多数外壳都提供了所有这些,所以您只需要使用一台带有 Thunderbolt 3 的笔记本电脑。

因为我很看重轻薄笔记本的便携性,但希望用一台 GPU 的原始马力来完成严肃的工作, e GPUs 让我可以两全其美。通过一根 Thunderbolt 3 电缆,我可以将我的笔记本电脑连接到一个强大的专用 GPU 、多个显示器和外围设备。

选择硬件

e GPU 解决方案的性能在很大程度上取决于 GPU 的性能、 CPU 的性能以及两者之间的连接带宽。

确保您的笔记本电脑支持 Thunderbolt 3

Thunderbolt 3 是一个通过 USB-C 工作的硬件接口,在主机 CPU 和 GPUs 等设备之间支持多达四个 PCI Express ( PCIe )通道,这为您提供了理论上的最大值:

4 x 8Gbps (the bandwidth of a single PCIe Gen3 lane) = 32 Gbps

笔记本电脑制造商可以设计少于四个通道的笔记本电脑,因此您应该咨询笔记本电脑制造商,以了解在您的机器上使用 Thunderbolt 3 有多少个 PCIe 通道可用。 e GPU . io 上的人维护着一个 e GPU 应用的最佳笔记本电脑 的列表。

Windows 和 Linux 支持 e GPUs 。这篇文章关注的是 ubuntulinux 上的 e GPUs 。我使用的笔记本电脑是运行 ubuntu20 . 04lts 的联想 thinkpadx1yoga (第四代),但是这篇文章已经在 ubuntu18 . 04lts 上测试过了。

选择存储模块

虽然存储模块在功能、大小、供电和成本方面各不相同,但 e GPU . io 的工作人员也会对 霹雳 3 外壳列表 进行维护,并对其功能进行简要描述,以帮助您做出决定。我的选择是十四行诗 eGFX 分离盒( 350W )。

选择 GPU

您对 GPU 的选择取决于您的用例和对外壳的选择。一些考虑因素包括功耗、卡大小、 GPU 内存和时钟速度。我选择的 GPU 是 RTX 2080 Super 。

设置 Ubuntu 以使用 NVIDIA e GPU

本文假设您将使用 Ubuntu18 . 04LTS / 20 . 04LTS 。

安装 CUDA 和 NVIDIA 驱动程序

在 e GPU 连接的情况下安装 Ubuntu 并重新启动。

将系统更新到最新内核:

$ sudo apt-get update
$ sudo apt-get dist-upgrade

确保系统检测到 NVIDIA GPU 并且加载了合适的驱动程序:

$ lspci | grep -i “nvidia”
$ lsmod | grep -i “nvidia”

现有的驱动程序很可能是 Nouveau , NVIDIA GPUs 的开源驱动程序。因为 Nouveau 不支持 e GPU 设置,所以应该安装 NVIDIA CUDA 和 NVIDIA 驱动程序。您还必须停止内核加载 Nouveau 。

为您的发行版获取 NVIDIA CUDA 工具箱 的最新版本。对于 Ubuntu 20 . 04 ,可以从标准存储库获取此工具箱:

$ sudo apt-get install nvidia-cuda-toolkit

将 Xorg 卸载到 e GPU

在安装了 NVIDIA 专有驱动程序之后,通过在/ etc / gdm3 中注释出# WaylandEnable = false ,确保 Ubuntu 18 . 04 / 20 . 04 的 gdm3 (图形登录管理器)没有使用 Wayland /自定义. conf :

# GDM configuration storage
# # See /usr/share/gdm/gdm.schemas for a list of available options.
[daemon]
# Uncomment the line below to force the login screen to use Xorg
WaylandEnable=false

然后,将 3 附加到/ etc / DEFAULT / GRUB 中的 GRUB _ CMDLINE _ LINUX _ DEFAULT 后面,引导到运行级别 3 :

#If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration' GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

最后,更新 grub 并重新启动:

$ sudo update-grub
$ sudo shutdown --reboot

重新启动到运行级别 3 并检查 NVIDIA 专有驱动程序是否已加载:

$ nvidia-smi

编辑/ usr / share / X11 / xorg . conf 公司. d / 10- NVIDIA . conf 在 OutputClass 中添加一个附加选项,以允许 NVIDIA X 驱动程序加速 X ,而不是由集成的 GPU 驱动:

Section "OutputClass" Identifier "nvidia" MatchDriver "nvidia-drm" Driver "nvidia" Option "AllowExternalGpus" "True" Option "AllowEmptyInitialConfiguration" ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"
EndSection

将/ etc / default / grub 还原为默认值,方法是从 grub _ CMDLINE _ LINUX _ default 中删除“ 3 ”,然后更新 grub :

$ sudo update-grub

通过查看$ NVIDIA -smi 的输出,重新启动并检查以确保您的 X 会话被 NVIDIA NVIDIA 加速。

$ nvidia-smi output
Terminal running nvidia-smi and showing the Xorg process and thus, the X server, running on the NVIDIA eGPU.
图 1 。 NVIDIA -smi 显示 X 服务器正在 NVIDIA e GPU 上运行,其他使用指标。

结果应该显示至少一个 GPU 的利用率,即 e GPU 存储模块中的一个。可能会显示其他 GPUs ,这取决于您的系统有多少 NVIDIA GPUs 。如果您看到进程 /usr/lib/xorg/Xorg ,这意味着您的 X 会话正在被 NVIDIA GPU 加速。

使用 NGC 容器

容器提供了一种设置开发环境的简单方法。 NGC 上的容器注册表跨越人工智能、数据科学和 HPC ,拥有广泛的 GPU 加速软件 NVIDIA GPUs 。 NGC 托管了顶级人工智能和数据科学软件的容器,这些软件由 NVIDIA 进行了调优、测试和优化,同时还为 HPC 应用和数据分析提供了经过充分测试的容器

现在您已经安装了 NGC 驱动程序,您可以安装 NVIDIA – 玩偶 并从 NGC 下拉 NGC NGC – 优化容器来执行各种任务:

有关如何使用 NGC 容器的更多信息,请参阅 NGC 入门指南

下面是一个使用 NGC 图像运行 深水流 的示例:

dsingal@dsingalX1NV:~$ sudo docker pull nvcr.io/nvidia/deepstream:5.0-20.07-triton
dsingal@dsingalX1NV:~$ xhost +
dsingal@dsingalX1NV:~$ docker run --gpus all -it --rm -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY -w /opt/nvidia/deepstream/deepstream-5.0 nvcr.io/nvidia/deepstream:5.0-dp-20.04-triton
root@dsingalX1NV:/opt/nvidia/deepstream/deepstream-5.0# deepstream-app -c ./samples/configs/deepstream-app/source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
Image of a road and sidewalk. Bounding boxes around the cars, people, and around the bicycle carried by a pedestrian identifying them as such.
图 2 。 在 deepstream 容器中运行 deepstream 应用程序以检测视频中的对象。

结论

现在您已经设置了 e GPU ,您可以通过执行类似于 使用 NVIDIA Riva 加速文本到语音转换用 NVIDIA Merlin 构建深度推荐系统使用 NVIDIA DeepStream 构建 IVA 应用程序 等操作来利用可用的大规模并行计算。

请务必加入 NVIDIA 开发人员计划 以获得教程、培训和开发人员技术活动的访问权限,并使用最新的 NVIDIA SDK 和工具加速您的应用程序。

Tags