我在Amazon-Sage-Maker中有一个项目。为此,我必须卸载特定的软件包并在终端中安装其他软件包。但是每次我关闭或停止实例时,都必须去终端并重新进行所有安装。为什么会这样?
我正在尝试解决此问题的软件包是psycopg2:
import psycopg2
给我一个警告,建议我卸载它并安装psycopg2-binary。 所以我打开终端并输入代码:
pip uninstall psycopg2
然后在笔记本中输入代码:
import psycopg2
没有问题,但是如果我关闭并重新打开实例,则会遇到相同的错误,并且必须再次执行所有过程。
答案 0 :(得分:1)
感谢您使用SageMaker。重新启动笔记本计算机实例时,安装的软件包不是永久性的。为避免每次都手动安装它,您可以创建一个Lifecycle Config来安装软件包并将其附加到Notebook Instance。每当您重新启动笔记本计算机实例时,都会运行Lifecycle Config中的脚本。
有关如何使用Lifecycle Config的更多信息,您可以签出: https://aws.amazon.com/blogs/machine-learning/customize-your-amazon-sagemaker-notebook-instances-with-lifecycle-configurations-and-the-option-to-disable-internet-access/
答案 1 :(得分:0)
@anitasp,您必须通过执行以下操作来创建Docker映像:
确保在AWS IAM(除S3之外)以及AmazonEC2ContainerServiceFullAccess,AmazonEC2ContainerRegistryFullAccess和AmazonSageMakerFullAccess上设置SageMaker执行角色策略权限。
在SageMaker和Open Notebook中创建并启动实例。在您的实例处克隆此处显示的目录结构:https://github.com/RubensZimbres/Repo-2018/tree/master/AWS%20SageMaker/Jupyter-Folder
在Jupyter内部,运行:
! sudo service docker start
! sudo usermod -a -G docker ec2-user
! docker info
! chmod +x decision_trees/train
! chmod +x decision_trees/serve
! aws ecr create-repository --repository-name decision-trees
! aws ecr get-login --no-include-email
将登录名复制并粘贴到下面的命令行中
! docker login -u abc -p abc12345 http://abc123
运行
! docker build -t decision-trees .
! docker tag decision-trees your_aws_account_id.dkr.ecr.us-east-1.amazonaws.com/decision-trees:latest
! docker push your_aws_account_id.dkr.ecr.us-east-1.amazonaws.com/decision-trees:latest
! aws ecs register-task-definition --cli-input-json file://decision-trees-task-def.json
并根据您选择的算法适应您的需求。您将需要Dockerfile,hyperparameters.json等。
记录的项目在这里:https://github.com/RubensZimbres/Repo-2018/tree/master/AWS%20SageMaker
答案 2 :(得分:0)
默认情况下,从笔记本实例安装的python软件包将不会保留到下一个笔记本实例会话。解决此问题的一种方法是:
1)在/home/ec2-user/SageMaker
中创建(或从当前conda env克隆)新的conda环境,该环境在会话之间保持不变。例如:
conda create --prefix /home/ec2-user/SageMaker/envs/custom-environment --clone tensorflow_p36
2)接下来,使用以下内容为“启动笔记本”创建新的生命周期配置:
#!/bin/bash
sudo -u ec2-user -i <<'EOF'
ln -s /home/ec2-user/SageMaker/envs/custom-environment /home/ec2-user/anaconda3/envs/custom-environment
EOF
3)最后,将生命周期配置附加到笔记本实例
现在,当您重新启动Notebook实例时,conda和Jupyter将检测到您的自定义环境。您安装到此环境的任何新软件包都将在会话之间保留,然后在启动时软链接回conda。