Share via


針對環境問題進行疑難解答

在本文中,了解如何針對您可能遇到環境映像組建的常見問題進行疑難解答,並了解 AzureML 環境弱點。

我們正在積極尋求您的意見反應! 如果您透過您的「環境定義」或「組建失敗分析記錄」瀏覽至此頁面,我們想知道此功能對您是否有幫助,或您是否想要回報我們的分析尚未涵蓋的失敗案例。 您也可以留下此文件的意見反應。 離開你的想法 在這裡

Azure Machine Learning 環境

Azure Machine Learning 環境是您機器學習定型發生所在環境的封裝。 這些環境指定關於定型和評分指令碼的基礎 Docker 映像、Python 套件和軟體設定。 這些環境是 Machine Learning 工作區內受控和版本化的資產,可在各種計算目標之間啟用可重現、可稽核且可攜式機器學習工作流程。

環境類型

環境分為三個類別:策劃、使用者管理和系統管理。

策展環境是預先建立的環境,由 Azure Machine Learning 管理,而且預設可在每個工作區中使用。 它們包含 Python 套件和設定的集合,可協助您開始使用各種機器學習架構,而您打算如往般使用它們。 這些預先建立的環境也能加快部署時間。

在使用者管理的環境中,您負責設定環境,並在計算目標上安裝定型指令碼所需的每個封裝。 也請務必包含模型部署所需的任何相依性。

這些類型的環境有兩個子類型。 針對第一種類型,BYOC (自備容器),您會將現有的 Docker 映像帶入 Azure Machine Learning。 針對第二種類型,Docker 組建內容型環境,Azure Machine Learning 會從您提供的內容中具體化映像。

當您想要 conda 為您管理 Python 環境時,請使用系統管理的環境。 Azure Machine Learning 會在基礎 Docker 映像之上具體化您的 conda 規格,以建立新的隔離 conda 環境。 根據預設,Azure Machine Learning 會將一般功能新增至衍生映像。 基礎映像中的任何 Python 套件都無法在隔離的 conda 環境中使用。

建立與管理環境

您可以從 Azure Machine Learning Python SDK、Azure Machine Learning CLI、Azure Machine Learning Studio UI、Visual Studio Code 擴充功能等用戶端建立和管理環境。

當您提交實驗而不註冊或參考已經存在的環境時,會自動在工作區中註冊「匿名」環境。 它們並未列出,但您可以依版本或標籤加以擷取。

Azure Machine Learning 會將環境定義組建至 Docker 映像。 它還將映像快取在與 Azure Machine Learning 工作區關聯的 Azure Container Registry 中,以便在後續的定型作業和服務端點部署中重複使用映像。 具有相同定義的多個環境可能會導致相同的快取映像。

遠端執行定型指令碼需要建立 Docker 映像。

AzureML 環境中的弱點

您可以升級至較新版本的相依性 (基礎映像、Python 套件等),或移轉至符合安全性需求的不同相依性,以解決弱點。 降低弱點既耗時又昂貴,因為它可能需要重構程式代碼和基礎結構。 隨著開放原始碼軟體的普及和使用複雜的巢狀相依性,管理及追蹤弱點非常重要。

有一些方法可以降低弱點的影響:

  • 減少相依性數目 - 針對每個案例使用最少的相依性集合。
  • 將環境劃分為範圍並修正一個位置的問題。
  • 了解已標幟的弱點及其與您案例的相關性。

掃描弱點

您可以使用適用於容器登錄的 Microsoft Defender 來監視及維護環境的檢查,以協助掃描映像是否有弱點。

如要根據 Microsoft Defender 的觸發程序自動執行此程序,請參閱將雲端觸發程序的回應自動化至 Microsoft Defender

弱點與重現性

重現性是軟體開發的基礎之一。 當您開發生產程式碼時,重複的作業必須保證相同的結果。 藉由變更相依性,降低弱點可能會中斷重現性。

Azure Machine Learning 的主要重點是保證重現性。 環境分為三個類別:策劃、使用者管理和系統管理。

策展的環境

策展環境是預先建立的環境,Azure Machine Learning 會預設在佈建的每個 Azure Machine Learning 工作區中提供。 Azure Machine Learning 會發行新版本以解決弱點。 是否使用最新的映像可能是重現性和弱點管理之間的權衡。

策展環境包含 Python 套件和設定的集合,可協助您開始使用各種機器學習架構。 您打算像往一樣使用它們。 這些預先建立的環境也能加快部署時間。

使用者受控環境

在使用者管理的環境中,您必須負責設定環境,並安裝定型指令碼在計算目標和模型部署上所需的每個封裝。 這些類型的環境有兩個子類型:

  • BYOC (自備容器):使用者提供 Docker 映像給 Azure Machine Learning
  • Docker 組建內容:Azure Machine Learning 會從使用者提供的內容具體化映像

當您在 Microsoft 提供的映像上安裝更多相依性,或帶入自己的基礎映像時,弱點管理就會成為您的責任。

系統管理的環境

希望 Conda 為您管理 Python 環境時,請使用系統管理的環境。 Azure Machine Learning 會在基礎 Docker 映像之上具體化您的 conda 規格,以建立新的隔離 conda 環境。 雖然 Azure Machine Learning 會在每個版本中修補基礎映像,但是否使用最新映像,可能會在重現性與弱點管理之間進行取捨。 因此,您必須在使用系統管理環境的環境中,選擇用於作業或模型部署的環境版本。

弱點:常見問題

基礎 Docker 映像中的弱點

環境中的系統弱點通常是從基礎映像引進的。 例如,標示為「Ubuntu」或「Debian」的弱點來自環境的系統層級 – 基礎 Docker 映像。 如果基礎映像來自第三方簽發者,請檢查最新版本是否有已標幟弱點的修正程式。 Azure Machine Learning 中基礎映像的最常見來源如下:

  • Microsoft Artifact Registry (MAR) 也稱為 Microsoft Container Registry (mcr.microsoft.com)。
    • 您可以從 MAR 首頁、呼叫目錄 API 或 /tags/list 列出映像
    • 您可以在 Azure/AzureML-Containers 中找到從 AzureML 定型基礎映像的來源和版本資訊
  • Nvidia (nvcr.io 或 nvidia 的設定檔)

