upload 혹은 upload_files를 사용하여 local에 있는 data를 blob storage에 업로드한다.
from azureml.core import Workspace
ws = Workspace.from_config()
datastore = ws.get_default_datastore()
datastore.upload(src_dir="../../transferred_data", target_path="transferred_data/", overwrite=True, show_progress=True)
default dataset에 업로드된 모습

path_on_datastore는 위에서 업로드한 target_path를 써주면 된다.
data_path = DataPath(datastore=datastore, path_on_datastore="transferred_data")
data_path_pipeline_param = PipelineParameter(name="input_datapath", default_value=data_path)
inputs = (data_path_pipeline_param, DataPathComputeBinding(mode="mount"))
import os
from azureml.core import Workspace, Experiment, Environment
from azureml.core.runconfig import RunConfiguration
from azureml.data.datapath import DataPath, DataPathComputeBinding
from azureml.pipeline.core import Pipeline, PipelineData, PipelineParameter
from azureml.pipeline.steps import PythonScriptStep
dirname = os.getcwd().split("/")[-1]
ws = Workspace.from_config()
target = ws.compute_targets["gpu-cluster-high"]
exp = Experiment(ws, f"test-{dirname}")
env = Environment.get(ws, "mmd-inst-segm")
datastore = ws.get_default_datastore()
# datastore.upload(src_dir="../../transferred_data", target_path="transferred_data/", overwrite=True, show_progress=True)
data_path = DataPath(datastore=datastore, path_on_datastore="transferred_data")
data_path_pipeline_param = PipelineParameter(name="input_datapath", default_value=data_path)
inputs = (data_path_pipeline_param, DataPathComputeBinding(mode="mount"))
# set up resource config
runconfig = RunConfiguration()
runconfig.target = target
runconfig.environment = Environment.get(ws, "mmd-inst-segm")
runconfig.docker.use_docker = True
# set up script run configuration
outputs = PipelineData(dirname, datastore=datastore, is_directory=True)
config = PythonScriptStep(
name=dirname,
script_name="run_step.py",
source_directory="../../steps/train_model",
compute_target=target,
runconfig=runconfig,
inputs=[inputs],
outputs=[outputs],
arguments=[
"--root_path",
"train",
"--gpu_count",
1,
"--transferred_data",
inputs,
"--trained_model",
outputs,
"--model_name",
"mmd-inst-segm",
],
)
# submit script to AML
pipeline = Pipeline(workspace=ws, steps=[config])
pipeline_run = exp.submit(pipeline)
print(pipeline_run.get_portal_url())
pipeline_run.wait_for_completion()