模型託管常見問答集 - Amazon SageMaker AI

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

模型託管常見問答集

如需 SageMaker AI 推論託管常見問題的解答,請參閱下列常見問答集項目。

一般託管

下列常見問答集項目會回答 SageMaker AI 推論的常見問題。

答:在您建置和訓練模型之後,Amazon SageMaker AI 提供四個選項來部署模型,讓您可以開始進行預測。即時推論適用於具有毫秒延遲需求、承載大小最多 6 MB 以及處理時間長達 60 秒的工作負載。批次轉換非常適合對事先已有的大批資料進行離線預測。非同步推論是專為不低於一秒延遲需求的工作負載所設計,可承載大小最多 1 GB 的資料,並且處理時間長達 15 分鐘。有了無伺服器推論,您可以快速部署機器學習模型推論,無需設定或管理基礎設施,並且只需為處理推論要求的運算容量付費,這對於間歇性工作負載來說是理想選擇。

答:下圖可協助您選擇 SageMaker AI 託管模型部署選項。

說明如何在 SageMaker AI 中選擇模型部署選項的流程圖。

前面圖表會引導您完成下列決策程序。如果您想要批次處理請求,可以選擇批次轉換。另一方面,如果您希望對模型的每個請求都接收推論,那麼可以考慮選擇非同步推論、無伺服器推論或即時推論。如果您有長時間的處理需求或大型有效負載,並且想要將請求排入佇列,則可以選擇非同步推論。如果您的工作負載有無法預測或間歇性的流量,您可以選擇無伺服器推論。如果您有持續的流量,並且需要較低且一致的請求延遲,則可以選擇即時推論。

答:若要使用 SageMaker AI 推論最佳化成本,您應該為您的使用案例選擇正確的託管選項。您也可以使用推論功能,例如 Amazon SageMaker AI Savings Plans、搭配 SageMaker Neo 的模型最佳化、多模型端點多容器端點,或自動擴展。如需如何最佳化推論成本的秘訣,請參閱推論成本最佳化最佳實務

答:如果您需要適當端點組態的建議,以提高效能並降低成本,請使用 Amazon SageMaker Inference Recommender。過去,想要部署模型資料的科學家必須執行手動基準測試,以選取正確的端點組態。首先,他們必須根據其模型的資源要求和範例承載,從 70 多種可用的執行個體類型中,選取正確的機器學習執行個體類型,然後將模型最佳化,以因應不同的硬體。接著,需進行廣泛的載入測試,以驗證是否符合延遲和輸送量需求,同時維持較低成本。推論建議程式可協助您執行以下項目,消除此複雜性:

  • 透過執行個體建議,幾分鐘內即可開始使用。

  • 進行跨執行個體類型的負載測試,以在數小時內取得端點組態的建議。

  • 自動調整容器和模型伺服器參數,並在特定執行個體類型中,執行模型最佳化。

答:SageMaker AI 端點是使用容器化 Web 伺服器的 HTTP REST 端點,其中包含模型伺服器。這些容器負責載入並回應機器學習模型的要求。容器需要實作一個 Web 伺服器,用以在 8080 連接埠上回應 /invocations/ping

常見的模型伺服器包括 TensorFlow 服務、TorchServe 和多模型伺服器。SageMaker AI 架構容器內建這些模型伺服器。

答:SageMaker AI 推論中的所有內容都會容器化。SageMaker AI 為 TensorFlow、SKlearn 和 HuggingFace 等熱門架構提供受管容器。如需這些映像檔的完整更新清單,請參閱可用映像

有時候,您可能需要為自訂架構建置一個容器。這種方法稱為自備容器BYOC。使用 BYOC 方法,您可以提供 Docker 映像檔來設定您的架構或程式庫。然後,您將映像推送至 Amazon Elastic Container Registry (Amazon ECR),以便將映像與 SageMaker AI 搭配使用。如需 BYOC 方法的範例,請參閱 Amazon SageMaker AI 容器的覆寫

或者,您也可以擴展容器,而不是從頭開始建置映像。您可以拍攝 SageMaker AI 提供的其中一個基本映像,並在 Dockerfile 中新增相依性。

答:SageMaker AI 提供容量,讓您擁有在 SageMaker AI 之外訓練的自有訓練架構模型,並將其部署在任何 SageMaker AI 託管選項上。

SageMaker AI 要求您將模型封裝在 model.tar.gz 檔案中,並具有特定的目錄結構。每個架構都有自己的模型結構 (請參閱以下範例結構問題)。如需詳細資訊,請參閱 TensorFlowPyTorch 和 MXNet 的 SageMaker Python SDK 文件。

雖然您可以選擇預先建置的架構映像,例如 TensorFlow、PyTorch 和 MXNet 來託管訓練過的模型,但您也可以建置自己的容器,在 SageMaker AI 端點上託管訓練過的模型。如需逐步解說,請參閱範例 Jupyter 筆記本建立您自己的演算法容器

