Amazon SageMaker和NVIDIA NGC加速AI和ML工作流

从自动驾驶汽车到药物发现,人工智能正成为主流,并迅速渗透到每个行业。但是,开发和部署AI应用程序是一项具有挑战性的工作。该过程要求通过组合硬件,软件和复杂的工作流程来构建可伸缩的基础结构,这既耗时又容易出错。为了加速端到端的AI工作流程,需要一个统一的平台来使更快地投入生产。

本文演示了Amazon SageMaker和NVIDIA NGC之间的集成如何帮助数据科学家加速其AI工作流程,构建功能强大的应用程序以及收集实现业务目标所需的宝贵见解。

亚马逊SageMaker

Amazon SageMaker是一项完全托管的服务,可为每个开发人员和数据科学家提供快速构建,训练和部署机器学习模型的能力。Amazon SageMaker消除了机器学习过程中每个步骤的繁重工作,从而使开发高质量模型变得更加容易。

1.用于训练和部署的Amazon SageMaker IDE

NVIDIA GPU和NGC

GPU非常适合训练和推理,但是还需要GPU优化的软件来加快解决时间,这就是NVIDIA构建NGC的原因。选择NGC的原因如下:

  • 易用性-在建立模型和测试其功能时,Jupyter记事本电脑迅速成为数据科学家的首选工具。在Amazon SageMaker Jupyter会话中,可以使用一个简单的pull命令直接从NGC部署容器和模型。
  • 高性能的容器-在大规模部署应用程序时,容器几乎是标准配置。容器使可以将应用程序,其库和依赖项打包到可移植且隔离的环境中。这意味着可以在从PC到Amazon云实例的任何位置运行容器。NGC容器每月更新一次,并针对性能进行了微调。当从NGC部署最新版本的容器时,在cuDNN,cuBLAS,DALI和NCCL等库和运行时中进行了性能改进,以从GPU中提取最大性能。

图2.通过优化库和运行时(例如cuDNNcuBLASDALINCCL)来将框架的性能从一种版本提高到另一种版本。

  • 加速的开发流程-NGC的预训练模型可帮助跨各种应用程序(包括自然语言处理(NLP),图像分析和推荐系统)使用100多种预训练模型来加快应用程序构建过程。这些模型经过精心设计和调整,可以在NVIDIA GPU上实现最佳性能,以实现最佳性能。应用转移学习,可以使用自己的数据集重新训练这些模型并创建自己的自定义模型。如果希望从头开始构建模型,使用NGC中的资源,提供了分步方法,根据NVIDIA工程师使用的最佳实践来构建高度准确和高性能的模型。
  • 面向企业的产品-除了性能以外,在生产环境中部署容器时,安全性也是至关重要的要求。NGC中发布的容器经过通用漏洞和暴露(CVE)的全面质量检查流程,以确保是高度安全的,并且没有任何缺陷和漏洞,使有最大的信心在基础结构中部署。

NGC的例子

精心策划了一些示例,涵盖了整个工作负载和用例,从部署进行推理到部署容器以在Jupyter记事本中进行再训练。本文引导完成使用NGC的内容充分利用Amazon SageMaker所需的所有步骤。使用记事本实例,可以使用GitHub轻松访问七个示例。

对于列出的所有示例,从NGC部署容器或模型的一般过程都是相同的。在本文中,详细介绍了第一个示例,向展示如何将NGC中的资产部署到Amazon SageMaker实例中。有关部署每个示例的更多信息,参阅Amazon SageMaker和NVIDIA GPU Cloud(NGC)示例

在Jupyter记事本上训练TensorFlow BERT-Large模型并部署到TensorRT

以下示例显示了如何使用NGC的NVIDIA TensorRT容器部署TensorFlow BERT-Large模型。可以充分利用NGC的以下三项资产:

  • TensorRT容器
  • BERT模型(TensorFlow)
  • NGC资源