如果基礎映像的最新版本無法解決您的弱點,可藉由安裝弱點掃描建議的版本來解決基礎映像弱點:

apt-get install -y library_name

Python 套件中的弱點

弱點也可以從系統管理的基礎映像上安裝的 Python 套件。 這些與 Python 相關的弱點應該藉由更新 Python 相依性來解決。 映像中的 Python (pip) 弱點通常來自使用者定義的相依性。

若要搜尋已知的 Python 弱點和解決方案,請參閱 GitHub Advisory Database。 若要解決 Python 弱點,請將套件更新為已標示問題的修正版本:

pip install -u my_package=={good.version}

如果您使用 conda 環境,請更新 conda 相依性檔案中的參考。

在某些情況下,在 conda 設定環境期間,Python 套件將自動安裝在基本 Docker 映像之上。 這些問題的緩解步驟與使用者引入的軟體套件的緩解步驟相同。 Conda 會針對其具體化的每個環境安裝必要的相依性。 加密、setuptools、wheel 等套件會自動從 conda 的預設通道安裝。 預設 anaconda 頻道遺漏最新的套件版本有已知問題,因此建議優先處理社群維護的 conda-forge 通道。 否則,即使您沒有計劃在該環境中執行的程式碼中引用它們,也請明確指定套件和版本。

快取問題

與 Azure Machine Learning 工作區相關聯的是 Azure Container Registry 執行個體,這是容器映像的快取。 任何具體化的映像會推送至容器登錄,並在您觸發對應環境的實驗或部署時使用。 Azure Machine Learning 不會從容器登錄中刪除映像,您有責任評估隨時間推移需要維護的映像。

針對環境映像組建進行疑難解答

了解如何針對環境映像組建和套件安裝問題進行疑難排解。

環境定義問題

環境名稱問題

不允許策展前置詞

當您的自訂環境名稱只針對策展環境保留的條款時,就會發生此問題。 策展環境是 Microsoft 維護的環境。 自訂環境是您建立和維護的環境。

可能的原因:

  • 您的環境名稱開頭為 MicrosoftAzureML

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

更新您的環境名稱,以排除您目前使用的保留前置詞

資源

環境名稱太長

可能的原因:

  • 您的環境名稱超過 255 個字元

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

將您的環境名稱更新為 255 個或以下的字元

Docker 問題

適用於:Azure CLI ml 延伸模組 v1

適用於:Python SDK azureml v1

若要建立新的環境,您必須使用下列其中一種方法 (參閱 DockerSection):

  • 基礎映像
    • 提供基礎映像名稱、要從中提取的存放庫,並視需要提供認證
    • 提供 conda 規格
  • 基礎 Dockerfile
    • 提供 Dockerfile
    • 提供 conda 規格
  • Docker 組建內容
    • 提供組建內容的位置 (URL)
    • 組建內容至少必須包含 Dockerfile,但也可能包含其他檔案

適用於:Azure CLI ml 延伸模組 v2 (目前)

適用於Python SDK azure-ai-ml v2 (目前)

若要建立新的環境,您必須使用下列其中一種方法:

  • Docker 映像
    • 提供裝載在登錄中的映像 URI,例如 Docker Hub 或 Azure Container Registry
    • 這裡的範例
  • Docker 組建內容
    • 指定做為組建內容的目錄
    • 該目錄應該包含 Dockerfile 以及要組建映像所需的任何其他檔案
    • 這裡的範例
  • Conda 規格
    • 您必須為環境指定基礎 Docker 映像;Azure Machine Learning 在提供的 Docker 映像之上組建 conda 環境
    • 提供 conda 檔案的相對路徑
    • 這裡的範例

遺漏 Docker 定義

適用於:Python SDK azureml v1

當您的環境定義遺漏 DockerSection 時,可能會發生此問題。 本節會設定與您環境規格所組建之最終 Docker 映像相關的設定。

可能的原因:

  • 您未指定環境定義的 DockerSection

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

DockerSection 新增至您的環境定義,並指定基礎映像、基礎 dockerfile 或 Docker 組建內容。

from azureml.core import Environment
myenv = Environment(name="myenv")
# Specify docker steps as a string.
dockerfile = r'''
FROM mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
RUN echo "Hello from custom container!"
'''

myenv.docker.base_dockerfile = dockerfile

資源

太多 Docker 選項

可能的原因:

適用於:Python SDK azureml v1

您的環境定義中指定了多個 Docker 選項

  • base_image
  • base_dockerfile
  • build_context
  • 請參閱 DockerSection

適用於:Azure CLI ml 延伸模組 v2 (目前)

適用於Python SDK azure-ai-ml v2 (目前)

您的環境定義中指定了多個 Docker 選項

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

選擇您想要用來組建環境的 Docker 選項。 然後將所有其他指定的選項設定為無。

適用於:Python SDK azureml v1

from azureml.core import Environment
myenv = Environment(name="myEnv")
dockerfile = r'''
FROM mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
RUN echo "Hello from custom container!"
'''
myenv.docker.base_dockerfile = dockerfile
myenv.docker.base_image = "pytorch/pytorch:latest"

# Having both base dockerfile and base image set will cause failure. Delete the one you won't use.
myenv.docker.base_image = None

遺漏 Docker 選項

可能的原因:

您未在環境定義中指定下列其中一個選項

  • base_image
  • base_dockerfile
  • build_context
  • 請參閱 DockerSection

適用於:Azure CLI ml 延伸模組 v2 (目前)

適用於Python SDK azure-ai-ml v2 (目前)

您未在環境定義中指定下列其中一個選項

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

選擇您想要用來組建環境的 Docker 選項,然後在您的環境定義中填入該選項。

適用於:Python SDK azureml v1

from azureml.core import Environment
myenv = Environment(name="myEnv")
myenv.docker.base_image = "pytorch/pytorch:latest"

