函数生命周期#

云“函数”是一种抽象概念,允许您运行代码而无需管理部署和基础设施。Cloud Functions 通过自动启用对 GPU 容量和自动扩展的访问,简化了在云中托管 AI 推理和微调工作负载的过程。云函数通常被认为是无状态的。

因此,函数作者仅负责维护其 AI 模型和相关代码。这在下图中以绿色突出显示。要使用 Cloud Functions,您需要创建一个函数,然后为其定义部署规范,并将其部署在 NVIDIA 托管的可用 GPU 支持的集群之一上。

../_images/nvcf-responsibility-model.png

注意

一个 Cloud Functions 账户可以包含多个函数,每个函数可以有多个函数版本。每个创建的函数也会创建一个函数版本。

Cloud Functions 支持在函数 ID 级别或函数版本 ID 级别调用函数(调用函数的推理端点)。您可以创建一个函数和一个版本并仅调用此函数版本,或者创建同一函数的多个版本并在所有版本之间分散调用。

主要概念#

请参见下文,了解 Cloud Functions 中一些关键基本概念的概述。

术语

描述

NVIDIA GPU Cloud (NGC)

一个企业服务、软件和管理工具门户,支持端到端 AI。

NGC 私有注册表

与 Cloud Functions 集成的注册表,用于存储自定义容器、模型、资源和 helm charts。

NVIDIA 云账户 ID (NCA ID)

NVIDIA 客户计费实体,云服务与之关联。

函数

用户定义的封装代码,用于实现至少公开一个推理端点的服务器,可以基于容器或 helm chart。

函数实例

在集群上运行的函数的单个已部署副本。

函数部署

一个或多个在集群上运行的函数实例。

函数调用

通过 Cloud Functions API 调用函数推理端点的操作。

资产

一个文件,可以在调用时由您的函数上传、下载和使用。函数输入大小 > 5MB 时是必需的。

集群

GPU 驱动的 Kubernetes 节点/Pod 的集合。

GPU 实例类型

指 Cloud Functions 中支持的任何一种 GPU 配置,包括 GPU 型号、单个节点上的 GPU 数量、CPU 核心数等。

函数状态#

函数可以处于以下任何状态

  • ACTIVE - 如果函数可以接收调用。仅当函数处于 ACTIVE 状态时,才能被调用。

  • ERROR - 如果所有函数实例都处于 ERROR 状态。

  • INACTIVE - 当函数创建但尚未部署时,它处于 INACTIVE 状态。当函数取消部署时,状态从 ACTIVE 更改为 INACTIVE

  • DEPLOYING - 当函数正在部署且实例仍在启动以达到最小实例计数时。

工作流程#

使用 Cloud Functions 时的工作流程通常如下所示。

  • 函数创建:使用容器或 helm chart 定义您的函数。

  • 函数部署:在集群上部署您的函数。

  • 函数调用:调用您函数的推理端点。

  • 函数管理:管理您已部署的函数,例如,添加新版本。

  • 函数监控:通过使用 Cloud Functions UI 和第三方工具来监控您的函数。

函数生命周期端点#

函数创建、管理和部署#

下表概述了函数生命周期 API 端点及其各自的用途。

名称

方法

端点

用途

注册函数

POST

/v2/nvcf/functions

创建新函数。

注册函数版本

POST

/v2/nvcf/functions/{functionId}/versions

创建函数的新版本。

删除函数版本

DELETE

/v2/nvcf/functions/{functionId}/versions/{functionVersionId}

删除由其 ID 指定的函数。

列出函数

GET

/v2/nvcf/functions

检索与账户关联的函数列表。

列出函数版本

GET

/v2/nvcf/functions/{functionId}/versions

检索特定函数的版本列表。

检索函数详细信息

GET

/v2/nvcf/functions/{functionId}/versions/{functionVersionId}

检索特定函数版本的详细信息。

创建函数版本部署

POST

/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId}

启动函数版本的部署过程。

删除函数版本部署

DELETE

/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId}

启动函数版本的取消部署过程。

检索函数版本部署

GET

/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId}

检索特定函数版本部署的详细信息。

更新函数版本部署

PUT

/v2/nvcf/deployments/functions/{functionId}/versions/{functionVersionId}

更新函数版本部署的配置。

函数元数据#

当使用 Cloud Functions API 创建函数时,可以指定函数描述和标签列表(字符串形式)作为函数创建请求正文的一部分。然后,此元数据会在包含函数定义的所有响应中返回。目前,这仅是一项 API 功能。请参阅OpenAPI 规范以了解用法。

函数调用#

下表概述了函数调用 API 端点及其各自的用途。

名称

方法

端点

用途

调用函数

POST

v2/nvcf/pexec/functions/{functionId}

调用指定函数的推理端点并返回结果(如果可用)。Cloud Functions 随机选择指定函数的活动版本之一进行推理。

调用函数版本

POST

v2/nvcf/pexec/functions/{functionId}/versions/{functionVersionId}

调用指定函数下指定的版本进行推理,并返回结果。

获取函数调用状态

GET

/v2/nvcf/pexec/status/{invocationRequestId}

用于在返回 202 响应时轮询推理请求的结果。如果原始调用请求返回 200 响应,则无需调用此 API。

注意

阅读更多关于使用调用 API 的信息,请点击此处

资产管理#

名称

方法

端点

用途

创建资产

POST

/v2/nvcf/assets

创建资产 ID 和相应的预签名 URL 以上传文件。

列出资产

GET

/v2/nvcf/assets

返回与账户关联的资产列表。

删除资产

DELETE

/v2/nvcf/assets/{assetId}

使用指定的资产 ID 删除资产。

注意

阅读更多关于使用资产的信息,请点击此处

可见性、集群组和 GPU#

名称

方法

端点

用途

获取函数 ID 的队列长度

GET

/v2/nvcf/queues/functions/{functionId}

返回一个列表,其中包含指定函数的相应队列长度的单个元素。

获取版本 ID 的队列长度

GET

/v2/nvcf/queues/functions/{functionId}/versions/{functionVersionId}

返回一个列表,其中包含指定函数版本 ID 的相应队列长度的单个元素。

获取可用 GPU

GET

/v2/nvcf/supportedGpus

返回您可以访问的 GPU 类型列表。

获取请求 ID 的队列位置

GET

/v2/nvcf/queues/{requestId}/position

返回函数调用请求的特定请求 ID 的估计队列位置(最多 1000)。