设置

尽管Jupyter记事本提供了许多信息并提供了有关此示例如何工作的逐步指南,但值得注意的是,容器中还包含一个附加脚本,可以帮助完成繁重的工作。该entrypoint.sh脚本在首次构建或启动容器时运行,并且将NGC模型和帮助程序脚本协调在一起以使API部署成为可能。该脚本执行以下操作:

  1. 从NGC下载预训练的BERT模型
  2. 下载帮助程序脚本
  3. 微调BERT模型。
  4. 将经过微调的模型转换为TensorRT引擎。
  5. 调用serve.py,定义并启动用于为模型提供推理的端点。

鼓励更详细地研究此文件,并了解如何针对用例进行修改。

Jupyter记事本

第一步是基于TensorRT构建自定义Docker容器,并将映像推送到Amazon Elastic Container Registry(Amazon ECR)。此步骤允许部署自定义映像以进行推断。

#构建映像并将其推送到ECR 
build-and-push.sh接受一个arg:标记。在这里,使用0.1标记了映像,但可以随时更改标记
#有关映像的详细信息,参见docker / Dockerfile.sagemaker.gpu 
!cd docker && bash build--push.sh 0.1

接下来,导入与部署的模型和Amazon SageMaker配合使用所需的库和工具:

将numpy导入为np
进口圣人作为圣人
从sagemaker import get_execution_role

然后,配置Amazon SageMaker会话,以便可以将TensorRT容器和BERT模型部署到NVIDIA GPU。确定实例类型,部署实例数以及存储输出的位置。在这种情况下,使用默认存储桶。

角色= get_execution_role()
会话= sage.Session()
TRAIN_INSTANCE_TYPE_ID ='ml.p3.16xlarge'
TRAIN_INSTANCE_COUNT = 1
INFERENCE_INSTANCE_TYPE_ID ='ml.p3.2xlarge'
INFERENCE_INSTANCE_COUNT = 1
OUTPUT_BUCKET ='s3:// {bucket} /output'.format(bucket = session.default_bucket())

配置好环境后,设置Estimators API以使用自定义的TensorRT容器并微调模型:

帐户= session.boto_session.client('sts')。get_caller_identity()['Account']
地区= session.boto_session.region_name
image_name ='{acct} .dkr.ecr。{region} .amazonaws.com / ngc-tf-bert-sagemaker-demo:0.1'.format(acct = account,region = region)
 
estimator = sage.estimator.Estimator(image_name = image_name,
                                            角色=角色
                                            train_instance_count = TRAIN_INSTANCE_COUNT,
                                            train_instance_type = TRAIN_INSTANCE_TYPE_ID,
                                            output_path = OUTPUT_BUCKET,
                                            sagemaker_session =会话)
 
estimator.fit(输入=无)

配置的最后一步是将自定义TensorRT容器,模型和脚本部署到Amazon SageMaker Estimator实例:

预测变量= estimator.deploy(initial_instance_count = INFERENCE_INSTANCE_COUNT,
               instance_type = INFERENCE_INSTANCE_TYPE_ID)

然后,通过对自定义段落执行问答推断来充分利用已部署的模型。可以看到提供一个新的上下文并提出不同的问题是多么容易。希望该示例能为提供思想的思路,并为应用程序注入AI提供网关。

从sagemaker.predictor导入json_serializer
从sagemaker.content_types导入CONTENT_TYPE_JSON
将numpy导入为np
short_paragraph_text =“阿波罗计划是美国第三个人类太空飞行计划。最初被设想为跟随单人水星计划的三人飞船,这使第一批美国人进入太空,阿波罗致力于约翰·F·肯尼迪总统的国家目标“是在月球上着陆一个人。阿波罗号首次载人飞行是在1968年。阿波罗号于1961年至1972年运行,随后是阿波罗-联盟号试验项目,于1975年与苏联联合进行了地球轨道飞行任务。”
question_text =“哪个项目使第一个美国人进入太空?”
qa_test_sample = {'short_paragraph_text':short_paragraph_text,'question_text':question_text}
Forecastor.content_type = CONTENT_TYPE_JSON
dictor.serializer = json_serializer
预报器。预报(qa_test_sample)。解码(“ utf-8”)

