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

    文章

    5160

    浏览量

    104843
  • CUDA
    +关注

    关注

    0

    文章

    122

    浏览量

    13871
  • 深度学习
    +关注

    关注

    73

    文章

    5530

    浏览量

    122016
收藏 人收藏

    相关推荐

    如何在 Raspberry Pi AI Camera 上构建开发人员提供实时的智能应用程序

    。最近推出的RaspberryPiAICamera是一款功能强大的硬件,可让您在RaspberryPi上构建功能强大的AI应用程序。通过将人工智能推理卸载到IMX
    的头像 发表于 03-25 09:37 46次阅读
    如何在 Raspberry Pi <b class='flag-5'>AI</b> Camera 上构建<b class='flag-5'>为</b>开发人员提供实时的智能<b class='flag-5'>应用程序</b>!

    MCP:连接AI应用程序的开放标准!

    作者:算力魔方创始人/英特尔创新大使刘力 扩展AI大模型的方式有两种,第一种是通过训练增强AI大模型自身的能力;第二种是AI大模型与其它现有的应用
    的头像 发表于 03-21 18:21 366次阅读
    MCP:连接<b class='flag-5'>AI</b>与<b class='flag-5'>应用程序</b>的开放标准!

    ANACONDA——关于发布数据应用程序的新简单方法

    与 Anaconda 的笔记本服务无缝集成,用户提供了一种轻松共享笔记本结果的方式,并其他人也可以随意的访问它们。 下面我们来了解关于这项新功能的实际应用: 这项功能与 Panel 的多功能性相结合,将彻底改变您发布数据
    的头像 发表于 01-17 11:39 243次阅读
    ANACONDA——关于发布数据<b class='flag-5'>应用程序</b>的新简单方法

    IBM发布2025年AI五大趋势

    IBM 商业价值研究院(IBV)与牛津经济研究院在 2024年 10月和 11月对 17个行业、6个地区的 400名全球商业领导进行的调研,了解企业必须克服哪些挑战才能在 AI 塑造的竞争格局当中取胜;如何帮助员工做好准备,用以人为本的
    的头像 发表于 01-08 09:44 501次阅读

    您的应用为16KB页面大小的设备做好准备

    (提升幅度 5-10%)。我们在《 Android 添加 16 KB 页面大小》一文中提供了深入的技术解析,并重点展示了性能改进。
    的头像 发表于 01-07 09:26 448次阅读

    超级应用程序Grab选择亚马逊科技为首选服务商

    推动技术创新与业务增长 北京2024年12月19日 /美通社/ -- 在亚马逊科技2024 re:Invent全球大会上,亚马逊科技与东南亚领先的超级应用程序Grab共同宣布,Grab已选择
    的头像 发表于 12-19 15:31 400次阅读

    AWTK-WEB 快速入门(1) - C 语言应用程序

    导读AWTK可以使用相同的技术栈开发各种平台的应用程序。有时我们需要使用Web界面与设备进行交互,本文介绍一下如何使用C语言开发AWTK-WEB应用程序。用AWTKDesigner新建一个应用程序
    的头像 发表于 11-27 11:46 480次阅读
    AWTK-WEB 快速入门(1) - C 语言<b class='flag-5'>应用程序</b>

    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 723次阅读
    使用OpenVINO GenAI API在C++中构建<b class='flag-5'>AI</b><b class='flag-5'>应用程序</b>

    AI平台怎么构建

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

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

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

    网络与计算:有什么区别?

    计算和网络是相关但又不同的概念。计算关注的是应用程序如何运行,而网络则关注的是应用程序
    的头像 发表于 06-25 11:43 639次阅读
    <b class='flag-5'>云</b>网络与<b class='flag-5'>云</b>计算:有什么区别?

    阿里发布首个AI程序员,引领应用开发进入“分钟级”时代

    近日,在备受瞩目的阿里上海AI峰会上,阿里向全球开发者们展示了其最新的技术成果——首个“AI程序员”。这款创新应用基于通义大模型构建,具
    的头像 发表于 06-24 10:36 765次阅读

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

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

    鸿蒙OpenHarmony【 配置远程访问环境】

    在搭建了Windows和Ubuntu开发环境后,需要通过下述设置,使得Windows可以远程访问Ubuntu,后续烧录文件的传输做好准备
    的头像 发表于 04-19 20:08 727次阅读
    鸿蒙OpenHarmony【 配置远程访问环境】