我正试图在终端会话中在Sagemaker ec2环境中构建一个新的conda环境。环境的原始副本中的程序包已损坏,环境变得不可用。无法通过删除程序包并重新安装或使用conda update
来解决此问题。
我用conda env remove -n python3-cn
破坏了环境,然后试图用重建环境
conda env create -p /home/ec2-user/SageMaker/anaconda3/envs/python3-cn --file=${HOME}/SageMaker/efs/.sagemaker/python3-cn_environment.yml --force
该环境已在几个ec2实例中为单个Sagemaker用户创建了多次。
Conda记录以下内容:
Collecting package metadata (repodata.json): done
Solving environment: done
Downloading and Extracting Packages
pytest-arraydiff-0.2 | 14 KB | ##################################################################################################### | 100%
partd-0.3.8 | 32 KB | ##################################################################################################### | 100%
... several progress bar lines later...
psycopg2-2.7.5 | 507 KB | ##################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
ERROR conda.core.link:_execute(700): An error occurred while installing package 'defaults::mkl-2018.0.3-1'.
Rolling back transaction: done
[Errno 28] No space left on device
()
No space left on device
错误是一致的。我试过
conda clean --all
,移除环境,重建环境- 删除缓存、删除环境、重新构建环境
- 删除环境,关闭并重新启动JuypiterLab(如果JupyterLab启动时环境不存在,我们的Sagemaker配置为创建
python3-cn
(
在前两个中,我得到了Errno 28
。
在最后一个实例中,实例没有创建,conda env list
没有显示python3-cn
,但我看到anaconda/envs/
目录中有一个python3-cn
目录。如果我执行conda activate python3-cn
,我会看到提示更改,但环境不可用。如果我尝试conda update --all
,我会收到一个通知,其中一个包文件已损坏。
不知道在这里该做什么。我在找太空猪,但并没有真正找到任何重要的东西。
尝试增加笔记本的ebs音量。。。这个博客很好地解释了这一点:https://aws.amazon.com/blogs/machine-learning/customize-your-notebook-volume-size-up-to-16-tb-with-amazon-sagemaker/
此外,最佳实践是使用生命周期配置脚本来构建/添加新的依赖项。。。官方文件:https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html
这个github页面有一些很棒的模板示例。。。例如设置特定的配置,如conda等:https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/tree/master/scripts
@purplePython感谢您提供的这些信息——它非常有用。我发现笔记本中有一些隐藏的目录占用了足够的空间来启动构建,但无法完成。然而,我真的很喜欢生命周期配置,并将随着依赖关系的增长而关注它,这是必然发生的。