证明!如所见,已部署的API知道月球着陆(或提供的任何其上下文)的全部信息:

“答案:“水星计划”,概率:73.069%,每秒100.112句。”

使用NGC PyTorch容器微调BERT模型。

在此示例中,将使用NGC上可用的BERT PyTorch容器,并将其部署在Amazon SageMaker上。首先从NGC获取现有容器和模型,在Amazon SageMaker中构建映像,然后将该映像推送到Amazon ECR。Amazon SageMaker广泛使用Docker容器。通过构建容器映像,可以指定此映像以用于模型训练或部署。

构建训练图像后,采用预训练的PyTorch BERT模型,并通过旋转一个在训练工作期间生成的训练实例并使用指定的超参数执行训练代码,从Amazon SageMaker记事本启动训练任务。此设置允许使用较小的实例进行探索性数据分析以节省成本,然后使用更多的重型实例进行训练。

训练代码使用带有Apex(PyTorch扩展)的GPU优化的PyTorch(自动混合精度训练库)微调BERT模型,以在SQuAD数据集上回答问题。Amazon SageMaker使使用多GPU实例轻松启动此容器以进行分布式训练。

训练完成后,获取保存到Amazon S3的模型权重,然后将经过微调的模型部署到Amazon SageMaker端点进行推理。最后,可以创建自己的服务容器,但是Amazon SageMaker使得使用专门的预先构建的服务容器轻松构建端点。现在,可以从部署在云中的模型中获取实时问题解答!

在PyTorch中使用NGC预训练的BERT-Large模型进行问题解答

通过将深度学习技术集成到应用程序中,可以采用NGC的任何模型并构建用于推理的API。使用NGC获取模型,wget并将其加载到在Amazon SageMaker上运行的Jupyter记事本实例中。然后,将模型打包为Amazon SageMaker推理API所需的格式并进行部署。完成后,将拥有一个可用于自己的问答系统的API。

在Amazon SageMaker上为PyTorch部署NGC SSD模型

如果想探索物体检测或图像分类,那么本示例将使快速入门。首先从NGC抓取PyTorch的Single Shot Detector(SSD)模型,然后将其打包为Amazon SageMaker所需的tarball格式。

3. NGC目录页面中的PyTorch SSD

接下来,使用示例transform_script.py文件,该文件配置Amazon SageMaker终端节点,以便了解如何执行以下任务:

  • 加载模型,是基于ResNet50主干的SSD300对象检测器
  • 处理输入数据
  • 根据模型进行预测

然后,使用Amazon SageMaker内置的PyTorchModel函数将模型部署到NVIDIA GPU实例终端节点以进行推理。最后,提供一些示例图像,并从API获取预测。有关SSD如何工作或NGC模型的更多信息,参阅适用于PyTorch的SSD v1.1

从NGC到Neo编译PyTorch模型并部署在Amazon SageMaker Neo上

在此示例中,从NGC取得了经过预训练的ResNet50模型(通用图像分类架构),并将其与Amazon SageMaker Neo一起部署。首先从NGC下载模型文件和资源,并将加载到记事本实例本地的\ NGC_assets目录中。然后,根据image_classification_resnet从NGC下载的Python脚本,从NGC构建ResNet50模型。此步骤从NGC下载预训练的权重,然后将重建的模型保存到可以与Neo一起使用的PyTorch文件中。将模型和权重存储并打包到.tar文件中后,可以调用Neo编译API。使用此API,可以配置以下内容:

  • 目标模型(ResNet50)
  • 模型框架(PyTorch)
  • 在哪里存储编译后的模型(在本例中为S3)
  • 任何超时或最大推理运行时间

