如何使用AzureML Python SDK获取作业Code标签下的文件
解决AzureML作业中访问Code标签文件的问题
你遇到的问题是因为get_file_names()和download_files()方法仅针对作业的Outputs和logs目录,而Code标签里的内容是作业提交时的代码快照,不属于这两个范畴。以下是几个可行的解决办法:
方法1:通过Run类下载代码快照
使用download_snapshot()方法可以直接下载作业提交时的完整代码快照到本地,示例代码:
from azureml.core import Run # 获取当前运行的作业实例(作业内运行时),或通过实验+作业ID获取已完成作业 run = Run.get_context() # 本地访问已完成作业的写法: # from azureml.core import Workspace, Experiment # ws = Workspace.from_config() # exp = Experiment(ws, "你的实验名称") # run = exp.get_run("你的作业ID") # 下载快照到指定本地路径 run.download_snapshot(target_path="./downloaded_code")
执行后,指定路径下会生成完整的提交代码文件。
方法2:作业运行时直接读取本地代码路径
如果是在作业运行过程中需要访问代码文件,提交的代码已经挂载在运行环境的特定目录下,直接读取即可:
import os # 普通作业的代码目录 code_dir = "./azureml-app/code" # 模块化作业的代码目录(替换为你的模块名称) # code_dir = "./azureml-app/azureml-modules/你的模块名称/code" # 列出目录文件并读取内容 for filename in os.listdir(code_dir): print(filename) with open(os.path.join(code_dir, filename), "r") as f: content = f.read()
方法3:通过AzureML工作室界面直接下载
如果不需要代码实现,可直接在AzureML工作室的作业详情页,打开Code标签,点击右上角的「下载」按钮,将代码快照以压缩包形式下载到本地,解压后即可使用。
内容的提问来源于stack exchange,提问作者ABaron
相关产品推荐
相关产品推荐

