Azure 資料科學虛擬機器的已知問題和疑難排解

本文可協助您尋找並修正使用 Azure 資料科學虛擬機器時可能會遇到的錯誤或失敗。

Ubuntu

修正 NVIDIA A100 GPU 晶片上的 GPU - Azure NDasrv4 系列

ND A100 v4 系列虛擬機器是 Azure GPU 系列的新旗艦,專為高階深度學習定型和緊密結合的相應增加和相應放大 HPC 工作負載所設計。

由於有不同的結構,因此需要針對高需求的工作負載進行不同的設定,以受益於使用 TensorFlow 或 PyTorch 架構獲得 GPU 加速。

我們正致力於支援 ND A100 機器現成的 GPU。 同時,您可以新增 NVIDIA 的網狀架構管理員並更新驅動程式,讓您的 GPU 正常運作。

在終端機中,請遵循下列簡單的步驟:

  1. 新增 NVIDIA 的存放庫以安裝/更新驅動程式 - 可在這裡找到逐步指示

  2. [選用] 您也可以更新 CUDA 驅動程式 (從上述存放庫)

  3. 安裝 NVIDIA 的網狀架構管理員驅動程式:

    sudo apt-get install cuda-drivers-460
    sudo apt-get install cuda-drivers-fabricmanager-460
    
  4. 重新啟動您的 VM (讓您的驅動程式就緒)

  5. 啟用並啟動新安裝的 NVIDIA Fabric Manager 服務:

    sudo systemctl enable nvidia-fabricmanager
    sudo systemctl start nvidia-fabricmanager
    

您現在可以執行下列動作來檢查驅動程式和 GPU 的運作方式:

systemctl status nvidia-fabricmanager.service

在此之後,您應該會看到網狀架構管理員服務執行 nvidia-fabric-manager-status

連線到桌面環境失敗

如果您可以透過 SSH 終端機但無法透過 x2go 連線到 DSVM,則您在 x2go 中可能設定了錯誤的工作階段類型。 若要連線到 DSVM 的桌面環境,您需要將 x2go/工作階段喜好設定/工作階段中的工作階段類型設定為 XFCE。 目前不支援其他桌面環境。

使用 x2go 連線到 DSVM 時,字型看起來不正確

當您連線到 x2go,且某些字型看起來不正確時,可能與 x2go 中的工作階段設定相關。 連線到 DSVM 之前,請在 [工作階段喜好設定] 對話方塊的 [輸入/輸出] 索引標籤中,取消核取 [設定顯示 DPI] 核取方塊。

提示您輸入未知密碼

當您建立 DSVM 將 [驗證類型] 設定為 [SSH 公開金鑰] (但建議您使用密碼驗證) 時,系統將不會提供密碼給您。 不過,在某些情況下,有些應用程式仍會要求您輸入密碼。 執行 sudo passwd <user_name> 以為特定使用者建立新的密碼。 您可以使用 sudo passwd 為根使用者建立新的密碼。

執行這些命令不會變更 SSH 的設定,且允許的登入機制會保持不變。

執行 sudo 命令時提示輸入密碼

在 Ubuntu 電腦上執行 sudo 命令時,系統可能會要求您再次輸入密碼,以確認您確實是登入的使用者。 這是預期的行為,且是 Ubuntu 中的預設行為。 不過,在某些情況下,不需要重複且繁雜的驗證。

若要在大部分情況下停用重新驗證,您可以在終端機中執行下列命令。

echo -e "\n$USER ALL=(ALL) NOPASSWD: ALL\n" | sudo tee -a /etc/sudoers

重新啟動終端機之後,sudo 將不會要求另一個登入,並會將來自您工作階段登入的驗證視為足夠。

無法以非根使用者身分使用 Docker

若要以非根使用者身分使用 Docker,您的使用者必須為 Docker 群組的成員。 您可以執行 getent group docker 命令來檢查哪些使用者屬於該群組。 若要將使用者新增至 Docker 群組,請執行 sudo usermod -aG docker $USER

Docker 容器無法透過網路與外部互動

根據預設,Docker 會將新的容器新增至所謂的「橋接器網路」,也就是 172.17.0.0/16。 如果該橋接器網路的子網與您 DSVM 的子網路重疊,或與您訂用帳戶中的另一個私人子網路重疊,則無法在主機與容器之間進行網路通訊。 在此情況下,無法連線至容器中執行的 Web 應用程式,且容器無法從 APT 更新套件。

若要修正此問題,您必須重新設定 Docker 以使用其橋接器網路的 IP 位址空間,而不會與您訂用帳戶的其他網路重疊。 例如,藉由新增

"default-address-pools": [
        {
            "base": "10.255.248.0/21",
            "size": 21
        }
    ]

至包含在 /etc/docker/daemon.json 檔案中的 JSON 文件,Docker 會將另一個子網路指派給橋接器網路。 (檔案必須使用 sudo 進行編輯,例如藉由執行 sudo nano /etc/docker/daemon.json)。

變更之後,您必須執行 service docker restart 來重新啟動 Docker 服務。

若要檢查您的變更是否生效,您可以執行 docker network inspect bridgeIPAM.Config.Subnet 下的值應對應至上述指定的位址集區。

無法在 Docker 容器中使用 GPU

DSVM 上安裝的 Docker 預設支援 GPU。 不過,必須符合幾項必要條件。

  • 顯然,DSVM 的 VM 大小必須包含至少一個 GPU。
  • 使用 docker run 啟動 Docker 容器時,您需要新增 --gpus 參數,例如 --gpus all
  • 包含 NVIDIA A100 GPU 的 VM 大小需要安裝額外的軟體套件,特別是 NVIDIA Fabric Manager。 這些套件可能尚未預先安裝在您的映像中。

Windows

虛擬機器第 2 代 (Gen 2) 無法運作

當您嘗試根據虛擬機器第 2 代 (Gen 2) 建立資料科學 VM 時,其會失敗。

目前,我們僅針對第 1 代虛擬機器維護及提供以 Windows 2019 伺服器為基礎的資料科學 VM 映像。 Gen 2 尚未受到支援,我們計畫在不久的將來提供支援。

存取 SQL Server

當您嘗試連線到預先安裝的 SQL Server 執行個體時,可能會遇到「登入失敗」錯誤。 若要順利連線到 SQL Server 執行個體,您必須在系統管理員模式中執行您要連線的程式,例如 SQL Server Management Studio (SSMS)。 需要系統管理員模式,因為依 DSVM 的預設值,只有系統管理員可以連線。

Hyper-V 無法運作

該 Hyper-V 一開始不適用於 Windows 是預期的行為。 針對開機效能,我們停用了某些服務。 若要啟用 Hyper-V:

  1. 開啟 Windows DSVM 上的搜尋列
  2. 輸入 "Services,"
  3. 將所有 Hyper-V 服務設定為 [手動]
  4. 將 [Hyper-V 虛擬機器管理] 設定為 [自動]

您的最終畫面看起來應該像這樣:

啟用 Hyper-V