共用方式為


解決重新啟動或重新映像時批次節點建立延遲的問題

本文討論如何在重新啟動或重新映像節點時解決批次節點建立延遲的問題。 避免Microsoft Azure Batch 中因安裝大型 Python 運行時間和 Python 套件所造成的問題。 此安裝會在批次節點第一次新增至批次集區時,或當節點重新啟動或重新映像時,造成長時間延遲和可能的意外錯誤。

徵兆

當您建立批次集區並將節點新增至集區,或重新啟動或重新映射節點時,應用程式安裝需要太長的時間才能完成,或在安裝時間過長之後失敗。

原因

之所以發生此問題,是因為 Python 套件太大而無法作為啟動工作使用。

當您在 Azure Batch 中建立批次集區並新增批次節點時,建議的程式是使用 開始工作 來準備作業環境。 此啟動工作可以執行下列動作:

  • 安裝工作執行的應用程式。

  • 當批次節點第一次新增至集區時,或當節點重新啟動或重新映射時,啟動背景進程。

不過,對於需要 Python 執行的 Python 語言執行平臺和應用程式,套件可能會太大,因此啟動工作需要很長的時間才能安裝。 即使在大部分安裝都發生之後,安裝仍可能會因為未預期的問題而失敗。

解決方案

若要修正此問題,請在擷取 Gen1 映射之前,比對虛擬機 (VM) 和批次帳戶位置和 OS 版本,以及預安裝 Python 及其套件。

使用預先封裝的自定義映像來配置批次節點。 如需此程式的一般資訊,請參閱 使用受控映像來建立自定義映像集區

若要避免安裝時間過長,並協助避免安裝失敗,請遵循下列一般做法:

  • 當您建立批次帳戶並建立 VM 批次節點時,請指定要使用的相同位置或區域。

  • 選取名稱中有 Gen1 的映射,例如 Windows Server 2019 Datacenter - Gen1 (Windows 節點) 或 Ubuntu Server 18.04 LTS - Gen1 (Linux 節點)。 因為某些 VM 系列不支援 Gen2 映像,因此需要 Gen1 映射。

  • 當您在 Azure 入口網站 中建立節點集區時,請確定 [作業系統] 區段中的 Sku 清單包含您指定的系統版本。

  • 自定義 Python 安裝,使其預安裝於映像上,並適用於所有使用者。

系統特定程式

下列索引標籤章節說明您必須針對 Windows 批次節點或 Linux 批次節點採取的步驟。

Windows 節點:在 C 磁碟驅動器上安裝所需的 Python 版本,並手動附加系統路徑

程式摘要

建立並啟動 VM 之後,請使用遠端桌面通訊協定 (RDP) 連線到 VM。 然後,在 VM 上安裝您需要的所有專案,包括所需的 Python 運行時間版本(例如 Python 3.10.4),以及編輯系統路徑。 最後,擷取 VM 映像、將其部署至使用 VM 映像的批次集區、連線到新的批次集區節點,然後測試它以確定預安裝的 Python 運行時間和套件正常運作。

