Sarat Lingamarla, MathWorks
在这部影片中,你将通过一个常规工作流走了部署生成CUDA®从MATLAB深刻学习示例代码®到云中。
MATLAB提供了工程师和科学家去探索,试制,并内置有更高级别的应用程序和库部署一个熟悉的开发环境深度学习算法的完整集成的工作流。
使用GPU编码器™,可以生成CUDA代码的完整深度学习的应用程序,它包括围绕一个训练有素的网络并部署前处理和后处理逻辑任何云平台像AWS®,微软Azure®等。
大家好,我的名字是Sarat,今天我将向大家展示如何使用GPU编码器生成CUDA代码,并将其部署到Amazon Web Services上,让一个简单的Web应用程序与生成的代码进行交互。
在开始实际的实现之前,下面是演示的结果。
一个简单的网络应用程序,运行在CUDA可执行文件创建使用GPU编码器,允许用户上传图像,并分类使用一个预先训练的深度学习网络:alexnet。
我可以用这张图显示了从我们的文档页面辣椒,把它上传到服务器,并单击预测摆脱Alexnet输出的分类。
下面是演示的概述。我们正在使用GPU编码器生成CUDA代码。然后,我们将生成的源代码上传到Amazon S3 bucket,并使用Amazon Codedeploy将其部署到EC2实例或虚拟机。
一旦我们对EC2实例的源代码,我们可以建立一个使用NVIDIA CUDA编译器的可执行文件。
我将在几分钟内更详细地解释这些步骤。
首先,我们将使用MATLAB函数来生成CUDA代码。
这是一个MATLAB函数,我已经通过修改我们的GPU编码器的文档了深刻的学习例子写的。你可以找到一个链接到下面这个网页。
在这个函数中,我们使用文件名输入读取图像,对图像进行预处理并将其输入到预先训练好的网络“alexnet”中,然后返回分类输出。
一旦我们创建了一个MATLAB功能,我们可以使用一个单独的脚本生成一个静态库,动态库或可执行。在这种情况下,我们正在创造一个静态库。
此外,我们还使用了packNGo功能打包的依赖关系为“imread”功能。
在这种情况下运行的代码生成命令会给你一个zip文件夹包含所有的依赖关系和文件夹包含生成的代码代码生成。
提取并在Zip文件夹所有文件都复制到代码生成目录。所生成的代码将包含一个模板文件main.cu和对应的头文件。
我们需要修改这些文件,以接受一个文件名作为输入。使得所需的更改主文件后,我们就可以部署生成的代码到云中。
如果你愿意,你也可以将此应用程序使用此主文件现有的代码集成。
移动到工作流程的一部分AWS:
对于本演示中,我使用这个AMI从亚马逊的市场,因为它提供了运行在GPU上生成的代码所需要的所有的CUDA库。
我们也有一个文件交换帖子详细描述了一些步骤。
按照相应的步骤,您可以配置需要这个演示所有AWS组件。
一旦您创建了一个EC2实例和一个S3 bucket,我们就可以将codegen目录上传到S3 bucket了。
我们还需要指定的源代码的源和目标路径的YAML文件。
然后,我们将使用AWS命令行界面上传的文件。
我们已经成功上传文件到Amazon S3。
现在,我们将使用codedeploy到我们的源代码部署到一个EC2实例。
使用带有codedeploy的S3将允许我们维护源代码的版本或修订,并拥有一个持续的部署管道。
假设你已经配置Codedeploy,我们将创建在codedeploy应用部署。
我们将在这里选择S3,输入S3 bucket的路径,然后单击create deployment。
现在,我们在新创建的EC2实例上有一个codegen目录,位于Codedeploy YAML文件中提到的路径中。
我们将使用部署的源代码来生成可执行文件。
为此,我们将更新make文件中源代码的路径并运行它。
然后,我们将使用NVIDIA CUDA编译器从这个静态库生成可执行文件。
您现在有一个CUDA可执行文件在云中的GPU上运行,并允许您使用分类图像alexnet。
通过访问下面的文件交换链接,您可以按照本视频中列出的步骤进行操作。