適用於Python SDK azure-ai-ml v2 (目前)

env_docker_image = Environment(
    image="pytorch/pytorch:latest",
    name="docker-image-example",
    description="Environment created from a Docker image.",
)
ml_client.environments.create_or_update(env_docker_image)

資源

容器登錄認證遺漏使用者名稱或密碼

可能的原因:

  • 您已在環境定義中指定容器登錄的使用者名稱或密碼,但未同時指定這兩者

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

將遺漏的使用者名稱或密碼新增至您的環境定義以修正問題

myEnv.docker.base_image_registry.username = "username"

或者,透過工作區連線提供驗證

from azureml.core import Workspace
ws = Workspace.from_config()
ws.set_connection("connection1", "ACR", "<URL>", "Basic", "{'Username': '<username>', 'Password': '<password>'}")

適用於:Azure CLI ml 延伸模組 v2 (目前)

從 YAML 規格檔案建立工作區連線

az ml connection create --file connection.yml --resource-group my-resource-group --workspace-name my-workspace

注意

  • 在您的環境定義中已不再支援提供認證。 請改用工作區連線。

資源

基礎映像登錄的多個認證

可能的原因:

  • 您已為基礎映像登錄指定一組以上的認證

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

如果您使用工作區連線,請檢視您已設定的連線,並刪除您不想使用的連線

from azureml.core import Workspace
ws = Workspace.from_config()
ws.list_connections()
ws.delete_connection("myConnection2")

如果您已在環境定義中指定認證,請選擇一組要使用的認證,並將所有其他認證設定為 Null

myEnv.docker.base_image_registry.registry_identity = None

注意

  • 在您的環境定義中已不再支援提供認證。 請改用工作區連線。

資源

基礎映像登錄中的祕密

可能的原因:

  • 您已在環境定義中指定認證

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

在您的環境定義中已不再支援指定認證。 請從您的環境定義中刪除認證,並改用工作區連線。

適用於:Python SDK azureml v1

在工作區上設定工作區連線

from azureml.core import Workspace
ws = Workspace.from_config()
ws.set_connection("connection1", "ACR", "<URL>", "Basic", "{'Username': '<username>', 'Password': '<password>'}")

適用於:Azure CLI ml 延伸模組 v2 (目前)

從 YAML 規格檔案建立工作區連線

az ml connection create --file connection.yml --resource-group my-resource-group --workspace-name my-workspace

資源

已淘汰的 Docker 屬性

可能的原因:

  • 您已在環境定義中指定 Docker 屬性,這些屬性現在已被取代
  • 以下是已被取代的屬性:
    • enabled
    • arguments
    • shared_volumes
    • gpu_support
      • Azure Machine Learning 現在會在可用時自動偵測並使用 NVIDIA Docker 延伸模組
    • smh_size

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

不要在環境定義的 DockerSection 中指定這些屬性,而是使用 DockerConfiguration

資源

Dockerfile 長度超過限制

可能的原因:

  • 指定的 Dockerfile 超過大小上限 100 KB

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

縮短您的 Dockerfile,使其低於此限制

資源

Docker 組建內容問題

遺漏 Docker 組建內容位置

可能的原因:

  • 您未在環境定義中提供組建內容目錄的路徑

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

DockerSectionbuild_context 中包含路徑

適用於:Azure CLI ml 延伸模組 v2 (目前)

適用於Python SDK azure-ai-ml v2 (目前)

請確定您包含組建內容的路徑

資源

遺漏 Dockerfile 路徑

當 Azure Machine Learning 找不到您的 Dockerfile 時,就會發生此問題。 Azure Machine Learning 預設會在組建內容目錄的根目錄尋找名為 'Dockerfile' 的 Dockerfile,除非您指定 Dockerfile 路徑。

可能的原因:

  • 您的 Dockerfile 不在組建內容目錄的根目錄,且 /或名為 'Dockerfile' 以外的名稱,且您未提供其路徑

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

在您 DockerSectionbuild_context 中,包含 dockerfile_path

資源

不允許使用 Docker 組建內容指定屬性

當您在環境定義中指定無法包含在 Docker 組建內容中的屬性時,就會發生此問題。

可能的原因:

  • 您指定 Docker 組建內容,以及環境定義中至少一個下列屬性:
    • 環境變數
    • Conda 相依性
    • R
    • Spark

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

如果您在環境定義中指定了上述任何屬性,請將其移除

  • 如果您使用 Docker 組建內容並想要指定 conda 相依性,您的 conda 規格應該位於您的組建內容目錄中

資源

不支援的位置類型/未知的位置類型

可能的原因:

  • 您已為不支援或未知的 Docker 組建內容指定位置類型

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

以下是可接受的位置類型:

  • Git
    • 您可以將 Git URL 提供給 Azure Machine Learning,但尚無法使用它們來組建映像。 使用儲存體帳戶,直到組建具有 Git 支援為止
  • 儲存體帳戶

資源

位置無效

可能的原因:

  • 您 Docker 組建內容的指定位置無效

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

針對您將 Docker 組建內容儲存在記憶體帳戶中的案例

  • 您必須將組建內容的路徑指定為

    https://<storage-account>.blob.core.windows.net/<container>/<path>

  • 請確定您提供的位置是有效的 URL

  • 確定您已指定容器和路徑

資源

基礎映像問題

基礎映像已被淘汰

可能的原因:

  • 您使用了已被取代的基礎映像
    • Azure Machine Learning 無法針對已淘汰映像的失敗組建提供疑難解答支援
    • Azure Machine Learning 不會更新或維護這些映像,因此它們有弱點的風險

