0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

让AI应用程序为本机云做好准备

星星科技指导员 来源:NVIDIA 作者:Troy Estes 2022-06-21 16:07 次阅读

Cloud-native 是与 Edge AI 相关的最重要的概念之一。这是因为 cloud native 为应用程序部署提供了大规模支持。它还提供了性能、弹性和易管理性,这些都是 Edge AI 的关键功能。云本机和边缘 AI 如此交织,以至于我们相信 Edge AI 的未来是云本地的 。

这篇文章概述了云本机组件以及准备好应用程序云本机的步骤。我将向您展示如何在 NVIDIA Fleet Command ,这是一种云服务,用于在边缘部署和管理应用程序,采用云本机原则构建。

如果遵循所有这些步骤,结果就是可以轻松地在 Fleet Command 和其他云本机部署和管理平台上部署云本机应用程序。

什么是云本机?

Cloud native 是一种开发和运行应用程序的方法,它包含了云计算交付模型的灵活性、可伸缩性和弹性。云本机方法允许组织构建具有弹性和可管理性的应用程序,从而允许更灵活的应用程序部署。

云本机开发的关键原则有:

微服务

容器

舵图

CI / CD

DevOps 公司

什么是微服务?

微服务是软件开发的一种形式,其中应用程序被分解为更小的、自包含的服务,这些服务相互通信。这些自包含服务是独立的,这意味着它们中的每一个都可以自己更新、部署和扩展,而不会影响应用程序中的其他服务。

微服务使开发应用程序更快,更新、部署和扩展这些更新的过程更容易。

什么是容器?

容器是一个软件包,它包含在任何计算环境中可靠运行应用程序所需的所有信息和依赖项。容器可以轻松地部署在不同的操作系统上,并提供可移植性和应用程序隔离。

整个应用程序可以被容器化,但应用程序的各个部分也可以被容器化。例如,容器与微服务配合得非常好,在微服务中,应用程序被分解为小型、自给自足的组件。每个微服务都可以在容器中打包、部署和管理)。此外,可以在集群中部署和管理多个容器。

容器非常适合边缘部署,因为它们使您能够将应用程序、依赖项和环境变量一次性安装到容器映像中,而不是安装在应用程序运行的每个系统上,从而使管理多个部署变得非常简单。

这对于边缘交换非常重要,因为一个组织可能需要在一个巨大的物理距离上安装和管理数百或数千个不同的部署,因此尽可能多地自动化部署过程至关重要。

什么是舵图?

对于复杂的容器部署,例如跨多个站点和多个系统部署多个应用程序,许多组织使用 Helm charts 。 Helm 是一个运行在 Kubernetes (稍后讨论)之上的应用程序包管理器。没有它,您必须为每个工作负载手动创建单独的 YAML 文件,指定部署所需的所有详细信息,从 pod 配置到负载平衡。

Helm charts 通过允许组织定义可重用的部署模板,以及版本控制和在部署过程中定制应用程序等其他好处,消除了这一繁琐的过程。

什么是 CI / CD ?

持续集成( CI )使您能够协作地迭代和测试新代码,通常是通过将其集成到共享存储库中。

连续交付( CD )是从 CI 阶段获取新构建并将其加载到存储库的自动化过程,在存储库中可以轻松地将其部署到生产中。

在将新代码集成到现有解决方案中时,适当的 CI / CD 流程可以避免服务中断。

什么是 DevOps ?

术语 DevOps 指的是合并开发人员和运营团队的过程,以简化开发和向客户交付应用程序的过程。

DevOps 对于云本地技术非常重要,因为这两个概念的理念都集中于持续、轻松地向客户提供解决方案,并创建端到端的开发管道以加速更新和迭代。

什么是云本机管理?

既然已经解释了云本机的核心原则,那么讨论如何在生产中管理云本机应用程序就很重要了。

排容器的主要平台是 Kubernetes 。 Kubernetes 是开源的,允许组织部署、管理和扩展容器化应用程序。

一些组织已经在 Kubernetes 之上构建了企业级解决方案,以提供独特的优势和功能:

Red Hat OpenShift

VMWare Tanzu

Azure Kubernetes 服务

NVIDIA Fleet Command

为任何 Kubernetes 平台准备应用程序的过程,无论是 Kubernetes 本身还是构建在 Kubernetes 之上的解决方案,本质上都是相同的。每个解决方案都有特定的配置步骤,以确保组织的云本机应用程序可以有效运行而不会出现问题。

