函数管理#

函数版本控制#

每次您创建一个新函数时,都会创建一个函数 ID 以及一个函数版本 ID。您可以通过指定其他模型/容器/Helm Charts 来使用以及其他配置等,来创建此函数的其他版本。这是一个 API 调用示例

 1curl -X 'POST' \
 2"https://api.nvcf.nvidia.com/v2/nvcf/functions/$FUNCTION_ID/versions" \
 3  -H 'accept: application/json' \
 4  -H "Authorization: Bearer $API_KEY" \
 5  -d '{
 6  "name": "echo_function",
 7  "inferenceUrl": "/echo",
 8  "containerImage": "nvcr.io/'$ORG_NAME'/echo:latest",
 9  "apiBodyFormat": "CUSTOM"
10}'

多个函数版本允许每个版本有不同的部署配置,同时仍然可以通过单个函数端点访问。多个函数版本也可以用于支持 A/B 测试。

警告

只有当不同版本之间的 API 兼容时,才应使用函数版本控制。不同的 API 应创建为新函数。

函数版本控制最佳实践#

在对函数进行透明的生产更新时,利用函数版本控制。另请参阅容器版本控制

前提条件#

首先,确保您的客户端应用程序是通过函数 ID 而不是函数版本 ID 来调用您的函数。这允许请求均匀地分布在您函数的所有已部署版本中。

  • Invocation API endpoint should be https://api.nvcf.nvidia.com/v2/nvcf/pexec/functions/{functionID}

函数更新流程(A/B 测试)#

  1. 要启动更新,请通过 API、UI 或 CLI 创建函数的新版本。

  2. 部署您的函数的新版本。理想情况下,复制最小和最大实例计数,使其与您函数的现有版本相同。这确保它将成功处理相同的流量。

注意

在此部署之后,对此函数 ID 的调用现在将基于函数实例的可用性路由到函数的新版本和旧版本如果您不希望这种情况发生,例如为了首先执行一些测试,请部署一个单独的开发函数。

  1. 通过多次调用来验证端点是否成功部署。进行任何其他验证,例如负载测试或比较两个版本的第三方监控和分析。

  2. 一旦满意,要完成更新,请取消部署旧版本的函数。所有调用现在都将成功路由到新版本的函数。