快速入门#
本指南提供了一个端到端的工作流程,介绍了如何使用 fastapi_echo_sample 容器在 Cloud Functions 上创建和部署基于容器的函数。这是一个最小的服务器,已配置为与 Cloud Functions 一起使用,并回显发送到其推理端点的任何内容。
在开始之前,请确保您已创建 NGC 个人 API 密钥并已通过 NGC Docker Registry 身份验证。
克隆、构建并将 Docker 镜像推送到 NGC 私有 Registry#
首先克隆并构建 Docker 镜像。
1> git clone https://github.com/NVIDIA/nv-cloud-function-helpers.git
2> cd nv-cloud-function-helpers/examples/fastapi_echo_sample
3> docker build . -t fastapi_echo_sample
现在标记 Docker 镜像并将其推送到 NGC 私有 Registry。
1> docker tag fastapi_echo_sample:latest nvcr.io/$ORG_NAME/fastapi_echo_sample:latest
2> docker push nvcr.io/$ORG_NAME/fastapi_echo_sample:latest
完成后,您现在可以在 NGC 私有 Registry 容器页面中看到新的容器,并且它将可用于函数创建。
使用 Cloud Functions UI 创建和部署函数#
导航到 Cloud Functions UI 并选择“创建函数”,然后选择“自定义容器”。 输入
fastapi_echo_sample
的详细信息。 在此容器中,推理端点为/echo
,健康端点为/health
,并在默认8000
端口上公开这些端点。 无需其他配置更改。


创建后,该函数将显示在函数列表页面中,状态为
INACTIVE
,因为它尚未部署。 默认情况下,每次创建新函数或新函数版本时,都会生成函数 ID 和函数版本 ID。

通过单击函数行右侧的 kebab 菜单来部署函数。

使用 Cloud Functions API 创建和部署函数#
确保您已创建 API 密钥,请参阅 生成 NGC 个人 API 密钥。
在 NGC 组织配置文件页面中找到您的 NGC 组织名称。 这不是显示名称。 例如:
qdrlnbkss123
。通过运行以下 curl 命令,使用
$API_KEY
和您的$ORG_NAME
,通过 API 创建函数。
1 curl --location 'https://api.ngc.nvidia.com/v2/nvcf/functions' \
2 --header 'Content-Type: application/json' \
3 --header 'Accept: application/json' \
4 --header "Authorization: Bearer $API_KEY" \
5 --data '{
6 "name": "my-echo-function",
7 "inferenceUrl": "/echo",
8 "healthUri": "/health",
9 "inferencePort": 8000,
10 "containerImage": "nvcr.io/'$ORG_NAME'/fastapi_echo_sample:latest"
11 }'
它将返回一个函数 ID,列为 id
,以及一个函数版本 ID,列为 versionId
。
使用以下 curl 命令列出您通过 API 创建的函数
1 curl --location 'https://api.ngc.nvidia.com/v2/nvcf/functions?visibility=private' \
2 --header 'Accept: application/json' \
3 --header "Authorization: Bearer $API_KEY"
使用以下 curl 命令通过 API 部署函数
1 curl --location "https://api.ngc.nvidia.com/v2/nvcf/deployments/functions/$FUNCTION_ID/versions/$FUNCTION_VERSION_ID" \
2 --header 'Content-Type: application/json' \
3 --header 'Accept: application/json' \
4 --header "Authorization: Bearer $API_KEY" \
5 --data '{
6 "deploymentSpecifications": [
7 {
8 "backend": "GFN",
9 "gpu": "L40G",
10 "maxInstances": "1",
11 "minInstances": "1"
12 }
13 ]
14 }'
有关更多 API 文档,请参阅 OpenAPI 规范。
使用 NGC CLI 创建和部署函数#
确保您已创建 API 密钥,请参阅 生成 NGC 个人 API 密钥。
确保您已配置 NGC CLI。
运行以下命令来创建函数,它将返回一个函数 ID 和函数版本 ID。
1 ngc cf function create --health-uri /health --inference-port 8000 --container-image nvcr.io/$ORG_NAME/fastapi_echo_sample:latest --name my-echo-function --inference-url /echo
使用以下命令列出您创建的函数
1 ngc cf function list --access-filter=private
使用以下命令部署函数
1 ngc cf function deploy create --deployment-specification GFN:L40:gl40_1.br20_2xlarge:1:1 $FUNCTION_ID:$FUNCTION_VERSION_ID
有关更多命令,请参阅 NGC CLI 文档。
调用函数#
函数部署后,使用以下 curl 命令调用其推理端点
1 curl --location "https://api.nvcf.nvidia.com/v2/nvcf/pexec/functions/$FUNCTION_ID" \
2 --header 'Content-Type: application/json' \
3 --header "Authorization: Bearer $API_KEY" \
4 --data '{
5 "message": "hello world"
6 }'