Sarat Lingamarla,Mathworks
在此视频中,您将通过一般的工作流程来部署生成的CUDA®代码来自MATLAB中的一个深度学习的例子®到云上。
MATLAB提供了一个完整的集成工作流,供工程师和科学家在一个熟悉的开发环境中使用内置的高级应用程序和库来探索、原型和部署深度学习算法。
使用GPU编码器™,您可以为完整的深度学习应用程序生成CUDA代码,包括围绕训练过的网络的预处理和后处理逻辑,并部署到任何云平台,如AWS®,微软Azure®等
您好,我的名字是迷人,今天我会向您展示使用GPU编码器的CUDA代码,将其部署到Amazon Web服务,并有一个简单的Web应用程序与生成的代码交互。
在我跳入实际实现之前,这是演示的结果。
一个简单的Web应用程序,它在使用GPU编码器创建的CUDA可执行文件上运行,并允许用户上传图像并使用预先培训的深度学习网络进行分类:AlexNet。
我可以使用这张显示我们文档页面辣椒的图片,把它上传到服务器,然后点击predict,从Alexnet获得分类输出。
这是演示的概述。我们正在使用GPU编码器生成CUDA代码。然后,我们将生成的源代码上传到Amazon S3桶,并使用Amazon CodeDeploy将其部署到EC2实例或虚拟机。
一旦我们在EC2实例上获得了源代码,我们就可以使用NVIDIA CUDA编译器构建可执行文件。
我将在几分钟内更详细地解释这些步骤。
首先,我们将使用MATLAB功能,然后可以生成CUDA代码。
这是一个MATLAB函数,我从我们的GPU编码器文档中修改了一个深度学习的例子。你可以在下面找到这个页面的链接。
在此功能中,我们正在使用文件名输入读取图像,预处理图像并将其馈送到预先训练的网络'AlexNet',然后返回分类输出。
创建MATLAB函数后,可以使用单独的脚本生成静态库、动态库或可执行文件。在本例中,我们生成了一个静态库。
此外,我们还使用了packNGo函数来打包' imread '函数的依赖项。
在本例中运行codegen命令将生成一个包含所有依赖项的zip文件夹和一个包含生成代码的codegen文件夹。
提取并将zip文件夹中的所有文件复制到Codegen目录。生成的代码将包含模板main.cu文件和相应的标题文件。
我们需要修改这些文件以接受文件名作为输入。在对主文件进行必要的更改之后,我们可以将生成的代码部署到云中。
如果愿意,还可以使用此主文件将此应用程序与现有代码集成。
接下来是AWS部分的工作流程:
对于这个演示,我使用这个来自Amazon Marketplace的AMI,因为它提供了在GPU上运行生成的代码所需的所有CUDA库。
我们还有一个文件交换帖子,更详细地描述了一些步骤。
按照这里的步骤,您可以配置此演示所需的所有AWS组件。
创建EC2实例和S3存储桶后,我们已准备好将Codegen目录上传到S3存储桶。
我们还需要一个YAML文件,它指定源代码的源路径和目标路径。
然后,我们将使用AWS命令行接口来上传文件。
我们已经成功上传文件到Amazon S3。
现在我们将使用codedeploy将源代码部署到EC2实例中。
使用CodeDepopt的S3将允许我们维护源代码的版本或修订,并具有连续部署管道。
假设您已经配置了Codedeploy,我们将在Codedeploy中为应用程序创建一个部署。
我们将在此处选择S3,输入S3存储桶的路径,然后单击“创建部署”。
我们现在在新创建的EC2实例上有一个Codegen目录,在CodeDeploy yaml文件中提到的路径中。
我们将使用已部署的源代码来构建可执行文件。
为此,我们将更新“制作文件”中的源代码的路径并运行它。
然后,我们将使用NVIDIA CUDA编译器从这个静态库构建可执行文件。
您现在有一个CUDA可执行文件,在云中的GPU上运行,并允许您使用alexnet对图像进行分类。
您可以通过访问下面的文件Exchange链接来沿着此视频中概述的步骤遵循。
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳的网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。
本网站使用cookie来改善您的用户体验,个性化内容和广告,并分析网站流量。通过继续使用本网站,您同意我们使用cookie。请看我们隐私政策要了解有关cookie的更多信息以及如何更改设置。