我在尝试从成功的 Azure ML 管道作业下载 JSON 文件时遇到了非常困难的情况。在下图中,您可以看到保存的文件的内容。然而,使用 Python SDK,无论是在工作中还是在运行中 - 它向我显示的唯一文件是日志。
一些尝试看起来像:
run = Run.get(ws, job_name)
run.download_file(name=f"{output_file_name}", output_file_path=os.path.join(output_dir, output_file_name))
和
ml_client.jobs.download(
name=job.name,
download_path='./',
output_name="portfolio_weights.json"
)
这些不会返回任何内容或出错。 我会注意到,数据输出中有该文件,但如果我在 blobstore 中打开它,它不会显示任何结果。
保存文件的管道作业代码如下所示:
output_dir = os.environ.get("AZUREML_OUTPUT_DIRECTORY",'outputs')
output_file_path = os.path.join(output_dir,'portfolio_weights.json')
# Convert portfolio weights to a list and save as JSON
portfolio_weights_list = portfolio_weights.tolist()
with open(output_file_path, 'w') as f:
json.dump(portfolio_weights_list, f)
run.log("portfolio_weights_path", output_file_path)
run.upload_file(name="portfolio_weights.json", path_or_stream=output_file_path)
关于我在这里可能做错了什么有什么想法吗?
下载工件的方法有很多,但最重要的是您需要正确给出作业名称。
由于单个作业由许多子作业组成,因此您正在查找的输出将来自该子作业。
这是我正在做的示例工作。
子作业
train_pytorch_model
有输出,因此获取该作业名称或运行 ID。
和输出
要下载完整的输出文件夹,请使用以下代码。
ml_client.jobs.download(name="ce359cbb-1d68-4fc6-bde5-43ff35620897",download_path="./")
输出和日志将下载到
artifacts
文件夹。
或者使用您下载的
mlflow
。
import mlflow
mlflow.artifacts.download_artifacts(run_id="ce359cbb-1d68-4fc6-bde5-43ff35620897", artifact_path="trained_model_outputs/_samples.json",dst_path="./outputs")