Sarat Lingamarla,Mathworks
在此视频中,您将通过一般的工作流程来部署生成的CUDA®来自Matlab的深度学习示例的代码®到了云端。
MATLAB为工程师和科学家提供完整的集成工作流程,用于探索,原型和部署熟悉的开发环境中的深入学习算法,内置高级应用程序和库。
使用GPU编码器™,您可以为完整的深度学习应用程序生成CUDA代码,其中包括围绕培训的网络的预处理和后处理逻辑,并将其部署到像AWS这样的云平台®,微软alzure.®, 等等。
您好,我的名字是迷人,今天我会向您展示使用GPU编码器的CUDA代码,将其部署到Amazon 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实例。
使用CodeDepopt的S3将允许我们维护源代码的版本或修订,并具有连续部署管道。
假设您已经配置了CodeDeploy,我们将在CodeDeploy中创建应用程序的部署。
我们将在此处选择S3,输入S3存储桶的路径,然后单击“创建部署”。
我们现在在新创建的EC2实例上有一个Codegen目录,在CodeDeploy yaml文件中提到的路径中。
我们将使用已部署的源代码来构建可执行文件。
为此,我们将更新“制作文件”中的源代码的路径并运行它。
然后,我们将使用NVIDIA CUDA编译器从该静态库中构建可执行文件。
您现在有一个CUDA可执行文件,在云中的GPU上运行,并允许您使用alexnet对图像进行分类。
您可以通过访问下面的文件Exchange链接来沿着此视频中概述的步骤遵循。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。