最后一步是创建可与应用程序一起使用的预测端点API。为此,必须创建两个函数:

  • Neo_preprocess—此函数捕获传入的求,确定的内容类型和数据本身,并将其转换为可由模型API解释的numpy数组。
  • Neo_postprocess—当模型和API进行分类后,此函数将执行以获取预测结果并返回响应主体,即分类类别的文本值。

最后,可以根据上述配置,模型和功能配置端点,使用cat图像测试API,并检索最可能的类。希望是“猫”。

在Amazon SageMaker上使用NGC TensorFlow容器

在此示例中,向展示如何使用Python示例将NGC中的自定义TensorFlow容器打包,该示例与CIFAR-10数据集一起使用,并使用TensorFlow Serving进行推理。但是,可以通过修改Docker容器使用TensorFlow Serving以外的推理解决方案。

在此示例中,使用单个图像来支持训练和托管。因为只为两个任务管理一个映像,所以这简化了过程。有时可能需要单独的图像进行训练和托管,因为有不同的要求。在这种情况下,将讨论的部分分成单独的Dockerfile,并构建两个映像。选择使用单个图像还是使用两个图像是最方便开发和管理的问题。

在Amazon SageMaker上为TensorFlow部署NGC模型

在这里,正在处理图像。如果想探索物体检测或图像分类,那么这将使快速入门。首先从NGC抓取经过预训练的模型,然后将其打包为Amazon SageMaker所需的tarball格式。

接下来,创建一个Amazon SageMaker推理会话,并指定授予服务访问S3中存储的模型所需的IAM角色。配置了执行上下文后,可以使用Amazon SageMaker内置的TensorFlow服务模型功能部署模型,以将模型部署到GPU实例,可以在其中使用该模型进行推理。最后,提供一些示例图像,并从API获取预测。

NGC示例入门

Amazon SageMaker和NGC之间的集成为数据科学家和开发人员提供了理想的平台:Amazon SageMaker用于开发和部署AI / ML应用程序,并可以从NGC轻松访问企业级AI软件。

NGC示例入门非常简单。以下视频显示了如何将GitHub上可用的NGC示例链接到Amazon SageMaker实例,或者如何直接导航到NGC页面。

视频。将NGC示例加载到Amazon SageMaker实例的分步过程。

Amazon SageMaker和NVIDIA NGC加速AI和ML工作流的更多相关文章

  1. 利用NVIDIA NGC的TensorRT容器优化和加速人工智能推理

    利用NVIDIA NGC的TensorRT容器优化和加速人工智能推理 Optimizing and Accelerating AI Inference with the TensorRT Contai ...

  2. 【并行计算-CUDA开发】【视频开发】ffmpeg Nvidia硬件加速总结

    2017年5月25日 0. 概述 FFmpeg可通过Nvidia的GPU进行加速,其中高层接口是通过Video Codec SDK来实现GPU资源的调用.Video Codec SDK包含完整的的高性 ...

  3. 【视频开发】【CUDA开发】ffmpeg Nvidia硬件加速总结

    原文链接:https://developer.nvidia.com/ffmpeg GPU-accelerated video processing integrated into the most p ...

  4. 浙江天搜科技落棋人工智能,加速AI产业布局

    8月31日,2018年IFA大展在德国柏林正式开幕.IFA是全球三大消费电子展之一,在世界范围内久负盛名,被誉为“未来科技风向标”.在这个万众瞩目的展会上,号称“给智能世界铺上云的跑道,装上智能发动机 ...

  5. AI,DM,ML,PR的区别与联系

    数据挖掘和机器学习的区别和联系,周志华有一篇很好的论述<机器学习与数据挖掘>可以帮助大家理解.数据挖掘受到很多学科领域的影响,其中数据库.机器学习.统计学无疑影响最大.简言之,对数据挖掘而 ...

  6. 认识:人工智能AI 机器学习 ML 深度学习DL

    人工智能 人工智能(Artificial Intelligence),英文缩写为AI.它是研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学. 人工智能是对人的意识. ...

  7. 机器学习 AI 谷歌ML Kit 与苹果Core ML

    概述 移动端所说的AI,通常是指"机器学习". 定义:机器学习其实就是研究计算机怎样模拟人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构使之不断改善自身.从实践的意义 ...

  8. NVIDIA CUDA-X AI

    NVIDIA CUDA-X AI 面向数据科学和 AI 的 NVIDIA GPU 加速库 数据科学是推动 AI 发展的关键力量之一,而 AI 能够改变各行各业. 但是,驾驭 AI 的力量是一个复杂挑战 ...

  9. NVIDIA Jarvis:一个GPU加速对话人工智能应用的框架

    NVIDIA Jarvis:一个GPU加速对话人工智能应用的框架 Introducing NVIDIA Jarvis: A Framework for GPU-Accelerated Conversa ...