使用 NVIDIA Fleet Command 部署云本机应用程序

本节以 NVIDIA Fleet Command 为例介绍配置过程,并指出所需的具体配置。

第 0 步:理解 Fleet Command

Fleet Command 是一种用于跨不同边缘位置管理应用程序的云服务。它基于 Kubernetes 构建并部署云本机应用程序,因此将应用程序放到 Fleet Command 上的步骤与将应用程序放到其他云本机管理平台上的步骤相同。

假设应用程序已经构建,将该应用程序安装到 Fleet Command 上只需四个步骤:

将应用程序容器化

确定应用程序要求

建立舵图

在 Fleet Command 上部署

步骤 1 :将应用程序容器化

Fleet Command 将应用程序部署为容器。通过使用容器,您可以在同一系统上部署多个应用程序,还可以轻松地跨多个系统和位置扩展应用程序。此外,所有依赖项都打包在容器中,因此您知道应用程序将在数千个系统中执行相同的操作。

为应用程序构建容器很容易。有关更多信息,请参阅 容器装卸工指南 。

下面是一个 Dockerfile 示例,用于使用 NVIDIA CUDA 基本映像构建的自定义深度学习容器:

FROM nvcr.io/nvidia/cuda:11.3.0-base-ubuntu18.04
CMD nvidia-smi #set up environment
RUN apt-get update && apt-get install --no-install-recommends --no-install-suggests -y curl
RUN apt-get install unzip
RUN apt-get -y install python3
RUN apt-get -y install python3-pip #copies the application from local path to container path
COPY app/ /app/
WORKDIR /app #Install the dependencies
RUN pip3 install -r /app/requirements.txt ENV MODEL_TYPE='EfficientDet'
ENV DATASET_LINK='HIDDEN'
ENV TRAIN_TIME_SEC=100 CMD ["python3", "train.py"]

在本例中,/app/包含所有源代码。为容器创建 Dockerfile 后,可以使用该文件构建容器,然后将其上载到云中的私有注册表,以便可以轻松地将容器部署到任何位置。

步骤 2 :确定应用程序需求

容器完成后,需要确定应用程序正常运行所需的内容。这通常涉及到考虑安全、网络和存储需求。

Fleet Command 是一个安全的软件堆栈,它能够控制应用程序在其部署的系统中可以访问哪些硬件和软件。因此,您的应用程序应该围绕以下安全最佳实践进行设计:

避免特权容器

将管理员和应用程序流量与存储流量分离

最小化系统设备访问

等等

围绕这些安全需求设计应用程序部署,在以后配置网络和存储时牢记这些安全需求。

下一步是确定需要什么样的网络访问需求,以及如何从容器中公开网络。

通常,应用程序需要不同的端口和路由来访问任何边缘传感器和设备、管理流量、存储流量和应用程序(云)流量。这些端口可以使用NodePorts或更高级的 Kubernetes 网络配置(如入口控制器)从 Fleet Command 公开。

最后,应用程序可能需要访问本地或远程存储以保存持久数据。 Fleet Command 支持hostPath卷装载功能。还可以使用其他 Kubernetes 功能,例如持久卷和持久卷声明。

如果需要,可以在 Fleet Command 系统上单独部署本地路径或 NFS 供应器,以配置本地或远程存储。如果应用程序支持此功能,还可以将其配置为连接到云存储。

有关更多信息,请参阅 Fleet Command 应用程序开发指南 。

步骤 3 :建立舵图

既然应用程序需求已经确定,现在就应该创建一个 Helm chart 。

与容器一样,Fleet Command 上的 Helm 图表也有一些特定要求。以下是一个 NVIDIA DeepStream Helm 图表 的示例,作为参考,以帮助构建部署在 Fleet Command 中的舵图。

要从头开始创建您自己的头盔图表,请首先运行以下命令创建示例头盔图表。此命令使用 NGINX Docker 容器生成一个示例舵图,然后可以为任何应用程序自定义该容器。

$ helm create deepstream

创建舵图后,该图的目录结构如下所示:

deepstream
|-- Chart.yaml |-- charts |-- templates | |-- NOTES.txt | |-- _helpers.tpl | |-- deployment.yaml
| |-- ingress.yaml
| `-- service.yaml
`-- values.yaml 