答:SageMaker AI 需要將模型成品壓縮在.tar.gz檔案或 tarball 中。SageMaker AI 會自動將此.tar.gz檔案擷取到容器中的 /opt/ml/model/ 目錄中。壓縮包不應該包含任何符號連結或不必要的文件。如果您正在使用其中一個架構容器,例如 TensorFlow、PyTorch 或 MXNet,容器會預期您的 TAR 結構如下所示:

TensorFlow

model.tar.gz/ |--[model_version_number]/ |--variables |--saved_model.pb code/ |--inference.py |--requirements.txt

PyTorch

model.tar.gz/ |- model.pth |- code/ |- inference.py |- requirements.txt # only for versions 1.3.1 and higher

MXNet

model.tar.gz/ |- model-symbol.json |- model-shapes.json |- model-0000.params |- code/ |- inference.py |- requirements.txt # only for versions 1.6.0 and higher

答:ContentType 是請求內文中輸入資料的 MIME 類型 (您要發送到端點的資料的 MIME 類型)。模型伺服器會使用 ContentType 來判斷它是否可以處理提供的類型。

Accept 是推論回應的 MIME 類型 (端點傳回資料的 MIME 類型)。模型伺服器使用 Accept 類型來確定它是否可以處理傳回提供的類型。

常見的 MIME 類型包括 text/csvapplication/jsonapplication/jsonlines

答:SageMaker AI 會將任何請求傳遞到模型容器,而無須修改。容器必須包含反序列化請求的邏輯。如需瞭解更多內建演算法定義格式的詳細資訊,請參閱推論的常見資料格式。如果您要建置自己的容器或使用 SageMaker AI Framework 容器,您可以包含邏輯以接受您選擇的請求格式。

同樣地,SageMaker AI 也會傳回回應而不修改,然後用戶端必須還原序列化回應。在內建演算法的情況下,它們會傳回特定格式的回應。如果您要建置自己的容器或使用 SageMaker AI Framework 容器,您可以包含邏輯,以您選擇的格式傳回回應。

使用調用端點 API 呼叫,在您的端點中進行推論。

將輸入作為承載傳遞給 InvokeEndpoint API 時,您必須提供模型預期的正確輸入資料類型。在 InvokeEndpoint API 呼叫中傳遞承載時,要求位元組會直接轉送至模型容器。舉例來說,在映像中您可以使用application/jpeg替代ContentType,並確定您的模型可以對此類型的資料執行推論。這適用於 JSON,CSV,影片或您可能正在處理的任何其他輸入類型。

要考慮的另一個因素是承載大小限制。就即時和無伺服器端點而言,承載限制為 6 MB。您可以將影片拆分為多個影格,並單獨調用每個影格的端點。或者,如果您的使用案例允許,您可以使用支援最多 1 GB 承載的非同步端點,在承載中傳送整個影片。

如需如何使用非同步推論在大型影片上執行電腦視覺推論的範例,請參閱此部落格文章

即時推論

下列常見問答集項目會回答 SageMaker AI 即時推論的常見問題。

答:您可以透過支援的工具建立 SageMaker AI AWS端點,例如 AWS SDKs、SageMaker Python SDK AWS Management Console AWS CloudFormation、 和 AWS Cloud Development Kit (AWS CDK)。

建立端點時有三個關鍵實體:SageMaker AI 模型、SageMaker AI 端點組態和 SageMaker AI 端點。SageMaker AI 模型指向您正在使用的模型資料和映像。端點組態會定義您的生產變體,其中可能包括執行個體類型和執行個體計數。然後,您可以使用 create_endpoint API 呼叫或 SageMaker AI 的 .deploy() 呼叫,使用模型和端點組態中的中繼資料來建立端點。

答:否,您可以使用各種 AWS SDKs(請參閱叫用/建立可用的 SDKs),或甚至直接呼叫對應的 Web APIs。

答:多模型端點是 SageMaker AI 提供的即時推論選項。使用多模型端點,您可以在一個端點後面託管數千個模型。多模型伺服器是提供機器學習模型的開放原始碼架構。它可提供多模型端點所需的 HTTP 前端和模型管理功能,以將多個模型託管於單一容器內、動態地將模型載入到容器中及從中卸載模型,以及在指定的載入模型上執行推論。

答:SageMaker AI 即時推論支援各種模型部署架構,例如多模型端點、多容器端點和序列推論管道。

多模型端點 (MME) — MME 可讓客戶以符合成本效益的方式部署上千個超個人化模型。所有模型都部署在共用資源叢集上。當模型的大小和延遲相似且屬於相同的機器學習 (ML) 架構時,MME 效果最佳。當您不需要隨時呼叫相同的模型時,這些端點非常適合。您可以將個別模型動態載入 SageMaker AI 端點,以滿足您的請求。

多容器端點 (MCE) — MCE 允許客戶部署 15 個具有多種機器學習 (ML) 架構和功能的不同容器,而不需要冷啟動,而且只使用一個 SageMaker 端點。您可以直接調用這些容器。當您想要將所有模型保留在記憶體中時,MCE 最適合。

