安裝和執行翻譯工具容器

容器可讓您在自己的環境中執行 翻譯工具 服務的數個功能。 容器非常適合用於特定的安全性和資料控管需求。 在本文中,您將了解如何下載、安裝及執行翻譯工具容器。

翻譯工具 容器可讓您建置已針對強固雲端功能和邊緣位置優化的翻譯工具應用程式架構。

請參閱使用 翻譯工具 容器時支援的語言清單

重要

  • 若要使用翻譯工具容器,您必須提交線上要求並取得核准。 如需詳細資訊,請參閱要求核准以執行容器
  • 相較於雲端供應專案,翻譯工具 容器支援有限的功能。 如需詳細資訊,請參閱容器翻譯方法

必要條件

若要開始,您需要使用中的 Azure 帳戶。 如果您沒有帳戶,您可以建立免費帳戶

您也需要:

必要 目的
熟悉 Docker
  • 您應具備對 Docker 概念 (例如登錄、存放庫、容器和容器映像等) 的基本了解,以及基本docker術語與命令的知識。
Docker 引擎
  • 您需要在 主電腦上安裝 Docker 引擎。 Docker 提供在 macOSWindowsLinux 上設定 Docker 環境的套件。 如需 Docker 和容器基本概念的入門,請參閱 Docker 概觀
  • Docker 必須設定為允許容器連線,並將帳單數據傳送至 Azure。
  • 在 Windows,Docker 也必須設定為支援 Linux 容器。
翻譯工具 資源
  • Azure 翻譯工具區域資源 (非 global) 相關聯的 API 金鑰和端點 URI。 這兩個值都需要啟動容器,而且可以在資源概觀頁面上找到。
選擇性 目的
Azure CLI (命令行介面)
  • Azure CLI 可讓您使用一組在線命令來建立和管理 Azure 資源。 您可以在 Windows、macOS 和 Linux 環境中安裝,而且可以在 Docker 容器和 Azure Cloud Shell 中執行。

必要元素

所有 Azure AI 容器都需要三個主要元素:

  • EULA 接受設定。 以值 Eula=accept設定的使用者許可協定 (EULA)。

  • API 金鑰端點 URL。 API 金鑰是用來啟動容器。 您可以流覽至 [翻譯工具 資源金鑰和端點] 頁面,然後選取Copy to clipboard圖示,以擷取 API 金鑰和端點 URL 值。

重要

  • 金鑰可用來存取您的 Azure AI 資源。 請勿共用您的金鑰, 例如,使用 Azure 金鑰保存庫 安全地儲存它們。 我們也建議定期重新產生這些金鑰。 呼叫 API 只需一把金鑰。 當您重新產生第一把金鑰時,可以使用第二把金鑰繼續存取服務。

主電腦

主機是執行 Docker 容器的 x64 型電腦。 它可以是內部部署或 Azure 中 Docker 主控服務的電腦,例如:

容器需求和建議

下表描述要配置給 翻譯工具 容器的最低和建議 CPU 核心和記憶體。

容器 最小值 建議需求 語言組
翻譯工具 2 核心、 4 GB 記憶體 4 核心、 8 GB 記憶體 2
  • 每個核心必須至少 2.6 GHz 或更快。

  • 核心和記憶體會對應至 --cpus--memory 設定,做為命令的 docker run 一部分。

注意

  • CPU 核心和記憶體會對應至 --cpus--memory 設定,這些設定會當做 docker run 命令的一部分使用。

  • 最低和建議的規格是以 Docker 限制為基礎,而不是主計算機資源。

要求核准以執行容器

完成並提交適用於閘道服務的 Azure AI 服務應用程式,以要求存取容器。

窗體會要求您、您的公司,以及您將使用容器的使用者案例相關信息。 提交表單之後,Azure AI 服務小組會在 10 個工作天內進行審核,並以電子郵件將做出的決定傳送給您。

