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

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

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

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 笔记本实例生命周期配置示例中的示例生命周期配置脚本。

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

软件包安装工具

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

  • conda 安装

  • pip 安装

您可以使用以下方法安装程序包:

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

Conda

Conda 是一个开源程序包管理系统和环境管理系统,可以安装程序包及其依赖项。SageMaker 支持将 Conda 与两个主通道、默认通道和 conda-forge 通道之一结合使用。有关更多信息,请参阅 Conda 通道。conda-forge 通道是一个社区通道,参与者可以在其中上传程序包。

注意

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

深度学习 AMI 附带许多 Conda 环境和许多预装的程序包。由于预安装的程序包数,很难找到保证兼容的软件包集。您可能会看到一条警告“The environment is consistent, please check the package plan pathing (环境不一致,请仔细检查软件包计划)”。尽管出现此警告,SageMaker 可确保提供的所有 SageMaker 环境都正确无误。SageMaker 无法保证任何用户已安装软件包将正常工作。

Conda 有两种激活环境的方法:Conda 激活/停用,以及源激活/停用。有关更多信息,请参阅我应该在 Linux 中使用“conda activate”或“source activate”

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

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

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

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

  • 在 R 环境中安装 R 程序包的 conda

  • 从主 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 安装程序包

Unsupported

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

  • 卸载

  • 降级

  • 升级

我们不支持通过 yum 安装或安装来自 CRAN 的 R 程序包来安装程序包。

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

注意

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