使用以下步骤,可以轻松地通过 Azure 容器实例在云中缩放 Azure AI 服务应用程序。 容器化可帮助你集中精力构建应用程序,而不是管理基础结构。 有关使用容器的详细信息,请参阅功能和优势。
先决条件
此方案适用于任何 Azure AI 服务容器。 使用此方案之前,必须先创建 Azure AI 服务资源。 支持容器的每个 Azure AI 服务都有一篇“如何安装”文章,其中介绍了如何为容器安装并配置服务。 某些服务需要一个文件或一组文件作为容器的输入。在使用此解决方案之前,请确保了解并已成功使用过容器。
你正在使用的 Azure AI服务的 Azure 资源。
Azure AI 服务终结点 URL - 查看容器的特定服务的“如何安装”文章,以了解终结点 URL 在 Azure 门户内的位置,以及 URL 的正确示例的样式。 确切的格式可能因服务而异。
Azure A 服务资源密钥 - 密钥位于 Azure 资源的“密钥”页面上。 您只需要两个密钥中的一个即可。 密钥是包含 32 个字母数字字符的字符串。
本地主机(你的计算机)上的单个 Azure AI 服务容器。 确保你可以:
- 使用
docker pull
命令拉取映像。
- 使用
docker run
命令通过所有必需的配置设置成功运行本地容器。
- 调用容器的终结点,获取 HTTP 2xx 响应和 JSON 响应。
尖括号 <>
中的所有变量都需要替换为你自己的值。 此替换包括尖括号。
重要
LUIS 容器需要在运行时中拉取的 .gz
模型文件。 容器必须能够通过容器实例中的卷装载来访问此模型文件。 若要上传模型文件,请执行以下步骤:
- 创建 Azure 文件共享。 记下 Azure 存储帐户名称、密钥和文件共享名称,因为稍后需要用到它们。
- 从 LUIS 门户中导出你的 LUIS 模型(打包的应用)。
- 在 Azure 门户中,导航到你的存储帐户资源的“概述”页,然后选择“文件共享”。
- 选择你最近创建的文件共享名称,然后选择“上传”。 接着上传打包的应用。
通过 Azure 门户创建 Azure 容器实例资源
转到容器实例的创建页。
在“基本信息”选项卡中输入以下详细信息:
设置 |
值 |
订阅 |
选择订阅。 |
资源组 |
选择可用的资源组,或者创建一个新的,例如 cognitive-services 。 |
容器名称 |
输入一个名称,例如 cognitive-container-instance 。 此名称必须小写。 |
位置 |
选择要部署的区域。 |
映像类型 |
如果容器映像存储在不需凭据的容器注册表中,请选择 Public 。 如果访问容器映像时需要凭据,请选择 Private 。 请参阅容器存储库和映像,详细了解容器映像是 Public 还是 Private (“公共预览版”)。 |
映像名称 |
输入 Azure AI 服务容器的位置。 位置是用作 docker pull 命令参数的项。 请参阅容器存储库和映像,获取可用的映像名称及其相应的存储库。
映像名称必须完全限定,并指定三个部分。 首先是容器注册表,接着是存储库,最后是映像名称:<container-registry>/<repository>/<image-name> 。
这是一个示例:mcr.microsoft.com/azure-cognitive-services/keyphrase 表示 Azure AI 服务存储库下 Microsoft 容器注册表中的“关键短语提取”映像。 另一示例:containerpreview.azurecr.io/microsoft/cognitive-services-speech-to-text 表示“容器预览版”容器注册表的 Microsoft 存储库中的“语音转文本”映像。 |
OS 类型 |
Linux |
大小 |
对于特定的 Azure AI 服务容器,请将大小更改为建议的设置: 2 个CPU 核心 4 GB |
在“网络”选项卡上,输入以下详细信息:
设置 |
“值” |
端口 |
将 TCP 端口设置为 5000 。 在端口 5000 上公开此容器。 |
在“高级”选项卡上,输入所需的环境变量作为 Azure 容器实例资源的容器计费设置:
键 |
值 |
ApiKey |
从资源的“键和终结点”页复制。 它是一个由 32 个字母数字组成的字符串(不包含空格或短划线),即 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 。 |
Billing |
从资源的“键和终结点”页复制的终结点 URL。 |
Eula |
accept |
选择“查看并创建”
验证通过后,单击“创建”,完成创建过程
成功部署资源以后,即可使用它
在 Azure CLI 中创建 Azure 容器实例资源
下面的 YAML 定义Azure 容器实例资源。 将内容复制并粘贴到名为 my-aci.yaml
的新文件中,并将注释的值替换为自己的值。 请参阅模板格式以获取有效的 YAML。 请参阅容器存储库和映像,获取可用的映像名称及其相应的存储库。 有关容器实例的 YAML 引用的详细信息,请参阅 YAML 参考:Azure 容器实例。
apiVersion: 2018-10-01
location: # < Valid location >
name: # < Container Group name >
properties:
imageRegistryCredentials: # This is only required if you are pulling a non-public image that requires authentication to access. For example Text Analytics for health.
- server: containerpreview.azurecr.io
username: # < The username for the preview container registry >
password: # < The password for the preview container registry >
containers:
- name: # < Container name >
properties:
image: # < Repository/Image name >
environmentVariables: # These env vars are required
- name: eula
value: accept
- name: billing
value: # < Service specific Endpoint URL >
- name: apikey
value: # < Service specific API key >
resources:
requests:
cpu: 4 # Always refer to recommended minimal resources
memoryInGb: 8 # Always refer to recommended minimal resources
ports:
- port: 5000
osType: Linux
volumes: # This node, is only required for container instances that pull their model in at runtime, such as LUIS.
- name: aci-file-share
azureFile:
shareName: # < File share name >
storageAccountName: # < Storage account name>
storageAccountKey: # < Storage account key >
restartPolicy: OnFailure
ipAddress:
type: Public
ports:
- protocol: tcp
port: 5000
tags: null
type: Microsoft.ContainerInstance/containerGroups
注意
并非所有位置都具有相同的 CPU 和内存可用性。 请参阅位置和资源表,以获取每个位置和 OS 的容器的可用资源列表。
我们将依赖于我们为 az container create
命令创建的 YAML 文件。 在 Azure CLI 中执行 az container create
命令,将 <resource-group>
替换为你自己的值。 另外,若要在 YAML 部署中保护值,请参考安全值。
az container create -g <resource-group> -f my-aci.yaml
如果命令有效,则命令的输出为 Running...
。过一段时间后,输出更改为表示新建 ACI 资源的 JSON 字符串。 容器映像很可能会在一段时间内不可用,但现在已部署资源。
提示
请密切注意公共预览版 Azure AI 服务的位置,因为需要根据位置来相应地调整 YAML。
使用容器实例
选择“概述”并复制 IP 地址。 它将是数字 IP 地址,例如 55.55.55.55
。
打开新的浏览器选项卡,并使用 IP 地址(例如 http://<IP-address>:5000 (http://55.55.55.55:5000
)。 此时会显示容器的主页,告知你该容器处于运行状态。

