在滴滴云 GPU 服务器上使用NVIDIA NGX环境搭建

滴滴云技术支持发表于:2020年03月12日 20:52:35更新于:2020年03月13日 10:06:23

1、NGX 简介

NVIDIA NGX是一个新的深度学习技术,将基于AI的加速和增强图像、视频处理的功能直接集成到应用程序中。NVIDIA NGX利用Tensor Core最大限度地提高其运行效率,因此需要一个具备RTX能力的GPU。NGX SDK使开发人员能够很容易地将与训练好的AI模型功能集成到应用程序中。

NGX需要在WIndows环境下使用,需要开发者同意加入 Early Access Program,才可以获得NGX SDK。目前SDK有1.0和1.1两个版本,SDK中包含图像修补、视频慢动作(视频插值)、图像超分辨、视频超分辨四个demo功能。


NGX官网

0015e6a2dda2b9287767110a5cd136e

NGX架构由两部分组成:

1、NGX软件:通过NGX SDK,RTX的功能能够集成到任何游戏、应用程序或插件中。这是人工智能加速功能的主要代码,但功能的实现也需要经过训练的神经网络。NGX被设计成精简的头文件-指向NVIDIA驱动程序中的DLL,使得集成RTX功能扩充到任何应用程序变得简单。NGX SDK能够让游戏、数字内容创建和编辑程序访问许多RTX技术和功能。NGX的功能与NVIDIA驱动程序和硬件紧密耦合,并充分利用了具备RTX功能的gpu中的Tensor核心。
2、NGX功能:驱动程序下载中包含了经过训练的深度神经网络(DNNs)。这些神经网络是可更新的,保证这些功能的性能表现不断改善。


2、如何在滴滴云 GPU 服务器上搭建 NGX 环境


步骤 1:购买滴滴云 GPU 服务器


0015e6a2e1bdfe93c87eac1a4f77d5e

注意选择GPU云服务器(GPU型号选择 G4)


OS镜像选择 Windows 10企业中文版,注意目前 NGX 只支持 Windows,Linux 系统无法运行。

0015e6a2e6a25d7d00c7f7b13a720b1

有关Windows云主机的使用教程,请查看【link


进入云主机后:

1、下载Nvidia 驱动 (驱动版本 >= 410.63)

2、下载NGX SDK 1.0 或者 NGX SDK 1.1 (开发者需同意加入 Early Access Program)

3、下载Visual Studio 2017 Community (请注意选择 Windows 10 SDK (10.0.10586))

Visual Studio 2017 安装详细信息如下图所示:

0015e6a2eb34124eeb247a8c93cda9e

全部安装完成后,打开VS2017,打开NGX Samples解决方案(默认安装在:C:\ProgramData\NVIDIA Corporation\NVIDIA NGX SDK\Samples\NGX Samples),在配置下拉列表里选择Debug x64 或者 Release x64,从Build目录选择 Build Solution即可。生成的程序和依赖的DDLs都位于NGX Samples路径下的x64\Deug或者x64\Release中,如下图所示,共有inpaint.exe、isr.exe、slomo.exe、vsr.exe四个可执行程序,分别对应着图像修补、图像超分辨、视频慢动作(视频插值)、视频超分辨四个demo功能。每个程序需要在CMD命令行下执行。

0015e6a2edfa3f42c5f863d8bd89d6b

运行程序:

CMD下直接执行程序,会得到程序的可选项。给定可选项参数即可运行程序。

1、在运行图像修复时,NGX提供了例程图片,执行如下命令即可,输出结果存储于C盘下的inpaint.png。

x64\Release>inpaint.exe --input ..\..\SampleImages\inpaint_input.png --mask ..\..\SampleImages\inpaint_mask.png --model 0 --output c:\inpaint.png

其中 inpaint_input.png (下图左)为待修复图像,inpaint_mask.png (下图中)为待修复的mask,inpaint.png (下图右)为修复结果。

0015e6a2f68f2dcde99470c3c2b5df0

0015e6a2f230b02692246bb86de6227

0015e6a2f6239a9fbff8e49ad84b5ef

2、在运行图像超分辨时,需开发者自己提供图片,比如保存到C:\tmp_input,执行如下命令,输出结果存储于C:\tmp_output\

x64\Release>isr.exe --factor 8 --input C:\tmp_input\test.png --output C:\tmp_output\test_x8.png

其中 test.png (下图左,分辨率:200x200) 为输入图像,test_x8.png(下图右,分辨率:1600x1600)0015e6a2fae9cd2c7aceea078c1003a

3、在运行视频超分辨、慢动作时,同样需开发者自己提供输入视频,视频分辨率建议不要超过720P,视频格式编码请参考:https://developer.nvidia.com/ffmpeg

执行如下命令,输出结果存储于C:\tmp_output\

x64\Release>slomo.exe --frames 1 --input C:\tmp_input\vid_demo_1.mp4 --output C:\tmp_output\vid_demo_slomo.mp4

其中 vid_demo_1.mp4 (下图左) 为输入视频,vid_demo_slomo.mp4(下图:中)为NGX处理后的慢动作视频,vid_demo_vsr.mp4(下图右)为NGX处理后的超分辨视频。

0015e6a2ffda73cd354dd716be03f01

0015e6a302809ab73eea90dbd0c7b35

0015e6a3027decdc6b178bd78ae1a31