接下来,修改这些值。具有以下突出显示值的 yaml 文件,用于配置 DeepStream 容器和网络的示例舵图。

image: repository: nvcr.io/nvidia/deepstream pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. tag: 5.1-21.02-samples imagePullSecrets: []
nameOverride: ""
fullnameOverride: "" serviceAccount: # Specifies whether a service account should be created create: false # Annotations to add to the service account annotations: {} # The name of the service account to use. # If not set and create is true, a name is generated using the fullname template name: "" podAnnotations: {} podSecurityContext: {} # fsGroup: 2000 securityContext: {} # capabilities: # drop: # - ALL # readOnlyRootFilesystem: true # runAsNonRoot: true # runAsUser: 1000 service: type: NodePort port: 8554 nodeport: 31113

创建自定义舵图后,可以将其上载到容器旁边的专用注册表。

步骤 4 :在 Fleet Command 上部署

将应用程序容器化并构建舵图后,将应用程序加载到 Fleet Command 。应用程序加载到 NGC 上,这是一个用于 GPU 加速的应用程序、模型和容器的中心,然后可以在 Fleet Command 上部署。应用程序可以是公共的,但也可以托管在私有注册表中,在该注册表中,访问权限仅限于组织。

整个过程将在 Fleet Command 用户指南 ,但在 Fleet Command 演示视频

奖励步骤:加入我们的合作伙伴生态系统

最近, NVIDIA 宣布扩大 NVIDIA Metropolis 合作伙伴计划 现在包括 Fleet Command 。 Metropolis 的合作伙伴如果将其应用程序配置为部署在 Fleet Command 上,则可以免费访问该解决方案,以便为客户操作 POC 。通过使用 Fleet Command ,合作伙伴无需在客户环境中构建定制的解决方案进行评估。他们可以使用 Fleet Command 并在几分钟内将其应用程序部署到客户站点。

开始使用云本机

这篇文章介绍了云本机技术的核心原则,以及如何使用 Fleet Command 让应用程序做好云本机准备。

您的下一步是获得在云本机环境中部署和管理应用程序的实践经验。 NVIDIA LaunchPad 可以提供帮助。

LaunchPad 提供对 Fleet Command 实例的即时、短期访问,以便在实际服务器上轻松部署和监控实际应用程序。动手实验室将引导您完成整个过程,从基础设施配置和优化到在适用用例的上下文中部署应用程序,例如在网络边缘部署 vision AI 应用程序。

关于作者

Troy Estes 是 NVIDIA Edge 和企业计算解决方案的产品营销经理。在加入 Edge & Enterprise 业务部门之前,特洛伊曾在自主汽车业务部门和 NVIDIA 电网产品集团从事营销活动和支持产品 GTM 。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    4847

    浏览量

    102702
  • CUDA
    +关注

    关注

    0

    文章

    121

    浏览量

    13585
  • 深度学习
    +关注

    关注

    73

    文章

    5462

    浏览量

    120874
