使用以下步骤,使用 Azure 容器实例轻松缩放云中的 Foundry Tools 应用程序。 容器化可帮助你集中精力构建应用程序,而不是管理基础结构。 有关使用容器的详细信息,请参阅功能和优势。
Prerequisites
该食谱适用于任何 Foundry Tools 容器。 在使用方案之前,必须创建 Foundry 资源。 每个支持容器的 Foundry 工具都有一篇用于安装和配置容器服务的“如何安装”一文。 某些服务需要一个文件或一组文件作为容器的输入。在使用此解决方案之前,请确保了解并已成功使用过容器。
你正在使用的 Foundry 工具的 Azure 资源。
Azure 资源 终结点 URL - 请查阅您的特定服务的容器“如何安装”指南,以了解终结点 URL 在 Azure 门户中的位置以及 URL 的正确示例。 确切的格式可能因服务而异。
Azure 资源 密钥 - 密钥位于 Azure 资源的 “密钥 ”页上。 您只需要两个密钥中的一个即可。 密钥是包含 84 个字母数字字符的字符串。
本地主机(你的电脑)上的单个 Foundry Tools 容器。 确保你可以:
- 使用
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(“公共预览版”)。 |
| 映像名称 |
输入 Foundry Tools 容器位置。 位置是用作 docker pull 命令参数的项。 请参阅容器存储库和映像,获取可用的映像名称及其相应的存储库。
映像名称必须是完全限定的,并指定三个部分。 首先是容器注册表,接着是存储库,最后是映像名称:<container-registry>/<repository>/<image-name>。
这是一个示例:mcr.microsoft.com/azure-cognitive-services/keyphrase 表示 Foundry Tools 存储库下 Microsoft 容器注册表中的“关键短语提取”映像。 另一个例子:containerpreview.azurecr.io/microsoft/cognitive-services-speech-to-text 表示“容器预览版”容器注册表的 Microsoft 存储库中的“语音转文本”映像。 |
| OS 类型 |
Linux |
| 大小 |
对于特定的 Azure AI 服务容器,请将大小更改为建议的设置: 2 个 CPU 核心 4 GB |
在“网络”选项卡上,输入以下详细信息:
| 设置 |
值 |
| 端口 |
将 TCP 端口设置为 5000。 在端口 5000 上公开此容器。 |
在“高级”选项卡上,输入所需的“环境变量”作为 Azure 容器实例资源的容器计费设置:
| 密钥 |
值 |
ApiKey |
从资源的“键和终结点”页复制。 它是一个由 84 个字母数字组成的字符串(不包含空格或短划线),即 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx。 |
Billing |
从资源的“键和终结点”页复制的终结点 URL。 |
Eula |
accept |
选择“查看并创建”
验证通过后,单击“创建”完成创建过程
资源在成功部署后即可使用
从 Azure CLI 创建 Azure 容器实例资源
必须先安装 Azure CLI,然后才能运行本文中的命令。
下面的 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 和内存可用性。 请参阅位置和资源表,以获取每个位置和操作系统的容器的可用资源列表。
我们将依赖为 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 字符串。 容器映像很可能会在一段时间内不可用,但资源现在已部署。
提示
请密切关注公共预览版中 Foundry 工具的位置,因为需要相应地调整 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