下列基礎映像已被淘汰:

  • azureml/base
  • azureml/base-gpu
  • azureml/base-lite
  • azureml/intelmpi2018.3-cuda10.0-cudnn7-ubuntu16.04
  • azureml/intelmpi2018.3-cuda9.0-cudnn7-ubuntu16.04
  • azureml/intelmpi2018.3-ubuntu16.04
  • azureml/o16n-base/python-slim
  • azureml/openmpi3.1.2-cuda10.0-cudnn7-ubuntu16.04
  • azureml/openmpi3.1.2-ubuntu16.04
  • azureml/openmpi3.1.2-cuda10.0-cudnn7-ubuntu18.04
  • azureml/openmpi3.1.2-cuda10.1-cudnn7-ubuntu18.04
  • azureml/openmpi3.1.2-cuda10.2-cudnn7-ubuntu18.04
  • azureml/openmpi3.1.2-cuda10.2-cudnn8-ubuntu18.04
  • azureml/openmpi3.1.2-ubuntu18.04
  • azureml/openmpi4.1.0-cuda11.0.3-cudnn8-ubuntu18.04
  • azureml/openmpi4.1.0-cuda11.1-cudnn8-ubuntu18.04

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

將您的基礎映像升級至最新版支援的映像

沒有標記或摘要

可能的原因:

  • 您未在指定的基礎映像中包含版本標記或摘要
  • 如果沒有其中一個規範,環境就無法重現

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

在您的基礎映像上至少包含下列其中一個規範

環境變數問題

錯置的執行階段變數

可能的原因:

  • 您在環境定義中指定執行時間變數

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

改為在 RunConfiguration 物件上使用 environment_variables 屬性

Python 問題

Python 區段遺漏

可能的原因:

  • 您的環境定義沒有 Python 區段

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

填入環境定義的 Python 區段

Python 版本遺漏

可能的原因:

  • 您尚未在環境定義中指定 Python 版本

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

將 Python 新增為 conda 套件,並指定版本

from azureml.core.environment import CondaDependencies

myenv = Environment(name="myenv")
conda_dep = CondaDependencies()
conda_dep.add_conda_package("python==3.8")
env.python.conda_dependencies = conda_dep

如果您使用 YAML 作為 conda 規格,請將 Python 納入為相依性

name: project_environment
dependencies:
  - python=3.8
  - pip:
      - azureml-defaults
channels:
  - anaconda

多個 Python 版本

可能的原因:

  • 您已在環境定義中指定多個 Python 版本

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

選擇您想要使用的 Python 版本,並移除所有其他版本

myenv.python.conda_dependencies.remove_conda_package("python=3.8")

如果您使用 YAML 作為 conda 規格,請只包含一個 Python 版本作為相依性

不支援 Python 版本

可能的原因:

  • 您已指定 Python 版本,其生命週期即將結束,且不再受到支援

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

指定尚未到達且未接近其生命周期結束Python 版本

可能的原因:

  • 您已指定 Python 版本,其生命週期即將結束或接近尾聲

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

指定尚未到達且未接近其生命周期結束Python 版本

無法驗證 Python 版本

可能的原因:

  • 您指定的 Python 版本語法不正確或格式不正確

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

使用正確的語法來指定使用 SDK 的 Python 版本

myenv.python.conda_dependencies.add_conda_package("python=3.8")

使用正確的語法在 conda YAML 中指定 Python 版本

name: project_environment
dependencies:
  - python=3.8
  - pip:
      - azureml-defaults
channels:
  - anaconda

資源

Conda 問題

遺漏 conda 相依性

可能的原因:

  • 您尚未在環境定義中提供 conda 規格,且 user_managed_dependencies 設定為 False (預設值)

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

如果您不希望 Azure Machine Learning 為您建立以 conda_dependencies, 為基礎的 Python 環境,請將 user_managed_dependencies 設定為 True

env.python.user_managed_dependencies = True
  • 您必須負責確保選擇用來執行指令碼的 Python 環境中有所有必要套件

如果您想要讓 Azure Machine Learning 根據 conda 規格為您建立 Python 環境,您必須在環境定義中填入 conda_dependencies

from azureml.core.environment import CondaDependencies

env = Environment(name="env")
conda_dep = CondaDependencies()
conda_dep.add_conda_package("python==3.8")
env.python.conda_dependencies = conda_dep

適用於:Azure CLI ml 延伸模組 v2 (目前)

適用於Python SDK azure-ai-ml v2 (目前)

您必須指定環境的基礎 Docker 映像,Azure Machine Learning 會接著在該映像之上組建 conda 環境

資源

不正確 conda 相依性

可能的原因:

  • 您已錯誤地將環境定義中指定的 conda 相依性格式化

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

適用於:Python SDK azureml v1

請確定 conda_dependencies 是 conda 相依性 YAML 結構的 JSONified 版本

"condaDependencies": {
    "channels": [
    "anaconda",
        "conda-forge"
    ],
    "dependencies": [
        "python=3.8",
        {
            "pip": [
                "azureml-defaults"
            ]
        }
    ],
    "name": "project_environment"
}

您也可以使用 add_conda_package 方法來指定 conda 相依性

from azureml.core.environment import CondaDependencies

env = Environment(name="env")
conda_dep = CondaDependencies()
conda_dep.add_conda_package("python==3.8")
env.python.conda_dependencies = conda_dep

適用於:Azure CLI ml 延伸模組 v2 (目前)

適用於Python SDK azure-ai-ml v2 (目前)

您必須指定環境的基礎 Docker 映像,Azure Machine Learning 會接著在該映像之上組建 conda 環境

遺漏 conda 通道

可能的原因:

  • 您尚未在環境定義中指定 conda 通道

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

若要重現您的環境,請指定要從中提取相依性的通道。 如果您未指定 conda 通道,conda 會使用可能會變更的預設值。

適用於:Python SDK azureml v1

使用 Python SDK 新增 conda 通道

from azureml.core.environment import CondaDependencies

env = Environment(name="env")
conda_dep = CondaDependencies()
conda_dep.add_channel("conda-forge")
env.python.conda_dependencies = conda_dep

如果您針對 conda 規格使用 YAML,請包含您想要使用的 conda 通道

name: project_environment
dependencies:
  - python=3.8
  - pip:
      - azureml-defaults
channels:
  - anaconda
  - conda-forge

資源

可能的原因:

  • 您在環境定義中指定基礎 conda 環境

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

