針對環境問題進行疑難解答
在本文中,了解如何針對您可能遇到環境映像組建的常見問題進行疑難解答,並了解 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 維護的環境。 自訂環境是您建立和維護的環境。
可能的原因:
- 您的環境名稱開頭為 Microsoft 或 AzureML
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
更新您的環境名稱,以排除您目前使用的保留前置詞
資源
環境名稱太長
可能的原因:
- 您的環境名稱超過 255 個字元
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
將您的環境名稱更新為 255 個或以下的字元
Docker 問題
若要建立新的環境,您必須使用下列其中一種方法 (參閱 DockerSection):
- 基礎映像
- 提供基礎映像名稱、要從中提取的存放庫,並視需要提供認證
- 提供 conda 規格
- 基礎 Dockerfile
- 提供 Dockerfile
- 提供 conda 規格
- Docker 組建內容
- 提供組建內容的位置 (URL)
- 組建內容至少必須包含 Dockerfile,但也可能包含其他檔案
適用於:Python SDK azure-ai-ml v2 (目前)
若要建立新的環境,您必須使用下列其中一種方法:
遺漏 Docker 定義
當您的環境定義遺漏 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 選項
可能的原因:
您的環境定義中指定了多個 Docker 選項
base_image
base_dockerfile
build_context
- 請參閱 DockerSection
適用於:Python SDK azure-ai-ml v2 (目前)
您的環境定義中指定了多個 Docker 選項
image
build
- 請參閱 azure.ai.ml.entities.Environment
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
選擇您想要用來組建環境的 Docker 選項。 然後將所有其他指定的選項設定為無。
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
適用於:Python SDK azure-ai-ml v2 (目前)
您未在環境定義中指定下列其中一個選項
image
build
- 請參閱 azure.ai.ml.entities.Environment
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
選擇您想要用來組建環境的 Docker 選項,然後在您的環境定義中填入該選項。
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)
資源
容器登錄認證遺漏使用者名稱或密碼
可能的原因:
- 您已在環境定義中指定容器登錄的使用者名稱或密碼,但未同時指定這兩者
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
將遺漏的使用者名稱或密碼新增至您的環境定義以修正問題
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>'}")
從 YAML 規格檔案建立工作區連線
az ml connection create --file connection.yml --resource-group my-resource-group --workspace-name my-workspace
注意
- 在您的環境定義中已不再支援提供認證。 請改用工作區連線。
資源
基礎映像登錄的多個認證
可能的原因:
- 您已為基礎映像登錄指定一組以上的認證
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
如果您使用工作區連線,請檢視您已設定的連線,並刪除您不想使用的連線
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
注意
- 在您的環境定義中已不再支援提供認證。 請改用工作區連線。
資源
基礎映像登錄中的祕密
可能的原因:
- 您已在環境定義中指定認證
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
在您的環境定義中已不再支援指定認證。 請從您的環境定義中刪除認證,並改用工作區連線。
在工作區上設定工作區連線
from azureml.core import Workspace
ws = Workspace.from_config()
ws.set_connection("connection1", "ACR", "<URL>", "Basic", "{'Username': '<username>', 'Password': '<password>'}")
從 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
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
不要在環境定義的 DockerSection
中指定這些屬性,而是使用 DockerConfiguration
資源
- 請參閱
DockerSection
已被取代的變數
Dockerfile 長度超過限制
可能的原因:
- 指定的 Dockerfile 超過大小上限 100 KB
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
縮短您的 Dockerfile,使其低於此限制
資源
Docker 組建內容問題
遺漏 Docker 組建內容位置
可能的原因:
- 您未在環境定義中提供組建內容目錄的路徑
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
資源
遺漏 Dockerfile 路徑
當 Azure Machine Learning 找不到您的 Dockerfile 時,就會發生此問題。 Azure Machine Learning 預設會在組建內容目錄的根目錄尋找名為 'Dockerfile' 的 Dockerfile,除非您指定 Dockerfile 路徑。
可能的原因:
- 您的 Dockerfile 不在組建內容目錄的根目錄,且 /或名為 'Dockerfile' 以外的名稱,且您未提供其路徑
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
在您 DockerSection 的 build_context
中,包含 dockerfile_path
適用於:Python SDK azure-ai-ml v2 (目前)
指定 Dockerfile 路徑
資源
不允許使用 Docker 組建內容指定屬性
當您在環境定義中指定無法包含在 Docker 組建內容中的屬性時,就會發生此問題。
可能的原因:
- 您指定 Docker 組建內容,以及環境定義中至少一個下列屬性:
- 環境變數
- Conda 相依性
- R
- Spark
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
如果您在環境定義中指定了上述任何屬性,請將其移除
- 如果您使用 Docker 組建內容並想要指定 conda 相依性,您的 conda 規格應該位於您的組建內容目錄中
資源
不支援的位置類型/未知的位置類型
可能的原因:
- 您已為不支援或未知的 Docker 組建內容指定位置類型
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
以下是可接受的位置類型:
- Git
- 您可以將 Git URL 提供給 Azure Machine Learning,但尚無法使用它們來組建映像。 使用儲存體帳戶,直到組建具有 Git 支援為止
- 儲存體帳戶
資源
位置無效
可能的原因:
- 您 Docker 組建內容的指定位置無效
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
針對您將 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
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
將您的基礎映像升級至最新版支援的映像
- 查看可用的 基礎映像
沒有標記或摘要
可能的原因:
- 您未在指定的基礎映像中包含版本標記或摘要
- 如果沒有其中一個規範,環境就無法重現
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
在您的基礎映像上至少包含下列其中一個規範
- 版本標記
- Digest
- 請參閱具有不可變識別碼的映像
環境變數問題
錯置的執行階段變數
可能的原因:
- 您在環境定義中指定執行時間變數
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
改為在 RunConfiguration 物件上使用 environment_variables
屬性
Python 問題
Python 區段遺漏
可能的原因:
- 您的環境定義沒有 Python 區段
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
填入環境定義的 Python 區段
- 請參閱 PythonSection 類別
Python 版本遺漏
可能的原因:
- 您尚未在環境定義中指定 Python 版本
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
將 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 版本,並移除所有其他版本
myenv.python.conda_dependencies.remove_conda_package("python=3.8")
如果您使用 YAML 作為 conda 規格,請只包含一個 Python 版本作為相依性
不支援 Python 版本
可能的原因:
- 您已指定 Python 版本,其生命週期即將結束,且不再受到支援
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
不建議使用 Python 版本
可能的原因:
- 您已指定 Python 版本,其生命週期即將結束或接近尾聲
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
無法驗證 Python 版本
可能的原因:
- 您指定的 Python 版本語法不正確或格式不正確
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
使用正確的語法來指定使用 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 相依性
可能的原因:
- 您尚未在環境定義中提供 conda 規格,且
user_managed_dependencies
設定為False
(預設值)
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
如果您不希望 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
適用於:Python SDK azure-ai-ml v2 (目前)
您必須指定環境的基礎 Docker 映像,Azure Machine Learning 會接著在該映像之上組建 conda 環境
- 提供 conda 檔案的相對路徑
- 參閱如何從 Conda 規格建立環境
資源
不正確 conda 相依性
可能的原因:
- 您已錯誤地將環境定義中指定的 conda 相依性格式化
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
請確定 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
適用於:Python SDK azure-ai-ml v2 (目前)
您必須指定環境的基礎 Docker 映像,Azure Machine Learning 會接著在該映像之上組建 conda 環境
- 提供 conda 檔案的相對路徑
- 參閱如何從 Conda 規格建立環境
資源
- 請參閱 更廣泛的範例
- 請參閱如何手動建立 conda 檔案
- 請參閱 CondaDependencies 類別
- 請參閱如何在環境定義上設定 conda 規格
遺漏 conda 通道
可能的原因:
- 您尚未在環境定義中指定 conda 通道
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
若要重現您的環境,請指定要從中提取相依性的通道。 如果您未指定 conda 通道,conda 會使用可能會變更的預設值。
使用 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 環境
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
部分環境更新可能會導致相依性衝突和/或非預期的執行階段錯誤,因此不建議使用基礎 conda 環境。
移除您的基礎 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
適用於:Python SDK azure-ai-ml v2 (目前)
使用標準 conda YAML 組態檔定義環境
資源
取消釘選的相依性
可能的原因:
- 您未在 conda 規格中指定特定套件的版本
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
如果您未指定相依性版本,conda 套件解析程式可能會在相同環境的後續組建上選擇不同版本的套件。 這會中斷環境的重現性,並可能導致非預期的錯誤。
將套件新增至 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
資源
- 請參閱 conda 套件釘選
Pip 問題
未指定 Pip
可能的原因:
- 您未在 conda 規格中將 pip 指定為相依性
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
為了重現性,您應該在 conda 規格中將 pip 指定並釘選為相依性。
將 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
資源
- 請參閱 conda 套件釘選
Pip 未釘選
可能的原因:
- 您未在 conda 規格中指定 pip 的版本
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
如果您未指定 pip 版本,則相同環境的後續組建可能會使用不同的版本。 如果不同版本的 pip 以不同方式解決您的套件,此行為可能會導致重現問題和其他非預期的錯誤。
在 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
資源
- 請參閱 conda 套件釘選
其他環境問題
R 區段已被淘汰
可能的原因:
- 您在環境定義中指定 R 區段
受影響的區域 (徵兆):
- 註冊環境失敗
疑難排解步驟
Azure Machine Learning SDK for R 已於 2021 年底淘汰,以便使用 Azure CLI v2 改善 R 定型和部署體驗
請參閱範例存放庫,以開始使用 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_dependencies
為True
。 將 user_managed_dependencies 設定為True
會停用 conda 並且使用使用者已安裝的套件
若您尚未針對嘗試從其中提取的私人登錄提供認證,或提供的認證不正確
- 視需要設定容器登錄的工作區連線
資源
I/O 錯誤
當 Docker 映像提取因網路問題而失敗時,可能會發生此問題。
可能的原因:
- 網路連線問題,這可能是暫時性的
- 防火牆封鎖連線
- ACR 無法連線,而且有網路隔離。 如需詳細資訊,請參閱 ACR 無法連線。
受影響的區域 (徵兆):
- 從 UI、SDK 和 CLI 建置環境時失敗。
- 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。
疑難排解步驟
將主機新增至防火牆規則
- 請參閱設定輸入和輸出網路流量,以了解如何針對 VNet 後方的工作區和資源使用 Azure 防火牆
評估工作區設定。 您是否使用虛擬網路,或您在虛擬網路後方映像組建期間嘗試存取的任何資源?
- 請確定您已遵循本文中有關使用虛擬網路保護工作區的步驟
- Azure Machine Learning 需要對公用網際網路進行輸入和輸出存取。 如果您的虛擬網路設定發生問題,在映像組建期間存取特定存放庫可能會發生問題
如果您未使用虛擬網路,或已正確設定虛擬網路
- 請嘗試重建映像。 如果逾時是因為網路問題所造成,問題可能是暫時性的,而重建可能會修正問題
組建期間的 Conda 問題
不正確的規格
當您的 conda 規格中列出的套件無效或執行 conda 命令不正確時,就會發生此問題。
可能的原因:
- 您在 conda 規格中使用的語法不正確
- 您執行 conda 命令的方式不正確
受影響的區域 (徵兆):
- 從 UI、SDK 和 CLI 建置環境時失敗。
- 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。
疑難排解步驟
如果您使用 conda create 命令不正確,可能會發生 Conda 規格錯誤
若要確保組建成功,請確定您在 conda yaml 中使用適當的語法和有效的套件規格
- 請參閱套件比對規格,以及如何手動建立 conda 檔案
通訊錯誤
當您想要下載 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)
- 請參閱 mpi4py 安裝
- 如有需要,請依照下列組建 MPI 的步驟
確定您使用的是相容的 Python 版本
- 建議使用 Python 3.8+,因為較舊版本達到生命周期結束
- 請參閱 mpi4py 安裝
資源
已嘗試互動式驗證
當 pip 嘗試在套件安裝期間進行互動式驗證時,就會發生此問題。
可能的原因:
- 您已列出需要驗證的套件,但尚未提供認證
- 在映像組建期間,pip 嘗試提示您進行驗證,但由於您無法在組建過程中提供互動式驗證,因此組建失敗
受影響的區域 (徵兆):
- 從 UI、SDK 和 CLI 建置環境時失敗。
- 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。
疑難排解步驟
請透過工作區連線提供驗證
from azureml.core import Workspace
ws = Workspace.from_config()
ws.set_connection("connection1", "PythonFeed", "<URL>", "Basic", "{'Username': '<username>', 'Password': '<password>'}")
從 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 並遇到此問題,請確定您已將 conda 新增至您的路徑
- 請檢閱此 範例 以取得指引
- 檢閱如何設定 Dockerfile 中的環境變數
資源
- 所有可用的 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 會在第一個步驟中隱含組建環境。
疑難排解步驟
- 請確定您已正確拼字,且檔名已存在
- 請確定您遵循 Wheel 檔名的格式
提出問題
未指定任何目標且找不到 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 認證是否正確
- 從 Azure 入口網站取得工作區 ACR 的認證
- 使用 登入您的 ACR
docker login <myregistry.azurecr.io> -u "username" -p "password"
- 針對映像「helloworld」請執行
docker push helloworld
來測試推送至您的 ACR - 參閱快速入門:使用 Azure Container Registry 工作組建和執行容器映像
未知的 Docker 命令
未知的 Docker 指示
當 Docker 無法辨識 Dockerfile 中的指示時,就會發生此問題。
可能的原因:
- Dockerfile 中使用的未知 Docker 指示
- 您的 Dockerfile 包含無效的語法
受影響的區域 (徵兆):
- 從 UI、SDK 和 CLI 建置環境時失敗。
- 執行中作業失敗,因為它會在第一個步驟中隱含建置環境。
疑難排解步驟
- 確定 Docker 命令有效且拼字正確
- 確定 Docker 命令與引數之間有空格
- 確定 Dockerfile 中沒有任何不必要的空白字元
- 確定 Dockerfile 已正確格式化,並以 UTF-8 編碼
資源
找不到命令
無法辨識命令
無法辨識執行命令時,可能會發生此問題。
可能的原因:
- 在您嘗試執行命令之前,您尚未透過 Dockerfile 安裝命令
- 您尚未在路徑中包含 命令,或尚未將它新增至路徑
受影響的區域 (徵兆):
- 從 UI、SDK 和 CLI 建置環境時失敗。
- 執行中作業失敗,因為它會在第一個步驟中隱含建置環境。
疑難解答步驟 確定您有 Dockerfile 中命令的安裝步驟,再嘗試執行命令
- 檢閱此範例
如果您嘗試安裝命令並遇到此問題,請確定您已將命令新增至您的路徑
- 檢閱此範例
- 檢閱如何設定 Dockerfile 中的環境變數
其他組建問題
組建記錄檔無法使用
可能的原因:
- Azure Machine Learning 未獲授權將組建記錄儲存在記憶體帳戶中
- 儲存組建記錄時發生暫時性錯誤
- 觸發映像組建之前發生系統錯誤
受影響的區域 (徵兆):
- 成功的組建,但沒有可用的記錄。
- 從 UI、SDK 和 CLI 建置環境時失敗。
- 執行中作業失敗,因為 Azure Machine Learning 會在第一個步驟中隱含組建環境。
疑難排解步驟
如果重建是暫時性的,則重建可能會修正問題
找不到映像
找不到您指定的基礎映像時,可能會發生此問題。
可能的原因:
- 您未正確指定影像
- 您指定的映像不存在於您指定的登錄中
受影響的區域 (徵兆):
- 從 UI、SDK 和 CLI 建置環境時失敗。
- 執行中作業失敗,因為它會在第一個步驟中隱含建置環境。
疑難排解步驟
- 確定基礎影像已拼字並正確格式化
- 請確定您使用的基礎映像存在於您指定的登錄中
資源