资产管理#
注意
资产仅适用于“基于容器”的函数。
对于基于图像到图像或图像修复的生成或推理,必须从一个或多个现有图像开始,作为诸如 Stable Diffusion 等模型的输入。使用 NVCF 的资产端点,客户可以为每个输入图像创建一个资产 ID 和相应的预签名上传 URL。然后,客户可以使用其相应的预签名 URL 上传现有图像,并在调用函数时指定资产 ID。当使用一个或多个资产 ID 调用函数时,NVCF 会创建预签名的下载 URL,并将它们提供给 Worker。Worker 使用这些预签名的下载 URL 下载先前上传的输入图像,并将它们复制到文件系统上的固定位置。然后,客户的容器可以从该固定位置加载这些输入图像,并在推理期间使用它们。
NVCF 资产端点提供的预签名 URL 的 TTL 为 1 小时。因此,客户应在 TTL 过期前使用它来上传其输入图像。这些图像或资产在 24 小时后会被删除。每个资产上传的大小上限为 5GB。
除了图像,可以想象资产可以是特定函数调用请求期间需要使用的任何东西。例如,存档/zip 可以是一个资产。

创建资产 ID 和预签名上传 URL#
对于每个输入文件/图像,可以创建一个相应的资产 ID 和预签名上传 URL,如下所示
curl -X POST https://api.nvcf.nvidia.com/v2/nvcf/assets \
-H 'Authorization: Bearer <JWT Token>' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"contentType": "image/png",
"description": "red-cat-photo"
}'
这应产生如下所示的响应
{
"assetId":"b5b841c3-11c2-4c34-b057-9475e82c5369",
"uploadUrl":"<pre-signed-upload-url>",
"contentType":"image/png",
"description":"red-cat-photo"
}
将资产上传到云存储#
获得预签名上传 URL 后,即可使用它上传输入文件/图像,如下所示
curl -X PUT -T my-image-file.png <pre-signed-URL> -H "Content-Type: image/png" -H "x-amz-meta-nvcf-asset-description: red-cat-photo"
注意
确保 POST /v2/nvcf/assets 请求负载中的 contentType 与用于上传资产的 curl 命令中的 Content-Type 标头匹配。
同样,请确保 POST /v2/nvcf/assets 请求负载中的 description 与用于上传资产的 curl 命令中的 x-amz-meta-nvcf-asset-description 标头匹配。否则,您将看到状态代码为 400 的错误。
列出资产#
您可以获取 NVIDIA 云账户的资产 ID 列表。
curl -X GET https://api.nvcf.nvidia.com/v2/nvcf/assets -H "Authorization: Bearer <JWT Token>"
目前,这仅返回 1000 个资产 ID。如果您的 NVIDIA 云账户有超过 1000 个资产,您将看不到所有资产。
删除资产#
资产的默认 TTL 为 24 小时。您可以更快地使用删除资产 API 删除资产。
curl -X DELETE https://api.nvcf.nvidia.com/v2/nvcf/assets/{assetId} -H "Authorization: Bearer <JWT Token>"
在调用函数时指定资产#
您可以在调用函数时使用 NVCF-INPUT-ASSET-REFERENCES HTTP 标头指定一个或多个资产 ID,如下所示
curl -X https://api.nvcf.nvidia.com0/v2/nvcf/pexec/functions/<function-id> \
-H "Content-Type: application/json" \
-H "NVCF-INPUT-ASSET-REFERENCES: uuid-asset-id1, .." \ # Optional
-H "Authorization: Bearer $JWT" \
-d @- <<EOF
{
"opaque": "object" // Your inference payload
}
EOF
将资产与自定义容器一起使用#
当客户容器在函数调用期间被调用时,它可以使用以下 HTTP 标头来获取特定调用的资产
NVCF-REQID: “<reqId from the message>”
NVCF-FUNCTION-ASSET-IDS: “<comma separated list of asset IDs>”
NVCF-ASSET-DIR: “<absolute path to the directory where all assets will be for the specific invocation request>”
资产的路径将在请求标头中:“NVCF-ASSET-DIR”。
标头“NVCF-FUNCTION-ASSET-IDS”包含以逗号分隔的资产 ID 列表,与资产文件名相同。使用这些 ID 构建资产的完整路径。
示例
NVCF-REQID: b9223090-b7da-11ed-afa1-0242ac120002
NVCF-ASSET-DIR=/var/inf/inputAssets/b9223090-b7da-11ed-afa1-0242ac120002
NVCF-FUNCTION-ASSET-IDS=38652fac-b7ee-11ed-afa1-0242ac120002,386531f0-b7ee-11ed-afa1-0242ac120003
两个资产文件将是
/var/inf/inputAssets/b9223090-b7da-11ed-afa1-0242ac120002/38652fac-b7ee-11ed-afa1-0242ac120002
/var/inf/inputAssets/b9223090-b7da-11ed-afa1-0242ac120002/386531f0-b7ee-11ed-afa1-0242ac120003
在 Triton Python 后端检索资产目录和资产 ID#
本节提供有关在使用 Triton Python 后端时如何检索资产目录和资产 ID 的指南。这在处理自定义容器和函数中的资产管理时尤其有用。
步骤
导入助手模块:
使用可用的容器 helpers 模块。该模块提供了检索资产路径的基本方法。
from nvcf_container import helpers
获取资产路径:
使用 helpers.get_input_path() 和 helpers.get_output_path() 方法分别获取输入和输出资产的路径。
input_path = helpers.get_input_path() output_path = helpers.get_output_path()
访问资产 ID:
资产 ID 可以从环境变量 NVCF_ASSET_ID 中检索。此 ID 对于引用特定资产非常重要。
import os asset_id = os.environ.get('NVCF_ASSET_ID')
服务器配置:
确保 Triton 服务器以 –http-header-forward-pattern NVCF-.* 选项启动。此配置对于将资产相关的 HTTP 标头转发到后端是必要的。
tritonserver --http-header-forward-pattern NVCF-.*