快速入门#

本指南提供了一个端到端的工作流程,介绍了如何使用 fastapi_echo_sample 容器在 Cloud Functions 上创建和部署基于容器的函数。这是一个最小的服务器,已配置为与 Cloud Functions 一起使用,并回显发送到其推理端点的任何内容。

在开始之前,请确保您已创建 NGC 个人 API 密钥并已通过 NGC Docker Registry 身份验证

克隆、构建并将 Docker 镜像推送到 NGC 私有 Registry#

  1. 首先克隆并构建 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
  1. 现在标记 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
  1. 完成后,您现在可以在 NGC 私有 Registry 容器页面中看到新的容器,并且它将可用于函数创建。

使用 Cloud Functions UI 创建和部署函数#

  1. 导航到 Cloud Functions UI 并选择“创建函数”,然后选择“自定义容器”。 输入 fastapi_echo_sample 的详细信息。 在此容器中,推理端点为 /echo,健康端点为 /health,并在默认 8000 端口上公开这些端点。 无需其他配置更改。

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

../_images/container-function-creation-3.png
  1. 通过单击函数行右侧的 kebab 菜单来部署函数。

../_images/container-function-deploy.png

使用 Cloud Functions API 创建和部署函数#

  1. 确保您已创建 API 密钥,请参阅 生成 NGC 个人 API 密钥

  2. NGC 组织配置文件页面中找到您的 NGC 组织名称。 这不是显示名称。 例如:qdrlnbkss123

  3. 通过运行以下 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

  1. 使用以下 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"
  1. 使用以下 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 }'
  1. 有关更多 API 文档,请参阅 OpenAPI 规范

使用 NGC CLI 创建和部署函数#

  1. 确保您已创建 API 密钥,请参阅 生成 NGC 个人 API 密钥

  2. 确保您已配置 NGC CLI

  3. 运行以下命令来创建函数,它将返回一个函数 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. 使用以下命令列出您创建的函数

1 ngc cf function list --access-filter=private
  1. 使用以下命令部署函数

1 ngc cf function deploy create --deployment-specification GFN:L40:gl40_1.br20_2xlarge:1:1 $FUNCTION_ID:$FUNCTION_VERSION_ID
  1. 有关更多命令,请参阅 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 }'