如何正确写入Azure PipelineData?

2024-05-09 03:06:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图学习Azure,但运气不好。在“上载”模式下配置时,所有教程都将使用PipelineData作为文件显示。但是,我收到“FileNotFoundError:[Errno 2]没有这样的文件或目录:“”错误。我很想问一个更具体的问题,但我看不出我做错了什么

from azureml.core import Workspace, Datastore,Dataset,Environment
from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException
from azureml.core.runconfig import RunConfiguration
from azureml.core.conda_dependencies import CondaDependencies
from azureml.pipeline.steps import PythonScriptStep
from azureml.pipeline.core import Pipeline, PipelineData
import os

ws = Workspace.from_config()
datastore = ws.get_default_datastore()

compute_name = "cpucluster"
compute_target = ComputeTarget(workspace=ws, name=compute_name)
aml_run_config = RunConfiguration()
aml_run_config.target = compute_target
aml_run_config.environment.python.user_managed_dependencies = False
aml_run_config.environment.python.conda_dependencies = CondaDependencies.create(
    conda_packages=['pandas','scikit-learn'], 
    pip_packages=['azureml-sdk', 'azureml-dataprep[fuse,pandas]'], 
    pin_sdk_version=False)

output1 = PipelineData("processed_data1",datastore=datastore, output_mode="upload")
prep_step = PythonScriptStep(
    name="dataprep",
    script_name="dataprep.py",
    source_directory=os.path.join(os.getcwd(),'dataprep'),
    arguments=["--output", output1],
    outputs = [output1],
    compute_target=compute_target,
    runconfig=aml_run_config,
    allow_reuse=True
)

在dataprep.py中,我有以下内容:

import numpy, argparse, pandas
from azureml.core import Run
run = Run.get_context()
parser = argparse.ArgumentParser()
parser.add_argument('--output', dest='output', required=True)
args = parser.parse_args()
df = pandas.DataFrame(numpy.random.rand(100,3))
df.iloc[:, 2] = df.iloc[:,0] + df.iloc[:,1]
print(df.iloc[:5,:])
df.to_csv(args.output)

所以,是的。pd应该写入输出,但我的计算集群说:

"User program failed with FileNotFoundError: [Errno 2] No such file or directory: ''\".

当我没有包含to_csv()函数时,集群不会抱怨


Tags: runnamefromcoreimportconfigtargetpandas
1条回答
网友
1楼 · 发布于 2024-05-09 03:06:34

这是PRS的examplePipelineData用于表示从一个步骤到下一个步骤的“瞬态”数据,而OutputDatasetConfig用于捕获数据集的最终状态(因此您可以看到沿袭、ADL支持等特性)。PipelineData总是以类似{run_id}{output_name}的文件夹结构输出数据。OutputDatasetConfig允许将数据与运行分离,因此它允许您控制将数据放在何处(尽管默认情况下它将生成类似的文件夹结构)。OutputDatasetConfig甚至允许将输出注册为数据集,这样就可以摆脱这种文件夹结构。来自文档本身:“表示如何复制运行的输出并将其升级为FileDataset。OutputFileDatasetConfig允许您指定如何将计算目标上的特定本地路径上载到指定目标”

OutFileDatasetConfig是一个控制平面概念,用于在管道步骤之间传递数据

相关问题 更多 >