部分環境更新可能會導致相依性衝突和/或非預期的執行階段錯誤,因此不建議使用基礎 conda 環境。

適用於:Python SDK azureml v1

移除您的基礎 conda 環境,並在環境定義區段 conda_dependencies 中指定環境所需的所有套件

from azureml.core.environment import CondaDependencies

env = Environment(name="env")
env.python.base_conda_environment = None
conda_dep = CondaDependencies()
conda_dep.add_conda_package("python==3.8")
env.python.conda_dependencies = conda_dep

適用於:Azure CLI ml 延伸模組 v2 (目前)

適用於Python SDK azure-ai-ml v2 (目前)

使用標準 conda YAML 組態檔定義環境

資源

取消釘選的相依性

可能的原因:

  • 您未在 conda 規格中指定特定套件的版本

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

如果您未指定相依性版本,conda 套件解析程式可能會在相同環境的後續組建上選擇不同版本的套件。 這會中斷環境的重現性,並可能導致非預期的錯誤。

適用於:Python SDK azureml v1

將套件新增至 conda 規格時包含版本號碼

from azureml.core.environment import CondaDependencies

conda_dep = CondaDependencies()
conda_dep.add_conda_package("numpy==1.24.1")

如果您針對 conda 規格使用 YAML,請為您的相依性指定版本

name: project_environment
dependencies:
  - python=3.8
  - pip:
      - numpy=1.24.1
channels:
  - anaconda
  - conda-forge

資源

Pip 問題

未指定 Pip

可能的原因:

  • 您未在 conda 規格中將 pip 指定為相依性

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

為了重現性,您應該在 conda 規格中將 pip 指定並釘選為相依性。

適用於:Python SDK azureml v1

將 pip 指定為相依性,以及其版本

env.python.conda_dependencies.add_conda_package("pip==22.3.1")

如果您使用 YAML 作為 conda 規格,請將 pip 指定為相依性

name: project_environment
dependencies:
  - python=3.8
  - pip=22.3.1
  - pip:
      - numpy=1.24.1
channels:
  - anaconda
  - conda-forge

資源

Pip 未釘選

可能的原因:

  • 您未在 conda 規格中指定 pip 的版本

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

如果您未指定 pip 版本,則相同環境的後續組建可能會使用不同的版本。 如果不同版本的 pip 以不同方式解決您的套件,此行為可能會導致重現問題和其他非預期的錯誤。

適用於:Python SDK azureml v1

在 conda 相依性中指定 pip 版本

env.python.conda_dependencies.add_conda_package("pip==22.3.1")

如果您針對 conda 規格使用 YAML,請指定 pip 的版本

name: project_environment
dependencies:
  - python=3.8
  - pip=22.3.1
  - pip:
      - numpy=1.24.1
channels:
  - anaconda
  - conda-forge

資源

其他環境問題

R 區段已被淘汰

可能的原因:

  • 您在環境定義中指定 R 區段

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

Azure Machine Learning SDK for R 已於 2021 年底淘汰,以便使用 Azure CLI v2 改善 R 定型和部署體驗

適用於:Python SDK azureml v1

從您的環境定義中移除 R 區段

env.r = None

請參閱範例存放庫,以開始使用 Azure CLI v2 來定型 R 模型

環境沒有定義

可能的原因:

  • 您指定了不存在或尚未註冊的環境
  • 指定環境名稱或環境版本的方式發生拼錯或語法錯誤

受影響的區域 (徵兆):

  • 註冊環境失敗

疑難排解步驟

請確定您已正確指定環境名稱,以及正確的版本

  • path-to-resource:version-number

您應該以不同的方式指定環境的「最新」版本

  • path-to-resource@latest

映像建置問題

ACR 問題

無法連線至 ACR

當存取工作區相關聯的 Azure Container Registry (ACR) 資源失敗時,就會發生此問題。

可能的原因:

  • 工作區的 ACR 位於虛擬網路 (VNet) (私人端點或服務端點) 後面,且您不會使用計算叢集來建立映像。
  • 您的工作區的 ACR 位於虛擬網路 (VNet) (私人端點或服務端點) 後方,而用於組建映像的計算叢集則無法存取工作區的 ACR。

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。
  • 管線作業失敗。
  • 模型部署失敗。

疑難排解步驟

  • 確認計算叢集的 VNet 可以存取工作區的 ACR。
  • 確定計算叢集是以 CPU 為基礎。

注意

  • 僅支援 Azure Machine Learning 計算叢集。 映像組建計算不支援計算、Azure Kubernetes Service (AKS) 或其他執行個體類型。

資源

非預期的 Dockerfile 格式

當您的 Dockerfile 格式不正確時,可能會發生此問題。

可能的原因:

  • 您的 Dockerfile 包含無效的語法
  • 您的 Dockerfile 包含與 UTF-8 不相容的字元

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為它會在第一個步驟中隱含建置環境。

疑難排解步驟

  • 確定 Dockerfile 已正確格式化,並以 UTF-8 編碼

資源

Docker pull 問題

無法提取 Docker 映像

當 Docker 映像提取在映像組建期間失敗時,可能會發生此問題。

可能的原因:

  • 容器登錄的路徑名稱不正確
  • 虛擬網路後方的容器登錄正在使用不支援區域中的私人端點
  • 您嘗試參考的映像不存在於您指定的容器登錄中
  • 您尚未針對嘗試從其中提取映像的私人登錄提供認證,或提供的認證不正確

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

檢查容器登錄的路徑名稱是否正確

  • 對於標記為 3.2 的登錄 my-registry.io 和映像 test/image,有效的映像路徑會是 my-registry.io/test/image:3.2
  • 請參閱登錄路徑文件

如果您的容器登錄位於虛擬網路後方,或是在不支援區域中使用私人端點

  • 使用入口網站中的服務端點 (公用存取) 設定容器登錄,然後重試
  • 將容器登錄放在虛擬網路後方之後,請執行 Azure Resource Manager 範本,讓工作區能夠與容器登錄執行個體進行通訊

