如何在Azure ML SDK v2中通过jobs.create_or_update()为管道设置环境变量?
Azure ML SDK v2 管道组件设置环境变量解决方案
在SDK v2中,管道作业不再依赖RunConfig来配置环境变量,而是直接在步骤级别、管道全局级别或组件定义文件中设置,以下是具体实现方式:
1. 给单个管道步骤设置环境变量
在定义管道步骤后,直接为步骤对象添加environment_variables属性:
preprocessing_component = load_component( source=Path(__file__).parent / "preprocessing_component.yaml" ) @pipeline() def example_train_pipeline(input_data_path): preprocess_step = preprocessing_component( input_data_path=input_data_path ) # 为当前步骤设置专属环境变量 preprocess_step.environment_variables = {"API_KEY": "your_secret_key", "DEBUG": "True"} return preprocess_step.outputs.processed_data # 根据组件实际输出调整 pipeline_job = example_train_pipeline( input_data_path=Input( type=AssetTypes.URI_FILE, path="xxx", ) ) pipeline_job.settings.default_compute = e.cluster_name pipeline_job = ml_client.jobs.create_or_update( pipeline_job, experiment_name=experiment_name )
2. 给整个管道设置全局环境变量
如果需要所有步骤共享相同的环境变量,可在管道作业对象的settings中配置:
pipeline_job = example_train_pipeline( input_data_path=Input( type=AssetTypes.URI_FILE, path="xxx", ) ) pipeline_job.settings.default_compute = e.cluster_name # 全局环境变量,所有步骤都会继承 pipeline_job.settings.environment_variables = {"LOG_LEVEL": "INFO", "REGION": "eastus"} pipeline_job = ml_client.jobs.create_or_update( pipeline_job, experiment_name=experiment_name )
3. 在组件YAML文件中定义固定环境变量
若组件本身需要固定的环境变量,可直接在组件定义的YAML中添加environment_variables字段:
name: preprocessing_component display_name: Data Preprocessing version: 1 type: command environment: azureml:your-environment-name:1 # 组件固定环境变量 environment_variables: DEFAULT_THRESHOLD: "0.8" DATA_FORMAT: "csv" command: >- python preprocess.py --input ${{inputs.input_data_path}} --output ${{outputs.processed_data}} inputs: input_data_path: type: uri_file outputs: processed_data: type: uri_folder
注意事项
- SDK v2中,环境对象的
.env_variables参数已弃用,环境变量不再绑定到环境资源,而是绑定到作业/步骤/组件的运行上下文。 - 组件代码中可通过
os.environ.get("ENV_VAR_NAME")读取设置的环境变量。
内容的提问来源于stack exchange,提问作者DoubleSteakHouse
相关产品推荐
相关产品推荐