随机推荐

  1. hdu 1814 字典序最小的2sat(暴力深搜)

    题意:      题意就是最基础的2sat,关系只有矛盾关系,然后二选一,关键是这个题目是输出字典序最小的那组解. 思路:      输出字典序最小,用强连通那个实现不了(起码没看到有人实现),其实我 ...

  2. MD5算法C/C++的实现

    博客链接:http://blog.csdn.net/qq1084283172/article/details/52334027 在逆向程序的时候,经常会碰到加密的算法的问题,前面分析UC的逆向工程师的 ...

  3. hdu5256序列变换(非递减子序列)

    题意(中文直接粘吧)序列变换 Problem Description     我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增.其中无论是修改前还是修改后,每个元 ...

  4. Windows 2003 Server远程代码执行漏洞集合

    目录 MS08-067 CVE-2017-7269 MS08-067 发布日期:2008/10/22 针对端口:139.445 漏洞等级:高危 漏洞影响:服务器服务中的漏洞可能允许远程执行代码 受影响 ...

  5. Mybatis学习之自定义持久层框架(二) 自定义持久层框架设计思路

    前言 上一篇文章讲到了JDBC的基本用法及其问题所在,并提出了使用Mybatis的好处,那么今天这篇文章就来说一下该如何设计一个类似Mybatis这样的持久层框架(暂时只讲思路,具体的代码编写工作从下 ...

  6. Python正则表达式的七个使用范例

    本文由 伯乐在线 - 左手的灵魂 翻译.未经许可,禁止转载!英文出处:thegeekstuff.欢迎加入翻译组.http://blog.jobbole.com/74844/ 作为一个概念而言,正则表达 ...

  7. Beta——事后分析

    事后总结 NameNotFound 团队 项目 内容 北航-2020-软件工程(春季学期) 班级博客 要求 Beta事后分析 课程目标 通过团队合作完成一个软件项目的开发 会议截图 一.设想和目标 软 ...

  8. Linux下的ARP攻击-断网

    1.软件工具安装 1. nmap --网络嗅探工具 2. dsniff ( arpspoof )    --ARP嗅探工具 3. net-tools ( ifconfig ) --网络工具 sudo ...

  9. sed -i 's/Search_String/Replacement_String/g' Input_File sed详细手册

    本文列出的十五个例子可以帮助你掌握 sed 命令.如果要使用 sed 命令删除文件中的行,去下面的文章.注意:由于这是一篇演示文章,我们使用不带 -i 选项的 sed 命令,该选项会在 Linux 终 ...

  10. 第3期:Too many open files以及ulimit的探讨

    第3期:Too many open files以及ulimit的探讨 毛帅 Java.AI.互联网.金融 10 人赞同了该文章 Too many open files是Java常见的异常,通常是由于系 ...