选择“服务 API 说明”以查看容器的 Swagger 页面。
选择任何 POST API,然后选择“试用”。此时会显示参数,其中包括输入。 填写这些参数。
选择“执行”以将请求发送到你的容器实例。
你已成功地在 Azure 容器实例中创建并使用了 Azure AI 容器。
验证容器是否正在运行
有几种方法可用于验证容器是否正在运行。 找到相关容器的外部 IP 地址和公开端口,并打开你常用的 Web 浏览器。 使用以下各种请求 URL 验证容器是否正在运行。 此处列出的示例请求 URL 是 http://localhost:5000
,但是你的特定容器可能会有所不同。 请确保依赖容器的外部 IP 地址和公开端口。
请求 URL |
用途 |
http://localhost:5000/ |
容器提供主页。 |
http://localhost:5000/ready |
使用 GET 对此 URL 进行请求,可以验证容器是否已准备好接受针对模型的查询。 此请求可用于 Kubernetes 运行情况和就绪情况探测。 |
http://localhost:5000/status |
同样使用 GET 对此 URL 进行请求,可以验证用于启动容器的 api-key 是否有效,而不会导致终结点查询。 此请求可用于 Kubernetes 运行情况和就绪情况探测。 |
http://localhost:5000/swagger |
容器为终结点提供一组完整的文档以及“尝试”功能。 使用此功能可以将设置输入到基于 Web 的 HTML 表单并进行查询,而无需编写任何代码。 查询返回后,将提供示例 CURL 命令,用于演示所需的 HTTP 标头和正文格式。 |

注意
如果针对运行状况容器运行“文本分析”,请使用以下 URL 来提交查询:http://localhost:5000/text/analytics/v3.2-preview.1/entities/health