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

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

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

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

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

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 新建菜单的下拉列表中。

软件包安装工具

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

  • conda 安装

  • pip 安装

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

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

Conda

Conda 是一个开源软件包管理系统和环境管理系统,可以安装软件包及其依赖项。SageMaker 支持通过两个主要通道(默认通道和 conda-forge 通道)中的任何一个使用 Conda。有关更多信息,请参阅 Conda 通道。conda-forge 通道是一个社区通道,贡献者可以在这里上传软件包。

注意

由于 Conda 解决依赖关系图的方式,从 conda-forge 安装软件包可能需要更长的时间(在最坏的情况下,可能需要 10 分钟以上)。

深度学习 AMI 预装了许多 conda 环境和软件包。由于预装软件包数量众多,要找到一组保证兼容的软件包非常困难。您可能会看到“环境不一致,请仔细检查软件包计划”的警告。尽管有这样的警告,SageMaker 还是确保 SageMaker 提供的所有环境都是正确的。SageMaker 不能保证任何用户安装的软件包都能正常运行。

注意

SageMaker、Amazon Deep Learning AMI 和 Amazon EMR 的用户在这些服务中使用 Anaconda 时,可在 2024 年 2 月 1 日前访问 Anaconda 商业存储库,而无需获得商业许可证。对于这三项服务之外的任何使用,客户应自行确定其 Anaconda 许可证要求。

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

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

支持的 conda 操作(请参阅本主题底部的注释)
  • 在单个环境中 conda install 软件包

  • 在所有环境中 conda install 软件包

  • conda 在 R 环境中安装 R 软件包

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

  • 从 conda-forge 安装软件包

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

  • 同时支持 conda 激活和源代码激活

Pip

Pip 实际上是安装和管理 Python 软件包的工具。默认情况下,Pip 在 Python 软件包索引 (PyPI) 上搜索软件包。与 Conda 不同,pip 没有内置的环境支持,在涉及具有本机/系统库依赖关系的软件包方面也不像 Conda 那么彻底。Pip 可以用来在 Conda 环境中安装软件包。

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

支持的 Pip 操作(请参阅本主题底部的注释)
  • 使用 Pip 在没有活动 conda 环境的情况下安装软件包(在系统范围内安装软件包)

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

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

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

  • 使用 Pip 安装软件包时使用替代存储库

不支持

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

  • 卸载

  • 降级

  • 升级

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

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

注意

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