入门指南#
前提条件#
请参考 支持矩阵 以确保您拥有受支持的硬件和软件堆栈。
一个 NGC 个人 API 密钥。NIM 微服务使用 API 密钥从 NVIDIA NGC 下载模型。有关更多信息,请参考《NVIDIA NGC 用户指南》中的 生成个人 API 密钥。
当您创建 NGC API 个人密钥时,请从“包含的服务”菜单中至少选择“NGC 目录”。您可以指定更多服务以将该密钥用于其他目的。
模型凭据 获取从 Hive 下载模型的凭据。
启动 NIM 容器#
将您的个人 API 密钥和模型凭据导出为环境变量
export NGC_API_KEY="..." export NIM_REPOSITORY_OVERRIDE="s3://..." export AWS_REGION="..." export AWS_ACCESS_KEY_ID="..." export AWS_SECRET_ACCESS_KEY="..."
更安全的替代方案是使用密码管理器,例如 https://www.passwordstore.org。
登录到 NVIDIA NGC 以便您可以拉取 NIM 容器
$ echo "$NGC_API_KEY" | docker login nvcr.io --username '$oauthtoken' --password-stdin
使用
$oauthtoken
作为用户名,并使用$NGC_API_KEY
作为密码。$oauthtoken
用户名表示您使用 API 密钥而不是用户名和密码进行身份验证。使用其中一个多模态安全模型启动 NIM 容器
docker run -it --rm --name=nim-server \ --runtime=nvidia \ --gpus='"device=0"' \ -e NIM_REPOSITORY_OVERRIDE \ -e AWS_REGION \ -e AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY \ -e NIM_HTTP_API_PORT=8003 \ -p 8003:8003 \ -p 8002:8002 \ nvcr.io/nim/hive/ai-generated-image-detection:1.0.0
docker run -it --rm --name=nim-server \ --runtime=nvidia \ --gpus='"device=0"' \ -e NIM_REPOSITORY_OVERRIDE \ -e AWS_REGION \ -e AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY \ -e NIM_HTTP_API_PORT=8003 \ -p 8003:8003 \ -p 8002:8002 \ nvcr.io/nim/hive/deepfake-image-detection:1.0.0
可选:确认服务已准备好响应推理请求
$ curl -X GET http://127.0.0.1:8003/v1/health/ready
示例输出
{"status":"ready"}
发送推理请求
invoke_url="http://127.0.0.1:8003/v1/infer" input_image_path="input.jpg" # download an example image curl https://assets.ngc.nvidia.com/products/api-catalog/sdxl/sdxl1.jpg > $input_image_path image_b64=$(base64 $input_image_path) length=${#image_b64} echo '{ "input": ["data:image/png;base64,'${image_b64}'"] }' > payload.json curl $invoke_url \ -H "Content-Type: application/json" \ -d @payload.json
预期输出
is_ai_generated
表示介于 0 和 1.0 之间的概率值,指示输入图像是由生成式 AI 模型生成的可能性。possible_sources
提供关于图像来源的更多详细信息,并支持当前使用的最流行的 AI 艺术生成器。如果模型无法识别来源,它将返回 none 作为可能的来源。所有可能的来源分数都已归一化,总和为 1.0,每个分数的范围从 0 到 1.0。{ "data": [ { "index": 0, "is_ai_generated": 0.9994508624076843, "possible_sources": { "sora": 6.149838416291686e-9, "pika": 0.00003106551230303012, "haiper": 4.638551895423627e-15, "kling": 3.5930388438826233e-12, "luma": 0.0000019694166439876426, "hedra": 2.335490201232915e-8, "runway": 7.846174820969054e-10, "flux": 0.032329242676496506, "sdxlinpaint": 0.000004169243311480386, "stablediffusioninpaint": 8.627880077050065e-10, "otherimagegenerators": 0.0012155241565778852, "bingimagecreator": 0.000007865392944950145, "adobefirefly": 0.0060778092592954636, "lcm": 7.558705874544103e-7, "dalle": 0.05188118666410446, "pixart": 0.0000012418740880093537, "glide": 2.7829472060147964e-9, "stablediffusion": 0.003196755424141884, "imagen": 0.0016779577126726508, "amused": 1.1864609295031414e-10, "stablecascade": 0.0000036945552892575506, "midjourney": 0.013604957610368729, "deepfloyd": 1.6731604546293966e-8, "gan": 1.9364195225080039e-7, "stablediffusionxl": 0.8875080347061157, "vqdiffusion": 2.0054453653273185e-9, "kandinsky": 0.000013597166798717808, "wuerstchen": 0.0000017195044392792624, "titan": 0.0000012228841796968482, "ideogram": 0.001472753589041531, "none": 0.0009681681985966861 }, "status": "SUCCESS" } ] }
所有 API 参数的描述都可以在 API 参考 中找到。
invoke_url="http://127.0.0.1:8003/v1/infer" input_image_path="input.jpg" # download an example image curl https://assets.ngc.nvidia.com/products/api-catalog/deepfake-image-detection/input/deepfake.jpg > $input_image_path image_b64=$(base64 $input_image_path) length=${#image_b64} echo '{ "input": ["data:image/png;base64,'${image_b64}'"], "return_image": false }' > payload.json curl $invoke_url \ -H "Content-Type: application/json" \ -d @payload.json
预期输出
输入图像中检测到的每个人脸都由一个边界框表示,其中包含bbox_confidence
- 介于 0 和 1.0 之间的置信度值,指示模型在检测人脸时的置信度。vertices
- 坐标数组,表示检测到的边界框的几何描述,包含左上角和右下角坐标。is_deepfake
- 介于 0 和 1.0 之间的概率值,指示检测到的人脸是 deepfake 的可能性。image
- base64 编码的字符串,表示输入图像,其中叠加了指示检测到的人脸的边界框。仅当有效负载中的 return_image 参数设置为 true 时,此字段才包含在响应中。{ "data": [ { "index": 0, "bounding_boxes": [ { "vertices": [ { "x": 167.9155731201172, "y": 105.52117919921875 }, { "x": 327.764404296875, "y": 327.6148376464844 } ], "bbox_confidence": 0.9352303147315979, "is_deepfake": 0.9982458353042603 } ], "status": "SUCCESS" } ] }
所有 API 参数的描述都可以在 API 参考 中找到。
容器的运行时参数#
标志 |
描述 |
---|---|
|
|
|
在容器停止后删除容器 (请参阅 Docker 文档)。 |
|
为 NIM 容器命名。使用任何首选值。 |
|
确保 NVIDIA 驱动程序在容器中可访问。 |
|
在容器内暴露 NVIDIA GPU 0。如果您在具有多个 GPU 的主机上运行,则需要指定要使用的 GPU。有关挂载特定 GPU 的更多信息,请参阅 GPU 枚举。 |
|
指定要加载的配置文件。有关可用配置文件的信息,请参考 模型。 |
|
指定 NIM 在容器内将使用的端口(默认为 |
|
转发 NIM HTTP 服务器在容器内发布的端口,以便从主机系统访问。: 的左侧是主机系统 ip:port (此处为 |
缓存模型#
首次启动容器时,微服务会从 NGC 下载模型。您可以通过在本地缓存模型来避免在以后的运行中执行此下载步骤。
export LOCAL_NIM_CACHE=~/.cache/nim_sdxl mkdir -p "$LOCAL_NIM_CACHE" chmod 777 $LOCAL_NIM_CACHE docker run -it --rm --name=nim-server \ --runtime=nvidia \ --gpus='"device=0"' \ -e NIM_REPOSITORY_OVERRIDE \ -e AWS_REGION \ -e AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY \ -e NIM_HTTP_API_PORT=8003 \ -p 8003:8003 \ -p 8002:8002 \ -v "$LOCAL_NIM_CACHE:/opt/nim/.cache/" \ nvcr.io/nim/hive/ai-generated-image-detection:1.0.0export LOCAL_NIM_CACHE=~/.cache/nim_sdxl mkdir -p "$LOCAL_NIM_CACHE" chmod 777 $LOCAL_NIM_CACHE docker run -it --rm --name=nim-server \ --runtime=nvidia \ --gpus='"device=0"' \ -e NIM_REPOSITORY_OVERRIDE \ -e AWS_REGION \ -e AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY \ -e NIM_HTTP_API_PORT=8003 \ -p 8003:8003 \ -p 8002:8002 \ -v "$LOCAL_NIM_CACHE:/opt/nim/.cache/" \ nvcr.io/nim/hive/deepfake-image-detection:1.0.0
当您使用模型缓存时,如果您更改了 NIM_MODEL_PROFILE
中的模型配置文件,请在启动容器之前删除主机上缓存目录的内容。删除目录内容可确保微服务仅加载指定的模型配置文件。
停止容器#
以下命令通过停止并删除正在运行的 docker 容器来停止容器。
docker stop nim-server
docker rm nim-server
后续步骤#
有关环境变量和命令行参数的 配置。