gpt4 book ai didi

python - azureml 可以将变量从一个步骤传递到另一步骤吗?

转载 作者:行者123 更新时间:2023-12-03 07:04:23 24 4
gpt4 key购买 nike

我需要使用 Azure 机器学习来开发管道。在此管道中,我们不将数据作为输入/输出传递,而是传递变量(例如列表或整数)。我查看了 Microsoft 文档,但似乎找不到适合我的情况的内容。还尝试使用 PipelineData 类,但无法检索我的变量。

  1. 这可能吗?
  2. 这是一个好方法吗?

感谢您的帮助。

最佳答案

我知道我参加聚会有点晚了,但我们开始吧:

在 AzureML 管道步骤之间传递变量

为了直接回答您的问题,据我所知,不可能在 AzureML Pipeline 中的 PythonScriptSteps 之间直接传递变量。

原因是这些步骤是独立执行的,即代码在不同的进程中运行甚至计算。 PythonScriptStep 具有的唯一接口(interface)是 (a) 需要在提交管道之前设置的命令行参数和 (b) 数据。

使用数据集在 PythonScriptStep 之间传递信息

作为解决方法,您可以使用 PipelineData 在步骤之间传递数据。之前发布的博客文章可能会有所帮助:https://vladiliescu.net/3-ways-to-pass-data-between-azure-ml-pipeline-steps/

至于您的具体问题:

# pipeline.py

# This will make Azure create a unique directory on the datastore everytime the pipeline is run.
variables_data = PipelineData("variables_data", datastore=datastore)

# `variables_data` will be mounted on the target compute and a path is given as a command line argument
write_variable = PythonScriptStep(
script_name="write_variable.py",
arguments=[
"--data_path",
variables_data
],
outputs=[variables_data],
)

read_variable = PythonScriptStep(
script_name="read_variable.py",
arguments=[
"--data_path",
variables_data
],
inputs=[variables_data],
)

在您的脚本中,您需要序列化您尝试在步骤之间传递的变量/对象:

(您当然可以使用 JSON 或任何其他序列化方法)

# write_variable.py

import argparse
import pickle
from pathlib import Path

parser = argparse.ArgumentParser()
parser.add_argument("--data_path")
args = parser.parse_args()

obj = [1, 2, 3, 4]

Path(args.data_path).mkdir(parents=True, exist_ok=True)
with open(args.data_path + "/obj.pkl", "wb") as f:
pickle.dump(obj, f)

最后,您可以在下一步中读取变量:

# read_variable.py

import argparse
import pickle

parser = argparse.ArgumentParser()
parser.add_argument("--data_path")
args = parser.parse_args()


with open(args.data_path + "/obj.pkl", "rb") as f:
obj = pickle.load(f)

print(obj)

关于python - azureml 可以将变量从一个步骤传递到另一步骤吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71649163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com