分析映像容器会扫描映像以查找具有多严重性级别的性内容、暴力、仇恨和自我伤害。 本指南介绍如何下载、安装和运行内容安全映像容器。
有关先决条件、验证容器是否正在运行、在同一主机上运行多个容器以及运行断开连接的容器的详细信息,请参阅使用 Docker 安装和运行内容安全容器。
指定容器映像
可在 Microsoft 容器注册表 (MCR) 联合中找到所有受支持版本的内容安全分析映像容器映像。 该映像驻留在 azure-cognitive-services/contentsafety 存储库中,名为 image-analyze。
完全限定的容器名称为 mcr.microsoft.com/en-us/product/azure-cognitive-services/contentsafety/image-analyze。 追加特定容器版本或追加 :latest 以获取最新版本。 例如:
| 版本 |
路径 |
| 最晚 |
mcr.microsoft.com/azure-cognitive-services/contentsafety/image-analyze:latest
latest 标记会拉取最新映像。 |
1.0.0-amd64-preview |
mcr.microsoft.com/azure-cognitive-services/contentsafety/image-analyze:1.0.0-amd64-preview |
获取容器映像
请确保满足先决条件,包括所需的硬件。 另请参阅为每个内容安全容器建议的资源分配部分。
使用 docker pull 命令从 Microsoft Container Registry 下载容器映像:
docker mcr.microsoft.com/azure-cognitive-services/contentsafety/image-analyze:latest
运行容器
使用 docker run 命令运行容器。
下表列出了各个 docker run 参数及其对应的说明:
| 参数 |
说明 |
{ENDPOINT_URI} |
必须使用该终结点进行计量和计费。 有关详细信息,请参阅计费参数。 |
{API_KEY} |
API 密钥是必需的。 有关详细信息,请参阅计费参数。 |
运行内容安全分析映像容器时,请根据要求和建议配置端口、内存和 CPU。
下面是一个示例 docker run 命令以及占位符值。 必须指定 ENDPOINT_URI 和 API_KEY 的值:
docker run --rm -it -p 5000:5000 --gpus all \
mcr.microsoft.com/azure-cognitive-services/contentsafety/image-analyze:latest \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}
命令详细信息::
- 从容器映像运行
image-analyze 容器。
- 使用所有可用的 GPU 资源(通过指定
--gpus all)。 内容安全容器需要 CUDA 以获得最佳性能。 在主机要求和建议中了解详细信息。 此外,请确保主机安装 NVIDIA 容器工具包。
- 公开 TCP 端口 5000,并为容器分配伪 TTY。
- 退出后自动删除容器。 容器映像在主计算机上仍然可用。
若要运行断开连接的容器(未连接到 Internet),必须提交请求表单并等待批准。 有关应用和购买承诺计划以在断开连接的环境中使用容器的详细信息,请参阅 Azure AI 服务文档中的在断开连接的环境中使用容器。
如果你已获准运行断开连接的容器,以下示例显示了要使用的 docker run 命令的格式和占位符值。 将这些值替换为你自己的值。
| 占位符 |
说明 |
{IMAGE} |
要使用的容器映像。
例如:mcr.microsoft.com/azure-cognitive-services/content safety-to-image:latest |
{LICENSE_MOUNT} |
将下载和装载许可证的路径。
例如:/host/license:/path/to/license/directory |
{ENDPOINT_URI} |
用于对服务请求进行身份验证的终结点。 可以在 Azure 门户中资源的“密钥和终结点”页上找到此项。
例如:https://<your-resource-name>.cognitiveservices.azure.com |
{API_KEY} |
内容安全资源的密钥。 可以在 Azure 门户中资源的“密钥和终结点”页上找到此项。 |
{CONTAINER_LICENSE_DIRECTORY} |
容器本地文件系统上的许可证文件夹的位置。
例如:/path/to/license/directory |
docker run --rm -it -p 5000:5000 \
-v {LICENSE_MOUNT} \
{IMAGE} \
eula=accept \
billing={ENDPOINT_URI} \
apikey={API_KEY} \
DownloadLicense=True \
Mounts:License={CONTAINER_LICENSE_DIRECTORY}
DownloadLicense=True 命令中的 docker run 参数将会下载一个许可证文件,以支持 Docker 容器能够在未连接到 Internet 时运行。 它还包含到期日期,在此日期之后,许可证文件将失效,无法运行容器。 只能将许可证文件用于你已获批准的相应容器。 例如,不能将 content safety-to-image 容器的许可证文件用于 neural-image-to-content-safety 容器。
下载许可证文件后,可以在断开连接的环境中运行容器。 以下示例演示你将使用的 docker run 命令的格式设置以及占位符值。 将这些值替换为你自己的值。
无论容器在何处运行,都必须将许可证文件装载到容器,并且必须使用 Mounts:License= 指定容器本地文件系统上许可证文件夹的位置。 还必须指定输出装载,以便可以写入计费使用情况记录。
| 占位符 |
Value |
格式或示例 |
{IMAGE} |
要使用的容器映像。
例如:mcr.microsoft.com/azure-cognitive-services/content safety-to-image:latest |
|
{MEMORY_SIZE} |
要分配给容器的适当内存大小。
例如:4g |
|
{NUMBER_CPUS} |
要分配给容器的适当 CPU 数。
例如:4 |
|
{LICENSE_MOUNT} |
将放置和装载许可证的路径。
例如:/host/license:/path/to/license/directory |
|
{OUTPUT_PATH} |
日志记录的输出路径。
例如:/host/output:/path/to/output/directory
有关详细信息,请参阅 Azure AI 服务文档中的使用情况记录。 |
|
{CONTAINER_LICENSE_DIRECTORY} |
容器本地文件系统上的许可证文件夹的位置。
例如:/path/to/license/directory |
|
{CONTAINER_OUTPUT_DIRECTORY} |
容器本地文件系统上的输出文件夹的位置。
例如:/path/to/output/directory |
|
docker run --rm -it -p 5000:5000 --memory {MEMORY_SIZE} --cpus {NUMBER_CPUS} \
-v {LICENSE_MOUNT} \
-v {OUTPUT_PATH} \
{IMAGE} \
eula=accept \
Mounts:License={CONTAINER_LICENSE_DIRECTORY}
Mounts:Output={CONTAINER_OUTPUT_DIRECTORY}
内容安全容器提供了一个默认目录,用于在运行时写入许可证文件和计费日志。 默认目录分别为 /license 和 /output。
使用 docker run -v 命令将这些目录装载到容器时,请确保在运行容器之前将本地计算机目录的所有权设置为 user:group nonroot:nonroot。
这里有用于设置文件/目录所有权的示例命令:
sudo chown -R nonroot:nonroot <YOUR_LOCAL_MACHINE_PATH_1> <YOUR_LOCAL_MACHINE_PATH_2> ...
测试容器
容器启动并运行后,可以通过向容器中部署的 REST 终结点发送请求来验证其操作。 为此,请执行快速入门中的步骤。 请注意,需要将终结点 URL 替换为特定于容器部署的 Docker URL。 此外,请确保使用主机身份验证,而不是基于密钥的身份验证。
分析图像快速入门
后续步骤