在笔记本实例中安装外部库和内核 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在笔记本实例中安装外部库和内核

Amazon SageMaker 笔记本实例附带多个已安装的环境。这些环境包含 Jupyter 内核和 Python 程序包,包括:scikit、Pandas、NumPy、TensorFlow 和 MXNet。当您停止和启动笔记本实例时,这些环境以及 sample-notebooks 文件夹中的所有文件均会刷新。您也可以安装自己的包含所选程序包和内核的环境。

Amazon SageMaker 笔记本实例中的不同 Jupyter 内核是独立的 conda 环境。有关 conda 环境的信息,请参阅管理环境中的Conda文档中)。

在笔记本实例的 Amazon EBS 卷上安装自定义环境和内核。这可确保它们在您停止并重新启动笔记本实例时保持不变,并且 SageMaker 不会更新您安装的任何外部库。为此,请使用生命周期配置,其中包含在您创建笔记本实例 (on-create)和每次重新启动笔记本实例时运行的脚本(on-start)。有关使用笔记本实例生命周期配置的更多信息,请参阅使用生命周期配置脚本自定义笔记本实例. 有一个 GitHub 存储库,其中包含示例生命周期配置脚本SageMaker 笔记本实例生命周期 Config 示例.

例如:https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/blob/master/scripts/persistent-conda-ebs/on-create.shhttps://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/blob/master/scripts/persistent-conda-ebs/on-start.sh展示了在笔记本实例上安装环境和内核的最佳实践。这些区域有:on-create脚本将安装ipykernel库,以便您可以使用创建自定义环境作为 Jupyter 内核,然后使用pip installconda install安装库。您可以调整脚本以创建自定义环境并安装所需的库。SageMaker 不会在停止并重新启动笔记本实例时更新这些库,因此您可以确保自定义环境具有所需的特定版本的库。这些区域有:on-start脚本会安装您创建为 Jupyter 内核的任何自定义环境,以便它们出现在 Jupyter 的下拉列表中New菜单。

程序包安装工具

SageMaker 笔记本电脑支持以下软件包安装工具:

  • Conda 安装

  • pip 安装

您可以使用以下方法安装软件包:

在笔记本中,您可以使用系统命令语法(以! 开头的行) 来安装软件包,例如!pip install!conda install. 最近,IPython 中添加了新的命令:%pip%conda. 这些命令是从笔记本安装软件包的推荐方法,因为它们正确考虑了正在使用的激活环境或解释器。有关更多信息,请参阅 。添加 %PIP 和 %conda 魔术功能.

Conda

Conda 是一个开源程序包管理系统和环境管理系统,可安装软件包及其依赖项。SageMaker 支持将 Conda 与两个主通道之一(默认通道)和伪造通道一起使用。有关更多信息,请参阅 。Conda 频道. conda-Forge 渠道是一个社区渠道,贡献者可以在其中上传软件包。

注意

由于 Conda 如何解析依赖关系图,从 conda-forge 安装软件包可能需要更长的时间(在最糟糕的情况下,超过 10 分钟)。

深度学习 AMI 带有许多 conda 环境和许多预安装的软件包。由于预装的软件包数量很多,因此很难找到一组保证兼容的软件包。您可能会看到警告 “环境不一致,请仔细检查套餐计划”。尽管有此警告,SageMaker 仍然会确保 SageMaker 提供的所有环境都正确无误。SageMaker 无法保证任何用户安装的软件包都能正常工作。

Conda 有两种激活环境的方法:conda 激活/停用和源激活/停用。有关更多信息,请参阅 。我应该在 Linux 中使用 “康达激活” 还是 “源代码激活”.

SageMaker 支持将 Conda 环境移动到 Amazon EBS 卷上,该卷将在实例停止时保留。当环境安装到根卷时,环境不会保留,这是默认行为。有关示例生命周期脚本,请参阅。持久性-康达-ebs.

支持的 conda 操作(请参阅本主题底部的注释)

  • conda 在单个环境中安装软件包

  • conda 在所有环境中安装软件包

  • 康达在 R 环境中安装 R 软件包

  • 从主 Conda 存储库安装软件包

  • 从康达伪造安装软件包

  • 将 Conda 安装位置更改为使用 EBS

  • 同时支持 Conda 激活和源激活

Pip

Pip 是安装和管理 Python 软件包的事实上的工具。Pip 默认情况下,PyPi 在 Python Package Index (PyPi) 上搜索程序包。与 Conda 不同,pip 没有内置环境支持,并且在涉及具有本机/系统库依赖性的软件包时并不像 Conda 那么彻底。Pip 可用于在 Conda 环境中安装软件包。

您可以使用 pip 而不是 PyPI 使用替代软件包存储库。有关示例生命周期脚本,请参阅。on-start.sh.

支持的 pip 操作(请参阅本主题底部的注释)

  • 使用 pip 在没有活动 conda 环境的情况下安装软件包(在系统范围内安装软件包)

  • 使用 pip 在 conda 环境中安装软件包

  • 使用 pip 在所有 conda 环境中安装软件包

  • 更改 pip 安装位置以使用 EBS

  • 使用替代存储库安装带有 pip 的软件包

Unsupported

SageMaker 旨在支持尽可能多的软件包安装操作。但是,如果软件包由 SageMaker 或 DLAMI 安装,并且您对这些软件包使用以下操作,则可能会使您的笔记本实例不稳定:

  • 卸载

  • 降级

  • 升级

我们不支持通过 yum 安装或从 CRAN 安装 R 软件包。

由于网络条件或配置的潜在问题,或 Conda 或 PyPI 的可用性,我们无法保证软件包将在固定或确定的时间内安装。

注意

我们不能保证软件包安装会成功。尝试在具有不兼容依赖关系的环境中安装软件包可能会导致失败。在这种情况下,您应该联系库维护者,看看是否可以更新软件包依赖关系。或者,您可以尝试以允许安装的方式修改环境。然而,这种修改可能意味着删除或更新现有软件包,这意味着我们不能再保证此环境的稳定性。