若您嘗試參考的映像不存在於您指定的容器登錄中

  • 確認您已使用正確的標籤,且您已將 設定 user_managed_dependenciesTrue。 將 user_managed_dependencies 設定為 True 會停用 conda 並且使用使用者已安裝的套件

若您尚未針對嘗試從其中提取的私人登錄提供認證,或提供的認證不正確

資源

I/O 錯誤

當 Docker 映像提取因網路問題而失敗時,可能會發生此問題。

可能的原因:

  • 網路連線問題,這可能是暫時性的
  • 防火牆封鎖連線
  • ACR 無法連線,而且有網路隔離。 如需詳細資訊,請參閱 ACR 無法連線

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

將主機新增至防火牆規則

評估工作區設定。 您是否使用虛擬網路,或您在虛擬網路後方映像組建期間嘗試存取的任何資源?

  • 請確定您已遵循本文中有關使用虛擬網路保護工作區的步驟
  • Azure Machine Learning 需要對公用網際網路進行輸入和輸出存取。 如果您的虛擬網路設定發生問題,在映像組建期間存取特定存放庫可能會發生問題

如果您未使用虛擬網路,或已正確設定虛擬網路

  • 請嘗試重建映像。 如果逾時是因為網路問題所造成,問題可能是暫時性的,而重建可能會修正問題

組建期間的 Conda 問題

不正確的規格

當您的 conda 規格中列出的套件無效或執行 conda 命令不正確時,就會發生此問題。

可能的原因:

  • 您在 conda 規格中使用的語法不正確
  • 您執行 conda 命令的方式不正確

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

如果您使用 conda create 命令不正確,可能會發生 Conda 規格錯誤

  • 閱讀文件,並確定您使用有效的選項和語法
  • conda env createconda create 之間有已知的混淆。 您可以在這裡深入了解 conda 的回應和其他使用者的已知解決方案

若要確保組建成功,請確定您在 conda yaml 中使用適當的語法和有效的套件規格

通訊錯誤

當您想要下載 conda 規格所列套件的實體通訊失敗時,就會發生此問題。

可能的原因:

  • 無法與 conda 通道或套件存放庫通訊
  • 這些失敗可能是因為暫時性網路失敗所致

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

請確定您在 conda 規格中使用的 conda 通道/存放庫正確

  • 檢查它們是否存在,且您的拼字正確

如果 conda 通道/存放庫正確

  • 嘗試重建映像 -- 發生失敗是暫時性的,而重建可能會修正問題
  • 檢查以確定 conda 規格中列出的套件存在於您指定的通道/存放庫中

編譯錯誤

當因為編譯器錯誤而組建 conda 環境所需的套件時,可能會發生此問題。

可能的原因:

  • 您拼錯了套件,因此無法辨識
  • 編譯程式發生問題

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

如果您使用編譯程式

  • 請確定您已辨識您使用的編譯器
  • 如有需要,請將安裝步驟新增至 Dockerfile
  • 確認編譯器的版本,並檢查您使用的所有命令或選項是否與編譯器版本相容
  • 如有必要,請升級編譯器版本

確定您已正確拼字列出所有已列出的套件,且您已正確釘選版本

資源

遺漏命令

在映像組建期間或指定的 Python 套件需求中無法辨識命令時,可能會發生此問題。

可能的原因:

  • 您未正確拼字命令
  • 無法執行命令,因為未安裝必要的套件

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

  • 請確定您已把命令拼正確
  • 請確定您已安裝執行嘗試執行命令所需的任何套件
  • 如有需要,請將安裝步驟新增至 Dockerfile

資源

Conda 逾時

當 conda 套件解決需要太長的時間才能完成時,就會發生此問題。

可能的原因:

  • Conda 規格中列出大量套件,並包含不必要的套件
  • 您尚未釘選相依性 (您包含了 tensorflow 而不是 tensorflow=2.8)
  • 您已列出沒有解決方案的套件 (您已包含套件 X=1.3 和 Y=2.8,但 X 的版本與 Y 版本不相容)

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

  • 從您的 conda 規格中移除不需要的任何套件
  • 鎖定您的套件--環境解決速度較快
  • 如果您仍然遇到問題,請檢閱這篇文章,以深入了解和改善 conda 的效能

記憶體不足

當 conda 套件解析因可用記憶體耗盡而失敗時,就會發生此問題。

可能的原因:

  • Conda 規格中列出大量套件,並包含不必要的套件
  • 您尚未釘選相依性 (您包含了 tensorflow 而不是 tensorflow=2.8)
  • 您已列出沒有解決方案的套件 (您已包含套件 X=1.3 和 Y=2.8,但 X 的版本與 Y 版本不相容)

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

  • 從您的 conda 規格中移除不需要的任何套件
  • 鎖定您的套件--環境解決速度較快
  • 如果您仍然遇到問題,請檢閱這篇文章,以深入了解和改善 conda 的效能

找不到套件

當您無法在通道/存放庫中找到一或多個 conda 套件時,就會發生此問題。

可能的原因:

  • 您在 conda 規格中未正確列出套件的名稱或版本
  • 套件存在於您未在 conda 規格中列出的 conda 通道中

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

  • 請確定您已正確拼字,且指定的版本存在
  • 確定套件存在於您設為目標的通道上
  • 請確定您已在 conda 規格中列出通道/存放庫,以便在套件解析期間正確提取套件

在 conda 規格中指定通道:

channels:
  - conda-forge
  - anaconda
dependencies:
  - python=3.8
  - tensorflow=2.8
Name: my_environment

資源

遺漏 Python 模組

當 conda 規格中列出的 Python 模組不存在或無效時,就會發生此問題。

可能的原因:

  • 您拼錯了模組
  • 無法辨識模組

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

  • 請確定您已正確拼字模組,且該模組已存在
  • 檢查以確定模組與您在 conda 規格中指定的 Python 版本相容
  • 如果您尚未在 conda 規格中列出特定的 Python 版本,請務必列出與您的模組相容的特定版本,否則可能會使用不相容的預設值

