函数生命周期#
云“函数”是一种抽象概念,允许您运行代码而无需管理部署和基础设施。Cloud Functions 通过自动启用对 GPU 容量和自动扩展的访问,简化了在云中托管 AI 推理和微调工作负载的过程。云函数通常被认为是无状态的。
因此,函数作者仅负责维护其 AI 模型和相关代码。这在下图中以绿色突出显示。要使用 Cloud Functions,您需要创建一个函数,然后为其定义部署规范,并将其部署在 NVIDIA 托管的可用 GPU 支持的集群之一上。

注意
一个 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 时的工作流程通常如下所示。
函数生命周期端点#
函数创建、管理和部署#
下表概述了函数生命周期 API 端点及其各自的用途。
名称 |
方法 |
端点 |
用途 |
---|---|---|---|
注册函数 |
POST |
|
创建新函数。 |
注册函数版本 |
POST |
|
创建函数的新版本。 |
删除函数版本 |
DELETE |
|
删除由其 ID 指定的函数。 |
列出函数 |
GET |
|
检索与账户关联的函数列表。 |
列出函数版本 |
GET |
|
检索特定函数的版本列表。 |
检索函数详细信息 |
GET |
|
检索特定函数版本的详细信息。 |
创建函数版本部署 |
POST |
|
启动函数版本的部署过程。 |
删除函数版本部署 |
DELETE |
|
启动函数版本的取消部署过程。 |
检索函数版本部署 |
GET |
|
检索特定函数版本部署的详细信息。 |
更新函数版本部署 |
PUT |
|
更新函数版本部署的配置。 |
函数元数据#
当使用 Cloud Functions API 创建函数时,可以指定函数描述和标签列表(字符串形式)作为函数创建请求正文的一部分。然后,此元数据会在包含函数定义的所有响应中返回。目前,这仅是一项 API 功能。请参阅OpenAPI 规范以了解用法。
函数调用#
下表概述了函数调用 API 端点及其各自的用途。
名称 |
方法 |
端点 |
用途 |
---|---|---|---|
调用函数 |
POST |
|
调用指定函数的推理端点并返回结果(如果可用)。Cloud Functions 随机选择指定函数的活动版本之一进行推理。 |
调用函数版本 |
POST |
|
调用指定函数下指定的版本进行推理,并返回结果。 |
获取函数调用状态 |
GET |
|
用于在返回 202 响应时轮询推理请求的结果。如果原始调用请求返回 200 响应,则无需调用此 API。 |
注意
阅读更多关于使用调用 API 的信息,请点击此处。
资产管理#
名称 |
方法 |
端点 |
用途 |
---|---|---|---|
创建资产 |
POST |
|
创建资产 ID 和相应的预签名 URL 以上传文件。 |
列出资产 |
GET |
|
返回与账户关联的资产列表。 |
删除资产 |
DELETE |
|
使用指定的资产 ID 删除资产。 |
注意
阅读更多关于使用资产的信息,请点击此处。
可见性、集群组和 GPU#
名称 |
方法 |
端点 |
用途 |
---|---|---|---|
获取函数 ID 的队列长度 |
GET |
|
返回一个列表,其中包含指定函数的相应队列长度的单个元素。 |
获取版本 ID 的队列长度 |
GET |
|
返回一个列表,其中包含指定函数版本 ID 的相应队列长度的单个元素。 |
获取可用 GPU |
GET |
|
返回您可以访问的 GPU 类型列表。 |
获取请求 ID 的队列位置 |
GET |
|
返回函数调用请求的特定请求 ID 的估计队列位置(最多 1000)。 |