程式步驟

  1. 藉由指定下列設定,在 Azure 入口網站 中建立 Windows VM。

    設定名稱 設定值
    區域 指派給您批次帳戶的相同區域
    映像 名稱中有 Gen1 (非 Gen2) 的 Windows 映射,且批次服務支援
  2. 使用 RDP 連線到 VM。

  3. 執行 Python 安裝精靈,然後選取 [ 自定義安裝] 選項。 然後,在 [ 進階選項] 頁面上,移至 [自定義安裝位置 ] 方塊,並在 C 磁碟驅動器上指定路徑。

  4. 編輯 的系統環境變數Path,使其包含 Python 安裝路徑(例如 C:\Python\) 和 Python 安裝套件的路徑(例如 C:\Python\Scripts\)。

    注意

    Python 安裝精靈只會將這些路徑新增至 的用戶 環境變數 Path。 因此,您必須將路徑新增至對應的 系統 環境變數。 否則,當您擷取 VM 映射時,Python 設定和使用者安裝的額外軟體套件會從映像中刪除。

    若要將這些路徑附加至系統環境變數,請遵循下列步驟:

    1. 選取 [ 開始],然後搜尋並選取 [ 設定]。

    2. 在 [設定] 應用程式中,選取 [系統>關於>進階系統設定]。

    3. 在 [系統屬性] 對話框中,選取 [進階] 索引卷標,然後選取 [環境變數]。

    4. 在 [環境變數] 對話框中,移至 [系統變數] 區段,選取 [路徑] 變數,然後選取 [編輯]。

    5. 在 [ 編輯環境變數 ] 對話框中,選取 [新增],然後輸入 Python 已安裝套件的路徑。 然後,重複此步驟以輸入 Python 運行時間的路徑。

    6. 選取 [ 確定 ] 三次,以套用三個對話框中的變更。

  5. 在控制台中測試 Python 安裝。

    例如,在您執行 python --version 以確認已安裝的 Python 版本之後,您可以執行 Python 解釋器來嘗試匯入尚未安裝的套件(例如 numpy)。 取得預期的 ModuleNotFoundError 例外狀況之後,請執行 pip install <package-name> 命令來安裝套件,然後再次執行 Python 解釋器以匯入該套件。 匯入命令現在應該會成功。

  6. 遵循在入口網站中建立 VM 映射中的步驟來擷取 VM 映射,但只會在 [建立映像] 頁面上套用下列設定。

    設定名稱 設定值
    資源群組 從資源群組清單中選取,或選取 [ 新建 ] 以建立資源群組。
    目標 Azure 計算資源庫 從 Azure 計算資源庫清單中選取,或選取 [ 新建 ] 以建立 Azure 計算資源庫。
    目標 VM 映像定義 選取 [新建] 在 [ 建立 VM 映射定義 ] 頁面中,只 輸入您想要提供給映射的 VM 映射定義名稱 。 (頁面會自動提供 發行者供應專案SKU 設定。
    版本號碼 輸入您想要提供給 VM 映像的版本號碼。
  7. 套用 VM 映像設定之後,請選取 [ 檢閱 + 建立 ] 以確認設定,然後選取 [ 建立 ] 以建立映射。 此步驟會建立下列三種資源類型:

    • Azure Compute Gallery
    • 自定義映像定義
    • 自定義映像定義版本
  8. 建立三個資源之後,請遵循下列步驟來建立使用 VM 映射的新批次集區:

    1. Azure 入口網站 中,搜尋並選取 [Batch 帳戶]。

    2. 在批次帳戶清單中,選取您的帳戶。

    3. 在批次帳戶的功能表窗格中,選取 [集區],然後選取 [ 新增 ] 以建立批次集區。

    4. 在 [ 新增集區] 頁面中,進行下列設定,然後選取 [ 確定]。

      設定名稱 設定值
      集區標識碼 集區的新名稱
      映像類型 自訂映像 - 共用映像庫 *
      共用映像庫 您在建立 VM 映射時所指定的目標 Azure 計算資源庫名稱
      映像 您在建立 VM 映射時指定的 VM 映像定義名稱
      版本 您在建立 VM 映射時指定的版本號碼
      作業系統 Windows
      OS 散發套件 windowsserver
      OS SKU 您選取之作業系統版本的產品名稱(例如 microsoftwindowsserver-2019-datacenter

      * 共用映像庫 是 Azure 計算資源庫的另一個名稱。 這是 VM 映像建立期間所建立的其中一個資源。

  9. 配置批次集區節點之後,請移至批次集區節點頁面,然後選取標題功能表中的 [ 連線 ]。

  10. 在 [連線] 窗格中,選取 [產生使用者] 選項,選取 [產生隨機使用者] 按鈕,然後選取 [下載 RDP 檔案]。

  11. 執行下載的 RDP 檔案以連線到新的批次節點。

  12. 再次測試 Python 安裝,以確定預安裝的版本正常運作。

參考資料

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。