如何在 Azure ML 中重用成功构建的 docker 个图像?
How to reuse successfully built docker images in Azure ML?
我在我们公司使用 Azure ML,但遇到以下问题。我用 PyTorch 估计器 class 指定了一个 conda_requirements.yaml 文件,就像这样(... 是占位符,这样我就不必输入所有内容):
from azureml.train.dnn import PyTorch
est = PyTorch(source_directory=’.’, script_params=..., compute_target=..., entry_script=..., conda_dependencies_file_path=’conda_requirements.yaml’, environment_variables=..., framework_version=’1.1’)
conda_requirements.yaml(pip 部分的简化版)如下所示:
dependencies:
- conda=4.5.11
- conda-package-handling=1.3.10
- python=3.6.2
- cython=0.29.10
- scikit-learn==0.21.2
- anaconda::cloudpickle==1.2.1
- anaconda::cffi==1.12.3
- anaconda::mxnet=1.1.0
- anaconda::psutil==5.6.3
- anaconda::pip=19.1.1
- anaconda::six==1.12.0
- anaconda::mkl==2019.4
- conda-forge::openmpi=3.1.2
- conda-forge::pycparser==2.19
- tensorboard==1.13.1
- tensorflow==1.13.1
- pip:
- torch==1.1.0
- torchvision==0.2.1
这在 Azure 上成功构建。现在为了在这种情况下重用生成的 docker 图像,我使用 custom_docker_image
参数传递给
from azureml.train.estimator import Estimator
est = Estimator(source_directory=’.’, script_params=..., compute_target=..., entry_script=..., custom_docker_image=’<container registry name>.azurecr.io/azureml/azureml_c3a4f...’, environment_variables=...)
但现在 Azure 似乎以某种方式再次重建图像,当我 运行 实验时它无法安装 torch。所以它似乎只安装了 conda 依赖项而不是 pip 依赖项,但实际上我不想让 Azure 重建图像。我能以某种方式解决这个问题吗?
我试图以某种方式从我的 Docker 文件构建一个 docker 图像,然后添加到注册表中。我可以进行 az 登录,然后根据 https://docs.microsoft.com/en-us/azure/container-registry/container-registry-authentication 我应该也可以进行 acr 登录和推送。这是行不通的。
即使使用来自
的凭据
az acr credential show –name <container registry name>
然后做
docker login <container registry name>.azurecr.io –u <username from credentials above> -p <password from credentials above>
不起作用。
错误消息是 需要身份验证 即使我使用
az login
成功。除了在使用 Azure ML 时如何重用 docker 图像之外,如果有人能向我解释这一点,我也会很高兴。
谢谢!
AzureML 应该在创建图像后实际缓存您的 docker 图像。该服务将散列基本 docker 信息和 conda.yaml 文件的内容,并将其用作散列键——除非您更改任何信息,否则 docker 应该来自ACR。
关于自定义docker用法,你设置参数user_managed=True
了吗?否则,AzureML 会将您的 docker 视为基础映像,它将根据您的 yaml 文件在其上创建 conda 环境。
本笔记本中有一个如何使用自定义 docker 图像的示例:
https://github.com/Azure/MachineLearningNotebooks/blob/4170a394edd36413edebdbab347afb0d833c94ee/how-to-use-azureml/training-with-deep-learning/how-to-use-estimator/how-to-use-estimator.ipynb
我在我们公司使用 Azure ML,但遇到以下问题。我用 PyTorch 估计器 class 指定了一个 conda_requirements.yaml 文件,就像这样(... 是占位符,这样我就不必输入所有内容):
from azureml.train.dnn import PyTorch
est = PyTorch(source_directory=’.’, script_params=..., compute_target=..., entry_script=..., conda_dependencies_file_path=’conda_requirements.yaml’, environment_variables=..., framework_version=’1.1’)
conda_requirements.yaml(pip 部分的简化版)如下所示:
dependencies:
- conda=4.5.11
- conda-package-handling=1.3.10
- python=3.6.2
- cython=0.29.10
- scikit-learn==0.21.2
- anaconda::cloudpickle==1.2.1
- anaconda::cffi==1.12.3
- anaconda::mxnet=1.1.0
- anaconda::psutil==5.6.3
- anaconda::pip=19.1.1
- anaconda::six==1.12.0
- anaconda::mkl==2019.4
- conda-forge::openmpi=3.1.2
- conda-forge::pycparser==2.19
- tensorboard==1.13.1
- tensorflow==1.13.1
- pip:
- torch==1.1.0
- torchvision==0.2.1
这在 Azure 上成功构建。现在为了在这种情况下重用生成的 docker 图像,我使用 custom_docker_image
参数传递给
from azureml.train.estimator import Estimator
est = Estimator(source_directory=’.’, script_params=..., compute_target=..., entry_script=..., custom_docker_image=’<container registry name>.azurecr.io/azureml/azureml_c3a4f...’, environment_variables=...)
但现在 Azure 似乎以某种方式再次重建图像,当我 运行 实验时它无法安装 torch。所以它似乎只安装了 conda 依赖项而不是 pip 依赖项,但实际上我不想让 Azure 重建图像。我能以某种方式解决这个问题吗?
我试图以某种方式从我的 Docker 文件构建一个 docker 图像,然后添加到注册表中。我可以进行 az 登录,然后根据 https://docs.microsoft.com/en-us/azure/container-registry/container-registry-authentication 我应该也可以进行 acr 登录和推送。这是行不通的。 即使使用来自
的凭据az acr credential show –name <container registry name>
然后做
docker login <container registry name>.azurecr.io –u <username from credentials above> -p <password from credentials above>
不起作用。 错误消息是 需要身份验证 即使我使用
az login
成功。除了在使用 Azure ML 时如何重用 docker 图像之外,如果有人能向我解释这一点,我也会很高兴。 谢谢!
AzureML 应该在创建图像后实际缓存您的 docker 图像。该服务将散列基本 docker 信息和 conda.yaml 文件的内容,并将其用作散列键——除非您更改任何信息,否则 docker 应该来自ACR。
关于自定义docker用法,你设置参数user_managed=True
了吗?否则,AzureML 会将您的 docker 视为基础映像,它将根据您的 yaml 文件在其上创建 conda 环境。
本笔记本中有一个如何使用自定义 docker 图像的示例:
https://github.com/Azure/MachineLearningNotebooks/blob/4170a394edd36413edebdbab347afb0d833c94ee/how-to-use-azureml/training-with-deep-learning/how-to-use-estimator/how-to-use-estimator.ipynb