如何避免 az ml 运行 --submit-script 命令中的错误 "conda --version: conda not found"?
How to avoid error "conda --version: conda not found" in az ml run --submit-script command?
我想 运行 使用 Azure CLI 的 Azure 机器学习扩展在现有的 Azure 计算实例上测试脚本:
az ml run submit-script test.py --target compute-instance-test --experiment-name test_example --resource-group ex-test-rg
我收到带有以下错误消息的服务错误:
Unable to run conda package manager. AzureML uses conda to provision python\nenvironments from a dependency specification. To manage the python environment\nmanually instead, set userManagedDependencies to True in the python environment\nconfiguration. To use system managed python environments, install conda from:\nhttps://conda.io/miniconda.html
但是当我通过 Azure 门户和 select 默认 Python 内核连接到计算实例时,conda --version
打印 4.5.12。因此 conda 实际上已经安装在计算实例上。这就是我不明白错误信息的原因。
有关 Azure 版本的更多信息:
"azure-cli": "2.12.1",
"azure-cli-core": "2.12.1",
"azure-cli-telemetry": "1.0.6",
"extensions": {
"azure-cli-ml": "1.15.0"
}
我使用的图片是:
mcr.microsoft.com/azure-cli:latest
有人可以解释为什么我会收到此错误并帮助我解决错误吗?谢谢!
编辑:我试图更新 az ml run
命令为 运行 的环境。
本质上这是我的 GitLab 工作。 miniconda 的安装有点复杂,因为 azure-cli 使用的是 alpine Linux 镜像(参考:)。我用...替换了一些名称并删除了一些不相关的代码。
test:
image: 'mcr.microsoft.com/azure-cli:latest'
script:
- echo "Download conda"
- apk --update add bash curl wget ca-certificates libstdc++ glib
- wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://raw.githubusercontent.com/sgerrand/alpine-pkg-node-bower/master/sgerrand.rsa.pub
- curl -L "https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.23-r3/glibc-2.23-r3.apk" -o glibc.apk
- apk del libc6-compat
- apk add glibc.apk
- curl -L "https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.23-r3/glibc-bin-2.23-r3.apk" -o glibc-bin.apk
- apk add glibc-bin.apk
- curl -L "https://github.com/andyshinn/alpine-pkg-glibc/releases/download/2.25-r0/glibc-i18n-2.25-r0.apk" -o glibc-i18n.apk
- apk add --allow-untrusted glibc-i18n.apk
- /usr/glibc-compat/bin/localedef -i en_US -f UTF-8 en_US.UTF-8
- /usr/glibc-compat/sbin/ldconfig /lib /usr/glibc/usr/lib
- rm -rf glibc*apk /var/cache/apk/*
- echo "yes" | curl -sSL https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -o miniconda.sh
- echo "Install conda"
- (echo -e "\n"; echo "yes"; echo -e "\n"; echo "yes") | bash -bfp miniconda.sh
- echo "Installing Azure Machine Learning Extension"
- az extension add -n azure-cli-ml
- echo "Azure Login"
- az login
- az account set --subscription ...
- az configure --defaults group=...
- az ml folder attach -w ...
- az ml run submit-script test.py --target ... --experiment-name hello_world --resource-group ...
对于基于容器的环境,您的基础映像中需要 conda。您可以使用 base_dockerfile 而不是 base_image 安装 conda 来扩展基本映像
https://docs.microsoft.com/en-us/python/api/azureml-core/azureml.core.environment.dockersection?view=azure-ml-py
或者,如果这对您有用,请使用 AzureML 基础 docker 图像之一。
如果你的基础镜像不需要任何python依赖,你可以将user_managed_dependencies设置为True,基础镜像将按原样使用,不会安装额外的依赖
需要传递 --workspace-name
参数才能 运行 它在 Azure 的计算目标而不是本地计算目标上:
az ml run submit-script test.py --target compute-instance-test --experiment-name test_example --resource-group ex-test-rg --workspace-name test-ws
使用:
runconfig.environment.python.user_managed_dependencies = True
这应该可以解决问题
我想 运行 使用 Azure CLI 的 Azure 机器学习扩展在现有的 Azure 计算实例上测试脚本:
az ml run submit-script test.py --target compute-instance-test --experiment-name test_example --resource-group ex-test-rg
我收到带有以下错误消息的服务错误:
Unable to run conda package manager. AzureML uses conda to provision python\nenvironments from a dependency specification. To manage the python environment\nmanually instead, set userManagedDependencies to True in the python environment\nconfiguration. To use system managed python environments, install conda from:\nhttps://conda.io/miniconda.html
但是当我通过 Azure 门户和 select 默认 Python 内核连接到计算实例时,conda --version
打印 4.5.12。因此 conda 实际上已经安装在计算实例上。这就是我不明白错误信息的原因。
有关 Azure 版本的更多信息:
"azure-cli": "2.12.1",
"azure-cli-core": "2.12.1",
"azure-cli-telemetry": "1.0.6",
"extensions": {
"azure-cli-ml": "1.15.0"
}
我使用的图片是:
mcr.microsoft.com/azure-cli:latest
有人可以解释为什么我会收到此错误并帮助我解决错误吗?谢谢!
编辑:我试图更新 az ml run
命令为 运行 的环境。
本质上这是我的 GitLab 工作。 miniconda 的安装有点复杂,因为 azure-cli 使用的是 alpine Linux 镜像(参考:
test:
image: 'mcr.microsoft.com/azure-cli:latest'
script:
- echo "Download conda"
- apk --update add bash curl wget ca-certificates libstdc++ glib
- wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://raw.githubusercontent.com/sgerrand/alpine-pkg-node-bower/master/sgerrand.rsa.pub
- curl -L "https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.23-r3/glibc-2.23-r3.apk" -o glibc.apk
- apk del libc6-compat
- apk add glibc.apk
- curl -L "https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.23-r3/glibc-bin-2.23-r3.apk" -o glibc-bin.apk
- apk add glibc-bin.apk
- curl -L "https://github.com/andyshinn/alpine-pkg-glibc/releases/download/2.25-r0/glibc-i18n-2.25-r0.apk" -o glibc-i18n.apk
- apk add --allow-untrusted glibc-i18n.apk
- /usr/glibc-compat/bin/localedef -i en_US -f UTF-8 en_US.UTF-8
- /usr/glibc-compat/sbin/ldconfig /lib /usr/glibc/usr/lib
- rm -rf glibc*apk /var/cache/apk/*
- echo "yes" | curl -sSL https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -o miniconda.sh
- echo "Install conda"
- (echo -e "\n"; echo "yes"; echo -e "\n"; echo "yes") | bash -bfp miniconda.sh
- echo "Installing Azure Machine Learning Extension"
- az extension add -n azure-cli-ml
- echo "Azure Login"
- az login
- az account set --subscription ...
- az configure --defaults group=...
- az ml folder attach -w ...
- az ml run submit-script test.py --target ... --experiment-name hello_world --resource-group ...
对于基于容器的环境,您的基础映像中需要 conda。您可以使用 base_dockerfile 而不是 base_image 安装 conda 来扩展基本映像 https://docs.microsoft.com/en-us/python/api/azureml-core/azureml.core.environment.dockersection?view=azure-ml-py 或者,如果这对您有用,请使用 AzureML 基础 docker 图像之一。
如果你的基础镜像不需要任何python依赖,你可以将user_managed_dependencies设置为True,基础镜像将按原样使用,不会安装额外的依赖
需要传递 --workspace-name
参数才能 运行 它在 Azure 的计算目标而不是本地计算目标上:
az ml run submit-script test.py --target compute-instance-test --experiment-name test_example --resource-group ex-test-rg --workspace-name test-ws
使用:
runconfig.environment.python.user_managed_dependencies = True
这应该可以解决问题