Sarat Lingamarla, MathWorks
在这个视频中,您将了解部署生成的CUDA的一般流程®来自Matlab的深度学习示例的代码®到了云端。
MATLAB为工程师和科学家提供完整的集成工作流程,用于探索,原型和部署熟悉的开发环境中的深入学习算法,内置高级应用程序和库。
使用GPU编码器™,您可以为完整的深度学习应用程序生成CUDA代码,其中包括围绕培训的网络的预处理和后处理逻辑,并将其部署到像AWS这样的云平台®,微软alzure.®等。
你好,我的名字是Sarat,今天我将向你展示如何使用GPU编码器生成CUDA代码,将它部署到亚马逊Web服务,并有一个简单的Web应用程序与生成的代码交互。
在我开始实际的实现之前,下面是演示的结果。
一个简单的web应用程序,运行在使用GPU编码器创建的CUDA可执行文件上,允许用户上传图像并使用预先训练的深度学习网络alexnet对其进行分类。
我可以使用这张照片从我们的文档页面上显示辣椒,将其上传到服务器,然后单击预测以获取alexnet的分类输出。
下面是演示的概述。我们正在使用GPU编码器生成CUDA代码。然后,我们将生成的源代码上传到Amazon S3桶中,并使用Amazon Codedeploy将其部署到EC2实例或虚拟机中。
一旦我们在EC2实例上有源代码,我们就可以使用NVIDIA CUDA编译器构建可执行文件。
我将在几分钟内更详细地解释这些步骤。
首先,我们将使用MATLAB函数来生成CUDA代码。
这是我通过修改GPU编码器文档的深度学习示例来编写的MATLAB功能。您可以找到以下此页面的链接。
在这个函数中,我们使用文件名输入读取图像,对图像进行预处理,并将其提供给预先训练过的网络“alexnet”,然后返回分类输出。
一旦我们创建了MATLAB函数,我们就可以使用单独的脚本来生成静态库,动态库或可执行文件。在这种情况下,我们正在生成一个静态库。
此外,我们还使用packngo函数来打包“imread”函数的依赖项。
在这种情况下运行codegen命令将为您提供包含包含生成代码的所有依赖项和Codegen文件夹的zip文件夹。
解压zip文件夹中的所有文件并将其复制到codegen目录。生成的代码将包含一个main模板。cu文件和相应的头文件。
我们需要修改这些文件以接受文件名作为输入。在对主文件进行所需的更改后,我们可以将生成的代码部署到云端。
如果需要,您还可以使用此主文件将此应用程序与现有代码集成。
继续前进的工作流程:
对于此演示,我正在使用来自亚马逊市场的AMI,因为它提供了在GPU上运行生成的代码所需的所有CUDA库。
我们还有一篇文件交换的文章,更详细地描述了其中的一些步骤。
按照以下步骤,您可以配置此演示所需的所有AWS组件。
创建了EC2实例和S3桶之后,我们就可以将codegen目录上传到S3桶了。
我们还需要一个yaml文件,指定源代码的源和目标路径。
然后我们将使用AWS命令行界面上传文件。
我们已成功将文件上传到Amazon S3。
我们现在将使用CodeDeploy将源代码部署到EC2实例。
将S3与codedeploy一起使用将允许我们维护源代码的版本或修订,并拥有一个持续的部署管道。
假设您已经配置了CodeDeploy,我们将在CodeDeploy中创建应用程序的部署。
我们将在这里选择S3,输入S3桶的路径,然后单击create deployment。
现在,在新创建的EC2实例中,在Codedeploy YAML文件中提到的路径中,有了一个codegen目录。
我们将使用已部署的源代码来构建可执行文件。
为此,我们将在make文件中更新源代码的路径并运行它。
然后,我们将使用NVIDIA CUDA编译器从该静态库中构建可执行文件。
您现在有一个CUDA可执行文件,在云中的GPU上运行,并允许您使用alexnet对图像进行分类。
通过访问下面的文件交换链接,您可以按照本视频中概述的步骤进行操作。
您也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。
本网站使用cookie来改善用户体验,个性化内容和广告,并分析网站流量。如果您继续使用本网站,即表示您同意我们使用cookies。请参阅我们的隐私政策了解更多关于cookie和如何更改您的设置。