模型託管 FAQs - Amazon SageMaker

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

模型託管 FAQs

有關 SageMaker 推論託管的常見問題的答案,請參閱以下FAQ項目。

一般託管

以下FAQ項目回答了 SageMaker 推論的常見一般問題。

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

答:下圖可協助您選擇 SageMaker 主機模式部署選項。

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

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

答:若要透過 SageMaker 推論最佳化您的成本,您應該針對您的使用案例選擇正確的託管選項。您也可以使用推論功能,例如 Amazon S SageMaker avings Plan s、使用 SageMaker Neo 進行模型優化、多模型端點和多容器端點,或自動調度資源。如需如何最佳化推論成本的秘訣,請參閱推論成本最佳化最佳實務

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

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

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

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

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

常見的模型伺服器包括 TensorFlow 服務 TorchServe 和多模型伺服器。 SageMaker 框架容器內置了這些模型服務器。

答: SageMaker 推論中的所有內容都是容器化的。 SageMaker 提供受管理的容器,適用於常用架構 TensorFlow,例如SKlearn、和 HuggingFace. 如需這些映像檔的完整更新清單,請參閱可用映像

有時候,您可能需要為自訂架構建置一個容器。這種方法被稱為攜帶自己的容器BYOC. 使用這BYOC種方法,您可以提供 Docker 映像來設置框架或庫。然後,您將圖像推送到 Amazon 彈性容器註冊表(AmazonECR),以便您可以將圖像與 SageMaker. 如需方BYOC法範例,請參閱 Amazon 適用的容器概述。 SageMaker

或者,您也可以擴展容器,而不是從頭開始建置映像。您可以獲取 SageMaker 提供的基本映像之一,並在 Dockerfile 中添加您的依賴關係。

答:提 SageMaker 供您在外部訓練過的自己訓練有素的架構模型的能力, SageMaker 並將其部署到任何 SageMaker 託管選項上。

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

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

答: SageMaker 需要將模型加工品壓縮到.tar.gz文件或縮包中。 SageMaker 自動將此.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/json、和application/jsonlines

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

同樣, SageMaker 也返回沒有修改的響應,然後客戶端必須反序列化響應。在內建演算法的情況下,它們會傳回特定格式的回應。如果您正在構建自己的容器或使用 SageMaker Framework 容器,則可以包含邏輯以您選擇的格式返回響應。

使用「叫用端點」呼API叫,針對您的端點進行推論。

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

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

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

即時推論

下列FAQ項目回答了 SageMaker 即時推論的常見問題。

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

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

答:不,您可以使用各種 AWS SDKs(請參閱調用/創建可用SDKs),甚至APIs直接調用相應的網絡。

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

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

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

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

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

無伺服器推論

下列FAQ項目回答 Amazon SageMaker 無伺服器推論的常見問題。

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

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

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

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

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

批次轉換

下列FAQ項目回答了「 SageMaker Batch 轉換」的常見問題。

答:對於特定的文件格式CSV,例如 RecordIO 和TFRecord, SageMaker 可以將數據拆分為單記錄或多記錄迷你批次,並將其作為有效負載發送到模型容器。當的值BatchStrategy為時MultiRecord, SageMaker 會傳送每個要求中的最大記錄數目,直到上MaxPayloadInMB限。當的值BatchStrategy為時SingleRecord, SageMaker 會在每個要求中傳送個別記錄。

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

答:如果您使用的是 CreateTransformJobAPI,可以使用、或等參數的最佳值MaxPayloadInMBMaxConcurrentTransforms來減少完成批次轉換工作所需的時間BatchStrategyMaxConcurrentTransforms 的理想值等於批次轉換工作中的運算工作者的數量。如果您使用 SageMaker主控台,可以在「Batch 轉換工作組態」頁面的「其他組態」段落中指定這些最佳參數值。 SageMaker 自動尋找內建演算法的最佳參數設定。針對自訂演算法,請透過 execution-parameters 端點來提供這些值。

答:Batch 轉換支持CSV和JSON。

非同步推論

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

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

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

Amazon SageMaker 無伺服器推論也會自動縮減為零。您不會看到這個問題,因為 SageMaker 管理擴展無伺服器端點,但如果您沒有遇到任何流量,則會套用相同的基礎結構。