Sagemaker Jupyter Notebook 无法访问本地文件

问题描述 投票:0回答:2

我在 Sagemaker Studio 中运行笔记本

当我创建笔记本并从 stage studio 运行它时,我从与我在左侧栏上看到的内容相对应的目录执行

    import os
    print("getcwd", os.getcwd())

getcwd /根/测试

但是,当我使用 UI 安排同一笔记本时

作业从 /opt/ml/input/data/sagemaker_headless_execution 执行

该目录包含我正在运行的笔记本,但没有其他内容

在我的终端上,我可以导航到 /home/sagemaker-user/mydirectory 但当我在笔记本中执行此操作时 /home 是空的

我的笔记本需要访问本地目录中存储的某些文件。如何安装或连接它们?

我可以通过 boto 或 sqlalchemy 输入和输出所有内容,但如果是这样,Sagemaker 拥有文件系统的意义何在。这也意味着当笔记本从 UI 内运行时工作流程或在按计划运行时本地崩溃,这似乎是错误的。

jupyter-notebook amazon-sagemaker amazon-sagemaker-studio
2个回答
0
投票

笔记本作业在后端使用训练作业 - 因此您必须在 S3(或其他可访问位置)中拥有任何其他文件(笔记本除外)才能在无头训练作业中访问它们。 Studio 文件系统未安装到训练作业中。


0
投票

使用估算器启动 Sagemaker 训练作业时,通常建议将数据放在 S3 上。随后,训练作业配置将继续根据请求部署实例。与文件模式(数据从 s3 下载到训练实例)相比,快速文件模式的引入可以更快地启动训练作业。根据您的陈述,可以推断模型训练使用了 SageMaker 笔记本实例,而不是使用 SageMaker 训练任务。重要的是要承认 SageMaker 作为完全托管服务运行。因此,笔记本实例以及训练和托管实例都是在服务帐户内启动的。因此,用户无法直接访问这些实例。SageMaker 笔记本实例利用弹性块存储 (EBS) 作为存储解决方案,EBS 卷安装到目录路径 /home/ec2-user/SageMaker。需要注意的是,SageMaker 笔记本实例使用的弹性块存储 (EBS) 卷具有扩展能力,但不提供减小其大小的能力。要减少弹性块存储 (EBS) 卷的大小,需要建立一个卷容量减少的新笔记本实例。随后,必须使用 Amazon Simple Storage Service (S3) 将前一个实例的数据传输到新实例。从 SageMaker 笔记本实例范围之外的外部源访问 EBS 磁盘是不可行的。通常建议在 Amazon S3 上存储大量数据集,并仅使用 SageMaker 笔记本实例上的数据子集,从而降低存储要求。随后,使用有限数量的示例数据来评估和构建您的代码。随后,一旦您准备好开始对整个数据集进行训练,您就可以启动 SageMaker 训练作业并使用 Amazon S3 存储服务上托管的整个数据集。应该注意的是,在 SageMaker 笔记本实例内对整个数据集进行训练需要使用具有足够计算能力的高容量实例。此外,重要的是要承认使用多个实例的分布式训练在这种情况下是不可行的。相比之下,使用 SageMaker 训练实例可以更自由地选择实例类型,并可以在多个实例上执行分布式训练。最后,完成 SageMaker 训练任务后,所有资源都将终止,与持续使用大型实例和 SageMaker 笔记本实例相比,可以节省成本。我相信所提供的信息已充分解决您的疑问。

© www.soinside.com 2019 - 2024. All rights reserved.