容器使你能够在自己的环境中运行翻译器服务的一些功能。 容器非常适合用于满足特定的安全性和数据管理要求。 本文介绍如何下载、安装以及运行翻译器容器。
通过翻译器容器,你可以生成翻译器应用程序体系结构,该体系结构针对可靠的云功能和边缘位置进行了优化。
请参阅使用翻译器容器时
支持的语言
列表。
若要使用翻译器容器,必须提交在线请求并获得批准。 有关详细信息,请参阅下面的请求批准运行容器。
与云产品/服务相比,翻译器容器支持的功能有限。 有关详细信息,请参阅
容器转换方法
。
首先,需要一个有效的
Azure 帐户
。 如果没有帐户,可以
创建一个免费帐户
。
还需要具备以下条件:
Docker 引擎
-
需要在
主计算机
上安装 Docker 引擎。 Docker 提供用于在
macOS
、
Windows
和
Linux
上配置 Docker 环境的包。 有关 Docker 和容器的基础知识,请参阅
Docker 概述
。
-
必须将 Docker 配置为允许容器连接 Azure 并向其发送账单数据。
-
在 Windows 上,还必须将 Docker 配置为支持 Linux 容器 。
翻译器资源
-
区域不是“全局”的 Azure
翻译器
资源、关联的 API 密钥和终结点 URI。 启动容器需要这两个值,可在资源概述页面上找到这两个值。
密钥用于访问 Azure AI 资源。 不要共享你的密钥。 以安全方式存储密钥(例如,使用 Azure Key Vault 来存储)。 此外,我们建议定期重新生成这些密钥。 发出 API 调用只需一个密钥。 重新生成第一个密钥时,可以使用第二个密钥来持续访问服务。
主机是运行 Docker 容器且基于 x64 的计算机。 它可以是本地计算机或 Azure 中的 Docker 托管服务,例如:
Azure Kubernetes 服务
。
Azure 容器实例
。
部署到
Azure Stack
的
Kubernetes
群集。 有关详细信息,请参阅
将 Kubernetes 部署到 Azure Stack
。
容器要求和建议
下表介绍了为翻译器容器分配的最小和建议的 CPU 核心数和内存量。
请求批准以运行容器
完成并提交
适用于封闭服务的 Azure AI 服务应用程序
,以请求访问容器。
通过该表单请求有关你、你的公司以及要使用该容器的用户方案的信息。 提交表单后,Azure AI 服务团队会对其进行评审,并在 10 个工作日内通过电子邮件向你发送决定。
在此表单上,必须使用与 Azure 订阅 ID 关联的电子邮件地址。
用于运行容器的 Azure 资源必须已使用批准的 Azure 订阅 ID 创建。
请检查你的电子邮件(“收件箱”和“垃圾邮件”文件夹)以获取来自 Microsoft 的应用程序状态更新。
获得批准后,便可以根据本文稍后所述从 Microsoft Container Registry (MCR) 下载该容器,然后运行该容器。
如果你的 Azure 订阅尚未获得批准,则无法运行该容器。
翻译器容器映像
在
mcr.microsoft.com
容器注册表联合项中可以找到翻译器容器映像。 该映像驻留在
azure-cognitive-services/translator
存储库中,名为
text-translation
。 完全限定的容器映像名称为
mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest
。
要使用最新版本的容器,可以使用
latest
标记。 可以
在 MCR 上找到标记
的完整列表。
使用 docker 命令获取容器映像
以下各节中的 docker 命令使用反斜杠
\
作为行继续符。 根据主机操作系统的要求替换或删除字符。
必须指定
EULA
、
Billing
和
ApiKey
选项运行容器;否则,该容器不会启动。
使用
docker run
命令从 Microsoft 容器注册表下载容器映像并运行该影像。
docker run --rm -it -p 5000:5000 --memory 12g --cpus 4 \
-v /mnt/d/TranslatorContainer:/usr/local/models \
-e apikey={API_KEY} \
-e eula=accept \
-e billing={ENDPOINT_URI} \
-e Languages=en,fr,es,ar,ru \
mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest
上面的命令:
从容器映像下载并运行翻译器容器。
分配 12 千兆字节 (GB) 内存和 4 个 CPU 核心。
公开 TCP 端口 5000,并为容器分配伪 TTY
接受最终用户协议 (EULA)
配置计费终结点
下载英语、法语、西班牙语、阿拉伯语和俄语的翻译模型
退出后自动删除容器。 容器映像在主计算机上仍然可用。
在同一主机上运行多个容器
若要使用公开端口运行多个容器,请确保在运行每个容器时使用不同的公开端口。 例如,在端口 5000 上运行第一个容器,在端口 5001 上运行第二个容器。
可以将此容器和不同的 Azure AI 容器一起在 HOST 上运行。 还可以运行同一 Azure AI 容器的多个容器。
查询容器的翻译器终结点
容器提供基于 REST 的翻译器终结点 API。 下面是一个示例请求:
curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-HANS"
-H "Content-Type: application/json" -d "[{'Text':'Hello, what is your name?'}]"
如果在容器准备就绪前尝试 cURL POST 请求,你最终会得到“服务暂时不可用”这一响应。 等待容器准备就绪,然后重试。
若要关闭容器,请在运行容器的命令行环境中选择 Ctrl+C。
验证容器是否正在运行
有几种方法可用于验证容器是否正在运行:
容器在 \
处提供主页作为容器正在运行的视觉验证。
可以打开你常用的 Web 浏览器并导航到相关容器的外部 IP 地址和公开端口。 使用以下各种请求 URL 验证容器是否正在运行。 下面列出的示例请求 URL 是 http://localhost:5000
,但是你的特定容器可能会有所不同。 请记住,你要导航至容器的外部 IP 地址和公开端口。
http://localhost:5000/ready
使用 GET 进行请求。 可以验证容器是否已准备好接受针对模型的查询。 此请求可用于 Kubernetes 运行情况和就绪情况探测。
http://localhost:5000/status
使用 GET 进行请求。 可以验证用于启动容器的 api-key 是否有效,而不会导致终结点查询。 此请求可用于 Kubernetes 运行情况和就绪情况探测。
http://localhost:5000/swagger
容器为终结点提供一组完整的文档以及“尝试”功能。 使用此功能可以将设置输入到基于 Web 的 HTML 表单并进行查询,而无需编写任何代码。 查询返回后,将提供示例 CURL 命令,用于演示所需的 HTTP 标头和正文格式。
如果在运行 Azure AI 服务容器时遇到问题,可以尝试使用 Microsoft 诊断容器。 使用此容器可以诊断部署环境中可能阻止 Azure AI 服务容器正常运行的常见错误。
若要获取容器,请使用以下 docker pull
命令:
docker pull mcr.microsoft.com/azure-cognitive-services/diagnostic
然后运行容器。 将 {ENDPOINT_URI}
替换为你的终结点,将 {API_KEY}
替换为你的资源的密钥:
docker run --rm mcr.microsoft.com/azure-cognitive-services/diagnostic \
eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}
容器会测试与计费终结点之间的网络连接性。
文本翻译代码示例
使用 swagger 翻译文本
英语 ↔ 德语
导航到 swagger 页面:http://localhost:5000/swagger/index.html
选择“POST/翻译”
选择“试用”
将 From 参数输入为 en
将 To 参数输入为 de
将 api-version 参数输入为 3.0
在“文本”下,将 string
替换为以下 JSON
"text": "hello, how are you"
选择“执行”,生成的翻译将输出到响应正文中 。 你应该会看到类似于下面的响应:
"translations": [
"text": "hallo, wie geht es dir",
"to": "de"
使用 Python 翻译文本
import requests, json
url = 'http://localhost:5000/translate?api-version=3.0&from=en&to=fr'
headers = { 'Content-Type': 'application/json' }
body = [{ 'text': 'Hello, how are you' }]
request = requests.post(url, headers=headers, json=body)
response = request.json()
print(json.dumps(
response,
sort_keys=True,
indent=4,
ensure_ascii=False,
separators=(',', ': ')))
使用 C#/.NET 控制台应用翻译文本
启动 Visual Studio,并创建新的控制台应用程序。 编辑 *.csproj
文件以添加 <LangVersion>7.1</LangVersion>
节点 - 指定 C# 7.1。 添加 Newtoonsoft.Json NuGet 包(版本 11.0.2)。
在 Program.cs
中,将所有现有代码替换为以下脚本:
using Newtonsoft.Json;
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace TranslateContainer
class Program
const string ApiHostEndpoint = "http://localhost:5000";
const string TranslateApi = "/translate?api-version=3.0&from=en&to=de";
static async Task Main(string[] args)
var textToTranslate = "Sunny day in Seattle";
var result = await TranslateTextAsync(textToTranslate);
Console.WriteLine(result);
Console.ReadLine();
static async Task<string> TranslateTextAsync(string textToTranslate)
var body = new object[] { new { Text = textToTranslate } };
var requestBody = JsonConvert.SerializeObject(body);
var client = new HttpClient();
using (var request =
new HttpRequestMessage
Method = HttpMethod.Post,
RequestUri = new Uri($"{ApiHostEndpoint}{TranslateApi}"),
Content = new StringContent(requestBody, Encoding.UTF8, "application/json")
// Send the request and await a response.
var response = await client.SendAsync(request);
return await response.Content.ReadAsStringAsync();
在本文中,你已了解相关的概念,以及翻译器容器的下载、安装和运行工作流。 现在你知道:
翻译器为 Docker 提供 Linux 容器。
可从容器注册表下载容器映像并在 Docker 中运行。
可以使用 REST API 通过指定容器的主机 URI 来调用翻译器容器中的“翻译”操作。
详细了解 Azure AI 容器