重要

  • 在表單上,您必須使用與 Azure 訂用帳戶識別碼相關聯的電子郵件位址。
  • 您用來執行容器的 Azure 資源必須已使用核准的 Azure 訂用帳戶標識碼來建立。
  • 檢查您的電子郵件(收件匣和垃圾郵件資料夾),以取得 Microsoft 應用程式狀態的更新。

核准之後,您就能從 Microsoft Container Registry (MCR) 下載容器之後執行容器,如本文稍後所述。

如果您的 Azure 訂用帳戶尚未核准,您將無法執行容器。

翻譯工具容器映像

您可以在容器登錄 syndicate 上mcr.microsoft.com找到 翻譯工具 容器映射。 它位於存放庫內 azure-cognitive-services/translator ,並命名為 text-translation。 完整容器映像名稱為 mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest

若要使用最新版本的容器,您可以使用 latest 標記。 您可以在 MCR 上找到標記的完整清單

使用 docker 命令取得 容器映像

重要

  • 下列各節中的 docker 命令會使用反斜線 \,做為行接續字元。 請根據您主機作業系統的需求加以替換或移除。
  • 必須指定 EULABillingApiKey 選項以執行容器,否則容器將不會啟動。

使用 docker run 命令,從 Microsoft Container Registry 下載容器映射並加以執行。

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 的記憶體和四個 CPU 核心。
  • 公開 TCP 連接埠 5000,並為容器配置虛擬 TTY
  • 接受使用者合約 (EULA)
  • 設定計費端點
  • 下載英文、法文、西班牙文、阿拉伯文和俄文語言的翻譯模型
  • 在容器結束時自動移除容器。 主計算機上仍可使用容器映像。

在相同的主機上執行多個容器

如果您想要使用公開的埠執行多個容器,請務必使用不同的公開埠執行每個容器。 例如,在埠 5000 上執行第一個容器,並在埠 5001 上執行第二個容器。

您可以讓此容器和不同的 Azure AI 容器在主機上一起執行。 您也可以針對相同的 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

疑難排解

驗證容器正在執行

有數種方式可以驗證容器正在執行:

  • 容器會在 提供 / 首頁,作為容器正在執行的視覺驗證。

  • 您可以開啟您慣用的網頁瀏覽器,並流覽至有問題的容器的外部IP位址和公開的埠。 使用下列的要求 URL 來驗證容器是否正在執行。 列出的範例要求 URL 指向 http://localhost:5000,但您的特定容器可能會有所不同。 請記住,您要流覽至容器的外部 IP位址 和公開的埠。

要求 URL 目的
http://localhost:5000/ 容器會提供首頁。
http://localhost:5000/ready 使用 GET 要求。 提供容器已準備好接受模型查詢的驗證。 此要求可用來進行 Kubernetes 活躍度和整備度探查 \(英文\)。
http://localhost:5000/status 使用 GET 要求。 驗證用來啟動容器的 API 金鑰是否有效,而不會造成端點查詢。 此要求可用來進行 Kubernetes 活躍度和整備度探查 \(英文\)。
http://localhost:5000/swagger 容器會為端點提供一組完整的文件和立即試用功能。 使用此功能,您可以將自己的設定輸入至以 Web 為基礎的 HTML 表單並進行查詢,而無須撰寫任何程式碼。 當查詢傳回時,會提供範例 CURL 命令來示範所需的 HTTP 標頭和本文格式。

Container home page

如果您在執行 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

  1. 選取 POST /translate
  2. 選取 [ 試用]
  3. 輸入From參數作為en
  4. 輸入 To 參數作為de
  5. 輸入 api-version 參數作為3.0
  6. 在文字底,以下列 JSON 取代string
  [
        {
            "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 中執行。
  • 您可以藉由指定容器的主機 URI,使用 REST API 在 翻譯工具 容器中呼叫「翻譯」作業。

下一步