1

在我们公司,我使用 Azure ML,但遇到以下问题。我用 PyTorch 估计器类指定一个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 login 并根据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 映像之外,如果有人可以向我解释这一点,我也会很高兴。谢谢!

4

1 回答 1

3

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-使用估计器/如何使用估计器.ipynb

于 2019-08-11T05:38:27.287 回答