釘選與您所使用的 pip 模組相容的 Python 版本:

channels:
  - conda-forge
  - anaconda
dependencies:
  - python=3.8
  - pip:
    - dataclasses
Name: my_environment

沒有相符的散發套件

當找不到符合您指定版本的套件時,就會發生此問題。

可能的原因:

  • 您拼錯了套件名稱
  • 在您指定的通道或摘要上找不到套件和版本
  • 您指定的版本不存在

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

  • 請確定您已正確拼字,且套件已存在
  • 請確定您為封裝指定的版本存在
  • 請確定您已指定將安裝套件的來源通道。 如果您未指定通道,則會使用預設值,而且這些預設值可能或可能沒有您要尋找的套件

如何在 conda yaml 規格中列出通道:

channels:
  - conda-forge
  - anaconda
dependencies:
  - python = 3.8
  - tensorflow = 2.8
Name: my_environment

資源

無法組建 mpi4py

當 mpi4py 的組建 Wheel 失敗時,可能會發生此問題。

可能的原因:

  • 不符合成功 mpi4py 安裝的需求
  • 您選擇安裝 mpi4py 的方法發生問題

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

請確定您有運作中的 MPI 安裝 (MPI-3 支援喜好設定,以及使用共用/動態連結庫組建的 MPI)

確定您使用的是相容的 Python 版本

  • 建議使用 Python 3.8+,因為較舊版本達到生命周期結束
  • 請參閱 mpi4py 安裝

資源

已嘗試互動式驗證

當 pip 嘗試在套件安裝期間進行互動式驗證時,就會發生此問題。

可能的原因:

  • 您已列出需要驗證的套件,但尚未提供認證
  • 在映像組建期間,pip 嘗試提示您進行驗證,但由於您無法在組建過程中提供互動式驗證,因此組建失敗

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

請透過工作區連線提供驗證

適用於:Python SDK azureml v1

from azureml.core import Workspace
ws = Workspace.from_config()
ws.set_connection("connection1", "PythonFeed", "<URL>", "Basic", "{'Username': '<username>', 'Password': '<password>'}")

適用於:Azure CLI ml 延伸模組 v2 (目前)

從 YAML 規格檔案建立工作區連線

az ml connection create --file connection.yml --resource-group my-resource-group --workspace-name my-workspace

資源

禁止 Blob

當嘗試存取記憶體帳戶中的 Blob 遭到拒絕時,就會發生此問題。

可能的原因:

  • 您用來存取記憶體帳戶的授權方法無效
  • 您嘗試透過共用存取簽章授權 (SAS),但 SAS 權杖已過期或無效

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

閱讀下列內容,以了解如何在 Azure 入口網站中授權 Blob 資料的存取權

閱讀下列內容,以了解如何授權存取 Azure 記憶體中的資料

如果您想要使用 SAS 來存取 Azure 記憶體資源,請閱讀下列內容

Horovod 組建

當 conda 環境無法建立或更新時,可能會發生此問題,因為 horovod 無法組建。

可能的原因:

  • Horovod 安裝需要您尚未安裝的其他模組
  • Horovod 安裝需要您尚未包含的特定程式庫

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

許多問題都可能導致 horovod 失敗,在 horovod 的文件中有一份完整的清單

  • 檢閱 horovod 疑難解答指南
  • 檢閱您的組建記錄檔,以查看當 horovod 無法組建時是否出現錯誤訊息
  • Horovod 疑難解答指南可能會說明您遇到的問題,以及解決方案

資源

找不到 Conda 命令

當 conda 環境建立或更新期間無法辨識 conda 命令時,就會發生此問題。

可能的原因:

  • 您尚未在所使用的基礎映像中安裝 conda
  • 在您嘗試執行 conda 命令之前,您尚未透過 Dockerfile 安裝 conda
  • 您尚未在路徑中包含 conda,或尚未將它新增至您的路徑

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

在嘗試執行任何 conda 命令之前,請先確定您的 Dockerfile 中有 conda 安裝步驟

如果您嘗試安裝 conda 並遇到此問題,請確定您已將 conda 新增至您的路徑

資源

不相容的 Python 版本

當 conda 環境中指定的套件與您指定的 Python 版本不相容時,就會發生此問題。

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

使用與指定 Python 版本相容的不同套件版本

或者,使用與您所指定套件相容的不同 Python 版本

  • 如果您要變更 Python 版本,請使用支援的版本,且尚未接近其生命週期即將結束的版本
  • 請參閱 Python 生命周期結束日期

資源

Conda 裸機重新導向

當您使用「<」或「>」在命令行上指定套件而不使用引號時,就會發生此問題。 此語法可能會導致 conda 環境建立或更新失敗。

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

在套件規格周圍新增引號

  • 例如,將 conda install -y pip<=20.1.1 變更為 conda install -y "pip<=20.1.1"

UTF-8 譯碼錯誤

當 conda 規格中的字元譯碼失敗時,可能會發生此問題。 

可能的原因:

  • 您的 conda YAML 檔案包含與 UTF-8 不相容的字元。

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

組建期間的 Pip 問題

無法安裝套件

當您的映像組建在 Python 套件安裝期間失敗時,就會發生此問題。

可能的原因:

  • 有許多問題可能會導致此錯誤
  • 此訊息是一般訊息,且會在 Azure Machine Learning 分析尚未涵蓋您遇到的錯誤時呈現

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

如需映像組建失敗的詳細資訊,請檢閱您的組建記錄檔

保留 Azure Machine Learning 小組的意見反應,以分析您遇到的錯誤

無法卸載套件

當 pip 無法解除安裝作業系統套件管理員安裝的 Python 套件時,就會發生此問題。

可能的原因:

  • 現有的 pip 問題或有問題的 pip 版本
  • 未使用隔離環境所造成的問題

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

閱讀下列內容,並判斷現有的 pip 問題是否導致您的失敗

請嘗試下列作業

pip install --ignore-installed [package]

嘗試使用 conda 建立個別的環境

無效的運算子

當 pip 無法安裝 Python 套件時,可能會發生此問題,因為需求中找到無效的運算符。

