

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 外部程式庫和核心安裝
<a name="nbi-add-external"></a>

**重要**  
目前，筆記本執行個體環境中的所有套件都獲授權可與 Amazon SageMaker AI 搭配使用，不需要額外的商業授權。不過，這在未來可能會有所變更，我們建議您定期檢閱授權條款是否有任何更新。

Amazon SageMaker 筆記本執行個體附有多種已安裝好的環境。這些環境含有 Jupyter 核心和 Python 套件，包含：scikit、Pandas、NumPy、TensorFlow、MXNet。當您停止和啟動筆記本執行個體時，上述環境和 `sample-notebooks` 資料夾內的所有檔案都會重新更新。您也可以安裝含有自己挑選的套件和核心的自有環境。

Amazon SageMaker 筆記本執行個體內的不同 Jupyter 核心為各自獨立的 conda 環境。如需 conda 環境的相關資訊，請參閱 [Conda](https://conda.io/docs/user-guide/tasks/manage-environments.html) 文件對於*管理環境*的相關文章。

在筆記本執行個體的 Amazon EBS 磁碟區上安裝自訂環境和核心。這樣可確保當您停止並重新啟動筆記本執行個體時，它們會持續存在，且 SageMaker AI 不會更新您安裝的任何外部程式庫。若要這麼做，請使用生命週期組態，其中包含建立筆記本執行個體時所執行的指令碼 (`on-create)` 以及每次重新啟動筆記本執行個體時執行的指令碼 (`on-start`)。如需筆記本執行個體生命週期組態的更多相關資訊，請參閱[使用 LCC 指令碼自訂 SageMaker 筆記本執行個體](notebook-lifecycle-config.md)。在 [SageMaker AI 筆記本執行個體生命週期組態範例](https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples)中有一個 GitHub 儲存庫，其中包含範例生命週期組態指令碼。

[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-create.sh) 和 [https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/blob/master/scripts/persistent-conda-ebs/on-start.sh](https://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 install` 和 `conda install` 安裝程式庫。您可以調整指令碼以建立自訂環境並安裝所需的程式庫。當您停止並重新啟動筆記本執行個體時，SageMaker AI 不會更新這些程式庫，因此您可以確保自訂環境具有您想要的特定程式庫版本。此 `on-start` 指令碼會安裝您建立為 Jupyter 核心的任何自訂環境，讓它們出現在 Jupyter **新增**功能表的下拉式清單中。

## 套件安裝工具
<a name="nbi-add-external-tools"></a>

SageMaker 筆記本支援下列套件安裝工具：
+ Conda 安裝
+ pip 安裝

您可以使用以下方法安裝套件：
+ 生命週期組態指令碼。

  如需範例指令碼，請參閱 [SageMaker AI 筆記本執行個體生命週期組態範例](https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples)。有關生命週期組態的更多資訊，請參閱[使用生命週期組態指令碼自訂筆記本執行個體](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html)。
+ 筆記本 — 支援下列命令。
  + `%conda install`
  + `%pip install`
+ Jupyter 終端 - 您可以使用 pip 和 conda 直接安裝套件。

您可以在筆記本中使用系統命令語法 (以 \$1 開頭的行) 來安裝套件，例如 `!pip install` 和 `!conda install`。最近新的命令已新增至 IPython：`%pip` 和 `%conda`。這些命令是從筆記本安裝套件的建議方法，因為它們能正確地考慮使用中的環境或解譯器。有關更多資訊，請參閱[添加 %PIP 和 %Conda 魔法函數](https://github.com/ipython/ipython/pull/11524)。

### Conda
<a name="nbi-add-external-tools-conda"></a>

Conda 是一套開放原始碼套件管理系統以及環境管理系統，可以安裝套件與其相依項。SageMaker AI 支援將 Conda 與兩個主要通道中的任何一個搭配使用，即預設通道以及 conda-forge 通道。有關更多資訊，請參閱 [Conda 通道](https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/channels.html)。conda-forge 通道是一個社群通道，貢獻者可以在其中上傳套件。

**注意**  
由於 Conda 解決相依性圖形的方式，從 conda-forge 安裝套件可能需要更長的時間 (最長超過 10 分鐘)。

Deep Learning AMI 隨附許多 conda 環境，並預先安裝了許多套件。由於預先安裝的套件數量龐大，因此很難找到一組保證相容的套件。您可能會看到警告 “環境不一致，請仔細確認套件方案”。儘管出現此警告，SageMaker AI 仍可確保所有 SageMaker AI 提供的環境都是正確的。SageMaker AI 無法保證任何使用者安裝的套件都能正常運作。

**注意**  
SageMaker AI AWS 深度學習 AMIs 和 Amazon EMR 的使用者可以在這些服務中使用 Anaconda 時，存取商業 Anaconda 儲存庫，而無需取得商業授權，直到 2024 年 2 月 1 日為止。若要在 2024 年 2 月 1 日之後使用商業 Anaconda 儲存庫，客戶必須負責判斷自己的 Anaconda 授權要求。

Conda 有兩種啟動環境的方法：conda 啟動/停用以及來源啟動/停用。有關更多資訊，請參閱[我應該在 Linux 中使用 'conda 啟動' 或 '來源啟動'](https://stackoverflow.com/questions/49600611/python-anaconda-should-i-use-conda-activate-or-source-activate-in-linux)。

SageMaker AI 支援將 Conda 環境移到 Amazon EBS 磁碟區，該磁碟區會在執行個體停止時持續存在。當環境安裝到根磁碟區時，環境不會持續存在，此為預設行為。有關生命週期腳本範例，請參閱 [persistent-conda-ebs](https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/tree/master/scripts/persistent-conda-ebs)。

**支援 conda 作業 (請參閱本主題底部的註釋)**
+ conda 在單一環境中安裝套件
+ conda 在所有環境中安裝套件
+ conda 在 R 環境中安裝 R 套件
+ 從主要 conda 儲存庫安裝套件
+ 從 conda-forge 安裝套件
+ 變更 Conda 安裝位置以使用 EBS
+ 支援 conda 啟動與來源啟動

### Pip
<a name="nbi-add-external-tools-pip"></a>

Pip 是實際用於安裝和管理 Python 套件的工具。Pip 預設會在 Python Package Index (PyPI) 上的搜尋套件。Pip 與 Conda 不同，沒有內建環境支援，並且在涉及具有本地/系統程式庫相依性關係的套件時不如 Conda 那麼徹底。Pip 可用於在 Conda 環境中安裝套件。

您可以使用 pip 替代套件儲存庫而不是 PyPI。有關生命週期腳本範例，請參閱 [on-start.sh](https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/blob/master/scripts/add-pypi-repository/on-start.sh)。

**支援的 pip 作業 (請參閱本主題底部的註釋)**
+ 使用 pip 在沒有使用中 conda 環境的情況下安裝套件 (在系統整體安裝套件)
+ 使用 Pip 可在 Conda 環境中安裝套件
+ 使用 Pip 可在所有 Conda 環境中安裝套件
+ 變更 pip 安裝位置以使用 EBS
+ 使用替代儲存庫使用 pip 安裝套件

### 不支援
<a name="nbi-add-external-tools-misc"></a>

SageMaker AI 旨在支援盡可能多的套件安裝作業。不過，如果套件是由 SageMaker AI 或 DLAMI 安裝，而您在這些套件上使用下列作業，可能會使您的筆記本執行個體不穩定：
+ 解除安裝
+ 降級
+ 升級

我們不支援透過 yum 安裝或從 CRAN 安裝 R 套件來安裝套件的。

由於網路狀況或組態的潛在問題，或 Conda 或 PyPi 的可用性，我們無法保證套件將在固定或確定的時間內安裝。

**注意**  
我們無法保證成功安裝套件。嘗試在具有不相容相依性的環境中安裝套件可能會失敗。在這種情況下，您應該聯繫程式庫維護者，以確認是否可以更新套件相依性。或者，您可以嘗試以允許安裝的方式修改環境。然而，該項修改可能意味著移除或更新現有套件，這表示我們無法繼續保證此環境的穩定性。