用於訓練和部署模型的 Docker 容器 - Amazon SageMaker AI

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

用於訓練和部署模型的 Docker 容器

Amazon SageMaker AI 廣泛使用 Docker 容器進行建置和執行期任務。SageMaker AI 為其內建演算法提供預先建置的 Docker 映像,以及用於訓練和推論的支援深度學習架構。您可以使用容器來訓練機器學習演算法,並快速又可靠地部署任何規模的模型。本節中的主題說明如何針對您自己的使用案例部署這些容器。如需有關如何攜帶自己的容器以搭配 Amazon SageMaker Studio Classic 使用的資訊,請參閱 攜帶您自己的 SageMaker AI 映像

使用 SageMaker AI 執行指令碼、訓練演算法或部署模型的案例

Amazon SageMaker AI 在執行指令碼、訓練演算法和部署模型時,一律使用 Docker 容器。您使用容器的參與程度取決於使用案例。

下列決策樹說明三個主要案例:使用預先建置的 Docker 容器搭配 SageMaker AI使用案例擴展預先建置的 Docker 容器使用案例來建置您自己的容器

容器使用案例的決策樹。

使用案例搭配 SageMaker AI 使用預先建置的 Docker 容器

搭配 SageMaker AI 使用容器時,請考慮下列使用案例:

  • 預先建置的 SageMaker AI 演算法 – 使用內建演算法隨附的映像。如需詳細資訊,請參閱使用 Amazon SageMaker AI 內建演算法或預先訓練的模型

  • 具有預先建置的 SageMaker AI 容器的自訂模型 – 如果您訓練或部署自訂模型,但使用具有預先建置 SageMaker AI 容器的架構,包括 TensorFlow 和 PyTorch,請選擇下列其中一個選項:

    • 如果您不需要自訂套件,並且容器已包括所有必需的套件:請使用與架構關聯的預先建置 Docker 映像。如需更多資訊,請參閱預先建置的 SageMaker AI Docker 映像

    • 如果您需要將自訂套件安裝到其中一個預先建置的容器中:請確認預先建置的 Docker 映像是否允許 requirements.txt 檔案,或根據下列使用案例延伸預先建置的容器。

延伸預先建置的 Docker 容器的使用案例

以下是延伸預先建置的 Docker 容器的使用案例:

  • 您無法匯入相依項 — 延伸與您的架構關聯的預先建置的 Docker 映像。如需詳細資訊,請參閱延伸預先建置的容器

  • 您無法在預先建置的容器中匯入相依項,而且預先建置的容器支援 requirements.txt — 在 requirements.txt 中新增所有必要的相依項。以下架構支援使用 requirements.txt。

建置您自有的容器的使用案例

如果您建置或訓練自訂模型,而且需要沒有預先建置映像的自訂架構,請建置自訂容器。

訓練和部署 TensorFlow 模型的範例使用案例,下列指南示範如何判斷使用案例前幾節中的哪個選項適合該案例。

假設您對訓練和部署 TensorFlow 模型有下列需求。

確定您需要的容器類型後,以下清單會提供先前列出的選項的詳細資訊。

  • 使用內建的 SageMaker AI 演算法或架構。對於大多數使用案例,您可以使用內建演算法和架構,而不必擔心容器問題。您可以從 SageMaker AI 主控台、 AWS Command Line Interface (AWS CLI)、Python 筆記本或 Amazon SageMaker Python SDK 訓練和部署這些演算法。您可以在建立估算器時指定演算法或架構版本以達成此目的。Amazon SageMaker 中的內建演算法和預先訓練的模型主題中列舉並描述了可用的內建演算法。有關可用架構的更多相關資訊,請參閱機器學習 (ML) 架構和語言。有關如何使用在 SageMaker 筆記本執行個體中執行的 Jupyter 筆記本來訓練和部署內建演算法的範例,請參閱主題Amazon SageMaker AI 設定指南

  • 使用預先建置的 SageMaker AI 容器映像。或者,您可以用 Docker 容器使用內建演算法和架構。SageMaker AI 為其內建演算法提供容器,並為一些最常見的機器學習架構提供預先建置的 Docker 映像,例如 Apache MXNet、TensorFlow、PyTorch 和 Chainer。如需可用 SageMaker AI 映像的完整清單,請參閱可用的深度學習容器映像。它還支援機器學習 (ML) 程式庫,例如 scikit-learn 和 SparkML。如果您使用 Amazon SageMaker Python SDK,您可以透過將完整的容器 URI 傳遞至其各自的 SageMaker AI SDK Estimator類別來部署容器。如需 SageMaker AI 目前支援的完整深度學習架構清單,請參閱 適用於深度學習的預先建置 SageMaker AI Docker 映像。如需 scikit-learn 和 SparkML 預先建置的容器映像的相關資訊,請參閱存取適用於 Scikit-learn 和 Spark ML 的 Docker 映像。如需透過 Amazon SageMaker Python SDK 使用架構的更多相關資訊,請參閱Machine Learning 架構和語言中的相關主題。

  • 延伸預先建置的 SageMaker AI 容器映像。如果您想要延伸預先建置的 SageMaker AI 演算法或模型 Docker 映像,您可以修改 SageMaker AI 映像以滿足需求。如需範例,請參閱延伸我們的 PyTorch 容器

  • 調整現有的容器映像:如果您想要調整預先存在的容器映像以使用 SageMaker AI,您必須修改 Docker 容器以啟用 SageMaker Training 或 Inference 工具組。如需示範如何建置您自己的容器以訓練和託管演算法的範例,請參閱自備 R 演算法

對Docker容器和部署進行故障診斷

以下是使用Docker容器搭配 SageMaker AI 時,您可能會遇到的常見錯誤。每個錯誤後面都附有錯誤的解決方案。

  • 錯誤:SageMaker AI Docker 已遺失協助程式。

    若要修正此錯誤,使用以下命令重新啟動 Docker。

    sudo service docker restart
  • 錯誤:您Docker容器的/tmp目錄空間已用盡。

    Docker 容器使用 //tmp分割區來存放程式碼。在本機模式下使用大型程式碼模組時,這些分割區很容易就滿了。SageMaker AI Python SDK 支援為本機模式根目錄指定自訂暫存目錄,以避免此問題。

    若要在 Amazon Elastic Block Store 磁碟區儲存體中指定自訂暫存目錄,請在下列路徑建立 檔案,~/.sagemaker/config.yaml並新增下列組態。您指定作為 container_root 的目錄必須已存在。SageMaker AI Python SDK 不會嘗試建立它。

    local: container_root: /home/ec2-user/SageMaker/temp

    有了這個組態,本機模式就會使用 /temp 目錄,而非預設的 /tmp 目錄。

  • SageMaker 筆記本執行個體上的低空間錯誤

    在 SageMaker 筆記本執行個體上執行的Docker容器預設會使用筆記本執行個體的根 Amazon EBS 磁碟區。若要解決低空間錯誤,請提供連接至筆記本執行個體的 Amazon EBS 磁碟區路徑,做為Docker命令磁碟區參數的一部分。

    docker run -v EBS-volume-path:container-path