可能的原因:

  • 在 Python 套件需求中找到無效的運算子

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

  • 請確定您已正確拼字,且指定的版本存在
  • 請確定您的套件版本規範已正確格式化,而且您使用的是有效的比較運算符。 請參閱 版本規範
  • 將無效的運算子取代為錯誤訊息中建議的運算符

沒有相符的散發套件

當找不到符合您指定版本的套件時,就會發生此問題。

可能的原因:

  • 您拼錯了套件名稱
  • 在您指定的通道或摘要上找不到套件和版本
  • 您指定的版本不存在

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

  • 請確定您已正確拼字,且套件已存在
  • 請確定您為封裝指定的版本存在
  • 執行 pip install --upgrade pip,然後再次執行原始命令
  • 請確定您使用的 pip 可以安裝所需 Python 版本的套件。 請參閱 我是否應該使用 pip 或 pip3?

資源

無效的滾輪檔名

當您未正確指定轉盤檔案時,可能會發生此問題。

可能的原因:

  • 您拼錯轉盤檔名,或使用格式不正確
  • 找不到您指定的 Wheel 檔案

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

提出問題

未指定任何目標且找不到 makefile

當您尚未指定任何目標,而且在執行 make 時找不到 makefile 時,可能會發生此問題。

可能的原因:

  • Makefile 不存在於目前目錄中
  • 未指定任何目標

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

  • 確定您已正確拼字 makefile
  • 確定 makefile 存在於當前目錄中
  • 如果您有自訂 makefile,請使用 make -f custommakefile 指定它
  • 在 makefile 或命令列中指定目標
  • 設定組建併產生 makefile
  • 請確定您已正確格式化 makefile,而且您已使用索引標籤進行縮排

資源

複製問題

找不到檔案

當 Docker 找不到並複製檔案時,可能會發生此問題。

可能的原因:

  • Docker 組建內容中找不到來源檔案
  • 排除的來源檔案 .dockerignore

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為它會在第一個步驟中隱含建置環境。

疑難排解步驟

  • 確定來源檔案存在於 Docker 組建內容中
  • 確定來源和目的地路徑存在且拼字正確
  • 確定來源檔案未列在目前和上層目錄的 .dockerignore
  • 從與 COPY 命令相同的行中移除任何後置註解

資源

Apt-Get 問題

無法執行apt-get 命令

當 apt-get 無法執行時,可能會發生此問題。

可能的原因:

  • 網路連線問題,這可能是暫時性的
  • 與您執行 apt-get 的套件相關的中斷相依性
  • 您沒有使用 apt-get 命令的正確許可權

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為它會在第一個步驟中隱含建置環境。

疑難排解步驟

  • 檢查您的網路連線和 DNS 設定
  • 執行 apt-get check 以檢查中斷的相依性
  • 再次執行 apt-get update 並執行原始命令
  • 使用 -f 旗標執行命令,這會嘗試解析來自中斷相依性的問題
  • 使用 sudo 權限執行命令,例如 sudo apt-get install <package-name>

資源

Docker 推送問題

無法儲存 Docker 映像

將 Docker 映像推送至容器登錄時,可能會發生此問題。

可能的原因:

  • 與工作區相關聯的 ACR 發生暫時性問題
  • 虛擬網路後方的容器登錄正在使用不支援區域中的私人端點

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 組建環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

如果您懷疑失敗是工作區的 Azure Container Registry 暫時性問題,請重試環境組建 (ACR)

如果您的容器登錄位於虛擬網路後方,或是在不支援區域中使用私人端點

  • 使用入口網站中的服務端點 (公用存取) 設定容器登錄,然後重試
  • 將容器登錄放在虛擬網路後方之後,請執行 Azure Resource Manager 範本,讓工作區能夠與容器登錄執行個體進行通訊

如果您未使用虛擬網路,或如果您已正確設定,請嘗試簡單的本機組建來測試您的 ACR 認證是否正確

未知的 Docker 命令

未知的 Docker 指示

當 Docker 無法辨識 Dockerfile 中的指示時,就會發生此問題。

可能的原因:

  • Dockerfile 中使用的未知 Docker 指示
  • 您的 Dockerfile 包含無效的語法

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為它會在第一個步驟中隱含建置環境。

疑難排解步驟

  • 確定 Docker 命令有效且拼字正確
  • 確定 Docker 命令與引數之間有空格
  • 確定 Dockerfile 中沒有任何不必要的空白字元
  • 確定 Dockerfile 已正確格式化,並以 UTF-8 編碼

資源

找不到命令

無法辨識命令

無法辨識執行命令時,可能會發生此問題。

可能的原因:

  • 在您嘗試執行命令之前,您尚未透過 Dockerfile 安裝命令
  • 您尚未在路徑中包含 命令,或尚未將它新增至路徑

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為它會在第一個步驟中隱含建置環境。

疑難解答步驟 確定您有 Dockerfile 中命令的安裝步驟,再嘗試執行命令

如果您嘗試安裝命令並遇到此問題,請確定您已將命令新增至您的路徑

其他組建問題

組建記錄檔無法使用

可能的原因:

  • Azure Machine Learning 未獲授權將組建記錄儲存在記憶體帳戶中
  • 儲存組建記錄時發生暫時性錯誤
  • 觸發映像組建之前發生系統錯誤

受影響的區域 (徵兆):

  • 成功的組建,但沒有可用的記錄。
  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。

疑難排解步驟

如果重建是暫時性的,則重建可能會修正問題

找不到映像

找不到您指定的基礎映像時,可能會發生此問題。

可能的原因:

  • 您未正確指定影像
  • 您指定的映像不存在於您指定的登錄中

受影響的區域 (徵兆):

  • 從 UI、SDK 和 CLI 建置環境時失敗。
  • 執行中作業失敗,因為它會在第一個步驟中隱含建置環境。

疑難排解步驟

  • 確定基礎影像已拼字並正確格式化
  • 請確定您使用的基礎映像存在於您指定的登錄中

資源