本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將模型部署至 Amazon EC2
若要取得預測,請使用 Amazon SageMaker AI 將模型部署至 Amazon EC2。 Amazon SageMaker
將模型部署至 SageMaker AI 託管服務
若要使用 Amazon SageMaker AI 透過 Amazon EC2 託管模型,建立和執行訓練任務請呼叫xgb_model
估算器deploy
的方法,部署您在 中訓練的模型。 Amazon SageMaker 當呼叫 deploy
方法時,務必指定您想要用來託管端點的 EC2 機器學習 (ML) 執行個體數目和類型。
import sagemaker from sagemaker.serializers import CSVSerializer xgb_predictor=xgb_model.deploy( initial_instance_count=1, instance_type='ml.t2.medium', serializer=CSVSerializer() )
-
initial_instance_count
(int) — 要部署模型的執行個體數目。 -
instance_type
(str) — 您要操作已部署模型的執行個體類型。 -
serializer
(int) — 將各種格式 (NumPy 陣列、清單、檔案或緩衝區) 的輸入資料序列化為 CSV 格式的字串。我們使用這個是因為 XGBoost 演算法接受 CSV 格式的輸入文件。
此deploy
方法會建立可部署模型、設定 SageMaker AI 託管服務端點,並啟動端點來託管模型。如需詳細資訊,請參閱 Amazon SageMaker Python SDK 中的 SageMaker AI 一般估算器的部署類別方法deploy
方法所產生的端點名稱,請執行下列程式碼:
xgb_predictor.endpoint_name
這應該會傳回的端點名稱 xgb_predictor
。端點名稱的格式為 "sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS"
。此端點在機器學習 (ML) 執行個體中保持作用中狀態,而且您可以隨時進行即時預測,除非您稍後將其關閉。複製此端點名稱並儲存,以重複使用,並在 SageMaker Studio 或 SageMaker AI 筆記本執行個體的其他位置進行即時預測。
提示
要瞭解有關編譯和最佳化模型以便部署到 Amazon EC2 執行個體或邊緣設備的詳細資料,請參閱使用 Neo 編譯和部署模型。
(選用) 使用 SageMaker AI Predictor 重複使用託管端點
將模型部署至端點後,您可以配對端點,並在任何其他筆記本中持續進行即時預測,以設定新的 SageMaker AI 預測器。下列範例程式碼說明如何使用 SageMaker AI Predictor 類別,使用相同的端點設定新的預測器物件。重新使用您用於 xgb_predictor
的端點名稱。
import sagemaker xgb_predictor_reuse=sagemaker.predictor.Predictor( endpoint_name="
sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS
", sagemaker_session=sagemaker.Session(), serializer=sagemaker.serializers.CSVSerializer() )
xgb_predictor_reuse
Predictor 的行為與原始 xgb_predictor
完全相同。如需詳細資訊,請參閱 Amazon SageMaker Python SDK 中的 SageMaker AI Predictor
(選用) 使用批次轉換進行預測
您可以執行一次性批次推論任務,以使用 SageMaker AI 批次轉換對測試資料集進行預測,而不是在生產環境中託管端點。模型訓練完成後,您可以將估算器擴展至物件,該transformer
物件是以 SageMaker AI 轉換器
執行批次轉換任務
執行下列程式碼,將測試資料集的功能欄轉換為 CSV 檔案,並上傳至 S3 儲存貯體:
X_test.to_csv('test.csv', index=False, header=False) boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'test/test.csv')).upload_file('test.csv')
為批次轉換工作指定輸入和輸出的 S3 儲存貯體 URI,如下所示:
# The location of the test dataset batch_input = 's3://{}/{}/test'.format(bucket, prefix) # The location to store the results of the batch transform job batch_output = 's3://{}/{}/batch-prediction'.format(bucket, prefix)
建立指定最少參數數目的轉換器物件:執行批次轉換工作的
instance_count
和instance_type
參數,output_path
以及儲存預測資料,如下所示:transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
通過執行
transformer
物件的transform()
方法,如下所示啟動批次轉換工作:transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
當批次轉換任務完成時,SageMaker AI 會建立儲存在
batch_output
路徑中的test.csv.out
預測資料,其格式應該如下:s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction
。執行下列 AWS CLI 動作來下載批次轉換任務的輸出資料:! aws s3 cp {batch_output} ./ --recursive
這應該在當前工作目錄下建立
test.csv.out
檔案。您將能夠看到根據 XGBoost 訓練工作的邏輯迴歸預測的浮點值。