收藏 人收藏

    评论

    相关推荐

    I2C启动加载准备TMS320C645x应用程序

    电子发烧友网站提供《I2C启动加载准备TMS320C645x应用程序.pdf》资料免费下载
    发表于 10-16 11:30 0次下载
    <b class='flag-5'>为</b>I2C启动加载<b class='flag-5'>准备</b>TMS320C645x<b class='flag-5'>应用程序</b>

    使用OpenVINO GenAI API在C++中构建AI应用程序

    许多桌面应用程序是使用 C++ 开发的,而将生成式AI(GenAI)功能集成到这些应用程序中可能会很具有挑战性,尤其是因为使用像 Hugging Face 这样的 Python 库的复杂性。C++
    的头像 发表于 10-12 09:36 264次阅读
    使用OpenVINO GenAI API在C++中构建<b class='flag-5'>AI</b><b class='flag-5'>应用程序</b>

    AI平台怎么构建

    构建AI平台是一个复杂而系统的过程,涉及多个环节和技术栈。从准备工作到最终的部署运行,每一步都需要精心设计和实现。
    的头像 发表于 10-11 10:52 127次阅读

    亚马逊科技推出生成式AI服务Amazon App Studio

    在近期于纽约盛大召开的亚马逊科技峰会上,一场关于未来应用开发的革命性变革悄然拉开序幕。亚马逊科技正式推出了其颠覆性产品——Amazon App Studio,一个由前沿生成式AI技术驱动的创新平台,旨在以前所未有的便捷方式,
    的头像 发表于 07-11 17:07 638次阅读

    使用Redis和Spring Ai构建rag应用程序

    整合如何通过简化的开发流程,让开发者能够更专注于创新而非底层实现。一、SpringAI简介由大型语言模型(LLM)驱动的应用程序中,向量数据库常作为人工智能应用程
    的头像 发表于 04-29 08:04 949次阅读
    使用Redis和Spring <b class='flag-5'>Ai</b>构建rag<b class='flag-5'>应用程序</b>

    SOLIDWORKS应用程序:面向学生的全新机遇

    随着科技的快速发展和数字化转型的深入,SOLIDWORKS应用程序的推出,无疑为学生提供了一个全新的学习和实践平台。SOLIDWORKS,作为一款工程设计软件,其应用程序的推出,不
    的头像 发表于 03-25 15:39 244次阅读

    雷军官宣小米汽车发布日3月28日 小米汽车回应价格战:已做好准备

    雷军官宣小米汽车发布日 小米汽车回应价格战:已做好准备 小米汽车什么时候发布一直被猜测,现在终于揭晓谜底了,雷军官宣小米汽车发布日就在3月28日。 3月12日早上九点,雷军发布微博称,“3月28日
    的头像 发表于 03-12 16:38 674次阅读

    雷军官宣小米汽车发布日 价格战已做好准备

    雷军官宣小米汽车发布日,3月28日小米SU7正式见面。小米汽车回应价格战:已做好准备
    的头像 发表于 03-12 14:40 1192次阅读

    物联:革新未来电梯物联网行业,您做好准备了吗?

    解析电梯物联网技术:革新未来电梯行业,您已做好准备了吗?|梯物联网 据政府有关部门统计,截止2014年底,全国在用电梯的数量已经达到360万台。电梯是一种特殊的垂直交通工具,这么多的电梯每天要运送数千万的乘客上上下下,电梯的安全运行,可靠运行已经成为社会关心的一大
    的头像 发表于 02-28 10:03 337次阅读
    梯<b class='flag-5'>云</b>物联:革新未来电梯物联网行业,您<b class='flag-5'>做好准备</b>了吗?

    AI ready是什么?文明的发展需要做好准备

    从古至今,时代的进步都依靠工业的发展,四次工业革命,全世界进入了新时代。现如今,互联网科技发展速度飞快,AI大模型时代已经到来,这何尝不是一次全新的革命?但是,想要让AI真正为企业所用,并非“一键
    的头像 发表于 01-17 10:19 538次阅读
    <b class='flag-5'>AI</b> ready是什么?文明的发展需要<b class='flag-5'>做好准备</b>

    谷歌发布新的AI SDK,简化Gemini模型与Android应用程序的集成

    对于 Android 应用程序,Google 提供了 Google AI Client SDK for Android,它将 Gemini REST API 封装为惯用的 Kotlin API
    的头像 发表于 01-03 16:29 879次阅读

    新火种AIAI时代可能遇到的伦理问题,你做好准备了吗?

    AI会对未来的两性关系产生怎样的影响?家庭概念会就此消失吗?”
    的头像 发表于 12-12 10:11 507次阅读

    开发java应用程序的基本步骤是

    ava是一种面向对象的编程语言,广泛用于开发各种类型的应用程序。在开发Java应用程序时,有一些基本步骤需要遵循,以确保应用程序的正确性和可靠性。 1.确定需求:这是开发任何应用程序
    的头像 发表于 11-28 16:52 1483次阅读

    如何启动本机docker服务

    Docker是一个开源项目,可以帮助开发者打包应用程序及其依赖,并且能够将其作为独立的容器来运行。本文将详细介绍如何在本机上启动Docker服务。 第一步:安装Docker 在开始之前,首先需要
    的头像 发表于 11-23 09:43 1925次阅读

    通过 Minitab 双十一的物流成功做好准备

    今年的双十一已过!现在,正是供应链领军者检查供应链中各个职能的时候,以下是 Minitab 帮助供应链经理物流做好准备: 预测模型: Minitab 提供了一系列预测模型,包括移动平均线、指数平滑
    的头像 发表于 11-20 10:17 367次阅读