序列推論管道 (SIP) — 您可以使用 SIP 在單一端點上將 2 到 15 個容器串連在一起。SIP 主要適用於在一個端點中結合預處理和模型推論,並用於低延遲操作。

無伺服器推論

以下常見問答集項目回答了 Amazon SageMaker 無伺服器推論的常見問題。

答:使用 Amazon SageMaker Serverless Inference 部署模型是專門建置的無伺服器模型服務選項,可讓您輕鬆部署和擴充機器學習 (ML) 模型。無伺服器推論端點會自動啟動運算資源,並根據流量進行縮減與擴增,您無需選擇執行個體類型、執行佈建容量或管理擴展政策。您可以選擇指定無伺服器端點的記憶體需求。您只需為執行推論程式碼的持續時間及處理的資料量付費即可,閒置期間不需付費。

答:無伺服器推論可免除預先佈建容量和管理擴展政策的需求,從而簡化開發人員體驗。無伺服器推論可根據使用模式,在幾秒鐘內立即從數萬個推論擴展到數千個推論,因此非常適合間歇性或無法預測流量的機器學習 (ML) 應用程式。例如,薪資處理公司使用的聊天機器人服務在月底的查詢數量增加,而在本月其它時間的流量是間歇性的。在這種情況下,佈建整個月的執行個體並不符合成本效益,因為您最終會支付閒置期間的費用。

無伺服器推論可協助您解決這些類型的使用案例,提供開箱即用的自動快速擴充功能,而不需要預先預測流量或管理擴展政策。此外,您只需為執行推論程式碼的運算時間和資料處理付費,因此非常適合具有間歇性流量的工作負載。

答:您的無伺服器端點的 RAM 大小下限為 1024 MB (1 GB),而您可以選擇的 RAM 大小上限為 6144 MB (6 GB)。您可以選擇的記憶體大小為 1024 MB、2048 MB、3072 MB、4096 MB、5120 MB 或 6144 MB。無伺服器推論會根據您選取的記憶體按比例自動指派運算資源。如果您選擇較大的記憶體大小,您的容器可以存取更多 vCPU。

根據您的模型大小選擇端點的記憶體大小。一般而言,記憶體大小應至少與模型大小一樣大。您可能需要進行基準測試,才能基於延遲 SLA 選擇適合模型的記憶體選取項目。記憶體大小增量有不同的定價;如需詳細資訊,請參閱 Amazon SageMaker AI 定價頁面

批次轉換

下列常見問答集項目會回答 SageMaker AI 批次轉換的常見問題。

答:對於特定檔案格式,例如 CSV、RecordIO 和 TFRecord,SageMaker AI 可以將您的資料分割為單一記錄或多記錄迷你批次,並將其作為承載傳送至模型容器。當 的值BatchStrategy為 時MultiRecord,SageMaker AI 會傳送每個請求中的記錄數目上限,直到達到MaxPayloadInMB限制為止。當 的值BatchStrategy為 時SingleRecord,SageMaker AI 會在每次請求中傳送個別記錄。

答:批次轉換的逾時時間上限為 3600 秒。記錄 (每個小批次) 的承載大小上限為 100 MB。

A:如果您使用的是 CreateTransformJob API,您可以使用 MaxPayloadInMBMaxConcurrentTransformsBatchStrategy 等參數的最佳值,縮短完成批次轉換工作所需的時間。MaxConcurrentTransforms 的理想值等於批次轉換工作中的運算工作者的數量。如果您使用的是 SageMaker AI 主控台,您可以在批次轉換任務組態頁面的其他組態區段中指定這些最佳參數值。SageMaker AI 會自動尋找內建演算法的最佳參數設定。針對自訂演算法,請透過 execution-parameters 端點來提供這些值。

答:批次轉換支援 CSV 和 JSON。

非同步推論

下列常見問答集項目會回答 SageMaker AI 非同步推論的常見一般問題。

答:非同步推論將傳入請求排入佇列,並進行非同步處理。此選項非常適合承載大小龐大的請求,或是傳入時處理須時較長的請求。或者,您可以設定 auto-scaling,在不主動處理請求時,將執行個體計數縮減為零。

答:Amazon SageMaker AI 支援自動擴展 (自動擴展) 非同步端點。自動擴展會動態調整針對模型佈建的執行個體數量,因應工作負載的變更。與其他託管模型不同的是,SageMaker AI 支援,使用非同步推論,您也可以將非同步端點執行個體縮減為零。擴展端點後,執行個體數量為零時,收到的請求會排入佇列進行處理。如需詳細資訊,請參閱自動擴展非同步端點

Amazon SageMaker 無伺服器推論也會自動縮減為零。您不會看到這種情況,因為 SageMaker AI 會管理擴展無伺服器端點,但如果您沒有遇到任何流量,則適用相同的基礎設施。