1

我正在基于 conda 环境文件在 azureml 中配置环境。然而,azureml 环境似乎忽略了 enviromnet 变量。

from azureml.core import Environment
from azureml.core.conda_dependencies import CondaDependencies

CondaDependencies._VALID_YML_KEYS.append("variables")
pipeline_env = Environment.from_conda_specification("pipeline_env", "env.yml")
print(pipeline_env.environment_variables)

这将导致打印以下内容。

{'EXAMPLE_ENV_VAR': 'EXAMPLE_VALUE'}

我的 env.yml 在底部包含以下部分

variables:
- KEY_ONE: 1.1.0.1
- KEY_TWO: 1.1.0.1

如果我将环境保存到这样的目录

pipeline_env.save_to_directory("env")

它会生成一个名为“env”的文件夹,其中包含两个文件。

  • conda_dependencies.yml
  • azureml_environment.json

在 azureml_environment 我可以看到我的两个键存在。但是它们确实存在于 conda_dependancies.yml 中,这向我表明它们在 env.yml 文件中被正确定义。

如图所示,我还必须将“varialbes”键添加为有效的 yml 键,如果不是 azureml 则会引发错误。

我开始怀疑 azureml 不允许这种设置环境变量的方法,并且正确设置它们的唯一方法是使用以下方法:

 pipeline_env.environment_variables = {"KEY_ONE", "1.1.0.1",
                                       "KEY_TWO", "1.1.0.1")

由于这确实有效,但我更喜欢使用 .yml 文件。所以我想我的问题是:我应该能够使用 .yml 文件设置环境变量,还是我的假设正确,我必须使用 enviroment_variables 函数?

4

1 回答 1

2

环境定义中的 environment_variables 已弃用,最初是为计算目标上的作业设置的运行时变量,而不是烘焙到容器中。为了向后兼容,默认值 example_env_var:example_value 仍然存在,但最终将被删除。

https://docs.microsoft.com/en-us/python/api/azureml-core/azureml.core.environment.environment?view=azure-ml-py#azureml-core-environment-environment-environment-variables

yml 文件中设置的变量应在图像具体化期间传递给 conda create

于 2022-02-03T01:10:49.970 回答